Changeset: 504b00dff667 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=504b00dff667
Modified Files:
MacOSX/post-install.sh
clients/python2/monetdb/mapi.py
clients/python3/monetdb/mapi.py
monetdb5/modules/atoms/mtime.c
monetdb5/modules/mal/Tests/inspect05.stable.out.int128
monetdb5/optimizer/opt_reorder.c
sql/storage/bat/bat_storage.c
sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.sql
sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.stable.out
sql/test/BugTracker-2016/Tests/storagemodel.Bug-3923.stable.out
sql/test/Dependencies/Tests/Dependencies.stable.out
sql/test/Dependencies/Tests/Dependencies.stable.out.int128
sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
sql/test/leaks/Tests/check0.stable.out
sql/test/leaks/Tests/check0.stable.out.int128
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out
sql/test/leaks/Tests/check5.stable.out.int128
sql/test/leaks/Tests/drop3.stable.out
sql/test/leaks/Tests/drop3.stable.out.int128
sql/test/leaks/Tests/select1.stable.out.int128
sql/test/leaks/Tests/select2.stable.out.int128
sql/test/leaks/Tests/temp1.stable.out
sql/test/leaks/Tests/temp1.stable.out.int128
sql/test/leaks/Tests/temp2.stable.out
sql/test/leaks/Tests/temp2.stable.out.int128
sql/test/leaks/Tests/temp3.stable.out
sql/test/leaks/Tests/temp3.stable.out.int128
sql/test/pg_regress/Tests/box.stable.err
sql/test/pg_regress/Tests/path.stable.err
sql/test/pg_regress/Tests/point.stable.err
sql/test/pg_regress/Tests/polygon.stable.err
tools/merovingian/daemon/monetdbd.1.in
Branch: data-vaults
Log Message:
Merge with default
diffs (truncated from 1631 to 300 lines):
diff --git a/MacOSX/post-install.sh b/MacOSX/post-install.sh
--- a/MacOSX/post-install.sh
+++ b/MacOSX/post-install.sh
@@ -2,6 +2,14 @@
monetdb_path=/usr/local/monetdb/bin
-if [[ ":$PATH:" != *":$monetdb_path:"* ]]; then
- printf '\n# Set MonetDB path\nexport PATH=$PATH:'$monetdb_path'\n' >>
~/.profile
-fi
+case $PATH in
+*:$monetdb_path|*:$monetdb_path:*|$monetdb_path:*)
+ ;;
+*)
+ cat >> ~/.profile <<EOF
+
+# Set MonetDB path
+export PATH=\$PATH:$monetdb_path
+EOF
+ ;;
+esac
diff --git a/clients/python2/monetdb/mapi.py b/clients/python2/monetdb/mapi.py
--- a/clients/python2/monetdb/mapi.py
+++ b/clients/python2/monetdb/mapi.py
@@ -142,8 +142,9 @@ class Connection(object):
logger.info("redirect to monetdb://%s:%s/%s" %
(self.hostname, self.port, self.database))
self.socket.close()
- self.connect(self.hostname, self.port, self.username,
- self.password, self.database, self.language)
+ self.connect(hostname=self.hostname, port=self.port,
+ username=self.username, password=self.password,
+ database=self.database, language=self.language)
else:
raise ProgrammingError("unknown redirect: %s" % prompt)
diff --git a/clients/python3/monetdb/mapi.py b/clients/python3/monetdb/mapi.py
--- a/clients/python3/monetdb/mapi.py
+++ b/clients/python3/monetdb/mapi.py
@@ -143,8 +143,9 @@ class Connection(object):
logger.info("redirect to monetdb://%s:%s/%s" %
(self.hostname, self.port, self.database))
self.socket.close()
- self.connect(self.hostname, self.port, self.username,
- self.password, self.database, self.language)
+ self.connect(hostname=self.hostname, port=self.port,
+ username=self.username, password=self.password,
+ database=self.database, language=self.language)
else:
raise ProgrammingError("unknown redirect: %s" % prompt)
diff --git a/monetdb5/modules/mal/Tests/inspect05.stable.out.int128
b/monetdb5/modules/mal/Tests/inspect05.stable.out.int128
--- a/monetdb5/modules/mal/Tests/inspect05.stable.out.int128
+++ b/monetdb5/modules/mal/Tests/inspect05.stable.out.int128
@@ -38,67 +38,72 @@ Ready.
[ 6@0, "delete", "command", "bat", "(b:bat[:any_1]):bat[:any_1] ",
"BKCdelete_all;" ]
[ 7@0, "delete", "command", "bat",
"(b:bat[:any_1],d:bat[:oid]):bat[:any_1] ", "BKCdelete_multi;" ]
[ 8@0, "densebat", "command", "bat",
"(b:bat[:any_1],h:oid):bat[:any_1] ", "BKCdelete;" ]
-[ 9@0, "getAccess", "command", "bat", "(b:bat[:any_1]):str ",
"BKCgetBBPname;" ]
-[ 10@0, "getCapacity", "command", "bat", "(b:bat[:any_1]):oid ",
"BKCgetSequenceBase;" ]
-[ 11@0, "getColumnType", "command", "bat",
"(b:bat[:any_1]):str ", "BKCgetAccess;" ]
-[ 12@0, "getName", "command", "bat", "(bid:bat[:any_1]):str
", "BKCgetRole;" ]
-[ 13@0, "getRole", "command", "bat", "(b:bat[:any_1]):str ",
"BKCgetColumnType;" ]
-[ 14@0, "getSequenceBase", "command", "bat",
"(b:bat[:any_1]):lng ", "BKCgetCapacity;" ]
-[ 15@0, "getSize", "command", "bat", "(b:bat[:any_1]):lng ",
"BKCgetSize;" ]
-[ 16@0, "imprints", "command", "bat", "(b:bat[:hge]):lng ",
"CMDBATimprintsize;" ]
-[ 17@0, "imprints", "command", "bat", "(b:bat[:hge]):void ",
"CMDBATimprints;" ]
-[ 18@0, "imprints", "command", "bat", "(b:bat[:dbl]):lng ",
"CMDBATimprintsize;" ]
-[ 19@0, "imprints", "command", "bat", "(b:bat[:flt]):lng ",
"CMDBATimprintsize;" ]
-[ 20@0, "imprints", "command", "bat", "(b:bat[:lng]):lng ",
"CMDBATimprintsize;" ]
-[ 21@0, "imprints", "command", "bat", "(b:bat[:int]):lng ",
"CMDBATimprintsize;" ]
-[ 22@0, "imprints", "command", "bat", "(b:bat[:sht]):lng ",
"CMDBATimprintsize;" ]
-[ 23@0, "imprintsize", "command", "bat", "(b:bat[:bte]):lng ",
"CMDBATimprintsize;" ]
-[ 24@0, "imprintsize", "command", "bat", "(b:bat[:dbl]):void ",
"CMDBATimprints;" ]
-[ 25@0, "imprintsize", "command", "bat", "(b:bat[:flt]):void ",
"CMDBATimprints;" ]
-[ 26@0, "imprintsize", "command", "bat", "(b:bat[:lng]):void ",
"CMDBATimprints;" ]
-[ 27@0, "imprintsize", "command", "bat", "(b:bat[:int]):void ",
"CMDBATimprints;" ]
-[ 28@0, "imprintsize", "command", "bat", "(b:bat[:sht]):void ",
"CMDBATimprints;" ]
-[ 29@0, "imprintsize", "command", "bat", "(b:bat[:bte]):void ",
"CMDBATimprints;" ]
-[ 30@0, "info", "command", "bat",
"(a:bat[:oid],b:bat[:oid]):bat[:oid] ", "BKCintersectcand;" ]
-[ 31@0, "intersectcand", "command", "bat",
"(b1:bat[:any_1],b2:bat[:any_2]):bit ", "BKCisSynced;" ]
-[ 32@0, "isPersistent", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCisPersistent;" ]
-[ 33@0, "isSorted", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCisTransient;" ]
-[ 34@0, "isSortedReverse", "command", "bat",
"(b:bat[:any_1]):bit ", "BKCisSortedReverse;" ]
-[ 35@0, "isSynced", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCisSorted;" ]
-[ 36@0, "isTransient", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCgetKey;" ]
-[ 37@0, "isaKey", "command", "bat", "(b:bat[:any_1])
(X_2:bat[:str],X_3:bat[:str]) ", "BKCinfo;" ]
-[ 38@0, "mergecand", "command", "bat",
"(a:bat[:oid],b:bat[:oid]):bat[:oid] ", "BKCmergecand;" ]
-[ 39@0, "mirror", "command", "bat",
"(b:bat[:any_2]):bat[:oid] ", "BKCmirror;" ]
-[ 40@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:lng):bat[:any_1] ", "CMDBATnew_persistent;" ]
-[ 41@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:int):bat[:any_1] ", "CMDBATnew_persistent;" ]
-[ 42@0, "new", "pattern", "bat", "(ht:oid,tt:any_1):bat[:any_1]
", "CMDBATnew_persistent;" ]
-[ 43@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:lng):bat[:any_1] ", "CMDBATnew;" ]
-[ 44@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:int):bat[:any_1] ", "CMDBATnew;" ]
-[ 45@0, "new", "pattern", "bat", "(ht:oid,tt:any_1):bat[:any_1]
", "CMDBATnew;" ]
-[ 46@0, "new_persistent", "pattern", "bat",
"(tt:any_1,size:lng):bat[:any_1] ", "CMDBATnewColumn;" ]
-[ 47@0, "new_persistent", "pattern", "bat",
"(tt:any_1,size:int):bat[:any_1] ", "CMDBATnewColumn;" ]
-[ 48@0, "new_persistent", "pattern", "bat",
"(tt:any_1):bat[:any_1] ", "CMDBATnewColumn;" ]
-[ 49@0, "partition", "pattern", "bat",
"(b:bat[:any_1],pieces:int,n:int):bat[:any_1] ", "CMDBATpartition2;"
]
-[ 50@0, "partition", "pattern", "bat",
"(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;" ]
-[ 51@0, "replace", "command", "bat",
"(b:bat[:any_1],del:bat[:oid]):bat[:oid] ", "BKCreuseBATmap;" ]
-[ 52@0, "replace", "command", "bat",
"(b:bat[:any_1],del:bat[:oid]):bat[:any_1] ", "BKCreuseBAT;" ]
-[ 53@0, "replace", "command", "bat",
"(b:bat[:any_1],rid:bat[:oid],val:bat[:any_1],force:bit):bat[:any_1] ",
"BKCbat_inplace_force;" ]
-[ 54@0, "replace", "command", "bat",
"(b:bat[:any_1],rid:bat[:oid],val:bat[:any_1]):bat[:any_1] ",
"BKCbat_inplace;" ]
-[ 55@0, "reuse", "command", "bat",
"(b:bat[:any_1],h:oid,t:any_1,force:bit):bat[:any_1] ", "BKCbun_inplace_force;"
]
-[ 56@0, "reuseMap", "command", "bat",
"(b:bat[:any_1],h:oid,t:any_1):bat[:any_1] ", "BKCbun_inplace;" ]
-[ 57@0, "save", "pattern", "bat", "(val:any_1):bat[:any_1] ",
"CMDBATsingle;" ]
-[ 58@0, "save", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCsetImprints;" ]
-[ 59@0, "setAccess", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCsetHash;" ]
-[ 60@0, "setColumn", "command", "bat", "(nme:str):bit ",
"BKCsave;" ]
-[ 61@0, "setColumn", "command", "bat", "(nme:bat[:any_1]):void
", "BKCsave2;" ]
-[ 62@0, "setHash", "command", "bat", "(b:bat[:any_1]):void
", "BKCsetPersistent;" ]
-[ 63@0, "setImprints", "command", "bat", "(b:bat[:any_1]):void
", "BKCsetTransient;" ]
-[ 64@0, "setKey", "command", "bat",
"(b:bat[:any_1],h:str,t:str):void ", "BKCsetColumns;" ]
-[ 65@0, "setName", "command", "bat",
"(b:bat[:any_1],t:str):void ", "BKCsetColumn;" ]
-[ 66@0, "setPersistent", "command", "bat",
"(b:bat[:any_1],h:str,t:str):void ", "BKCsetRole;" ]
-[ 67@0, "setRole", "command", "bat",
"(b:bat[:any_1],s:str):void ", "BKCsetName;" ]
-[ 68@0, "setTransient", "command", "bat",
"(b:bat[:any_1],mode:str):bat[:any_1] ", "BKCsetAccess;" ]
-[ 69@0, "single", "command", "bat",
"(b:bat[:any_1],mode:bit):bat[:any_1] ", "BKCsetkey;" ]
+[ 9@0, "getAccess", "pattern", "bat", "(bv:bat[:any_1]):bat[:oid] ",
"OIDXgetorderidx;" ]
+[ 10@0, "getCapacity", "command", "bat", "(b:bat[:any_1]):str ",
"BKCgetBBPname;" ]
+[ 11@0, "getColumnType", "command", "bat",
"(b:bat[:any_1]):oid ", "BKCgetSequenceBase;" ]
+[ 12@0, "getName", "command", "bat", "(b:bat[:any_1]):str ",
"BKCgetAccess;" ]
+[ 13@0, "getRole", "command", "bat", "(bid:bat[:any_1]):str
", "BKCgetRole;" ]
+[ 14@0, "getSequenceBase", "command", "bat",
"(b:bat[:any_1]):str ", "BKCgetColumnType;" ]
+[ 15@0, "getSize", "command", "bat", "(b:bat[:any_1]):lng ",
"BKCgetCapacity;" ]
+[ 16@0, "getorderidx", "command", "bat", "(b:bat[:any_1]):lng ",
"BKCgetSize;" ]
+[ 17@0, "hasorderidx", "pattern", "bat", "(bv:bat[:any_1]):bit
", "OIDXhasorderidx;" ]
+[ 18@0, "imprints", "command", "bat", "(b:bat[:hge]):lng ",
"CMDBATimprintsize;" ]
+[ 19@0, "imprints", "command", "bat", "(b:bat[:hge]):void ",
"CMDBATimprints;" ]
+[ 20@0, "imprints", "command", "bat", "(b:bat[:dbl]):lng ",
"CMDBATimprintsize;" ]
+[ 21@0, "imprints", "command", "bat", "(b:bat[:flt]):lng ",
"CMDBATimprintsize;" ]
+[ 22@0, "imprints", "command", "bat", "(b:bat[:lng]):lng ",
"CMDBATimprintsize;" ]
+[ 23@0, "imprints", "command", "bat", "(b:bat[:int]):lng ",
"CMDBATimprintsize;" ]
+[ 24@0, "imprints", "command", "bat", "(b:bat[:sht]):lng ",
"CMDBATimprintsize;" ]
+[ 25@0, "imprintsize", "command", "bat", "(b:bat[:bte]):lng ",
"CMDBATimprintsize;" ]
+[ 26@0, "imprintsize", "command", "bat", "(b:bat[:dbl]):void ",
"CMDBATimprints;" ]
+[ 27@0, "imprintsize", "command", "bat", "(b:bat[:flt]):void ",
"CMDBATimprints;" ]
+[ 28@0, "imprintsize", "command", "bat", "(b:bat[:lng]):void ",
"CMDBATimprints;" ]
+[ 29@0, "imprintsize", "command", "bat", "(b:bat[:int]):void ",
"CMDBATimprints;" ]
+[ 30@0, "imprintsize", "command", "bat", "(b:bat[:sht]):void ",
"CMDBATimprints;" ]
+[ 31@0, "imprintsize", "command", "bat", "(b:bat[:bte]):void ",
"CMDBATimprints;" ]
+[ 32@0, "info", "command", "bat",
"(a:bat[:oid],b:bat[:oid]):bat[:oid] ", "BKCintersectcand;" ]
+[ 33@0, "intersectcand", "command", "bat",
"(b1:bat[:any_1],b2:bat[:any_2]):bit ", "BKCisSynced;" ]
+[ 34@0, "isPersistent", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCisPersistent;" ]
+[ 35@0, "isSorted", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCisTransient;" ]
+[ 36@0, "isSortedReverse", "command", "bat",
"(b:bat[:any_1]):bit ", "BKCisSortedReverse;" ]
+[ 37@0, "isSynced", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCisSorted;" ]
+[ 38@0, "isTransient", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCgetKey;" ]
+[ 39@0, "isaKey", "command", "bat", "(b:bat[:any_1])
(X_2:bat[:str],X_3:bat[:str]) ", "BKCinfo;" ]
+[ 40@0, "mergecand", "command", "bat",
"(a:bat[:oid],b:bat[:oid]):bat[:oid] ", "BKCmergecand;" ]
+[ 41@0, "mirror", "command", "bat",
"(b:bat[:any_2]):bat[:oid] ", "BKCmirror;" ]
+[ 42@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:lng):bat[:any_1] ", "CMDBATnew_persistent;" ]
+[ 43@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:int):bat[:any_1] ", "CMDBATnew_persistent;" ]
+[ 44@0, "new", "pattern", "bat", "(ht:oid,tt:any_1):bat[:any_1]
", "CMDBATnew_persistent;" ]
+[ 45@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:lng):bat[:any_1] ", "CMDBATnew;" ]
+[ 46@0, "new", "pattern", "bat",
"(ht:oid,tt:any_1,size:int):bat[:any_1] ", "CMDBATnew;" ]
+[ 47@0, "new", "pattern", "bat", "(ht:oid,tt:any_1):bat[:any_1]
", "CMDBATnew;" ]
+[ 48@0, "new_persistent", "pattern", "bat",
"(tt:any_1,size:lng):bat[:any_1] ", "CMDBATnewColumn;" ]
+[ 49@0, "new_persistent", "pattern", "bat",
"(tt:any_1,size:int):bat[:any_1] ", "CMDBATnewColumn;" ]
+[ 50@0, "new_persistent", "pattern", "bat",
"(tt:any_1):bat[:any_1] ", "CMDBATnewColumn;" ]
+[ 51@0, "orderidx", "pattern", "bat",
"(bv:bat[:any_1],l:bat[:any_1]...):void ", "OIDXmerge;" ]
+[ 52@0, "orderidx", "pattern", "bat",
"(bv:bat[:any_1],pieces:int):void ", "OIDXcreate;" ]
+[ 53@0, "orderidx", "pattern", "bat", "(bv:bat[:any_1]):void
", "OIDXcreate;" ]
+[ 54@0, "partition", "pattern", "bat",
"(b:bat[:any_1],pieces:int,n:int):bat[:any_1] ", "CMDBATpartition2;"
]
+[ 55@0, "partition", "pattern", "bat",
"(b:bat[:any_1]):bat[:any_1]... ", "CMDBATpartition;" ]
+[ 56@0, "replace", "command", "bat",
"(b:bat[:any_1],del:bat[:oid]):bat[:oid] ", "BKCreuseBATmap;" ]
+[ 57@0, "replace", "command", "bat",
"(b:bat[:any_1],del:bat[:oid]):bat[:any_1] ", "BKCreuseBAT;" ]
+[ 58@0, "replace", "command", "bat",
"(b:bat[:any_1],rid:bat[:oid],val:bat[:any_1],force:bit):bat[:any_1] ",
"BKCbat_inplace_force;" ]
+[ 59@0, "replace", "command", "bat",
"(b:bat[:any_1],rid:bat[:oid],val:bat[:any_1]):bat[:any_1] ",
"BKCbat_inplace;" ]
+[ 60@0, "reuse", "command", "bat",
"(b:bat[:any_1],h:oid,t:any_1,force:bit):bat[:any_1] ", "BKCbun_inplace_force;"
]
+[ 61@0, "reuseMap", "command", "bat",
"(b:bat[:any_1],h:oid,t:any_1):bat[:any_1] ", "BKCbun_inplace;" ]
+[ 62@0, "save", "pattern", "bat", "(val:any_1):bat[:any_1] ",
"CMDBATsingle;" ]
+[ 63@0, "save", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCsetImprints;" ]
+[ 64@0, "setAccess", "command", "bat", "(b:bat[:any_1]):bit ",
"BKCsetHash;" ]
+[ 65@0, "setColumn", "command", "bat", "(nme:str):bit ",
"BKCsave;" ]
+[ 66@0, "setColumn", "command", "bat", "(nme:bat[:any_1]):void
", "BKCsave2;" ]
+[ 67@0, "setHash", "command", "bat", "(b:bat[:any_1]):void
", "BKCsetPersistent;" ]
+[ 68@0, "setImprints", "command", "bat", "(b:bat[:any_1]):void
", "BKCsetTransient;" ]
+[ 69@0, "setKey", "command", "bat",
"(b:bat[:any_1],h:str,t:str):void ", "BKCsetColumns;" ]
+[ 70@0, "setName", "command", "bat",
"(b:bat[:any_1],t:str):void ", "BKCsetColumn;" ]
+[ 71@0, "setPersistent", "command", "bat",
"(b:bat[:any_1],h:str,t:str):void ", "BKCsetRole;" ]
+[ 72@0, "setRole", "command", "bat",
"(b:bat[:any_1],s:str):void ", "BKCsetName;" ]
+[ 73@0, "setTransient", "command", "bat",
"(b:bat[:any_1],mode:str):bat[:any_1] ", "BKCsetAccess;" ]
+[ 74@0, "single", "command", "bat",
"(b:bat[:any_1],mode:bit):bat[:any_1] ", "BKCsetkey;" ]
# 08:55:30 >
# 08:55:30 > Done.
diff --git a/monetdb5/optimizer/opt_reorder.c b/monetdb5/optimizer/opt_reorder.c
--- a/monetdb5/optimizer/opt_reorder.c
+++ b/monetdb5/optimizer/opt_reorder.c
@@ -201,6 +201,66 @@ OPTbreadthfirst(Client cntxt, MalBlkPtr
return 0;
}
+/* SQL appends are collected to create a better dataflow block */
+/* alternatively, we should postpone all mcv-chained actions */
+static int
+OPTpostponeAppends(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
+{
+ int i,j,k=0, actions =0, last;
+ InstrPtr *old, *appends;
+ int limit;
+ (void) cntxt;
+ (void) stk;
+ (void) p;
+
+ appends =(InstrPtr*) GDKzalloc(mb->ssize * sizeof(InstrPtr));
+ if( appends == NULL)
+ return 0;
+ limit= mb->stop;
+ old = mb->stmt;
+ if ( newMalBlkStmt(mb, mb->ssize) < 0) {
+ GDKfree(appends);
+ return 0;
+ }
+ for( i=0; i<limit; i++){
+ if ( getModuleId(old[i]) == sqlRef && getFunctionId(old[i]) ==
appendRef){
+ last = i;
+ }
+ }
+ for( i=0; i<limit; i++){
+ if ( getModuleId(old[i]) == sqlRef && getFunctionId(old[i]) ==
appendRef){
+ // only postpone under strict conditions
+ assert( isVarConstant(mb,getArg(old[i],2)));
+ assert( isVarConstant(mb,getArg(old[i],3)));
+ assert( isVarConstant(mb,getArg(old[i],4)));
+ if( actions )
+ pushInstruction(mb, old[i]);
+ else {
+ if (k > 0 && getArg(old[i],1) ==
getArg(appends[k-1],0))
+ appends[k++]= old[i];
+ else {
+ for(j=0; j<k; j++)
+ pushInstruction(mb,appends[j]);
+ pushInstruction(mb, old[i]);
+ actions++;
+ }
+ }
+ continue;
+ }
+ if ( i == last){
+ actions++;
+ for(j=0; j<k; j++)
+ pushInstruction(mb,appends[j]);
+ }
+ pushInstruction(mb,old[i]);
+ }
+ for( ; i<limit; i++){
+ pushInstruction(mb,old[i]);
+ }
+ GDKfree(appends);
+ return actions;
+}
+
int
OPTreorderImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
@@ -275,5 +335,6 @@ OPTreorderImplementation(Client cntxt, M
OPTremoveDep(dep, limit);
GDKfree(uselist);
GDKfree(old);
+ (void) OPTpostponeAppends(cntxt, mb, 0, 0);
return 1;
}
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1664,7 +1664,7 @@ BATcleanProps( BAT *b )
}
static int
-gtr_update_delta( sql_trans *tr, sql_delta *cbat)
+gtr_update_delta( sql_trans *tr, sql_delta *cbat, int *changes)
{
int ok = LOG_OK;
BAT *ins, *cur;
@@ -1676,6 +1676,7 @@ gtr_update_delta( sql_trans *tr, sql_del
ins = temp_descriptor(cbat->ibid);
/* any inserts */
if (BUNlast(ins) > BUNfirst(ins)) {
+ (*changes)++;
assert(cur->T->heap.storage != STORE_PRIV);
BATappend(cur,ins,TRUE);
cbat->cnt = cbat->ibase = BATcount(cur);
@@ -1690,6 +1691,7 @@ gtr_update_delta( sql_trans *tr, sql_del
BAT *uv = temp_descriptor(cbat->uvbid);
/* any updates */
if (BUNlast(ui) > BUNfirst(ui)) {
+ (*changes)++;
void_replace_bat(cur, ui, uv, TRUE);
temp_destroy(cbat->uibid);
temp_destroy(cbat->uvbid);
@@ -1709,7 +1711,7 @@ gtr_update_delta( sql_trans *tr, sql_del
}
static int
-gtr_update_dbat(sql_dbat *d)
+gtr_update_dbat(sql_dbat *d, int *changes)
{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list