Changeset: c3dd0afe489a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c3dd0afe489a Modified Files: gdk/gdk_bbp.c sql/server/rel_psm.c sql/test/subquery/Tests/subquery4.sql sql/test/subquery/Tests/subquery4.stable.err Branch: default Log Message:
Merge with Jun2020 branch. diffs (156 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -997,8 +997,8 @@ BBPcheckbats(void) if (path == NULL) return GDK_FAIL; if (stat(path, &statb) < 0) { - GDKsyserror("BBPcheckbats: cannot stat file %s\n", - path); + GDKsyserror("BBPcheckbats: cannot stat file %s (expected size %zu)\n", + path, b->theap.free); GDKfree(path); return GDK_FAIL; } @@ -1460,7 +1460,7 @@ vheap_entry(FILE *fp, Heap *h) } static gdk_return -new_bbpentry(FILE *fp, bat i, const char *prefix) +new_bbpentry(FILE *fp, bat i) { #ifndef NDEBUG assert(i > 0); @@ -1476,10 +1476,9 @@ new_bbpentry(FILE *fp, bat i, const char } #endif - if (fprintf(fp, "%s%zd %u %s %s %d " BUNFMT " " - BUNFMT " " OIDFMT, prefix, + if (fprintf(fp, "%d %u %s %s %d " BUNFMT " " BUNFMT " " OIDFMT, /* BAT info */ - (ssize_t) i, + (int) i, BBP_status(i) & BBPPERSISTENT, BBP_logical(i), BBP_physical(i), @@ -1489,24 +1488,11 @@ new_bbpentry(FILE *fp, bat i, const char BBP_desc(i)->hseqbase) < 0 || heap_entry(fp, BBP_desc(i)) < 0 || vheap_entry(fp, BBP_desc(i)->tvheap) < 0 || - (BBP_options(i) && - fprintf(fp, " %s", BBP_options(i)) < 0) || + (BBP_options(i) && fprintf(fp, " %s", BBP_options(i)) < 0) || fprintf(fp, "\n") < 0) { GDKsyserror("new_bbpentry: Writing BBP.dir entry failed\n"); return GDK_FAIL; } - TRC_DEBUG(IO_, "%s%zd %u %s %s %d " BUNFMT " " - BUNFMT " " OIDFMT " %s\n", prefix, - /* BAT info */ - (ssize_t) i, - BBP_status(i) & BBPPERSISTENT, - BBP_logical(i), - BBP_physical(i), - BBP_desc(i)->batRestricted << 1, - BBP_desc(i)->batCount, - BBP_desc(i)->batCapacity, - BBP_desc(i)->hseqbase, - BBP_options(i) ? BBP_options(i) : ""); return GDK_SUCCEED; } @@ -1592,7 +1578,7 @@ BBPdir_subcommit(int cnt, bat *subcommit bat i = subcommit[j]; /* BBP.dir consists of all persistent bats only */ if (BBP_status(i) & BBPPERSISTENT) { - if (new_bbpentry(nbbpf, i, "") != GDK_SUCCEED) { + if (new_bbpentry(nbbpf, i) != GDK_SUCCEED) { goto bailout; } } @@ -1664,7 +1650,7 @@ BBPdir(int cnt, bat *subcommit) /* write the entry * BBP.dir consists of all persistent bats */ if (BBP_status(i) & BBPPERSISTENT) { - if (new_bbpentry(fp, i, "") != GDK_SUCCEED) { + if (new_bbpentry(fp, i) != GDK_SUCCEED) { goto bailout; } } diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -96,7 +96,7 @@ psm_set_exp(sql_query *query, dnode *n) res = exp_set(sql->sa, name, e, level); } else { /* multi assignment */ - exp_kind ek = {type_value, card_relation, FALSE}; + exp_kind ek = {type_relation, card_value, FALSE}; sql_rel *rel_val = rel_subquery(query, NULL, val, ek); dlist *vars = n->data.lval; dnode *m; @@ -547,7 +547,7 @@ rel_select_into( sql_query *query, symbo extern sql_rel * rel_select_with_into(sql_query *query, symbol *sq) { - exp_kind ek = {type_value, card_row, TRUE}; + exp_kind ek = {type_relation, card_value, TRUE}; list *reslist = rel_select_into(query, sq, ek); if (!reslist) return NULL; diff --git a/sql/test/subquery/Tests/subquery4.sql b/sql/test/subquery/Tests/subquery4.sql --- a/sql/test/subquery/Tests/subquery4.sql +++ b/sql/test/subquery/Tests/subquery4.sql @@ -192,6 +192,9 @@ SELECT i1.i, i2.i FROM integers i1, inte SELECT 1 IN ((SELECT MIN(col2)), (SELECT SUM(col4))) FROM another_t; -- False +SELECT 1 FROM another_t WHERE (1,col1) IN ((SELECT MIN(i1.i), SUM(i1.i) FROM integers i1)); + -- empty + DECLARE myvar INT; SELECT (SELECT i) INTO myvar FROM integers; --error, one row max DECLARE ovar INT; @@ -200,6 +203,9 @@ SET ovar = (SELECT (SELECT i) FROM integ DECLARE abc,def INT; SET (abc, def) = (SELECT 1, 2); SELECT abc, def; +SET (abc, def) = (SELECT i, i from integers); --error, one row max +DECLARE aa,bb INT; +SELECT i, i INTO aa, bb FROM integers; --error, one row max UPDATE another_T SET col1 = MIN(col1); --error, aggregates not allowed in update set clause UPDATE another_T SET col2 = 1 WHERE col1 = SUM(col2); --error, aggregates not allowed in update set clause @@ -308,6 +314,11 @@ CREATE FUNCTION upsme(input INT) RETURNS SELECT upsme(1); SELECT upsme(1); +CREATE OR REPLACE FUNCTION upsme(input INT) RETURNS INT BEGIN RETURN (SELECT input); END; + +SELECT upsme(1); +SELECT upsme(1); + DROP FUNCTION upsme(INT); DROP FUNCTION evilfunction(INT); DROP FUNCTION evilfunction(INT, INT); diff --git a/sql/test/subquery/Tests/subquery4.stable.err b/sql/test/subquery/Tests/subquery4.stable.err --- a/sql/test/subquery/Tests/subquery4.stable.err +++ b/sql/test/subquery/Tests/subquery4.stable.err @@ -96,7 +96,15 @@ MAPI = (monetdb) /var/tmp/mtest-260928/ QUERY = SET ovar = (SELECT (SELECT i) FROM integers); --error, one row max ERROR = !Cardinality violation, scalar value expected CODE = 21000 -MAPI = (monetdb) /var/tmp/mtest-260928/.s.monetdb.34607 +MAPI = (monetdb) /var/tmp/mtest-68349/.s.monetdb.35729 +QUERY = SET (abc, def) = (SELECT i, i from integers); --error, one row max +ERROR = !Cardinality violation, scalar value expected +CODE = 21000 +MAPI = (monetdb) /var/tmp/mtest-69236/.s.monetdb.37950 +QUERY = SELECT i, i INTO aa, bb FROM integers; --error, one row max +ERROR = !Cardinality violation, scalar value expected +CODE = 21000 +MAPI = (monetdb) /var/tmp/mtest-69236/.s.monetdb.37950 QUERY = UPDATE another_T SET col1 = MIN(col1); --error, aggregates not allowed in update set clause ERROR = !MIN: aggregate functions not allowed in SET clause (use subquery) CODE = 42000 _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list