Changeset: 892c03524a38 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=892c03524a38
Modified Files:
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        monetdb5/optimizer/Tests/dataflow3.stable.out
        monetdb5/optimizer/opt_garbageCollector.c
        monetdb5/optimizer/opt_querylog.c
        sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
        sql/backends/monet5/sql_gencode.c
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
        sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
        sql/test/mapi/Tests/sql_int128.stable.out
        sql/test/mergetables/Tests/mergequery.stable.out
        sql/test/remote/Tests/partition_elim.stable.out
Branch: default
Log Message:

Administer query log record once.
remove duplicate code in sql_gencode
and inject the size directly.


diffs (truncated from 1239 to 300 lines):

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
@@ -63,7 +63,7 @@ Ready.
 % clob # type
 % 146 # length
 function user.s8_1():void;
-    X_26:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","default_pipe",11:int);
+    X_0:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","default_pipe",21:int);
     X_3 := sql.mvc();
     (X_13:bat[:int],X_14:bat[:int],X_15:bat[:int]) := 
sql.copy_from(nil:ptr,"|","\\n",nil:str,"null","/tmp/xyz",-1:lng,0:lng,0:int,0:int,nil:str);
 # querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","default_pipe")
@@ -123,7 +123,7 @@ end user.s8_1;
 % clob # type
 % 146 # length
 function user.s24_1():void;
-    X_26:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","user_1",11:int);
+    X_0:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';","user_1",21:int);
     X_3 := sql.mvc();
     (X_13:bat[:int],X_14:bat[:int],X_15:bat[:int]) := 
sql.copy_from(nil:ptr,"|","\\n",nil:str,"null","/tmp/xyz",-1:lng,0:lng,0:int,0:int,nil:str);
 # querylog.define("explain copy into ttt from \\'/tmp/xyz\\';","user_1")
diff --git a/monetdb5/optimizer/Tests/dataflow3.stable.out 
b/monetdb5/optimizer/Tests/dataflow3.stable.out
--- a/monetdb5/optimizer/Tests/dataflow3.stable.out
+++ b/monetdb5/optimizer/Tests/dataflow3.stable.out
@@ -26,13 +26,13 @@ Ready.
 
 #mdb.list("user","s1_0");
 function user.s1_0():void;
-barrier X_31 := language.dataflow();
+barrier X_30 := language.dataflow();
     X17 := bat.new(:lng);
     X54 := bat.new(:lng);
     X55 := bat.new(:lng);
     X56 := bat.new(:lng);
     X57 := bat.new(:lng);
-exit X_31;
+exit X_30;
     X59 := 
remote.connect("mapi:monetdb://volund.ins.cwi.nl:50000/sn4","monetdb","monetdb","msql");
     remote.register(X59,"user","s1_0map");
     X66 := remote.put(X59,X54);
