Changeset: 6afa928d1499 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6afa928d1499 Added Files: sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_ALTER_TABLE_crash.Bug-4010.sql sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_ALTER_TABLE_crash.Bug-4010.stable.err sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_ALTER_TABLE_crash.Bug-4010.stable.out sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_UPDATE_crash.Bug-4010.sql sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_UPDATE_crash.Bug-4010.stable.err sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_UPDATE_crash.Bug-4010.stable.out sql/test/BugTracker-2016/Tests/string-length.Bug-3999.sql sql/test/BugTracker-2016/Tests/string-length.Bug-3999.stable.err sql/test/BugTracker-2016/Tests/string-length.Bug-3999.stable.out Modified Files: clients/Tests/exports.stable.out gdk/gdk_select.c java/ChangeLog.Jul2015 java/ChangeLog.Jun2016 java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java java/src/main/java/nl/cwi/monetdb/util/SQLExporter.java monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/extras/mal_optimizer_template/opt_sql_append.c monetdb5/mal/mal.h monetdb5/mal/mal_debugger.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_listing.c monetdb5/mal/mal_namespace.c monetdb5/modules/mal/Tests/inspect00.stable.out monetdb5/modules/mal/remote.c monetdb5/optimizer/Tests/dataflow3.stable.out monetdb5/optimizer/Tests/inline02.stable.out monetdb5/optimizer/Tests/inline03.stable.out monetdb5/optimizer/Tests/inline04.stable.out monetdb5/optimizer/Tests/inline06.stable.out monetdb5/optimizer/Tests/inline07.stable.out monetdb5/optimizer/Tests/inline09.stable.out monetdb5/optimizer/Tests/inline10.stable.out monetdb5/optimizer/Tests/inline12.stable.out monetdb5/optimizer/Tests/inlineCst.stable.out monetdb5/optimizer/Tests/inlineFunction2.stable.out monetdb5/optimizer/Tests/manifold2.stable.out monetdb5/optimizer/opt_support.c monetdb5/optimizer/opt_wrapper.c monetdb5/optimizer/optimizer.c monetdb5/scheduler/run_isolate.c sql/backends/monet5/sql_decimal.mal sql/backends/monet5/sql_decimal.mal.sh sql/backends/monet5/sql_decimal_hge.mal sql/backends/monet5/sql_decimal_hge.mal.sh sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_optimizer.c sql/benchmarks/ssbm/Tests/01-explain.stable.out sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/02-explain.stable.out sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/03-explain.stable.out sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/04-explain.stable.out sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/05-explain.stable.out sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/06-explain.stable.out sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/07-explain.stable.out sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/08-explain.stable.out sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/09-explain.stable.out sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/10-explain.stable.out sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128 sql/benchmarks/tpch/Tests/01-explain.stable.out sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit sql/benchmarks/tpch/Tests/01-explain.stable.out.int128 sql/benchmarks/tpch/Tests/02-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out.int128 sql/benchmarks/tpch/Tests/05-explain.stable.out sql/benchmarks/tpch/Tests/05-explain.stable.out.32bit sql/benchmarks/tpch/Tests/05-explain.stable.out.int128 sql/benchmarks/tpch/Tests/06-explain.stable.out sql/benchmarks/tpch/Tests/06-explain.stable.out.int128 sql/benchmarks/tpch/Tests/08-explain.stable.out.int128 sql/benchmarks/tpch/Tests/09-explain.stable.out sql/benchmarks/tpch/Tests/09-explain.stable.out.int128 sql/benchmarks/tpch/Tests/10-explain.stable.out sql/benchmarks/tpch/Tests/10-explain.stable.out.int128 sql/benchmarks/tpch/Tests/12-explain.stable.out sql/benchmarks/tpch/Tests/12-explain.stable.out.int128 sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 sql/benchmarks/tpch/Tests/17-explain.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 sql/jdbc/tests/Tests/Test_JdbcClient.stable.out sql/storage/bat/bat_storage.c sql/storage/bat/bat_table.c sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128 sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128.single sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out sql/test/BugTracker-2016/Tests/All sql/test/BugTracker-2016/Tests/storagemodel.stable.out sql/test/BugTracker/Tests/authorization.SF-1430616.stable.out sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out sql/test/BugTracker/Tests/explain.SF-1739353.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit sql/test/Users/Tests/copyinto.SQL.py sql/test/Users/Tests/copyinto.stable.err sql/test/Users/Tests/dropManyUsers.Bug-3764.SQL.py sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out sql/test/Users/Tests/test_privs2_p1.stable.out sql/test/bugs/Tests/except-union-intersect-bug-sf-1146079.stable.out sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/mergetables/Tests/mergequery.stable.out sql/test/remote/Tests/partition_elim.stable.out testing/Mfilter.py testing/Mtest.py.in Branch: pythonudf Log Message:
Merge with default. diffs (truncated from 8507 to 300 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -1939,7 +1939,7 @@ str ZORDslice_int(bat *r, int *xb, int * str abortRef; str addOptimizerPipe(Client cntxt, MalBlkPtr mb, str name); str addPipeDefinition(Client cntxt, str name, str pipe); -void addtoMalBlkHistory(MalBlkPtr mb, str marker); +void addtoMalBlkHistory(MalBlkPtr mb); str affectedRowsRef; str aggrRef; str alarmRef; @@ -2117,7 +2117,6 @@ int getHgeConstant(MalBlkPtr mb, hge val int getIntConstant(MalBlkPtr mb, int val); int getLngConstant(MalBlkPtr mb, lng val); MalBlkPtr getMalBlkHistory(MalBlkPtr mb, int idx); -MalBlkPtr getMalBlkMarker(MalBlkPtr mb, str marker); lng getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int i, int flag); str getName(const char *nme); str getNameLen(const char *nme, size_t len); @@ -2139,7 +2138,6 @@ lng getUserTime(void); str getVarName(MalBlkPtr mb, int i); lng getVolume(MalStkPtr stk, InstrPtr pci, int rd); int getWrdConstant(MalBlkPtr mb, wrd val); -MalBlkPtr gotoMalBlkMarker(MalBlkPtr mb, str marker); str grabRef; str groupRef; str groupbyRef; diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -1955,6 +1955,8 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT oid rlval = oid_nil, rhval = oid_nil; int sorted = 0; /* which column is sorted */ BAT *tmp; + int use_orderidx = 0; + oid ll, lh; assert(BAThdense(l)); assert(BAThdense(rl)); @@ -1971,12 +1973,13 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT assert(r2->htype == TYPE_void); assert(r2->ttype == TYPE_oid); - ALGODEBUG fprintf(stderr, "#rangejoin(l=%s#" BUNFMT "[%s]%s%s," + ALGODEBUG fprintf(stderr, "#rangejoin(l=%s#" BUNFMT "[%s]%s%s%s," "rl=%s#" BUNFMT "[%s]%s%s,rh=%s#" BUNFMT "[%s]%s%s," "sl=%s#" BUNFMT "%s%s,sr=%s#" BUNFMT "%s%s)\n", BATgetId(l), BATcount(l), ATOMname(l->ttype), l->tsorted ? "-sorted" : "", l->trevsorted ? "-revsorted" : "", + BATcheckorderidx(l) ? "-orderedidx" : "", BATgetId(rl), BATcount(rl), ATOMname(rl->ttype), rl->tsorted ? "-sorted" : "", rl->trevsorted ? "-revsorted" : "", @@ -2033,7 +2036,17 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT lvars = rlvars = rhvars = NULL; } - if (BATordered(l) || BATordered_rev(l)) { + ll = l->hseqbase; + lh = ll + l->batCount; + if ((!sl || (sl && BATtdense(sl))) && + (BATcheckorderidx(l) || (VIEWtparent(l) && BATcheckorderidx(BBPquickdesc(abs(VIEWtparent(l)), 0))))) { + use_orderidx = 1; + if (VIEWtparent(l) && !BATcheckorderidx(l)) { + l = BBPdescriptor(abs(VIEWtparent(l))); + } + } + + if (BATordered(l) || BATordered_rev(l) || use_orderidx) { /* left column is sorted, use binary search */ const oid *sval = sl ? (const oid *) Tloc(sl, BUNfirst(sl)) : NULL; @@ -2080,18 +2093,19 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT } if (cmp(vrl, nil) == 0 || cmp(vrh, nil) == 0) continue; - if (l->tsorted) { + if (l->tsorted || use_orderidx) { if (li) - low = SORTfndfirst(l, vrl); + low = use_orderidx? ORDERfndfirst(l, vrl): SORTfndfirst(l, vrl); else - low = SORTfndlast(l, vrl); + low = use_orderidx? ORDERfndlast(l, vrl): SORTfndlast(l, vrl); low -= BUNfirst(l); if (hi) - high = SORTfndlast(l, vrh); + high = use_orderidx? ORDERfndlast(l, vrh): SORTfndlast(l, vrh); else - high = SORTfndfirst(l, vrh); + high = use_orderidx? ORDERfndfirst(l, vrh): SORTfndfirst(l, vrh); high -= BUNfirst(l); } else { + assert(l->trevsorted); if (li) low = SORTfndlast(l, vrh); else @@ -2107,14 +2121,20 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT continue; low += l->hseqbase; high += l->hseqbase; - if (sl) { + if (use_orderidx) { + const oid *ord; oid o; + ord = (const oid *) l->torderidx->base + ORDERIDXOFF; - o = (oid) low; - low = SORTfndfirst(sl, &o) - BUNfirst(sl); - o = (oid) high; - high = SORTfndfirst(sl, &o) - BUNfirst(sl); - assert(high >= low); + if (sl) { + assert(BATtdense(sl)); + o = (oid) ((*(ord+low))&BUN_UNMSK); + ll = SORTfndfirst(sl, &o) - BUNfirst(sl); + o = (oid) ((*(ord+high))&BUN_UNMSK); + lh = SORTfndfirst(sl, &o) - BUNfirst(sl); + } + assert(lh >= ll); + if (BATcapacity(r1) < BUNlast(r1) + high - low) { cnt = BUNlast(r1) + high - low + 1024; if (cnt > maxsize) @@ -2128,30 +2148,64 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT dst1 = (oid *) Tloc(r1, BUNfirst(r1)); dst2 = (oid *) Tloc(r2, BUNfirst(r2)); } + + ord += low; while (low < high) { - dst1[r1->batCount++] = sval[low]; - dst2[r2->batCount++] = ro; - low++; + if (ll <= ((*ord)&BUN_UNMSK) && ((*ord)&BUN_UNMSK) < lh) { + dst1[r1->batCount++] = ((*ord)&BUN_UNMSK); + dst2[r2->batCount++] = ro; + low++; + ord++; + } } } else { - /* [low..high) */ - if (BATcapacity(r1) < BUNlast(r1) + high - low) { - cnt = BUNlast(r1) + high - low + 1024; - if (cnt > maxsize) - cnt = maxsize; - BATsetcount(r1, BATcount(r1)); - BATsetcount(r2, BATcount(r2)); - if (BATextend(r1, cnt) != GDK_SUCCEED || - BATextend(r2, cnt) != GDK_SUCCEED) - goto bailout; - assert(BATcapacity(r1) == BATcapacity(r2)); - dst1 = (oid *) Tloc(r1, BUNfirst(r1)); - dst2 = (oid *) Tloc(r2, BUNfirst(r2)); - } - while (low < high) { - dst1[r1->batCount++] = low; - dst2[r2->batCount++] = ro; - low++; + if (sl) { + oid o; + + o = (oid) low; + low = SORTfndfirst(sl, &o) - BUNfirst(sl); + o = (oid) high; + high = SORTfndfirst(sl, &o) - BUNfirst(sl); + assert(high >= low); + + if (BATcapacity(r1) < BUNlast(r1) + high - low) { + cnt = BUNlast(r1) + high - low + 1024; + if (cnt > maxsize) + cnt = maxsize; + BATsetcount(r1, BATcount(r1)); + BATsetcount(r2, BATcount(r2)); + if (BATextend(r1, cnt) != GDK_SUCCEED || + BATextend(r2, cnt) != GDK_SUCCEED) + goto bailout; + assert(BATcapacity(r1) == BATcapacity(r2)); + dst1 = (oid *) Tloc(r1, BUNfirst(r1)); + dst2 = (oid *) Tloc(r2, BUNfirst(r2)); + } + while (low < high) { + dst1[r1->batCount++] = sval[low]; + dst2[r2->batCount++] = ro; + low++; + } + } else { + /* [low..high) */ + if (BATcapacity(r1) < BUNlast(r1) + high - low) { + cnt = BUNlast(r1) + high - low + 1024; + if (cnt > maxsize) + cnt = maxsize; + BATsetcount(r1, BATcount(r1)); + BATsetcount(r2, BATcount(r2)); + if (BATextend(r1, cnt) != GDK_SUCCEED || + BATextend(r2, cnt) != GDK_SUCCEED) + goto bailout; + assert(BATcapacity(r1) == BATcapacity(r2)); + dst1 = (oid *) Tloc(r1, BUNfirst(r1)); + dst2 = (oid *) Tloc(r2, BUNfirst(r2)); + } + while (low < high) { + dst1[r1->batCount++] = low; + dst2[r2->batCount++] = ro; + low++; + } } } } diff --git a/java/ChangeLog.Jul2015 b/java/ChangeLog.Jul2015 --- a/java/ChangeLog.Jul2015 +++ b/java/ChangeLog.Jul2015 @@ -1,7 +1,18 @@ # ChangeLog file for java # This file is updated with Maddlog +* Thu May 12 2016 Martin van Dinther <martin.van.dint...@monetdbsolutions.com> +- Improved JdbcClient program when presenting query data to console. + It used to send an SQL catalog query for each query result column + which slowed down the interactive response considerably. + These additional SQL catalog queries have been eliminated. + +* Thu May 12 2016 Martin van Dinther <martin.van.dint...@monetdbsolutions.com> +- Corrected MonetResultSet.getObject(String columnName). It no longer + throws a NullPointerException in cases where internally a + MonetVirtualResultSet is used. + * Sun May 8 2016 Jennie Zhang <y.zh...@cwi.nl> - Fixed Connection.isValid(): this method should never attempt to - close the connection, even an error has occurred + close the connection, even if an error has occurred. diff --git a/java/ChangeLog.Jun2016 b/java/ChangeLog.Jun2016 --- a/java/ChangeLog.Jun2016 +++ b/java/ChangeLog.Jun2016 @@ -1,6 +1,12 @@ # ChangeLog file for java # This file is updated with Maddlog +* Thu May 19 2016 Martin van Dinther <martin.van.dint...@monetdbsolutions.com> +- Implemented MonetDatabaseMetaData.supportsConvert() and + MonetDatabaseMetaData.supportsConvert(int fromType, int toType) methods. + It used to always return false. Now it returns true for the supported conversions. + This fixes Bug 3460. + * Sun May 8 2016 Jennie Zhang <y.zh...@cwi.nl> - ResultSet.setFetchSize(): added a dummy implementation to get rid of the SQLFeatureNotSupportedException. In MonetDB, it does not diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java --- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java +++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java @@ -396,48 +396,16 @@ public class MonetDatabaseMetaData exten /** * Get a comma separated list of all a database's SQL keywords that * are NOT also SQL:2003 keywords. - * * * @return a comma separated list of MonetDB keywords */ @Override public String getSQLKeywords() { - StringBuilder sb = new StringBuilder(1000); - Statement st = null; - ResultSet rs = null; - try { - st = con.createStatement(); - rs = st.executeQuery("SELECT \"keyword\" FROM \"sys\".\"keywords\" ORDER BY 1"); - // Fetch the keywords and concatenate them into a StringBuffer separated by comma's - boolean isfirst = true; - while (rs.next()) { - String keyword = rs.getString(1); - if (keyword != null) { - if (isfirst) { - isfirst = false; - } else { - sb.append(","); - } - sb.append(keyword); - } - } - } catch (SQLException e) { - /* This may occur for old (before Jul2015 release) MonetDB servers which do not have the sys.keywords table. */ - } finally { - if (rs != null) { - try { - rs.close(); - } catch (SQLException e) { /* ignore */ } - } - if (st != null) { - try { - st.close(); - } catch (SQLException e) { /* ignore */ } - } - } - - return (sb.length() > 0) ? sb.toString() : - /* else fallback and return old static list (as returned in clients/odbc/driver/SQLGetInfo.c case SQL_KEYWORDS:) */ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list