MonetDB: default - Extended a test and approve
Changeset: 3608d0c21b1d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3608d0c21b1d Modified Files: monetdb5/modules/mal/Tests/mat.malC monetdb5/modules/mal/Tests/mat.stable.out Branch: default Log Message: Extended a test and approve diffs (43 lines): diff --git a/monetdb5/modules/mal/Tests/mat.malC b/monetdb5/modules/mal/Tests/mat.malC --- a/monetdb5/modules/mal/Tests/mat.malC +++ b/monetdb5/modules/mal/Tests/mat.malC @@ -1,2 +1,8 @@ i:= mat.pack(1,2,3); io.print(i); +f:= mat.pack(1.0,2.0,3.0); +io.print(f); +s:= mat.pack("a","b","c"); +io.print(s); +b:= mat.pack(true,false,true); +io.print(b); diff --git a/monetdb5/modules/mal/Tests/mat.stable.out b/monetdb5/modules/mal/Tests/mat.stable.out --- a/monetdb5/modules/mal/Tests/mat.stable.out +++ b/monetdb5/modules/mal/Tests/mat.stable.out @@ -33,6 +33,27 @@ stdout of test 'mat` in directory 'monet [ 0@0, 1 ] [ 1@0, 2 ] [ 2@0, 3 ] +#--# +# ht # name +# void flt # type +#--# +[ 0@0, 1 ] +[ 1@0, 2 ] +[ 2@0, 3 ] +#--# +# ht # name +# void str # type +#--# +[ 0@0, "a" ] +[ 1@0, "b" ] +[ 2@0, "c" ] +#--# +# ht # name +# void bit # type +#--# +[ 0@0, true] +[ 1@0, false ] +[ 2@0, true] # 00:24:10 > # 00:24:10 > Done. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Added missing signatures.
Changeset: 8b109284e67b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8b109284e67b Modified Files: sql/backends/monet5/sql_upgrades.c sql/scripts/26_sysmon.sql Branch: default Log Message: Added missing signatures. diffs (37 lines): diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -2357,7 +2357,15 @@ sql_update_default(Client c, mvc *sql, c "external name sql.sysmon_queue;\n" "grant execute on function sys.queue to public;\n" "create view sys.queue as select * from sys.queue();\n" - "grant select on sys.queue to public;\n"); + "grant select on sys.queue to public;\n" + + "create procedure sys.pause(tag tinyint)\n" + "external name sql.sysmon_pause;\n" + "create procedure sys.resume(tag tinyint)\n" + "external name sql.sysmon_resume;\n" + "create procedure sys.stop(tag tinyint)\n" + "external name sql.sysmon_stop;\n" + ); pos += snprintf(buf + pos, bufsize - pos, "update sys.functions set system = true where schema_id = (select id from sys.schemas where name = 'sys')" diff --git a/sql/scripts/26_sysmon.sql b/sql/scripts/26_sysmon.sql --- a/sql/scripts/26_sysmon.sql +++ b/sql/scripts/26_sysmon.sql @@ -26,6 +26,13 @@ create view sys.queue as select * from s grant select on sys.queue to public; -- operations to manipulate the state of havoc queries +create procedure sys.pause(tag tinyint) +external name sql.sysmon_pause; +create procedure sys.resume(tag tinyint) +external name sql.sysmon_resume; +create procedure sys.stop(tag tinyint) +external name sql.sysmon_stop; + create procedure sys.pause(tag int) external name sql.sysmon_pause; create procedure sys.resume(tag int) ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: sq2 - small output changes
Changeset: a1afcd80db71 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a1afcd80db71 Modified Files: sql/test/subquery/Tests/correlated.sql sql/test/subquery/Tests/correlated.stable.out sql/test/subquery/Tests/subquery.stable.out Branch: sq2 Log Message: small output changes diffs (114 lines): diff --git a/sql/test/subquery/Tests/correlated.sql b/sql/test/subquery/Tests/correlated.sql --- a/sql/test/subquery/Tests/correlated.sql +++ b/sql/test/subquery/Tests/correlated.sql @@ -586,7 +586,9 @@ SELECT i, CAST((SELECT (SELECT (SELECT ( --318 --NULL NULL +/* BROKEN SELECT i, (SELECT SUM(s1.i) FROM integers s1 INNER JOIN integers s2 ON (SELECT i1.i+s1.i)=(SELECT i1.i+s2.i)) AS j FROM integers i1 ORDER BY i; +*/ --16 --26 --36 @@ -612,7 +614,9 @@ SELECT i, CAST((SELECT SUM(ss2.i) FROM ( --33 --NULL NULL +/* BROKEN SELECT i, (SELECT SUM(s1.i) FROM integers s1 LEFT OUTER JOIN integers s2 ON (SELECT i1.i+s1.i)=(SELECT i1.i+s2.i)) AS j FROM integers i1 ORDER BY i; +*/ --16 --26 --36 diff --git a/sql/test/subquery/Tests/correlated.stable.out b/sql/test/subquery/Tests/correlated.stable.out --- a/sql/test/subquery/Tests/correlated.stable.out +++ b/sql/test/subquery/Tests/correlated.stable.out @@ -698,8 +698,8 @@ stdout of test 'correlated` in directory [ 2, 50 ] [ 3, 51 ] #SELECT i, (SELECT row_number() OVER (ORDER BY i) FROM integers WHERE i1.i=i) FROM integers i1 ORDER BY i; -% .i1, .L5 # table_name -% i, L5 # name +% .i1, .L3 # table_name +% i, L3 # name % int, int # type % 1, 1 # length [ NULL,NULL] @@ -707,8 +707,8 @@ stdout of test 'correlated` in directory [ 2, 1 ] [ 3, 1 ] #SELECT i1.i, (SELECT rank() OVER (ORDER BY i) FROM integers WHERE i1.i=i) FROM integers i1, integers i2 ORDER BY i1.i; -% .i1, .L5 # table_name -% i, L5 # name +% .i1, .L3 # table_name +% i, L3 # name % int, int # type % 1, 1 # length [ NULL,NULL] @@ -728,8 +728,8 @@ stdout of test 'correlated` in directory [ 3, 1 ] [ 3, 1 ] #SELECT i1.i, (SELECT row_number() OVER (ORDER BY i) FROM integers WHERE i1.i=i) FROM integers i1, integers i2 ORDER BY i1.i; -% .i1, .L5 # table_name -% i, L5 # name +% .i1, .L3 # table_name +% i, L3 # name % int, int # type % 1, 1 # length [ NULL,NULL] @@ -802,15 +802,6 @@ stdout of test 'correlated` in directory [ 1, 6 ] [ 2, 12 ] [ 3, 18 ] -#SELECT i, (SELECT SUM(s1.i) FROM integers s1 INNER JOIN integers s2 ON (SELECT i1.i+s1.i)=(SELECT i1.i+s2.i)) AS j FROM integers i1 ORDER BY i; -% .i1, .L4 # table_name -% i, j # name -% int, hugeint # type -% 1, 1 # length -[ NULL,NULL] -[ 1, 6 ] -[ 2, 6 ] -[ 3, 6 ] #SELECT i, CAST((SELECT SUM(ss1.i) FROM (SELECT i FROM integers s1 WHERE i>ANY(SELECT i FROM integers WHERE i<>s1.i)) ss1) AS BIGINT) AS j FROM integers i1 ORDER BY i; % .i1, . # table_name % i, j # name @@ -829,15 +820,6 @@ stdout of test 'correlated` in directory [ 1, 1 ] [ 2, 2 ] [ 3, 3 ] -#SELECT i, (SELECT SUM(s1.i) FROM integers s1 LEFT OUTER JOIN integers s2 ON (SELECT i1.i+s1.i)=(SELECT i1.i+s2.i)) AS j FROM integers i1 ORDER BY i; -% .i1, .L4 # table_name -% i, j # name -% int, hugeint # type -% 1, 1 # length -[ NULL,NULL] -[ 1, 6 ] -[ 2, 6 ] -[ 3, 6 ] #SELECT i, CAST((SELECT SUM(ss1.i)+SUM(ss2.i) FROM (SELECT i FROM integers s1 WHERE i>ANY(SELECT i FROM integers WHERE i<>s1.i)) ss1 LEFT OUTER JOIN (SELECT i FROM integers s1 WHERE i=ANY(SELECT i FROM integers WHERE i=s1.i)) ss2 ON ss1.i=ss2.i) AS BIGINT) AS j FROM integers i1 ORDER BY i; % .i1, . # table_name % i, j # name diff --git a/sql/test/subquery/Tests/subquery.stable.out b/sql/test/subquery/Tests/subquery.stable.out --- a/sql/test/subquery/Tests/subquery.stable.out +++ b/sql/test/subquery/Tests/subquery.stable.out @@ -141,7 +141,7 @@ stdout of test 'subquery` in directory ' [ 3] [ NULL ] #SELECT (SELECT i FROM integers WHERE i=1); --1 -% sys.L1 # table_name +% .L1 # table_name % L1 # name % int # type % 1 # length @@ -296,8 +296,8 @@ stdout of test 'subquery` in directory ' % 1 # length [ 1] #SELECT (SELECT CAST(SUM(i) AS BIGINT) FROM integers), (SELECT 42); -% sys.L2, . # table_name -% L2, single_value # name +% .L3, . # table_name +% L3, single_value # name % bigint, tinyint # type % 1, 2 # length [ 6, 42 ] ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: sq2 - document new use of e_func
Changeset: 5b68cfa72f4d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5b68cfa72f4d Modified Files: sql/rel.txt Branch: sq2 Log Message: document new use of e_func diffs (12 lines): diff --git a/sql/rel.txt b/sql/rel.txt --- a/sql/rel.txt +++ b/sql/rel.txt @@ -137,6 +137,8 @@ e_aggr -> llist of sub expressions (args for the func and aggr) + optional conditional execution argument -> ffunc / aggr + -> rlist of the partition by and order by expression lists + (only used during AST->relations->unnesting) for aggr -> flag DISTINCT and NO_NIL could be set ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: sq2 - pass rank/window functions a normal functions + l...
Changeset: f9f30e5adfdb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f9f30e5adfdb Modified Files: sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_rel.c sql/server/rel_rel.h sql/server/rel_select.c sql/server/rel_unnest.c Branch: sq2 Log Message: pass rank/window functions a normal functions + list (group by expressions's, order by expression's). rewrite these into projection(s) in the rel_unnest.c file/phase diffs (truncated from 514 to 300 lines): diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -232,6 +232,21 @@ exp_op( sql_allocator *sa, list *l, sql_ } sql_exp * +exp_rank_op( sql_allocator *sa, list *l, list *gbe, list *obe, sql_subfunc *f ) +{ + sql_exp *e = exp_create(sa, e_func); + if (e == NULL) + return NULL; + e->card = exps_card(l); + if (!l || list_length(l) == 0) + e->card = CARD_ATOM; /* unop returns a single atom */ + e->l = l; + e->r = append(append(sa_list(sa), gbe), obe); + e->f = f; + return e; +} + +sql_exp * exp_aggr( sql_allocator *sa, list *l, sql_subaggr *a, int distinct, int no_nils, unsigned int card, int has_nils ) { sql_exp *e = exp_create(sa, e_aggr); @@ -1704,7 +1719,7 @@ exps_bind_column( list *exps, const char for (en = exps->h; en; en = en->next ) { sql_exp *ce = en->data; if (ce->alias.name && strcmp(ce->alias.name, cname) == 0) { - if (e) { + if (e && e != ce && ce->alias.rname && e->alias.rname && strcmp(ce->alias.rname, e->alias.rname) != 0 ) { if (ambiguous) *ambiguous = 1; return NULL; diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -32,6 +32,7 @@ extern sql_exp *exp_in(sql_allocator *sa extern sql_exp *exp_convert(sql_allocator *sa, sql_exp *exp, sql_subtype *fromtype, sql_subtype *totype ); extern str number2name(str s, int len, int i); extern sql_exp *exp_op(sql_allocator *sa, list *l, sql_subfunc *f ); +extern sql_exp *exp_rank_op(sql_allocator *sa, list *largs, list *gbe, list *obe, sql_subfunc *f ); #define append(l,v) list_append(l,v) #define exp_unop(sa,l,f) \ diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c --- a/sql/server/rel_rel.c +++ b/sql/server/rel_rel.c @@ -348,6 +348,17 @@ rel_bind_column2( mvc *sql, sql_rel *rel return NULL; } +sql_exp * +rel_first_column(mvc *sql, sql_rel *r) +{ + list *exps = rel_projections(sql, r, NULL, 1, 1); + + if (!list_empty(exps)) + return exps->h->data; + + return NULL; +} + sql_rel * rel_inplace_setop(sql_rel *rel, sql_rel *l, sql_rel *r, operator_type setop, list *exps) { diff --git a/sql/server/rel_rel.h b/sql/server/rel_rel.h --- a/sql/server/rel_rel.h +++ b/sql/server/rel_rel.h @@ -54,6 +54,7 @@ extern sql_rel *rel_select_copy(sql_allo extern sql_exp *rel_bind_column( mvc *sql, sql_rel *rel, const char *cname, int f ); extern sql_exp *rel_bind_column2( mvc *sql, sql_rel *rel, const char *tname, const char *cname, int f ); +extern sql_exp *rel_first_column(mvc *sql, sql_rel *rel); extern sql_rel *rel_inplace_setop(sql_rel *rel, sql_rel *l, sql_rel *r, operator_type setop, list *exps); extern sql_rel *rel_inplace_project(sql_allocator *sa, sql_rel *rel, sql_rel *l, list *e); diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -5091,43 +5091,6 @@ get_window_clauses(mvc *sql, char* ident return window_specification; //return something to say there were no errors } -static sql_exp* -opt_groupby_add_exp(mvc *sql, sql_rel *p, sql_rel *pp, sql_exp *in) -{ - sql_exp *found; - - if (p->op == op_groupby) { - if (!exp_name(in)) - exp_label(sql->sa, in, ++sql->label); - found = exps_find_exp( p->exps, in); - if (!found) - append(p->exps, in); - else - in = found; - in = exp_ref(sql->sa, in); - } else if (pp && pp->op == op_groupby) { - if (!exp_name(in)) - exp_label(sql->sa, in, ++sql->label); - found = exps_find_exp( p->exps, in); - if (!found) { - sql_rel *l = p->l; - - while (l && l != pp && !is_base(l->op)) { - if (!exps_find_exp(l->exps, in)) { - if (is_project(l->op)) - append(l->exps, exp_copy(sql->sa, in)); -
MonetDB: default - The should not ignore the access control checks.
Changeset: 5cae8068dceb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5cae8068dceb Modified Files: geom/monetdb5/geom.c geom/monetdb5/geom_upgrade.c Branch: default Log Message: The should not ignore the access control checks. diffs (30 lines): diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c --- a/geom/monetdb5/geom.c +++ b/geom/monetdb5/geom.c @@ -1598,8 +1598,8 @@ dumpGeometriesSingle(BAT *idBAT, BAT *ge strncpy(newPath, path, pathLength); newPath[pathLength] = '\0'; } - if (BUNappend(idBAT, newPath, true) != GDK_SUCCEED || - BUNappend(geomBAT, singleWKB, true) != GDK_SUCCEED) + if (BUNappend(idBAT, newPath, false) != GDK_SUCCEED || + BUNappend(geomBAT, singleWKB, false) != GDK_SUCCEED) err = createException(MAL, "geom.Dump", SQLSTATE(38000) "Geos operation BUNappend failed"); GDKfree(newPath); diff --git a/geom/monetdb5/geom_upgrade.c b/geom/monetdb5/geom_upgrade.c --- a/geom/monetdb5/geom_upgrade.c +++ b/geom/monetdb5/geom_upgrade.c @@ -130,9 +130,9 @@ geom_catalog_upgrade(void *lg, int olddb scale = 0; } - if (BUNappend(cnt, type, true) != GDK_SUCCEED || - BUNappend(cnd, , true) != GDK_SUCCEED || - BUNappend(cns, , true) != GDK_SUCCEED) { + if (BUNappend(cnt, type, false) != GDK_SUCCEED || + BUNappend(cnd, , false) != GDK_SUCCEED || + BUNappend(cns, , false) != GDK_SUCCEED) { BBPreclaim(cnt); BBPreclaim(cnd); BBPreclaim(cns); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - They should not ignore the access control che...
Changeset: c7c2515899de for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c7c2515899de Modified Files: sql/backends/monet5/vaults/fits/fits.c sql/backends/monet5/vaults/shp/shp.c Branch: default Log Message: They should not ignore the access control checks. diffs (94 lines): diff --git a/sql/backends/monet5/vaults/fits/fits.c b/sql/backends/monet5/vaults/fits/fits.c --- a/sql/backends/monet5/vaults/fits/fits.c +++ b/sql/backends/monet5/vaults/fits/fits.c @@ -1026,7 +1026,7 @@ str FITSloadTable(Client cntxt, MalBlkPt fits_read_col(fptr, tpcode[j - 1], j, i + 1, 1, rep[j - 1], (void *)nilptr, (void *)v[i]->data, , ); v[i]->nitems = nbytes; - if (BUNappend(tmp, v[i], true) != GDK_SUCCEED) { + if (BUNappend(tmp, v[i], false) != GDK_SUCCEED) { BBPreclaim(tmp); msg = createException(MAL, "fits.loadtable", SQLSTATE(HY001) MAL_MALLOC_FAIL); GDKfree(tpcode); @@ -1061,7 +1061,7 @@ str FITSloadTable(Client cntxt, MalBlkPt tloadtm += GDKms() - tm0; tm0 = GDKms(); for(k = 0; k < batch ; k++) - if (BUNappend(tmp, v[k], true) != GDK_SUCCEED) { + if (BUNappend(tmp, v[k], false) != GDK_SUCCEED) { BBPreclaim(tmp); msg = createException(MAL, "fits.loadtable", SQLSTATE(HY001) MAL_MALLOC_FAIL); goto bailout; diff --git a/sql/backends/monet5/vaults/shp/shp.c b/sql/backends/monet5/vaults/shp/shp.c --- a/sql/backends/monet5/vaults/shp/shp.c +++ b/sql/backends/monet5/vaults/shp/shp.c @@ -503,19 +503,19 @@ SHPimportFile(Client cntxt, MalBlkPtr mb hFieldDefn = OGR_FD_GetFieldDefn( featureDefn, i ); if( OGR_Fld_GetType(hFieldDefn) == OFTInteger ) { int val = OGR_F_GetFieldAsInteger(feature, i); - rc = BUNappend(colsBAT[i], , true); + rc = BUNappend(colsBAT[i], , false); } else if( OGR_Fld_GetType(hFieldDefn) == OFTReal ) { double val = OGR_F_GetFieldAsDouble(feature, i); - rc = BUNappend(colsBAT[i], , true); + rc = BUNappend(colsBAT[i], , false); } else { - rc = BUNappend(colsBAT[i], OGR_F_GetFieldAsString(feature, i), true); + rc = BUNappend(colsBAT[i], OGR_F_GetFieldAsString(feature, i), false); } if (rc != GDK_SUCCEED) { msg = createException(MAL, "shp.import", SQLSTATE(HY001) MAL_MALLOC_FAIL); goto unfree4; } } - if (BUNappend(colsBAT[colsNum - 2], , true) != GDK_SUCCEED) { + if (BUNappend(colsBAT[colsNum - 2], , false) != GDK_SUCCEED) { msg = createException(MAL, "shp.import", SQLSTATE(HY001) MAL_MALLOC_FAIL); goto unfree4; } @@ -529,7 +529,7 @@ SHPimportFile(Client cntxt, MalBlkPtr mb geomWKB->len = len; geomWKB->srid = 0; //FIXME: Add the real srid OGR_G_ExportToWkb(geometry, wkbNDR, (unsigned char *)geomWKB->data); - rc = BUNappend(colsBAT[colsNum - 1], geomWKB, true); + rc = BUNappend(colsBAT[colsNum - 1], geomWKB, false); GDKfree(geomWKB); OGR_F_Destroy(feature); if (rc != GDK_SUCCEED) @@ -730,14 +730,14 @@ SHPpartialimport(Client cntxt, MalBlkPtr hFieldDefn = OGR_FD_GetFieldDefn( featureDefn, i ); if( OGR_Fld_GetType(hFieldDefn) == OFTInteger ) { int val = OGR_F_GetFieldAsInteger(feature, i); - rc = BUNappend(colsBAT[i], , true); + rc = BUNappend(colsBAT[i], , false); } else if( OGR_Fld_GetType(hFieldDefn) == OFTReal ) { double val = OGR_F_GetFieldAsDouble(feature, i); - rc = BUNappend(colsBAT[i], , true); + rc = BUNappend(colsBAT[i], , false); } else if( OGR_Fld_GetType(hFieldDefn) == OFTString ) { - rc = BUNappend(colsBAT[i], OGR_F_GetFieldAsString(feature, i), true); +
MonetDB: default - They should not ignore the access control che...
Changeset: f73665f6e42b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f73665f6e42b Modified Files: monetdb5/modules/mal/manual.c monetdb5/modules/mal/mat.c monetdb5/modules/mal/tokenizer.c Branch: default Log Message: They should not ignore the access control checks. diffs (63 lines): diff --git a/monetdb5/modules/mal/manual.c b/monetdb5/modules/mal/manual.c --- a/monetdb5/modules/mal/manual.c +++ b/monetdb5/modules/mal/manual.c @@ -69,9 +69,9 @@ MANUALcreateOverview(Client cntxt, MalBl } if (BUNappend(mod, t->def->stmt[0]->modname, false) != GDK_SUCCEED || BUNappend(fcn, t->def->stmt[0]->fcnname, false) != GDK_SUCCEED || - BUNappend(com, t->def->help ? t->def->help : "", true) != GDK_SUCCEED || - BUNappend(sig,buf,true) != GDK_SUCCEED || - BUNappend(adr, tt ? tt : "", true) != GDK_SUCCEED) { + BUNappend(com, t->def->help ? t->def->help : "", false) != GDK_SUCCEED || + BUNappend(sig,buf,false) != GDK_SUCCEED || + BUNappend(adr, tt ? tt : "", false) != GDK_SUCCEED) { goto bailout; } } diff --git a/monetdb5/modules/mal/mat.c b/monetdb5/modules/mal/mat.c --- a/monetdb5/modules/mal/mat.c +++ b/monetdb5/modules/mal/mat.c @@ -190,11 +190,11 @@ MATpackValues(Client cntxt, MalBlkPtr mb if (ATOMextern(type)) { for(i = first; i < p->argc; i++) - if (BUNappend(bn, stk->stk[getArg(p,i)].val.pval, true) != GDK_SUCCEED) + if (BUNappend(bn, stk->stk[getArg(p,i)].val.pval, false) != GDK_SUCCEED) goto bailout; } else { for(i = first; i < p->argc; i++) - if (BUNappend(bn, getArgReference(stk, p, i), true) != GDK_SUCCEED) + if (BUNappend(bn, getArgReference(stk, p, i), false) != GDK_SUCCEED) goto bailout; } ret= getArgReference_bat(stk,p,0); diff --git a/monetdb5/modules/mal/tokenizer.c b/monetdb5/modules/mal/tokenizer.c --- a/monetdb5/modules/mal/tokenizer.c +++ b/monetdb5/modules/mal/tokenizer.c @@ -337,7 +337,7 @@ TKNZRappend(oid *pos, str *s) throw(MAL, "tokenizer.append", OPERATION_FAILED " no more free oid's"); } - if (BUNappend(tokenBAT[i].val, parts[i], true) != GDK_SUCCEED) { + if (BUNappend(tokenBAT[i].val, parts[i], false) != GDK_SUCCEED) { GDKfree(url); throw(MAL, "tokenizer.append", OPERATION_FAILED " could not append"); @@ -349,7 +349,7 @@ TKNZRappend(oid *pos, str *s) BAThash(tokenBAT[i].val); } - if (BUNappend(tokenBAT[i].idx, (ptr) & prv, true) != GDK_SUCCEED) { + if (BUNappend(tokenBAT[i].idx, (ptr) & prv, false) != GDK_SUCCEED) { GDKfree(url); throw(MAL, "tokenizer.append", OPERATION_FAILED " could not append"); @@ -360,7 +360,7 @@ TKNZRappend(oid *pos, str *s) *pos = (oid) BATcount(tokenBAT[INDEX].val); comp = COMP(prv, depth); - if (BUNappend(tokenBAT[INDEX].val, , true) != GDK_SUCCEED) { + if (BUNappend(tokenBAT[INDEX].val, , false) != GDK_SUCCEED) { GDKfree(url); throw(MAL, "tokenizer.append", SQLSTATE(HY001) MAL_MALLOC_FAIL); } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: sq2 - small revert
Changeset: 6673c1d1ca70 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6673c1d1ca70 Modified Files: sql/server/rel_select.c Branch: sq2 Log Message: small revert diffs (49 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -3897,7 +3897,7 @@ rel_binop(sql_query *query, sql_rel **re mvc *sql = query->sql; dnode *dl = se->data.lval->h; sql_exp *l, *r; - sql_rel *orel = *rel, *left, *right = NULL; + sql_rel *orel = *rel, *left; char *fname = qname_fname(dl->data.lval); char *sname = qname_schema(dl->data.lval); sql_schema *s = sql->session->schema; @@ -3917,17 +3917,7 @@ rel_binop(sql_query *query, sql_rel **re l = rel_project_add_exp(sql, left, l); orel = left; } - r = rel_value_exp(query, , dl->next->next->data.sym, f, iek); - if (!r) { - /* reset error */ - sql->session->status = 0; - sql->errstr[0] = '\0'; - r = rel_value_exp(query, rel, dl->next->next->data.sym, f, iek); - } else if (left && right) { - *rel = rel_crossproduct(sql->sa, left, right, is_sql_sel(f)?op_left:op_join); - } else if (right) { - *rel = right; - } + r = rel_value_exp(query, rel, dl->next->next->data.sym, f, iek); if (l && *rel && exp_card(l) > CARD_AGGR && rel_find_groupby(*rel)) { if (l && exp_relname(l) && exp_name(l)) return sql_error(sql, ERR_GROUPBY, SQLSTATE(42000) "SELECT: cannot use non GROUP BY column '%s.%s' in query results without an aggregate function", exp_relname(l), exp_name(l)); @@ -5965,7 +5955,7 @@ rel_table_exp(sql_query *query, sql_rel char *tname = column_e->data.lval->h->data.sval; list *exps; - if ((exps = rel_table_projections(sql, *rel, tname, 0)) != NULL) + if ((exps = rel_table_projections(sql, *rel, tname, 0)) != NULL && !list_empty(exps)) return exps; if (!tname) return sql_error(sql, 02, @@ -6215,7 +6205,7 @@ rel_select_exp(sql_query *query, sql_rel te = rel_table_exp(query, , n->data.sym); } else ce = NULL; - if (!ce && (!te || list_empty(te))) { + if (!ce && !te) { if (sql->errstr[0]) return NULL; return sql_error(sql, 02, SQLSTATE(42000) "SELECT: subquery result missing"); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: sq2 - cleanup
Changeset: 2133f3a8f48c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2133f3a8f48c Modified Files: monetdb5/optimizer/opt_support.c sql/server/rel_exp.c sql/server/rel_rel.c sql/server/rel_select.c sql/test/BugTracker-2012/Tests/correlated_groupby_in_selection.Bug-3011.stable.out Branch: sq2 Log Message: cleanup diffs (truncated from 735 to 300 lines): diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -345,7 +345,6 @@ safetyBarrier(InstrPtr p, InstrPtr q) return FALSE; } - int isUpdateInstruction(InstrPtr p){ if ( getModuleId(p) == sqlRef && @@ -364,6 +363,7 @@ isUpdateInstruction(InstrPtr p){ return TRUE; return FALSE; } + int hasSideEffects(MalBlkPtr mb, InstrPtr p, int strict) { diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -222,8 +222,10 @@ exp_op( sql_allocator *sa, list *l, sql_ e->card = exps_card(l); if (!l || list_length(l) == 0) e->card = CARD_ATOM; /* unop returns a single atom */ + /* if (f->func->side_effect) e->card = CARD_MULTI; + */ e->l = l; e->f = f; return e; diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c --- a/sql/server/rel_rel.c +++ b/sql/server/rel_rel.c @@ -851,9 +851,7 @@ rel_groupby(mvc *sql, sql_rel *l, list * append(aggrs, ne); } } -#if 0 -#endif rel->l = l; rel->r = groupbyexps; rel->exps = aggrs; diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -42,14 +42,8 @@ rel_table_projections( mvc *sql, sql_rel if (!rel) return NULL; - if (!tname) { - //if ((is_project(rel->op) || rel->op == op_select || is_semi(rel->op)) && rel->l) - //if (!is_base(rel->op) && is_base(rel->op)) - return _rel_projections(sql, rel, NULL, 1, 0, 1); - //else - //return NULL; - /* return rel_projections(sql, rel, NULL, 1, 0); */ - } + if (!tname) + return _rel_projections(sql, rel, NULL, 1, 0, 1); switch(rel->op) { case op_join: @@ -187,74 +181,6 @@ rel_find_lastexp(sql_rel *rel ) return rel->exps->t->data; } -#if 0 -static sql_rel* -rel_project2groupby(mvc *sql, sql_rel *g) -{ - if (g->op == op_project) { - node *en; - - reset_processed(g); - if (!g->exps) - g->exps = new_exp_list(sql->sa); - for (en = g->exps->h; en; en = en->next) { - sql_exp *e = en->data; - - if (e->card > CARD_ATOM) { - if (e->type == e_column && e->r) { - return sql_error(sql, 02, SQLSTATE(42000) "Cannot use non GROUP BY column '%s' in query results without an aggregate function", (char *) e->r); - } else { - return sql_error(sql, 02, SQLSTATE(42000) "Cannot use non GROUP BY column in query results without an aggregate function"); - } - } - } - g->card = CARD_ATOM; /* no groupby expressions */ - g->op = op_groupby; - g->r = new_exp_list(sql->sa); /* add empty groupby column list */ - g = rel_project(sql->sa, g, rel_projections(sql, g, NULL, 1, 1)); - reset_processed(g); - return g; - } - return NULL; -} - -static sql_rel* -revert_project2groupby(sql_rel *p) -{ - /* change too recusive find project/groupby */ - if (p && p->op == op_project) { - sql_rel *g = p->l; - - if (g->op == op_groupby) { - sql_rel *l = g->l; - g->r = NULL; - g->op = op_project; - if (l) - g->card = l->card; - return g; - } - } - return p; -} - -static void -rel_intermediates_add_exp(mvc *sql, sql_rel *p, sql_rel *op, sql_exp *in) -{ - while(op && p != op) { - sql_rel *pp = op; - - while(pp->l && pp->l != p) - pp = pp->l; - if (pp && pp->l == p && pp->op == op_project) { - in = exp_ref(sql->sa, in); - in = rel_project_add_exp(sql, pp, in); - } - p = pp; - } -} - -#endif - static sql_rel * rel_orderby(mvc *sql, sql_rel *l) { @@
MonetDB: Nov2019 - Scripts startup cleanup. Handle startup scrip...
Changeset: 4169a5a59387 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4169a5a59387 Modified Files: sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_upgrades.c sql/backends/monet5/sql_upgrades.h sql/scripts/99_system.sql Branch: Nov2019 Log Message: Scripts startup cleanup. Handle startup scripts transactions at SQLinit. Stop either database creation or upgrades whenever an error is found. diffs (truncated from 380 to 300 lines): diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -507,8 +507,8 @@ SQLinit(Client c) slash_2_dir_sep(path); fullname = MSP_locate_sqlscript(path, 1); if (fullname) { - str filename = fullname; - str p, n, newmsg= MAL_SUCCEED; + str filename = fullname, p, n; + fprintf(stdout, "# SQL catalog created, loading sql scripts once\n"); do { stream *fd = NULL; @@ -531,31 +531,40 @@ SQLinit(Client c) sz = getFileSize(fd); if (sz > (size_t) 1 << 29) { close_stream(fd); - newmsg = createException(MAL, "createdb", SQLSTATE(42000) "File %s too large to process", filename); + msg = createException(MAL, "createdb", SQLSTATE(42000) "File %s too large to process", filename); } else { bstream *bfd = NULL; - if((bfd = bstream_create(fd, sz == 0 ? (size_t) (128 * BLOCK) : sz)) == NULL) { + if ((bfd = bstream_create(fd, sz == 0 ? (size_t) (128 * BLOCK) : sz)) == NULL) { close_stream(fd); - newmsg = createException(MAL, "createdb", SQLSTATE(HY001) MAL_MALLOC_FAIL); + msg = createException(MAL, "createdb", SQLSTATE(HY001) MAL_MALLOC_FAIL); } else { if (bstream_next(bfd) >= 0) - newmsg = SQLstatementIntern(c, >buf, "sql.init", TRUE, FALSE, NULL); + msg = SQLstatementIntern(c, >buf, "sql.init", TRUE, FALSE, NULL); bstream_destroy(bfd); } } - if (m->sa) - sa_destroy(m->sa); - m->sa = NULL; - if (newmsg){ - fprintf(stderr,"%s",newmsg); - freeException(newmsg); - } - } - } while (p); + } else + msg = createException(MAL, "createdb", SQLSTATE(HY001) "Couldn't open file %s", filename); + } while (p && msg == MAL_SUCCEED); GDKfree(fullname); } else - fprintf(stderr, "!could not read createdb.sql\n"); + msg = createException(MAL, "createdb", SQLSTATE(HY001) "Could not read createdb.sql"); + + /* Commit after all the startup scripts have been processed */ + assert(m->session->tr->active); + if (mvc_status(m) < 0 || msg) + other = mvc_rollback(m, 0, NULL, false); + else + other = mvc_commit(m, 0, NULL, false); + + if (other && !msg) /* 'msg' variable might be set or not, as well as 'other'. Throw the earliest one */ + msg = other; + else if (other) + freeException(other); + + if (msg) + fprintf(stderr, "%s", msg); #endif } else {/* handle upgrades */ if (!m->sa) @@ -564,10 +573,10 @@ SQLinit(Client c) msg = createException(MAL, "createdb", SQLSTATE(HY001) MAL_MALLOC_FAIL); } else if (maybeupgrade) { if ((msg = SQLtrans(m)) == MAL_SUCCEED) { -
MonetDB: default - Merge with Nov2019
Changeset: 804427e295f6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=804427e295f6 Modified Files: sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_upgrades.c Branch: default Log Message: Merge with Nov2019 diffs (206 lines): diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -565,9 +565,11 @@ SQLinit(Client c) } else if (maybeupgrade) { if ((msg = SQLtrans(m)) == MAL_SUCCEED) { SQLupgrades(c,m); - /* sometimes the upgrade ends in a COMMIT, -* sometimes not */ - if (m->session->tr->active) + /* Commit at the end of the upgrade */ + assert(m->session->tr->active); + if (mvc_status(m) < 0) + msg = mvc_rollback(m, 0, NULL, false); + else msg = mvc_commit(m, 0, NULL, false); } } diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -248,7 +248,6 @@ sql_update_hugeint(Client c, mvc *sql, c "update sys.functions set system = true where name = 'filter' and schema_id = (select id from sys.schemas where name = 'json');\n"); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -297,7 +296,6 @@ sql_update_geom(Client c, mvc *sql, int } pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -411,7 +409,6 @@ sql_update_jul2017(Client c, const char res_tables_destroy(output); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -456,7 +453,6 @@ sql_update_jul2017_sp2(Client c) "GRANT EXECUTE ON FUNCTION sys.environment() TO PUBLIC;\n" "GRANT SELECT ON sys.environment TO PUBLIC;\n" ); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); err = SQLstatementIntern(c, , "update", true, false, NULL); @@ -508,7 +504,6 @@ sql_update_jul2017_sp3(Client c, mvc *sq "create trigger system_update_schemas after update on sys.schemas for each statement call sys_update_schemas();\n" "create trigger system_update_tables after update on sys._tables for each statement call sys_update_tables();\n"); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); err = SQLstatementIntern(c, , "update", true, false, NULL); @@ -545,7 +540,6 @@ sql_update_mar2018_geom(Client c, sql_ta "update sys._tables set system = true where name = 'geometry_columns' and schema_id in (select id from schemas where name = 'sys');\n"); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -1014,7 +1008,6 @@ sql_update_mar2018(Client c, mvc *sql, c ); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -1025,7 +1018,6 @@ sql_update_mar2018(Client c, mvc *sql, c "ALTER TABLE sys.function_types SET READ ONLY;\n" "ALTER TABLE sys.function_languages SET READ ONLY;\n"); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos +=
MonetDB: Nov2019 - Run commit statement only once at the end of ...
Changeset: f552f0c2124e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f552f0c2124e Modified Files: sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_upgrades.c Branch: Nov2019 Log Message: Run commit statement only once at the end of every sql upgrades. After a commit in one of the upgrades, the next ones would run on auto-commit, and if a crash would happen, it would be possible to apply a fraction of the upgrades, and thus a corrupted database. diffs (189 lines): diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -565,9 +565,11 @@ SQLinit(Client c) } else if (maybeupgrade) { if ((msg = SQLtrans(m)) == MAL_SUCCEED) { SQLupgrades(c,m); - /* sometimes the upgrade ends in a COMMIT, -* sometimes not */ - if (m->session->tr->active) + /* Commit at the end of the upgrade */ + assert(m->session->tr->active); + if (mvc_status(m) < 0) + msg = mvc_rollback(m, 0, NULL, false); + else msg = mvc_commit(m, 0, NULL, false); } } diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -248,7 +248,6 @@ sql_update_hugeint(Client c, mvc *sql, c "update sys.functions set system = true where name = 'filter' and schema_id = (select id from sys.schemas where name = 'json');\n"); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -297,7 +296,6 @@ sql_update_geom(Client c, mvc *sql, int } pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -411,7 +409,6 @@ sql_update_jul2017(Client c, const char res_tables_destroy(output); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -456,7 +453,6 @@ sql_update_jul2017_sp2(Client c) "GRANT EXECUTE ON FUNCTION sys.environment() TO PUBLIC;\n" "GRANT SELECT ON sys.environment TO PUBLIC;\n" ); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); err = SQLstatementIntern(c, , "update", true, false, NULL); @@ -508,7 +504,6 @@ sql_update_jul2017_sp3(Client c, mvc *sq "create trigger system_update_schemas after update on sys.schemas for each statement call sys_update_schemas();\n" "create trigger system_update_tables after update on sys._tables for each statement call sys_update_tables();\n"); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); err = SQLstatementIntern(c, , "update", true, false, NULL); @@ -545,7 +540,6 @@ sql_update_mar2018_geom(Client c, sql_ta "update sys._tables set system = true where name = 'geometry_columns' and schema_id in (select id from schemas where name = 'sys');\n"); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -1014,7 +1008,6 @@ sql_update_mar2018(Client c, mvc *sql, c ); pos += snprintf(buf + pos, bufsize - pos, "set schema \"%s\";\n", prev_schema); - pos += snprintf(buf + pos, bufsize - pos, "commit;\n"); assert(pos < bufsize); printf("Running database upgrade commands:\n%s\n", buf); @@ -1025,7 +1018,6 @@ sql_update_mar2018(Client c, mvc *sql, c "ALTER TABLE
MonetDB: default - Merge with Nov2019
Changeset: 1b4349e213c6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1b4349e213c6 Modified Files: gdk/gdk_analytic_bounds.c sql/test/BugConstraints/Tests/check_constraint.SF-1714829.stable.err sql/test/pg_regress/Tests/alter_table.stable.err sql/test/pg_regress/Tests/alter_table.stable.out Branch: default Log Message: Merge with Nov2019 diffs (truncated from 694 to 300 lines): diff --git a/gdk/gdk_analytic_bounds.c b/gdk/gdk_analytic_bounds.c --- a/gdk/gdk_analytic_bounds.c +++ b/gdk/gdk_analytic_bounds.c @@ -94,7 +94,7 @@ do {\ lng m = k - 1; \ for (; k < i; k++, rb++) { \ - TPE2 rlimit = (TPE2) LIMIT; \ + TPE2 rlimit = LIMIT;\ TPE1 v = bp[k]; \ if (is_##TPE1##_nil(v)) { \ for (j = k; ; j--) {\ @@ -125,7 +125,7 @@ #define ANALYTICAL_WINDOW_BOUNDS_FIXED_GROUPS_FOLLOWING(TPE1, LIMIT, TPE2) \ do {\ for (; k < i; k++, rb++) { \ - TPE2 rlimit = (TPE2) LIMIT; \ + TPE2 rlimit = LIMIT;\ TPE1 v = bp[k]; \ if (is_##TPE1##_nil(v)) { \ for (j = k + 1; j < i; j++) { \ @@ -168,7 +168,7 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_PRECEDING(LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_PRECEDING(LIMIT, TPE) \ do {\ lng m = k - 1; \ for (; k < i; k++, rb++) { \ @@ -188,7 +188,7 @@ next = BUNtail(bpi, (BUN) j); \ if (atomcmp(next, nil) == 0)\ break; \ - if (ABSOLUTE(atomcmp(v, next)) > (int) LIMIT) \ + if (ABSOLUTE((TPE) atomcmp(v, next)) > (TPE) LIMIT) \ break; \ } \ } \ @@ -197,7 +197,7 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_FOLLOWING(LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_RANGE_FOLLOWING(LIMIT, TPE) \ do {\ for (; k < i; k++, rb++) { \ void *v = BUNtail(bpi, (BUN) k);\ @@ -211,7 +211,7 @@ void *next = BUNtail(bpi, (BUN) j); \ if (atomcmp(next, nil) == 0)\ break; \ - if (ABSOLUTE(atomcmp(v, next)) > (int) LIMIT) \ + if (ABSOLUTE((TPE) atomcmp(v, next)) > (TPE) LIMIT) \ break; \ } \ } \ @@ -219,11 +219,11 @@ } \ } while (0) -#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_PRECEDING(LIMIT) \ +#define ANALYTICAL_WINDOW_BOUNDS_VARSIZED_GROUPS_PRECEDING(LIMIT, TPE) \ do {\ lng m = k - 1; \ for (; k < i; k++, rb++) { \ - lng rlimit = (lng) LIMIT; \ + TPE rlimit = LIMIT; \ void *v = BUNtail(bpi, (BUN) k);\ if (atomcmp(v, nil) == 0) { \ for (j = k; ; j--) {\ @@ -253,10 +253,10 @@ }