diff --git a/monetdb5/optimizer/opt_garbageCollector.c 
b/monetdb5/optimizer/opt_garbageCollector.c
--- a/monetdb5/optimizer/opt_garbageCollector.c
+++ b/monetdb5/optimizer/opt_garbageCollector.c
@@ -40,10 +40,9 @@ OPTgarbageCollectorImplementation(Client
 
        // move SQL query to front
        p = NULL;
-       for(i = limit; i> 2; i--){
+       for(i = 0; i < limit; i++){
                if(mb->stmt[i] && getModuleId(mb->stmt[i]) == querylogRef && 
getFunctionId(mb->stmt[i]) == defineRef ){
-                       p = mb->stmt[i];
-                       p = pushInt(mb,p,i+1);
+                       p = getInstrPtr(mb,i);
                        break;
                }
        }
@@ -51,7 +50,6 @@ OPTgarbageCollectorImplementation(Client
                for(  ; i > 1; i--)
                        mb->stmt[i] = mb->stmt[i-1];
                mb->stmt[1] = p;
-               mb->stmt[1]->token = ASSIGNsymbol;
        }
        setVariableScope(mb);
 
diff --git a/monetdb5/optimizer/opt_querylog.c 
b/monetdb5/optimizer/opt_querylog.c
--- a/monetdb5/optimizer/opt_querylog.c
+++ b/monetdb5/optimizer/opt_querylog.c
@@ -49,6 +49,7 @@ OPTquerylogImplementation(Client cntxt, 
        pushInstruction(mb, old[0]);
        /* run the querylog.define operation */
        defineQuery = copyInstruction(defineQuery);
+       defineQuery->argc--;  // remoge MAL instruction count
        setFunctionId(defineQuery, appendRef);
        getArg(defineQuery,0) = newTmpVariable(mb,TYPE_any);
        defineQuery->token = ASSIGNsymbol;
diff --git a/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out 
b/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
--- a/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
+++ b/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
@@ -27,9 +27,9 @@ Ready.
 % .explain # table_name
 % mal # name
 % clob # type
-% 86 # length
+% 85 # length
 function user.s4_1():void;
-    X_11:void := querylog.define("explain select 
fuse(1,2);","sequential_pipe",6:int);
+    X_0:void := querylog.define("explain select 
fuse(1,2);","sequential_pipe",8:int);
     X_3:sht := udf.fuse(1:bte,2:bte);
 # querylog.define("explain select fuse(1,2);","sequential_pipe")
     sql.resultSet(".L2","L2","smallint",16:int,0:int,7:int,X_3);
@@ -69,9 +69,9 @@ end user.s4_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 92 # length
+% 91 # length
 function user.s6_1():void;
-    X_11:void := querylog.define("explain select 
fuse(1000,2000);","sequential_pipe",6:int);
+    X_0:void := querylog.define("explain select 
fuse(1000,2000);","sequential_pipe",8:int);
     X_3:int := udf.fuse(1000:sht,2000:sht);
 # querylog.define("explain select fuse(1000,2000);","sequential_pipe")
     sql.resultSet(".L2","L2","int",32:int,0:int,7:int,X_3);
@@ -111,9 +111,9 @@ end user.s6_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 98 # length
+% 97 # length
 function user.s8_1():void;
-    X_11:void := querylog.define("explain select 
fuse(1000000,2000000);","sequential_pipe",6:int);
+    X_0:void := querylog.define("explain select 
fuse(1000000,2000000);","sequential_pipe",8:int);
     X_3:lng := udf.fuse(1000000:int,2000000:int);
 # querylog.define("explain select fuse(1000000,2000000);","sequential_pipe")
     sql.resultSet(".L2","L2","bigint",64:int,0:int,7:int,X_3);
@@ -171,9 +171,9 @@ end user.s8_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 101 # length
+% 100 # length
 function user.s16_1():void;
-    X_32:void := querylog.define("explain select fuse(a,b) from 
udf_fuse;","sequential_pipe",22:int);
+    X_0:void := querylog.define("explain select fuse(a,b) from 
udf_fuse;","sequential_pipe",27:int);
     X_16 := bat.new(nil:str);
     X_23 := bat.append(X_16,"sys.L2");
     X_18 := bat.new(nil:str);
@@ -223,9 +223,9 @@ end user.s16_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 101 # length
+% 100 # length
 function user.s18_1():void;
-    X_32:void := querylog.define("explain select fuse(c,d) from 
udf_fuse;","sequential_pipe",22:int);
+    X_0:void := querylog.define("explain select fuse(c,d) from 
udf_fuse;","sequential_pipe",27:int);
     X_16 := bat.new(nil:str);
     X_23 := bat.append(X_16,"sys.L2");
     X_18 := bat.new(nil:str);
@@ -275,9 +275,9 @@ end user.s18_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 101 # length
+% 100 # length
 function user.s20_1():void;
-    X_32:void := querylog.define("explain select fuse(e,f) from 
udf_fuse;","sequential_pipe",22:int);
+    X_0:void := querylog.define("explain select fuse(e,f) from 
udf_fuse;","sequential_pipe",27:int);
     X_16 := bat.new(nil:str);
     X_23 := bat.append(X_16,"sys.L2");
     X_18 := bat.new(nil:str);
diff --git a/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out 
b/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
--- a/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
+++ b/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
@@ -48,9 +48,9 @@ Ready.
 % .explain # table_name
 % mal # name
 % clob # type
-% 99 # length
+% 98 # length
 function user.s4_1():void;
-    X_10:void := querylog.define("explain select 
reverse(\\'MonetDB\\');","sequential_pipe",6:int);
+    X_0:void := querylog.define("explain select 
reverse(\\'MonetDB\\');","sequential_pipe",7:int);
     X_3:str := udf.reverse("MonetDB");
 # querylog.define("explain select reverse(\\'MonetDB\\');","sequential_pipe")
     sql.resultSet(".L2","L2","clob",0:int,0:int,4:int,X_3);
@@ -108,9 +108,9 @@ end user.s4_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 105 # length
+% 104 # length
 function user.s12_1():void;
-    X_28:void := querylog.define("explain select reverse(x) from 
udf_reverse;","sequential_pipe",20:int);
+    X_0:void := querylog.define("explain select reverse(x) from 
udf_reverse;","sequential_pipe",22:int);
     X_13 := bat.new(nil:str);
     X_20 := bat.append(X_13,"sys.L2");
     X_15 := bat.new(nil:str);
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -474,32 +474,31 @@ int
 backend_dumpstmt(backend *be, MalBlkPtr mb, sql_rel *r, int top, int add_end, 
char *query)
 {
        mvc *c = be->mvc;
-       InstrPtr q;
+       InstrPtr q, querylog;
        int old_mv = be->mvc_var;
        MalBlkPtr old_mb = be->mb;
        stmt *s;
+       char *t, *tt;
        
        // Always keep the SQL query around for monitoring
-       if (query) {
-               char *t, *tt;
-               InstrPtr q;
 
+       if( query == 0)
+               tt = t = GDKstrdup("-- no query");
+       else
                tt = t = GDKstrdup(query);
-               while (t && isspace((int) *t))
-                       t++;
+       while (t && isspace((int) *t))
+               t++;
 
-               q = newStmt(mb, querylogRef, defineRef);
-               if (q == NULL) {
-                       GDKfree(tt);
-                       return -1;
-               }
-               q->token = REMsymbol;   // will be patched
-               setVarType(mb, getArg(q, 0), TYPE_void);
-               setVarUDFtype(mb, getArg(q, 0));
-               q = pushStr(mb, q, t);
+       querylog = q = newStmt(mb, querylogRef, defineRef);
+       if (q == NULL) {
                GDKfree(tt);
-               q = pushStr(mb, q, getSQLoptimizer(be->mvc));
+               return -1;
        }
+       setVarType(mb, getArg(q, 0), TYPE_void);
+       setVarUDFtype(mb, getArg(q, 0));
+       q = pushStr(mb, q, t);
+       GDKfree(tt);
+       q = pushStr(mb, q, getSQLoptimizer(be->mvc));
 
        /* announce the transaction mode */
        q = newStmt(mb, sqlRef, "mvc");
@@ -508,8 +507,10 @@ backend_dumpstmt(backend *be, MalBlkPtr 
        be->mvc_var = getDestVar(q);
        be->mb = mb;
                s = sql_relation2stmt(be, r);
-       if (!s) 
+       if (!s) {
+               (void) pushInt(mb, querylog, mb->stop);
                return 0;
+       }
 
        be->mvc_var = old_mv;
        be->mb = old_mb;
@@ -526,35 +527,9 @@ backend_dumpstmt(backend *be, MalBlkPtr 
                getArg(q, 0) = getArg(getInstrPtr(mb, 0), 0);
                q->barrier = RETURNsymbol;
        }
-       if (add_end){
+       if (add_end)
                pushEndInstruction(mb);
-       }
-       // Always keep the SQL query around for monitoring
-       {
-               char *t, *tt;
-               InstrPtr q;
-
-               if (be->q && be->q->codestring) {
-                       tt = t = GDKstrdup(be->q->codestring);
-                       while (t && isspace((int) *t))
-                               t++;
-               } else {
-                       tt = t = GDKstrdup("-- no query");
-               }
-
-               q = newStmt(mb, querylogRef, defineRef);
-               if (q == NULL) {
-                       GDKfree(tt);
-                       goto cleanup;
-               }
-               q->token = REMsymbol;   // will be patched
-               setVarType(mb, getArg(q, 0), TYPE_void);
-               setVarUDFtype(mb, getArg(q, 0));
-               q = pushStr(mb, q, t);
-               GDKfree(tt);
-               q = pushStr(mb, q, getSQLoptimizer(be->mvc));
-       }
-cleanup:
+       (void) pushInt(mb, querylog, mb->stop);
        return 0;
 }
 
diff --git a/sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out 
b/sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
--- a/sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
+++ b/sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
@@ -27,9 +27,9 @@ Ready.
 % .explain # table_name
 % mal # name
 % clob # type
-% 104 # length
+% 103 # length
 function user.s6_1():void;
-    X_23:void := querylog.define("explain select power(x,2) from 
sf_2596114;","sequential_pipe",17:int);
+    X_0:void := querylog.define("explain select power(x,2) from 
sf_2596114;","sequential_pipe",23:int);
     X_7 := bat.new(nil:str);
     X_14 := bat.append(X_7,"sys.L2");
     X_9 := bat.new(nil:str);
@@ -74,9 +74,9 @@ end user.s6_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 80 # length
+% 96 # length
 function user.main():void;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to