Changeset: 4a23b15ad16b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4a23b15ad16b Modified Files: monetdb5/modules/kernel/arrays.c monetdb5/modules/mal/Makefile.ag monetdb5/modules/mal/batcalc.c sql/backends/monet5/sql_gencode.c Branch: arrays Log Message:
batcal.lng for arrays + extra arguments in mal.multiplex diffs (150 lines): diff --git a/monetdb5/modules/kernel/arrays.c b/monetdb5/modules/kernel/arrays.c --- a/monetdb5/modules/kernel/arrays.c +++ b/monetdb5/modules/kernel/arrays.c @@ -946,7 +946,8 @@ str ALGprojectDimension(bat* result, con str ALGprojectNonDimension(bat *result, const bat *vals, const ptr *array) { const gdk_array *dimsCands = arrayCopy((gdk_array*)*array); //candidates exactly the same to the array - + + //empty cands so that it will project all cells BAT *oidsCandsBAT = newempty("ALGprojectNonDimension"); bat oidsCands = oidsCandsBAT->batCacheid; diff --git a/monetdb5/modules/mal/Makefile.ag b/monetdb5/modules/mal/Makefile.ag --- a/monetdb5/modules/mal/Makefile.ag +++ b/monetdb5/modules/mal/Makefile.ag @@ -49,7 +49,8 @@ lib_mal = { zorder.c zorder.h \ sample.c sample.h \ json_util.c json_util.h \ - calc.c batcalc.c + calc.c batcalc.c \ + calc_arrays.h calc_arrays.c } headers_mal = { @@ -71,7 +72,7 @@ headers_mal = { headers_auto = { HEADERS = mal DIR = libdir/monetdb5/autoload - SOURCES = 01_calc.mal 01_batcalc.mal + SOURCES = 01_calc.mal 01_batcalc.mal calc_arrays.mal } headers_hge = { @@ -89,7 +90,7 @@ EXTRA_DIST = batExtensions.mal iterator. transaction.mal txtsim.mal tablet.mal tablet.h sample.mal json_util.mal \ mal_mapi.mal mat.mal tokenizer.mal \ batmtime.mal querylog.mal sysmon.mal \ - 01_calc.mal 01_batcalc.mal \ + 01_calc.mal 01_batcalc.mal calc_arrays.mal \ 00_calc_hge.mal 00_batcalc_hge.mal \ 00_iterator_hge.mal 00_language_hge.mal \ 00_mal_mapi_hge.mal 00_mkey_hge.mal 00_batExtensions_hge.mal diff --git a/monetdb5/modules/mal/batcalc.c b/monetdb5/modules/mal/batcalc.c --- a/monetdb5/modules/mal/batcalc.c +++ b/monetdb5/modules/mal/batcalc.c @@ -8,7 +8,6 @@ #include "monetdb_config.h" #include "gdk.h" -#include <gdk_arrays.h> #include "math.h" #include "mal_exception.h" #include "mal_interpreter.h" diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -811,13 +811,17 @@ multiplex2(MalBlkPtr mb, char *mod, char q = pushArgument(mb, q, o1); snprintf(nme, SMALLBUFSIZ, "Y_%d", o1); - if((arraySecondVar = findVariable(mb, nme)) >=0) + if((arraySecondVar = findVariable(mb, nme)) >=0) { + q = pushReturn(mb, q, newTmpVariable(mb, TYPE_ptr)); q = pushArgument(mb, q, arraySecondVar); + } q = pushArgument(mb, q, o2); snprintf(nme, SMALLBUFSIZ, "Y_%d", o2); - if((arraySecondVar = findVariable(mb, nme)) >=0) + if((arraySecondVar = findVariable(mb, nme)) >=0) { + q = pushReturn(mb, q, newTmpVariable(mb, TYPE_ptr)); q = pushArgument(mb, q, arraySecondVar); + } return q; } @@ -1514,6 +1518,10 @@ static int return -1; k = getDestVar(q); + snprintf(nme, SMALLBUFSIZ, "Y_%d", l); + if((arraySecondVar = findVariable(mb, nme)) >=0) + renameVariable(mb, getArg(q, 1), "Y_%d", k); + q = newStmt1(mb, algebraRef, "subselect"); q = pushArgument(mb, q, k); if (sub > 0) @@ -1526,6 +1534,7 @@ static int if (q == NULL) return -1; k = getDestVar(q); + } else { char *cmd = subselectRef; @@ -2175,7 +2184,7 @@ static int } else q = newStmt1(mb, batcalcRef, convert); - /* convert to string is complex, we need full type info + /* convert to string is complex, we need full type info and mvc for the timezone */ if (EC_VARCHAR(t->type->eclass) && !(f->type->eclass == EC_STRING && t->digits == 0)) { q = pushInt(mb, q, f->type->eclass); @@ -2185,7 +2194,13 @@ static int } else if (f->type->eclass == EC_DEC) /* scale of the current decimal */ q = pushInt(mb, q, f->scale); - q = pushArgument(mb, q, l); + q = pushArgument(mb, q, l); + + snprintf(nme, SMALLBUFSIZ, "Y_%d", l); + if((arraySecondVar = findVariable(mb, nme)) >=0) { + q = pushReturn(mb, q, newTmpVariable(mb, TYPE_ptr)); + q = pushArgument(mb, q, arraySecondVar); + } if (t->type->eclass == EC_DEC || EC_TEMP_FRAC(t->type->eclass) || EC_INTERVAL(t->type->eclass)) { /* digits, scale of the result decimal */ @@ -2202,6 +2217,8 @@ static int if (q == NULL) return -1; s->nr = getDestVar(q); + if(arraySecondVar >= 0) + renameVariable(mb, getArg(q, 1), "Y_%d", s->nr); break; } case st_Nop:{ @@ -2269,10 +2286,19 @@ static int setVarUDFtype(mb, getArg(q, q->argc-1)); } special = 0; + snprintf(nme, SMALLBUFSIZ, "Y_%d", op->nr); + if((arraySecondVar = findVariable(mb, nme)) >=0) { + q = pushReturn(mb, q, newTmpVariable(mb, TYPE_ptr)); + q = pushArgument(mb, q, arraySecondVar); + } + } if (q == NULL) return -1; s->nr = getDestVar(q); + if(arraySecondVar >= 0) + renameVariable(mb, getArg(q, 1), "Y_%d", s->nr); + /* keep reference to instruction */ s->rewritten = (void *) q; } break; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list