Changeset: bd6f0896ce02 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/bd6f0896ce02 Modified Files: monetdb5/optimizer/opt_generator.c sql/backends/monet5/generator/Tests/rangejoin.test sql/backends/monet5/generator/generator.c Branch: default Log Message:
add rangejoin generator optimizer diffs (75 lines): diff --git a/monetdb5/optimizer/opt_generator.c b/monetdb5/optimizer/opt_generator.c --- a/monetdb5/optimizer/opt_generator.c +++ b/monetdb5/optimizer/opt_generator.c @@ -16,7 +16,7 @@ /* * (c) Martin Kersten, Sjoerd Mullender - * Series generating module for integer, decimal, real, double and timestamps. + * Series generating module for integer, decimal, real, double, date and timestamps. */ #define errorCheck(P,IDX,MOD,I) \ @@ -144,6 +144,9 @@ OPTgeneratorImplementation(Client cntxt, typeChecker(cntxt->usermodule, mb, p, i, TRUE); pushInstruction(mb, p); old[i] = NULL; + } else if (getModuleId(p) == algebraRef && getFunctionId(p) == rangejoinRef + && series[getArg(p, 2)]) { + errorCheck(p, i, algebraRef, getArg(p, 2)); } else if (getModuleId(p) == algebraRef && getFunctionId(p) == selectRef && series[getArg(p, 1)]) { errorCheck(p, i, algebraRef, getArg(p, 1)); diff --git a/sql/backends/monet5/generator/Tests/rangejoin.test b/sql/backends/monet5/generator/Tests/rangejoin.test --- a/sql/backends/monet5/generator/Tests/rangejoin.test +++ b/sql/backends/monet5/generator/Tests/rangejoin.test @@ -6,7 +6,7 @@ INSERT INTO ranges VALUES (1,3),(2,4),(5 query III rowsort SELECT * -FROM generate_series(0,10,1) AS s JOIN ranges ON ( s.value >= ranges.low AND s.value < ranges.hgh) +FROM generate_series(cast(0 as integer),10,1) AS s JOIN ranges ON ( s.value >= ranges.low AND s.value < ranges.hgh) ---- 1 1 diff --git a/sql/backends/monet5/generator/generator.c b/sql/backends/monet5/generator/generator.c --- a/sql/backends/monet5/generator/generator.c +++ b/sql/backends/monet5/generator/generator.c @@ -1643,8 +1643,16 @@ str VLTgenerator_rangejoin(Client cntxt, BBPunfix(blow->batCacheid); throw(MAL,"generator.rangejoin", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); } - li = *getArgReference_bit(stk,pci,5); - ri = *getArgReference_bit(stk,pci,6); + /* ToDo handle cands ie arguments 5,6 */ + li = *getArgReference_bit(stk,pci,7); + ri = *getArgReference_bit(stk,pci,8); + bit anti = *getArgReference_bit(stk,pci,9); + bit nil = *getArgReference_bit(stk,pci,10); + lng estimate = *getArgReference_lng(stk,pci,11); + /* ToDo handle anti, symmetric and estimate */ + (void)anti; + (void)nil; + (void)estimate; cnt = BATcount(blow); limit = 2 * cnt; //top off result before expansion @@ -1780,12 +1788,12 @@ static mel_func generator_init_funcs[] = pattern("generator", "join", VLTgenerator_join, false, "", args(2,4, batarg("l",oid),batarg("r",oid),batarg("b",lng),batarg("gen",lng))), pattern("generator", "join", VLTgenerator_join, false, "", args(2,4, batarg("l",oid),batarg("r",oid),batarg("b",flt),batarg("gen",flt))), pattern("generator", "join", VLTgenerator_join, false, "Overloaded join operation", args(2,4, batarg("l",oid),batarg("r",oid),batarg("b",dbl),batarg("gen",dbl))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",bte),batarg("low",bte),batarg("hgh",bte),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",sht),batarg("low",sht),batarg("hgh",sht),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",int),batarg("low",int),batarg("hgh",int),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",lng),batarg("low",lng),batarg("hgh",lng),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",flt),batarg("low",flt),batarg("hgh",flt),arg("li",bit),arg("ri",bit))), - pattern("generator", "join", VLTgenerator_rangejoin, false, "Overloaded range join operation", args(2,7, batarg("l",oid),batarg("r",oid),batarg("gen",dbl),batarg("low",dbl),batarg("hgh",dbl),arg("li",bit),arg("ri",bit))), + pattern("generator", "rangejoin", VLTgenerator_rangejoin, false, "", args(2,12, batarg("l",oid),batarg("r",oid),batarg("gen",bte),batarg("low",bte),batarg("hgh",bte),batarg("lc",oid),batarg("rc",oid),arg("li",bit),arg("ri",bit),arg("anti",bit),arg("sym",bit),arg("est",lng))), + pattern("generator", "rangejoin", VLTgenerator_rangejoin, false, "", args(2,12, batarg("l",oid),batarg("r",oid),batarg("gen",sht),batarg("low",sht),batarg("hgh",sht),batarg("lc",oid),batarg("rc",oid),arg("li",bit),arg("ri",bit),arg("anti",bit),arg("sym",bit),arg("est",lng))), + pattern("generator", "rangejoin", VLTgenerator_rangejoin, false, "", args(2,12, batarg("l",oid),batarg("r",oid),batarg("gen",int),batarg("low",int),batarg("hgh",int),batarg("lc",oid),batarg("rc",oid),arg("li",bit),arg("ri",bit),arg("anti",bit),arg("sym",bit),arg("est",lng))), + pattern("generator", "rangejoin", VLTgenerator_rangejoin, false, "", args(2,12, batarg("l",oid),batarg("r",oid),batarg("gen",lng),batarg("low",lng),batarg("hgh",lng),batarg("lc",oid),batarg("rc",oid),arg("li",bit),arg("ri",bit),arg("anti",bit),arg("sym",bit),arg("est",lng))), + pattern("generator", "rangejoin", VLTgenerator_rangejoin, false, "", args(2,12, batarg("l",oid),batarg("r",oid),batarg("gen",flt),batarg("low",flt),batarg("hgh",flt),batarg("lc",oid),batarg("rc",oid),arg("li",bit),arg("ri",bit),arg("anti",bit),arg("sym",bit),arg("est",lng))), + pattern("generator", "rangejoin", VLTgenerator_rangejoin, false, "Overloaded range join operation", args(2,12, batarg("l",oid),batarg("r",oid),batarg("gen",dbl),batarg("low",dbl),batarg("hgh",dbl),batarg("lc",oid),batarg("rc",oid),arg("li",bit),arg("ri",bit),arg("anti",bit),arg("sym",bit),arg("est",lng))), #ifdef HAVE_HGE pattern("generator", "series", VLTgenerator_table, false, "", args(1,3, batarg("",hge),arg("first",hge),arg("limit",hge))), pattern("generator", "series", VLTgenerator_table, false, "Create and materialize a generator table", args(1,4, batarg("",hge),arg("first",hge),arg("limit",hge),arg("step",hge))), _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org