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