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

Reply via email to