changeset 34bff0e145eb in /var/www/hg/repositories/MonetDB
details: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34bff0e145eb
description: Applying the patch proposed by Zeuner.
diffstat:

 MonetDB5/src/optimizer/opt_reorder.mx                            |  22 ++-
 sql/src/test/BugTracker-2010/Tests/All                           |   1 +
 sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.sql        |  24 +++
 sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.stable.err |  78 
++++++++++
 sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.stable.out |  32 ++++
 5 files changed, 153 insertions(+), 4 deletions(-)

diffs (209 lines):

diff -r 46f4d751fa85 -r 34bff0e145eb MonetDB5/src/optimizer/opt_reorder.mx
--- a/MonetDB5/src/optimizer/opt_reorder.mx     Tue May 04 21:10:38 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_reorder.mx     Tue May 04 21:50:50 2010 +0200
@@ -90,8 +90,8 @@
        Node *list = (Node *) GDKzalloc(sizeof(Node) * mb->stop);
        int *var = (int*) GDKzalloc(sizeof(int) * mb->vtop);
        int i,j;
-       InstrPtr p;
-       int block=0;
+       InstrPtr p = NULL;
+       int block = 0;
        
        if (list == NULL || var == NULL){
                if (list ) GDKfree(list);
@@ -100,9 +100,13 @@
        }
 
        for ( i=0; i< mb->stop; i++){
+               int cnt;
+               size_t slots;
                p= getInstrPtr(mb,i);
+               cnt = p->argc;
+               slots = p->argc + i;
                block |= p->barrier != 0;
-               list[i]= (Node) GDKzalloc(sizeof(NodeRecord) + sizeof(int) * 
p->maxarg);
+               list[i]= (Node) GDKzalloc(sizeof(NodeRecord) + sizeof(int) * 
slots);
                if (list[i] == NULL){
                        for (i--; i>=0; i--)
                                GDKfree(list[i]);
@@ -111,6 +115,16 @@
                        return 0;
                }
                list[i]->cnt= p->argc;
+               if ( sqlRef == getModuleId(p) && isUpdateInstruction(p)) {
+                       int storage_read;
+                       for ( storage_read = 0; i > storage_read; 
storage_read++) {
+                               InstrPtr reading = getInstrPtr(mb,storage_read);
+                               if ( sqlRef == getModuleId(reading) && bindRef 
== getFunctionId(reading)) {
+                                       list[i]->stmt[cnt++] = storage_read;
+                               }
+                       }
+               }
+               list[i]->cnt= cnt;
                for( j=p->retc; j<p->argc; j++)
                        list[i]->stmt[j]= var[getArg(p,j)];
                /* keep the assignment order */
@@ -167,7 +181,7 @@
        old[pc] = 0;
        if( p == NULL)
                return;
-       for (i= 0; i< p->argc; i++)
+       for (i= 0; i< dep[pc]->cnt; i++)
                OPTdepthfirst(cntxt, mb,dep[pc]->stmt[i], old, dep);
 #ifdef DEBUG_OPT_REORDER
                        stream_printf(cntxt->fdout,"dump[%d]:",pc);
diff -r 46f4d751fa85 -r 34bff0e145eb sql/src/test/BugTracker-2010/Tests/All
--- a/sql/src/test/BugTracker-2010/Tests/All    Tue May 04 21:10:38 2010 +0200
+++ b/sql/src/test/BugTracker-2010/Tests/All    Tue May 04 21:50:50 2010 +0200
@@ -7,3 +7,4 @@
 rank-over-crash.SF-2926454
 embedded_record_seperator.SF-2991400
 mat.slice_on_empty_BATs.SF-2994521
+reorder.SF-2995671
diff -r 46f4d751fa85 -r 34bff0e145eb 
sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.sql
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.sql Tue May 04 
21:50:50 2010 +0200
@@ -0,0 +1,24 @@
+START TRANSACTION;
+CREATE TABLE user_record (
+    name VARCHAR(64),
+    uid VARCHAR(32) PRIMARY KEY
+);
+CREATE TABLE user_record_insertion (
+    name VARCHAR(64),
+    uid VARCHAR(32)
+);
+COMMIT;
+START TRANSACTION;
+COPY 1 RECORDS
+    INTO user_record_insertion
+    FROM STDIN
+    USING DELIMITERS ',','\n';
+Jane Doe,e37722e7
+;
+INSERT
+    INTO user_record (name,uid)
+    SELECT name,uid
+        FROM user_record_insertion;
+COMMIT;
+DROP TABLE user_record_insertion;
+DROP TABLE user_record;
diff -r 46f4d751fa85 -r 34bff0e145eb 
sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.stable.err
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.stable.err  Tue May 
04 21:50:50 2010 +0200
@@ -0,0 +1,78 @@
+stderr of test 'reorder.SF-2995671` in directory 'src/test/BugTracker-2010` 
itself:
+
+
+# 21:47:08 >  
+# 21:47:08 >   mserver5 "--config=/ufs/mk/current//Linux/etc/monetdb5.conf" 
--debug=10 --set gdk_nr_threads=0 --set 
"monet_mod_path=/ufs/mk/current//Linux/lib/MonetDB5:/ufs/mk/current//Linux/lib/MonetDB5/lib:/ufs/mk/current//Linux/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/mk/current//Linux/var/MonetDB5/dbfarm"  --set 
mapi_open=true --set xrpc_open=true --set mapi_port=37491 --set xrpc_port=47870 
--set monet_prompt= --set mal_listing=2 --trace  
"--dbname=mTests_src_test_BugTracker-2010" --set mal_listing=0 "--dbinit= 
include sql;" ; echo ; echo Over..
+# 21:47:08 >  
+
+# builtin opt  gdk_arch = 64bitx86_64-unknown-linux-gnu
+# builtin opt  gdk_version = 1.37.0
+# builtin opt  prefix = /ufs/mk/current//Linux
+# builtin opt  exec_prefix = ${prefix}
+# builtin opt  gdk_dbname = demo
+# builtin opt  gdk_dbfarm = ${prefix}/var/MonetDB/dbfarm
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_alloc_map = no
+# builtin opt  gdk_vmtrim = yes
+# builtin opt  monet_admin = adm
+# builtin opt  monet_prompt = >
+# builtin opt  monet_welcome = yes
+# builtin opt  monet_mod_path = ${exec_prefix}/lib/MonetDB
+# builtin opt  monet_daemon = no
+# builtin opt  host = localhost
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_clients = 2
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_debug = 0
+# builtin opt  standoff_ns = 
+# builtin opt  standoff_start = start
+# builtin opt  standoff_end = end
+# config opt   prefix = /ufs/mk/current//Linux
+# config opt   config = ${prefix}/etc/monetdb5.conf
+# config opt   prefix = /ufs/mk/current//Linux
+# config opt   exec_prefix = ${prefix}
+# config opt   gdk_dbfarm = ${prefix}/var/MonetDB5/dbfarm
+# config opt   monet_mod_path = 
${exec_prefix}/lib/MonetDB5:${exec_prefix}/lib/MonetDB5/lib:${exec_prefix}/lib/MonetDB5/bin
+# config opt   mero_pidfile = ${prefix}/var/run/MonetDB/merovingian.pid
+# config opt   mero_controlport = 50001
+# config opt   sql_optimizer = default_pipe
+# config opt   minimal_pipe = inline,remap,deadcode,multiplex,garbageCollector
+# config opt   default_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   nov2009_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   replication_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,replication,multiplex,garbageCollector
+# config opt   accumulator_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,accumulators,dataflow,history,multiplex,garbageCollector
+# config opt   recycler_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,deadcode,constants,commonTerms,joinPath,deadcode,recycle,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   cracker_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,selcrack,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   sidcrack_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,sidcrack,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   datacell_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,deadcode,constants,commonTerms,joinPath,datacell,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   octopus_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,constants,commonTerms,joinPath,octopus,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   mapreduce_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mapreduce,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   datacyclotron_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,datacyclotron,mergetable,deadcode,constants,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,replication,multiplex,garbageCollector
+# config opt   derive_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,derivePath,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   dictionary_pipe = 
inline,remap,dictionary,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# config opt   compression_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mergetable,deadcode,constants,commonTerms,joinPath,deadcode,reduce,dataflow,compression,dataflow,history,multiplex,garbageCollector
+# cmdline opt  config = /ufs/mk/current//Linux/etc/monetdb5.conf
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  monet_mod_path = 
/ufs/mk/current//Linux/lib/MonetDB5:/ufs/mk/current//Linux/lib/MonetDB5/lib:/ufs/mk/current//Linux/lib/MonetDB5/bin
+# cmdline opt  gdk_dbfarm = /ufs/mk/current//Linux/var/MonetDB5/dbfarm
+# cmdline opt  mapi_open = true
+# cmdline opt  xrpc_open = true
+# cmdline opt  mapi_port = 37491
+# cmdline opt  xrpc_port = 47870
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbname = mTests_src_test_BugTracker-2010
+# cmdline opt  mal_listing = 0
+#warning: please don't forget to set your vault key!
+#(see /ufs/mk/current//Linux/etc/monetdb5.conf)
+
+# 21:47:09 >  
+# 21:47:09 >  mclient -lsql -ftest -i -e --host=eir --port=37491 
+# 21:47:09 >  
+
+
+# 21:47:09 >  
+# 21:47:09 >  Done.
+# 21:47:09 >  
+
diff -r 46f4d751fa85 -r 34bff0e145eb 
sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.stable.out
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sql/src/test/BugTracker-2010/Tests/reorder.SF-2995671.stable.out  Tue May 
04 21:50:50 2010 +0200
@@ -0,0 +1,32 @@
+stdout of test 'reorder.SF-2995671` in directory 'src/test/BugTracker-2010` 
itself:
+
+
+# 21:47:08 >  
+# 21:47:08 >   mserver5 "--config=/ufs/mk/current//Linux/etc/monetdb5.conf" 
--debug=10 --set gdk_nr_threads=0 --set 
"monet_mod_path=/ufs/mk/current//Linux/lib/MonetDB5:/ufs/mk/current//Linux/lib/MonetDB5/lib:/ufs/mk/current//Linux/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/mk/current//Linux/var/MonetDB5/dbfarm"  --set 
mapi_open=true --set xrpc_open=true --set mapi_port=37491 --set xrpc_port=47870 
--set monet_prompt= --set mal_listing=2 --trace  
"--dbname=mTests_src_test_BugTracker-2010" --set mal_listing=0 "--dbinit= 
include sql;" ; echo ; echo Over..
+# 21:47:08 >  
+
+# MonetDB server v5.19.0, based on kernel v1.37.0
+# Serving database 'mTests_src_test_BugTracker-2010', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.751 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2010 MonetDB B.V., all rights reserved
+# Visit http://monetdb.cwi.nl/ for further information
+# Listening for connection requests on mapi:monetdb://eir.ins.cwi.nl:37491/
+# MonetDB/SQL module v2.37.0 loaded
+
+Ready.
+
+Over..
+
+# 21:47:09 >  
+# 21:47:09 >  mclient -lsql -ftest -i -e --host=eir --port=37491 
+# 21:47:09 >  
+
+[ 1    ]
+[ 1    ]
+
+# 21:47:09 >  
+# 21:47:09 >  Done.
+# 21:47:09 >  
+
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to