Changeset: 0b1e7dfc855b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0b1e7dfc855b
Added Files:
monetdb5/optimizer/opt_cquery.c
monetdb5/optimizer/opt_cquery.h
sql/backends/monet5/Tests/basket00.sql
sql/backends/monet5/Tests/dumpbasket.malC
sql/scripts/50_cquery.sql
Removed Files:
sql/backends/monet5/Tests/basket00.malC
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/exports.stable.out
clients/mapiclient/Tests/stethoscope--help.stable.err
monetdb5/optimizer/Makefile.ag
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_wrapper.c
monetdb5/optimizer/optimizer.mal
sql/backends/monet5/40_sql.mal
sql/backends/monet5/Makefile.ag
sql/backends/monet5/Tests/All
sql/backends/monet5/Tests/cquery00.sql
sql/backends/monet5/sql_cquery.c
sql/backends/monet5/sql_cquery.h
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_scenario.c
sql/scripts/Makefile.ag
sql/server/rel_psm.c
sql/server/sql_mvc.h
sql/server/sql_parser.y
sql/test/BugTracker-2011/Tests/like_or.Bug-2924.stable.out
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-0.Bug-3063.stable.out
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-1.Bug-3063.stable.out
sql/test/Dependencies/Tests/Dependencies.stable.out
sql/test/Dependencies/Tests/Dependencies.stable.out.int128
sql/test/Tests/setoptimizer.stable.out
sql/test/Tests/systemfunctions.stable.out
sql/test/Tests/systemfunctions.stable.out.int128
sql/test/bugs/Tests/groupby_having_charlength-bug-sf-943566.stable.out
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.stable.out
Branch: trails
Log Message:
Intermittent commit
diffs (truncated from 2485 to 300 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -539,6 +539,23 @@ Ready.
[ "bam", "sam_export", "pattern bam.sam_export(output_path:str):void
", "sam_exportf;", "Export results in the bam.export table to a SAM
file" ]
[ "bam", "seq_char", "command bam.seq_char(ref_pos:int, alg_seq:str,
alg_pos:int, alg_cigar:str):str ", "seq_char;", "Calculate the
character in the alignment string (alg_str) that is aligned to position
'ref_pos', conforming to the given cigar string" ]
[ "bam", "seq_length", "command bam.seq_length(cigar:str):int ",
"seq_length;", "Calculate the real length of a DNA sequence, given its CIGAR
string." ]
+[ "basket", "append", "pattern basket.append(mvc:int, sch:str,
tbl:str, col:str, val:any):int ", "BSKTappend;", "Append new tuples to a
basket" ]
+[ "basket", "bind", "pattern basket.bind(mvc:int, sch:str, tbl:str,
col:str):bat[:any] ", "BSKTbind;", "Access the basket column, if needed
add to basket catalog" ]
+[ "basket", "clear_table", "pattern basket.clear_table(sname:str,
tname:str):lng ", "mvc_clear_table_wrap;", "" ]
+[ "basket", "commit", "pattern basket.commit(mvc:any, sch:str,
tbl:str):int ", "BSKTcommit;", "Make the basket available after
updates" ]
+[ "basket", "delete", "pattern basket.delete(mvc:int, sch:str,
tbl:str, rid:bat[:oid]):int ", "BSKTdelete;", "Remove tuples from a basket" ]
+[ "basket", "drop", "pattern basket.drop(mvc:int, sch:str, tbl:str):int ",
"BSKTdrop;", "Remove the basket" ]
+[ "basket", "dump", "command basket.dump():void ", "BSKTdump;", "Show
the baskets table" ]
+[ "basket", "lock", "unsafe pattern basket.lock(mvc:any, sch:str,
tbl:str):int ", "BSKTlock;", "Lock the basket for private use" ]
+[ "basket", "register", "pattern basket.register(mvc:int, sch:str,
tbl:str, role:int):int ", "BSKTregister;", "Initialize a new basket
based on a specific table definition.\nroles:input =0, output=2" ]
+[ "basket", "reset", "pattern basket.reset(mvc:int, sch:str,
tbl:str):int ", "BSKTreset;", "Remove a basket content" ]
+[ "basket", "status", "pattern basket.status() (seen:bat[:timestamp],
sch:bat[:str], tbl:bat[:str], window:bat[:int], stride:bat[:int],
events:bat[:int], cycles:bat[:int], error:bat[:str]) ", "BSKTstatus;",
"Show the status of the baskets" ]
+[ "basket", "tid", "pattern basket.tid(mvc:int, sch:str,
tbl:str):bat[:oid] ", "BSKTtid;", "Collect the candidates for a basket"
]
+[ "basket", "tumble", "unsafe pattern basket.tumble(mvc:any, sch:str,
tbl:str):int ", "BSKTtumble;", "Eat away and slide forward" ]
+[ "basket", "unlock", "unsafe pattern basket.unlock(mvc:any, sch:str,
tbl:str):int ", "BSKTunlock;", "Lock the basket for private use" ]
+[ "basket", "update", "pattern basket.update(mvc:int, sch:str,
tbl:str, col:str, rid:bat[:oid], val:bat[:any]):int ", "BSKTupdate;", "Update
tuples in a basket" ]
+[ "basket", "window", "pattern basket.window(sch:str, tbl:str,
elm:int):int ", "BSKTwindow;", "Set window size" ]
+[ "basket", "window", "pattern basket.window(sch:str, tbl:str,
elm:int, stride:int):int ", "BSKTwindow;", "Set window size and stride" ]
[ "bat", "append", "command bat.append(i:bat[:any_1],
u:bat[:any_1], s:bat[:oid], force:bit):bat[:any_1] ",
"BKCappend_cand_force_wrap;", "append the content of u with candidate list s
to i" ]
[ "bat", "append", "command bat.append(i:bat[:any_1],
u:bat[:any_1], s:bat[:oid]):bat[:any_1] ", "BKCappend_cand_wrap;", "append
the content of u with candidate list s to i" ]
[ "bat", "append", "command bat.append(i:bat[:any_1],
u:bat[:any_1], force:bit):bat[:any_1] ", "BKCappend_force_wrap;",
"append the content of u to i" ]
@@ -7431,6 +7448,24 @@ Ready.
[ "color", "value", "command color.value(c:color):flt ",
"CLRvalue;", "Extracts value component from a color atom" ]
[ "color", "value", "command color.value(c:color):int ",
"CLRvalueInt;", "Extracts value component from a color atom" ]
[ "color", "ycc", "command color.ycc(y:int, cr:int, cb:int):color ",
"CLRycc;", "Converts an YCC triplets to a color atom" ]
+[ "cquery", "cycles", "pattern cquery.cycles(cnt:int):void ",
"CQcycles;", "Limit number of petrinet steps" ]
+[ "cquery", "cycles", "pattern cquery.cycles(mod:str, fcn:str,
cnt:int):void ", "CQcycles;", "Limit number of petrinet steps" ]
+[ "cquery", "deregister", "pattern cquery.deregister():void ",
"CQderegister;", "Remove all continuous queries" ]
+[ "cquery", "deregister", "pattern cquery.deregister(mod:str,
fcn:str):void ", "CQderegister;", "Remove a continuous query" ]
+[ "cquery", "dump", "command cquery.dump():void ", "CQdump;", "Show
the status of the query scheduler" ]
+[ "cquery", "error", "pattern cquery.error(sch:str, tbl:str,
msg:str):void ", "CQerror;", "Remember the error seen" ]
+[ "cquery", "heartbeat", "pattern cquery.heartbeat(cnt:int):void ",
"CQheartbeat;", "Awake all queries after cnt milliseconds" ]
+[ "cquery", "heartbeat", "pattern cquery.heartbeat(mod:str, fcn:str,
cnt:int):void ", "CQheartbeat;", "Awake the query after cnt milliseconds"
]
+[ "cquery", "log", "pattern cquery.log() (tick:bat[:timestamp],
mod:bat[:str], fcn:bat[:str], time:bat[:lng], error:bat[:str]) ", "CQlog;",
"The log of all CQ executions" ]
+[ "cquery", "pause", "pattern cquery.pause():void ", "CQpause;",
"Deactivate all continuous queries" ]
+[ "cquery", "pause", "pattern cquery.pause(mod:str, fcn:str):void ",
"CQpause;", "Deactivate a continuous query" ]
+[ "cquery", "prelude", "command cquery.prelude():void ",
"CQprelude;", "" ]
+[ "cquery", "register", "pattern cquery.register(mod:str, fcn:str):void
", "CQregister;", "Add a continuous MAL plan to the Petri-net scheduler.
It will analyse\nthe MAL block to determine the input/output dependencies and
firing conditions." ]
+[ "cquery", "resume", "pattern cquery.resume():void ",
"CQresume;", "Activate all continuous queries" ]
+[ "cquery", "resume", "pattern cquery.resume(mod:str, fcn:str):void
", "CQresume;", "Activate a specific continuous query" ]
+[ "cquery", "show", "pattern cquery.show(sch:str, fcn:str):void ",
"CQshow;", "Debug a single continuous query" ]
+[ "cquery", "status", "pattern cquery.status() (tick:bat[:timestamp],
mod:bat[:str], fcn:bat[:str], state:bat[:str], error:bat[:str]) ",
"CQstatus;", "Status of all registered continuous queries" ]
+[ "cquery", "wait", "pattern cquery.wait(cnt:int):void ", "CQwait;",
"Sleep for some time" ]
[ "date", "!=", "pattern date.!=(v:date, w:date):bit ", "CMDvarNE;",
"Equality of two dates" ]
[ "date", "#fromstr", "command date.#fromstr():void ",
"date_fromstr;", "" ]
[ "date", "#tostr", "command date.#tostr():void ", "date_tostr;",
"" ]
@@ -8135,6 +8170,8 @@ Ready.
[ "optimizer", "constants", "pattern optimizer.constants(mod:str,
fcn:str):str ", "OPTwrapper;", "Duplicate constant removal optimizer" ]
[ "optimizer", "costModel", "pattern optimizer.costModel():str ",
"OPTwrapper;", "" ]
[ "optimizer", "costModel", "pattern optimizer.costModel(mod:str,
fcn:str):str ", "OPTwrapper;", "Estimate the cost of a relational
expression" ]
+[ "optimizer", "cquery", "pattern optimizer.cquery():str ",
"OPTwrapper;", "" ]
+[ "optimizer", "cquery", "pattern optimizer.cquery(mod:str, fcn:str):str
", "OPTwrapper;", "Simulate cquery style execution" ]
[ "optimizer", "dataflow", "pattern optimizer.dataflow():str ",
"OPTwrapper;", "" ]
[ "optimizer", "dataflow", "pattern optimizer.dataflow(mod:str,
fcn:str):str ", "OPTwrapper;", "Dataflow bracket code injection" ]
[ "optimizer", "deadcode", "pattern optimizer.deadcode():str ",
"OPTwrapper;", "" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -643,6 +643,23 @@ Ready.
[ "bam", "sam_export", "pattern bam.sam_export(output_path:str):void
", "sam_exportf;", "Export results in the bam.export table to a SAM
file" ]
[ "bam", "seq_char", "command bam.seq_char(ref_pos:int, alg_seq:str,
alg_pos:int, alg_cigar:str):str ", "seq_char;", "Calculate the
character in the alignment string (alg_str) that is aligned to position
'ref_pos', conforming to the given cigar string" ]
[ "bam", "seq_length", "command bam.seq_length(cigar:str):int ",
"seq_length;", "Calculate the real length of a DNA sequence, given its CIGAR
string." ]
+[ "basket", "append", "pattern basket.append(mvc:int, sch:str,
tbl:str, col:str, val:any):int ", "BSKTappend;", "Append new tuples to a
basket" ]
+[ "basket", "bind", "pattern basket.bind(mvc:int, sch:str, tbl:str,
col:str):bat[:any] ", "BSKTbind;", "Access the basket column, if needed
add to basket catalog" ]
+[ "basket", "clear_table", "pattern basket.clear_table(sname:str,
tname:str):lng ", "mvc_clear_table_wrap;", "" ]
+[ "basket", "commit", "pattern basket.commit(mvc:any, sch:str,
tbl:str):int ", "BSKTcommit;", "Make the basket available after
updates" ]
+[ "basket", "delete", "pattern basket.delete(mvc:int, sch:str,
tbl:str, rid:bat[:oid]):int ", "BSKTdelete;", "Remove tuples from a basket" ]
+[ "basket", "drop", "pattern basket.drop(mvc:int, sch:str, tbl:str):int ",
"BSKTdrop;", "Remove the basket" ]
+[ "basket", "dump", "command basket.dump():void ", "BSKTdump;", "Show
the baskets table" ]
+[ "basket", "lock", "unsafe pattern basket.lock(mvc:any, sch:str,
tbl:str):int ", "BSKTlock;", "Lock the basket for private use" ]
+[ "basket", "register", "pattern basket.register(mvc:int, sch:str,
tbl:str, role:int):int ", "BSKTregister;", "Initialize a new basket
based on a specific table definition.\nroles:input =0, output=2" ]
+[ "basket", "reset", "pattern basket.reset(mvc:int, sch:str,
tbl:str):int ", "BSKTreset;", "Remove a basket content" ]
+[ "basket", "status", "pattern basket.status() (seen:bat[:timestamp],
sch:bat[:str], tbl:bat[:str], window:bat[:int], stride:bat[:int],
events:bat[:int], cycles:bat[:int], error:bat[:str]) ", "BSKTstatus;",
"Show the status of the baskets" ]
+[ "basket", "tid", "pattern basket.tid(mvc:int, sch:str,
tbl:str):bat[:oid] ", "BSKTtid;", "Collect the candidates for a basket"
]
+[ "basket", "tumble", "unsafe pattern basket.tumble(mvc:any, sch:str,
tbl:str):int ", "BSKTtumble;", "Eat away and slide forward" ]
+[ "basket", "unlock", "unsafe pattern basket.unlock(mvc:any, sch:str,
tbl:str):int ", "BSKTunlock;", "Lock the basket for private use" ]
+[ "basket", "update", "pattern basket.update(mvc:int, sch:str,
tbl:str, col:str, rid:bat[:oid], val:bat[:any]):int ", "BSKTupdate;", "Update
tuples in a basket" ]
+[ "basket", "window", "pattern basket.window(sch:str, tbl:str,
elm:int):int ", "BSKTwindow;", "Set window size" ]
+[ "basket", "window", "pattern basket.window(sch:str, tbl:str,
elm:int, stride:int):int ", "BSKTwindow;", "Set window size and stride" ]
[ "bat", "append", "command bat.append(i:bat[:any_1],
u:bat[:any_1], s:bat[:oid], force:bit):bat[:any_1] ",
"BKCappend_cand_force_wrap;", "append the content of u with candidate list s
to i" ]
[ "bat", "append", "command bat.append(i:bat[:any_1],
u:bat[:any_1], s:bat[:oid]):bat[:any_1] ", "BKCappend_cand_wrap;", "append
the content of u with candidate list s to i" ]
[ "bat", "append", "command bat.append(i:bat[:any_1],
u:bat[:any_1], force:bit):bat[:any_1] ", "BKCappend_force_wrap;",
"append the content of u to i" ]
@@ -9777,6 +9794,24 @@ Ready.
[ "color", "value", "command color.value(c:color):flt ",
"CLRvalue;", "Extracts value component from a color atom" ]
[ "color", "value", "command color.value(c:color):int ",
"CLRvalueInt;", "Extracts value component from a color atom" ]
[ "color", "ycc", "command color.ycc(y:int, cr:int, cb:int):color ",
"CLRycc;", "Converts an YCC triplets to a color atom" ]
+[ "cquery", "cycles", "pattern cquery.cycles(cnt:int):void ",
"CQcycles;", "Limit number of petrinet steps" ]
+[ "cquery", "cycles", "pattern cquery.cycles(mod:str, fcn:str,
cnt:int):void ", "CQcycles;", "Limit number of petrinet steps" ]
+[ "cquery", "deregister", "pattern cquery.deregister():void ",
"CQderegister;", "Remove all continuous queries" ]
+[ "cquery", "deregister", "pattern cquery.deregister(mod:str,
fcn:str):void ", "CQderegister;", "Remove a continuous query" ]
+[ "cquery", "dump", "command cquery.dump():void ", "CQdump;", "Show
the status of the query scheduler" ]
+[ "cquery", "error", "pattern cquery.error(sch:str, tbl:str,
msg:str):void ", "CQerror;", "Remember the error seen" ]
+[ "cquery", "heartbeat", "pattern cquery.heartbeat(cnt:int):void ",
"CQheartbeat;", "Awake all queries after cnt milliseconds" ]
+[ "cquery", "heartbeat", "pattern cquery.heartbeat(mod:str, fcn:str,
cnt:int):void ", "CQheartbeat;", "Awake the query after cnt milliseconds"
]
+[ "cquery", "log", "pattern cquery.log() (tick:bat[:timestamp],
mod:bat[:str], fcn:bat[:str], time:bat[:lng], error:bat[:str]) ", "CQlog;",
"The log of all CQ executions" ]
+[ "cquery", "pause", "pattern cquery.pause():void ", "CQpause;",
"Deactivate all continuous queries" ]
+[ "cquery", "pause", "pattern cquery.pause(mod:str, fcn:str):void ",
"CQpause;", "Deactivate a continuous query" ]
+[ "cquery", "prelude", "command cquery.prelude():void ",
"CQprelude;", "" ]
+[ "cquery", "register", "pattern cquery.register(mod:str, fcn:str):void
", "CQregister;", "Add a continuous MAL plan to the Petri-net scheduler.
It will analyse\nthe MAL block to determine the input/output dependencies and
firing conditions." ]
+[ "cquery", "resume", "pattern cquery.resume():void ",
"CQresume;", "Activate all continuous queries" ]
+[ "cquery", "resume", "pattern cquery.resume(mod:str, fcn:str):void
", "CQresume;", "Activate a specific continuous query" ]
+[ "cquery", "show", "pattern cquery.show(sch:str, fcn:str):void ",
"CQshow;", "Debug a single continuous query" ]
+[ "cquery", "status", "pattern cquery.status() (tick:bat[:timestamp],
mod:bat[:str], fcn:bat[:str], state:bat[:str], error:bat[:str]) ",
"CQstatus;", "Status of all registered continuous queries" ]
+[ "cquery", "wait", "pattern cquery.wait(cnt:int):void ", "CQwait;",
"Sleep for some time" ]
[ "date", "!=", "pattern date.!=(v:date, w:date):bit ", "CMDvarNE;",
"Equality of two dates" ]
[ "date", "#fromstr", "command date.#fromstr():void ",
"date_fromstr;", "" ]
[ "date", "#tostr", "command date.#tostr():void ", "date_tostr;",
"" ]
@@ -10497,6 +10532,8 @@ Ready.
[ "optimizer", "constants", "pattern optimizer.constants(mod:str,
fcn:str):str ", "OPTwrapper;", "Duplicate constant removal optimizer" ]
[ "optimizer", "costModel", "pattern optimizer.costModel():str ",
"OPTwrapper;", "" ]
[ "optimizer", "costModel", "pattern optimizer.costModel(mod:str,
fcn:str):str ", "OPTwrapper;", "Estimate the cost of a relational
expression" ]
+[ "optimizer", "cquery", "pattern optimizer.cquery():str ",
"OPTwrapper;", "" ]
+[ "optimizer", "cquery", "pattern optimizer.cquery(mod:str, fcn:str):str
", "OPTwrapper;", "Simulate cquery style execution" ]
[ "optimizer", "dataflow", "pattern optimizer.dataflow():str ",
"OPTwrapper;", "" ]
[ "optimizer", "dataflow", "pattern optimizer.dataflow(mod:str,
fcn:str):str ", "OPTwrapper;", "Dataflow bracket code injection" ]
[ "optimizer", "deadcode", "pattern optimizer.deadcode():str ",
"OPTwrapper;", "" ]
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
@@ -1547,6 +1547,7 @@ str OPTcoercionImplementation(Client cnt
str OPTcommonTermsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
str OPTconstantsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
str OPTcostModelImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
+str OPTcqueryImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
str OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
str OPTdeadcodeImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
str OPTemptybindImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr p);
@@ -2017,6 +2018,7 @@ str copy_fromRef;
str countRef;
str count_no_nilRef;
int cpyConstant(MalBlkPtr mb, VarPtr vr);
+str cqueryRef;
str createException(enum malexception, const char *, _In_z_
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__,
3, 4)));
str createRef;
str create_constraintRef;
@@ -2071,6 +2073,7 @@ void dumpExceptionsToStream(stream *out,
str emptybindRef;
str emptybindidxRef;
str eqRef;
+str errorRef;
str escape_str(str *retval, str s);
str evalFile(Client c, str fname, int listing);
str evalRef;
@@ -2184,6 +2187,7 @@ str initQlog(void);
int initTrace(void);
int inlineMALblock(MalBlkPtr mb, int pc, MalBlkPtr mc);
str inplaceRef;
+str inputRef;
void insertSymbol(Module scope, Symbol prg);
str instruction2str(MalBlkPtr mb, MalStkPtr stl, InstrPtr p, int hidden);
str instructionCall(MalBlkPtr mb, InstrPtr p, str s, str base, size_t len);
@@ -2369,6 +2373,7 @@ str optimizeMALBlock(Client cntxt, MalBl
int optimizerIsApplied(MalBlkPtr mb, str name);
str optimizerRef;
str optimizer_prelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
+str outputRef;
str pack2Ref;
str packRef;
str parametersRef;
@@ -2566,6 +2571,7 @@ str transaction_releaseRef;
str transaction_rollbackRef;
void trimMalVariables(MalBlkPtr mb, MalStkPtr stk);
void trimMalVariables_(MalBlkPtr mb, MalStkPtr glb);
+str tumbleRef;
void typeChecker(stream *out, Module scope, MalBlkPtr mb, InstrPtr p, int
silent);
int tzone_fromstr(const char *buf, int *len, tzone **d);
tzone tzone_local;
@@ -2579,6 +2585,7 @@ str updateRef;
void updateScenario(str scen, str nme, MALfcn fcn);
str userRef;
str vectorRef;
+str windowRef;
str wlcRef;
int wlc_batches;
int wlc_beat;
diff --git a/clients/mapiclient/Tests/stethoscope--help.stable.err
b/clients/mapiclient/Tests/stethoscope--help.stable.err
--- a/clients/mapiclient/Tests/stethoscope--help.stable.err
+++ b/clients/mapiclient/Tests/stethoscope--help.stable.err
@@ -16,6 +16,7 @@ stethoscope [options]
-P | --password=<password>
-p | --port=<portnr>
-h | --host=<hostname>
+ -c | --convert=<old formated file>
-j | --json
-o | --output=<file>
-b | --beat=<delay> in milliseconds (default 50)
diff --git a/monetdb5/optimizer/Makefile.ag b/monetdb5/optimizer/Makefile.ag
--- a/monetdb5/optimizer/Makefile.ag
+++ b/monetdb5/optimizer/Makefile.ag
@@ -24,6 +24,7 @@ lib_optimizer = {
opt_candidates.c opt_candidates.h \
opt_constants.c opt_constants.h \
opt_costModel.c opt_costModel.h \
+ opt_cquery.c opt_cquery.h \
opt_dataflow.c opt_dataflow.h \
opt_deadcode.c opt_deadcode.h \
opt_emptybind.c opt_emptybind.h \
diff --git a/monetdb5/optimizer/opt_cquery.c b/monetdb5/optimizer/opt_cquery.c
new file mode 100644
--- /dev/null
+++ b/monetdb5/optimizer/opt_cquery.c
@@ -0,0 +1,324 @@
+/*
+ * The contents of this file are subject to the MonetDB Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.monetdb.org/Legal/MonetDBLicense
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * The Original Code is the MonetDB Database System.
+ *
+ * The Initial Developer of the Original Code is CWI.
+ * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
+ * Copyright August 2008-2015 MonetDB B.V.
+ * All Rights Reserved.
+ */
+
+/*
+ * (author) M. Kersten
+ * Assume simple queries .
+ */
+/*
+ * We keep a flow dependency table to detect.
+ */
+#include "monetdb_config.h"
+#include "opt_cquery.h"
+#include "opt_deadcode.h"
+#include "mal_interpreter.h" /* for showErrors() */
+#include "mal_builder.h"
+#include "opt_dataflow.h"
+
+#define MAXBSKT 64
+#define getStreamTableInfo(S,T) \
+ for(fnd=0, k= 0; k< btop; k++) \
+ if( strcmp(schemas[k], S)== 0 && strcmp(tables[k], T)== 0 ){ \
+ fnd= 1; break;\
+ }
+
+//#define DEBUG_OPT_CQUERY
+
+str
+OPTcqueryImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci)
+{
+ int i, j, k, fnd, limit, slimit;
+ InstrPtr r, p, *old;
+ int *alias;
+ str schemas[MAXBSKT];
+ str tables[MAXBSKT];
+ int input[MAXBSKT]= {0};
+ int output[MAXBSKT]= {0};
+ int btop=0, lastmvc=0;
+ int noerror=0;
+ int mvcseen = 0;
+ int cq= strncmp(getFunctionId(getInstrPtr(mb,0)),"cq",2) == 0;
+ char buf[256];
+ lng usec = GDKusec();
+
+ (void) pci;
+ // Check applicability of optimizer by looking for streams
+ for(i =0; i< mb->stop; i++){
+ p= getInstrPtr(mb,i);
+ if( getModuleId(p) == basketRef||
+ getModuleId(p) == cqueryRef)
+ break;
+ }
+ if( i == mb->stop)
+ return MAL_SUCCEED;
+
+#ifdef DEBUG_OPT_CQUERY
+ mnstr_printf(cntxt->fdout, "#cquery optimizer start\n");
+ printFunction(cntxt->fdout, mb, stk, LIST_MAL_DEBUG);
+#endif
+ old = mb->stmt;
+ limit = mb->stop;
+ slimit = mb->ssize;
+
+ /* first analyse the query for streaming tables */
+ for (i = 1; i < limit && btop <MAXBSKT; i++){
+ p = old[i];
+ if( getModuleId(p)== basketRef && (getFunctionId(p)==
registerRef || getFunctionId(p)== bindRef ) ){
+ schemas[btop]= getVarConstant(mb, getArg(p,2)).val.sval;
+ tables[btop]= getVarConstant(mb, getArg(p,3)).val.sval;
+#ifdef DEBUG_OPT_CQUERY
+ mnstr_printf(cntxt->fdout, "#cquery bind stream table
%s.%s\n", schemas[btop], tables[btop]);
+#endif
+ for( j =0; j< btop ; j++)
+ if( strcmp(schemas[j], schemas[btop])==0 &&
strcmp(tables[j],tables[btop]) ==0)
+ break;
+ input[j]= 1;
+ if( j == btop)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list