Changeset: f267b9719d1a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f267b9719d1a
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/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
        java/ChangeLog.Jul2015
        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/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/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: default
Log Message:

merge changes


diffs (truncated from 7559 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;
@@ -2116,7 +2116,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);
@@ -2138,7 +2137,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/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/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java 
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
@@ -2018,7 +2018,7 @@ public class MonetResultSet extends Mone
         */
        @Override
        public Object getObject(String columnName) throws SQLException {
-               return getObject(columnName, 
this.getStatement().getConnection().getTypeMap());
+               return getObject(findColumn(columnName));
        }
 
        /**
diff --git a/java/src/main/java/nl/cwi/monetdb/util/SQLExporter.java 
b/java/src/main/java/nl/cwi/monetdb/util/SQLExporter.java
--- a/java/src/main/java/nl/cwi/monetdb/util/SQLExporter.java
+++ b/java/src/main/java/nl/cwi/monetdb/util/SQLExporter.java
@@ -402,21 +402,22 @@ public class SQLExporter extends Exporte
        public void resultSetToTable(ResultSet rs) throws SQLException {
                ResultSetMetaData md = rs.getMetaData();
                int cols = md.getColumnCount();
-               // find the presentation widths of the columns
-               int[] width = new int[cols +1];
-               for (int j = 1; j <= cols; j++) {
-                       int displaySize = md.getColumnDisplaySize(j);
-                       int labelLength = md.getColumnLabel(j).length();
-                       width[j] = (displaySize > labelLength) ? displaySize : 
labelLength;
-                       if (md.isNullable(j) != 
ResultSetMetaData.columnNoNulls) {
-                               width[j] = Math.max("<NULL>".length(), 
width[j]);
-                       }
+               // find the optimal display widths of the columns
+               int[] width = new int[cols + 1];
+               boolean[] isSigned = new boolean[cols + 1];
+               for (int j = 1; j < width.length; j++) {
+                       int coldisplaysize = md.getColumnDisplaySize(j);
+                       int collabellength = md.getColumnLabel(j).length();
+                       int maxwidth = (coldisplaysize > collabellength) ? 
coldisplaysize : collabellength;
+                       // the minimum width should be 4 to represent: "NULL"
+                       width[j] = (maxwidth > 4) ? maxwidth : 4;
+                       isSigned[j] = md.isSigned(j);
                }
 
-               // print header
+               // print the header text
                out.print("+");
                for (int j = 1; j < width.length; j++)
-                       out.print(repeat('-', width[j] +1) + "-+");
+                       out.print(repeat('-', width[j] + 1) + "-+");
                out.println();
 
                out.print("|");
@@ -439,26 +440,33 @@ public class SQLExporter extends Exporte
                                Object rdata = rs.getObject(j);
                                String data;
                                if (rdata == null || rs.wasNull()) {
-                                       data = "<NULL>";
+                                       data = "NULL";
                                } else {
                                        data = rdata.toString();
+                                       if (data == null)
+                                               data = "NULL";
                                }
-                               String filler = repeat(' ', Math.max(width[j] - 
data.length(), 0));
-                               if (md.isSigned(j)) {
-                                       // we have a numeric type here, right 
align presented data
-                                       out.print(" " + filler + data +  " |");
+
+                               int filler_length = width[j] - data.length();
+                               if (filler_length <= 0) {
+                                       out.print(" " + data + " |");
                                } else {
-                                       // something else
-                                       out.print(" " + data + filler +  " |");
+                                       if (isSigned[j]) {
+                                               // we have a numeric type here, 
right align
+                                               out.print(" " + repeat(' ', 
filler_length) + data + " |");
+                                       } else {
+                                               // all other left align
+                                               out.print(" " + data + repeat(' 
', filler_length) + " |");
+                                       }
                                }
                        }
                        out.println();
                }
 
-               // print footer
+               // print the footer text
                out.print("+");
                for (int j = 1; j < width.length; j++)
-                       out.print(repeat('-', width[j] +1) + "-+");
+                       out.print(repeat('-', width[j] + 1) + "-+");
                out.println();
 
                out.println(count + " row" + (count != 1 ? "s" : ""));
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -64,10 +64,10 @@ Ready.
 % 118 # length
 function user.s4_1():void;
     X_24:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","default_pipe",12);
-barrier X_34 := language.dataflow();
+barrier X_53 := language.dataflow();
     X_1 := sql.mvc();
     (X_11:bat[:int],X_12:bat[:int],X_13:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0);
-exit X_34;
+exit X_53;
     X_14 := sql.append(X_1,"sys","ttt","a",X_11);
     X_18 := sql.append(X_14,"sys","ttt","b",X_12);
     X_20 := sql.append(X_18,"sys","ttt","c",X_13);
@@ -98,10 +98,10 @@ end user.s4_1;
 % 118 # length
 function user.s12_1():void;
     X_24:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","user_1",12);
-barrier X_35 := language.dataflow();
+barrier X_54 := language.dataflow();
     X_1 := sql.mvc();
     (X_11:bat[:int],X_12:bat[:int],X_13:bat[:int]) := 
sql.copy_from(nil,"|","\\n",nil:str,"null","/tmp/xyz",-1,0,0,0);
-exit X_35;
+exit X_54;
     X_14 := sql.append(X_1,"sys","ttt","a",X_11);
     X_18 := sql.append(X_14,"sys","ttt","b",X_12);
     X_22 := aggr.count(X_13);
diff --git a/monetdb5/extras/mal_optimizer_template/opt_sql_append.c 
b/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
--- a/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
+++ b/monetdb5/extras/mal_optimizer_template/opt_sql_append.c
@@ -288,7 +288,7 @@ str OPTsql_append(Client cntxt, MalBlkPt
        }
        if( mb->errors ){
                /* when we have errors, we still want to see them */
-               addtoMalBlkHistory(mb,"sql_append");
+               addtoMalBlkHistory(mb);
                return MAL_SUCCEED;
        }
        actions= OPTsql_appendImplementation(cntxt, mb,stk,p);
@@ -300,6 +300,6 @@ str OPTsql_append(Client cntxt, MalBlkPt
        DEBUGoptimizers
                mnstr_printf(cntxt->fdout,"#opt_reduce: " LLFMT " ms\n",t);
        QOTupdateStatistics("sql_append",actions,t);
-       addtoMalBlkHistory(mb,"sql_append");
+       addtoMalBlkHistory(mb);
        return msg;
 }
diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -210,7 +210,6 @@ typedef struct MALBLK {
        struct MALBLK *history;         /* of optimizer actions */
        short keephistory;                      /* do we need the history at 
all */
        short dotfile;                          /* send dot file to 
stethoscope? */
-       str marker;                                     /* history points are 
marked for backtracking */
        int maxarg;                                     /* keep track on the 
maximal arguments used */
        ptr replica;                            /* for the replicator tests */
        sht recycle;                            /* execution subject to 
recycler control */
diff --git a/monetdb5/mal/mal_debugger.c b/monetdb5/mal/mal_debugger.c
--- a/monetdb5/mal/mal_debugger.c
+++ b/monetdb5/mal/mal_debugger.c
@@ -383,7 +383,7 @@ mdbCommand(Client cntxt, MalBlkPtr mb, M
        size_t oldpromptlength = cntxt->promptlength;
        MalStkPtr stk = stkbase;
        int first = pc;
-       int stepsize = 10;
+       int stepsize = 1000;
        char oldcmd[1024] = { 0 };
        do {
                int r;
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -118,7 +118,6 @@ newMalBlk(int maxvars, int maxstmts)
        mb->history = NULL;
        mb->keephistory = 0;
        mb->dotfile = 0;
-       mb->marker = 0;
        mb->maxarg = MAXARG;            /* the minimum for each instruction */
        mb->typefixed = 0;
        mb->flowfixed = 0;
@@ -233,7 +232,6 @@ copyMalBlk(MalBlkPtr old)
        mb->history = NULL;
        mb->keephistory = old->keephistory;
        mb->dotfile = old->dotfile;
-       mb->marker = 0;
        mb->var = (VarPtr *) GDKzalloc(sizeof(VarPtr) * old->vsize);
        mb->activeClients = 1;
 
@@ -290,7 +288,7 @@ copyMalBlk(MalBlkPtr old)
 }
 
 void
-addtoMalBlkHistory(MalBlkPtr mb, str marker)
+addtoMalBlkHistory(MalBlkPtr mb)
 {
        MalBlkPtr cpy, h;
        if (mb->keephistory) {
@@ -298,7 +296,6 @@ addtoMalBlkHistory(MalBlkPtr mb, str mar
                if (cpy == NULL)
                        return;                         /* ignore history */
                cpy->history = NULL;
-               mb->marker = GDKstrdup(marker);
                if (mb->history == NULL)
                        mb->history = cpy;
                else {
@@ -318,34 +315,6 @@ getMalBlkHistory(MalBlkPtr mb, int idx)
        return h ? h : mb;
 }
 
-/* You can retrieve the history by its marker as well. */
-MalBlkPtr
-getMalBlkMarker(MalBlkPtr mb, str marker)
-{
-       MalBlkPtr h = mb;
-       while (h && h->marker && strcmp(h->marker, marker))
-               h = h->history;
-       return h ? h : mb;
-}
-
-/* You can roll back the history to a specific marker. A NULL is
- * returned when the marker can not be found. */
-MalBlkPtr
-gotoMalBlkMarker(MalBlkPtr mb, str marker)
-{
-       MalBlkPtr h = mb, g;
-       while (h && h->marker && strcmp(h->marker, marker))
-               h = h->history;
-       if (h == NULL)
-               return NULL;                    /* marker not found */
-       while (h && h->marker && strcmp(h->marker, marker)) {
-               g = h;
-               h = h->history;
-               g->history = 0;
-               freeMalBlk(g);
-       }
-       return h;
-}
 
 /* The MalBlk structures potentially consume a lot a of space, because
  * it is not possible to precisely estimate the default sizes of the
@@ -960,7 +929,7 @@ cloneVariable(MalBlkPtr tm, MalBlkPtr mb
        return res;
 }
 
-/* generate a new variable name based on a patter with 1 %d argument*/
+/* generate a new variable name based on a pattern with 1 %d argument*/
 void
 renameVariable(MalBlkPtr mb, int id, str pattern, int newid)
 {
diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h
--- a/monetdb5/mal/mal_instruction.h
+++ b/monetdb5/mal/mal_instruction.h
@@ -131,10 +131,8 @@ mal_export void resizeMalBlk(MalBlkPtr m
 mal_export void prepareMalBlk(MalBlkPtr mb, str s);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to