Changeset: 9f25e78c28dc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9f25e78c28dc Modified Files: gdk/gdk_select.c sql/server/rel_select.c sql/test/miscellaneous/Tests/simple_selects.sql sql/test/miscellaneous/Tests/simple_selects.stable.out Branch: oscar Log Message:
Merged with Jun2020 diffs (297 lines): diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -306,7 +306,7 @@ hashselect(BAT *b, struct canditer *rest buninsfix(bn, dst, cnt, o, \ (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) \ * (dbl) (ci->ncand-p) * 1.1 + 1024), \ - BATcapacity(bn) + ci->ncand - p, BUN_NONE)); \ + maximum, BUN_NONE)); \ } else { \ impsloop(ISDENSE, TEST, quickins(dst, cnt, o, bn)); \ } \ @@ -361,7 +361,7 @@ hashselect(BAT *b, struct canditer *rest buninsfix(bn, dst, cnt, o, \ (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) \ * (dbl) (ci->ncand-p) * 1.1 + 1024), \ - BATcapacity(bn) + ci->ncand - p, BUN_NONE); \ + maximum, BUN_NONE); \ cnt++; \ } \ } \ @@ -526,7 +526,7 @@ fullscan_any(BAT *b, struct canditer *re buninsfix(bn, dst, cnt, o, (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) * (dbl) (ci->ncand-p) * 1.1 + 1024), - BATcapacity(bn) + ci->ncand - p, BUN_NONE); + maximum, BUN_NONE); cnt++; } } @@ -545,7 +545,7 @@ fullscan_any(BAT *b, struct canditer *re buninsfix(bn, dst, cnt, o, (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) * (dbl) (ci->ncand-p) * 1.1 + 1024), - BATcapacity(bn) + ci->ncand - p, BUN_NONE); + maximum, BUN_NONE); cnt++; } } @@ -564,7 +564,7 @@ fullscan_any(BAT *b, struct canditer *re buninsfix(bn, dst, cnt, o, (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) * (dbl) (ci->ncand-p) * 1.1 + 1024), - BATcapacity(bn) + ci->ncand - p, BUN_NONE); + maximum, BUN_NONE); cnt++; } } @@ -603,7 +603,7 @@ fullscan_str(BAT *b, struct canditer *re buninsfix(bn, dst, cnt, o, (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) * (dbl) (ci->ncand-p) * 1.1 + 1024), - BATcapacity(bn) + ci->ncand - p, BUN_NONE); + maximum, BUN_NONE); cnt++; } } @@ -618,7 +618,7 @@ fullscan_str(BAT *b, struct canditer *re buninsfix(bn, dst, cnt, o, (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) * (dbl) (ci->ncand-p) * 1.1 + 1024), - BATcapacity(bn) + ci->ncand - p, BUN_NONE); + maximum, BUN_NONE); cnt++; } } @@ -633,7 +633,7 @@ fullscan_str(BAT *b, struct canditer *re buninsfix(bn, dst, cnt, o, (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) * (dbl) (ci->ncand-p) * 1.1 + 1024), - BATcapacity(bn) + ci->ncand - p, BUN_NONE); + maximum, BUN_NONE); cnt++; } } @@ -648,7 +648,7 @@ fullscan_str(BAT *b, struct canditer *re buninsfix(bn, dst, cnt, o, (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1 : p) * (dbl) (ci->ncand-p) * 1.1 + 1024), - BATcapacity(bn) + ci->ncand - p, BUN_NONE); + maximum, BUN_NONE); cnt++; } } @@ -1950,12 +1950,11 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT * imprints) and either the left bat is persistent or * already has imprints, or the right bats are long * enough (for creating imprints being worth it) */ - BUN maximum; sorted = 2; cnt = 0; - maximum = lci->ncand; for (BUN i = 0; i < rci->ncand; i++) { + maxsize = cnt + (rci->ncand - i) * lci->ncand; ro = canditer_next(rci); if (rlvals) { vrl = FVALUE(rl, ro - rl->hseqbase); @@ -1995,7 +1994,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT false, true, true, false, cnt, l->hseqbase, dst1, - cnt + maximum, + maxsize, true, &algo); break; } @@ -2022,7 +2021,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT false, true, true, false, cnt, l->hseqbase, dst1, - cnt + maximum, + maxsize, true, &algo); break; } @@ -2062,7 +2061,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT false, true, true, false, cnt, l->hseqbase, dst1, - cnt + maximum, + maxsize, true, &algo); break; } @@ -2102,7 +2101,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT false, true, true, false, cnt, l->hseqbase, dst1, - cnt + maximum, + maxsize, true, &algo); break; } @@ -2130,7 +2129,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT false, true, true, false, cnt, l->hseqbase, dst1, - cnt + maximum, + maxsize, true, &algo); break; } @@ -2160,7 +2159,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT false, true, true, false, cnt, l->hseqbase, dst1, - cnt + maximum, + maxsize, true, &algo); break; } @@ -2189,7 +2188,7 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT false, true, true, false, cnt, l->hseqbase, dst1, - cnt + maximum, + maxsize, true, &algo); break; } 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 @@ -917,9 +917,12 @@ table_ref(sql_query *query, sql_rel *rel /* Rename columns of the rel_parse relation */ if (sql->emode != m_deps) { assert(is_project(rel->op)); - if (!rel) - return NULL; set_processed(rel); + if ((is_simple_project(rel->op) || is_groupby(rel->op)) && !list_empty(rel->r)) { + /* it's unsafe to set the projection names because of possible dependent sorting/grouping columns */ + rel = rel_project(sql->sa, rel, rel_projections(sql, rel, NULL, 1, 0)); + set_processed(rel); + } for (n = t->columns.set->h, m = rel->exps->h; n && m; n = n->next, m = m->next) { sql_column *c = n->data; sql_exp *e = m->data; diff --git a/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out b/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out --- a/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out +++ b/sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out @@ -83,7 +83,7 @@ stdout of test 'count_from_commented_fun % .plan # table_name % rel # name % clob # type -% 157 # length +% 159 # length project ( | group by ( | | project ( @@ -92,34 +92,36 @@ project ( | | | | | project ( | | | | | | project ( | | | | | | | project ( -| | | | | | | | left outer join ( +| | | | | | | | project ( | | | | | | | | | left outer join ( -| | | | | | | | | | join ( +| | | | | | | | | | left outer join ( | | | | | | | | | | | join ( -| | | | | | | | | | | | table(sys.functions) [ "functions"."id" as "f"."id", "functions"."schema_id" as "f"."schema_id" ] COUNT , -| | | | | | | | | | | | table(sys.comments) [ "comments"."id" NOT NULL HASHCOL as "c"."id" ] COUNT -| | | | | | | | | | | ) [ "f"."id" = "c"."id" NOT NULL HASHCOL ], -| | | | | | | | | | | table(sys.schemas) [ "schemas"."id" as "s"."id" ] COUNT -| | | | | | | | | | ) [ "f"."schema_id" = "s"."id" ], +| | | | | | | | | | | | join ( +| | | | | | | | | | | | | table(sys.functions) [ "functions"."id" as "f"."id", "functions"."schema_id" as "f"."schema_id" ] COUNT , +| | | | | | | | | | | | | table(sys.comments) [ "comments"."id" NOT NULL HASHCOL as "c"."id" ] COUNT +| | | | | | | | | | | | ) [ "f"."id" = "c"."id" NOT NULL HASHCOL ], +| | | | | | | | | | | | table(sys.schemas) [ "schemas"."id" as "s"."id" ] COUNT +| | | | | | | | | | | ) [ "f"."schema_id" = "s"."id" ], +| | | | | | | | | | | select ( +| | | | | | | | | | | | table(sys.functions) [ "functions"."id", "functions"."system" ] COUNT +| | | | | | | | | | | ) [ "functions"."system" = boolean "true" ] +| | | | | | | | | | ) [ "f"."id" = "functions"."id" ], | | | | | | | | | | select ( -| | | | | | | | | | | table(sys.functions) [ "functions"."id", "functions"."system" ] COUNT -| | | | | | | | | | ) [ "functions"."system" = boolean "true" ] -| | | | | | | | | ) [ "f"."id" = "functions"."id" ], -| | | | | | | | | select ( -| | | | | | | | | | table(sys.args) [ "args"."func_id" as "p"."func_id", "args"."inout" as "p"."inout", "args"."number" as "p"."number" ] COUNT -| | | | | | | | | ) [ "p"."inout" = tinyint "1" ] -| | | | | | | | ) [ "f"."id" = "p"."func_id" ] -| | | | | | | ) [ "f"."id", "p"."number" ] [ "f"."id" ASC, "p"."number" ASC ] -| | | | | | ) [ "f"."id", "p"."number" ] [ "f"."id" ASC, "p"."number" NULLS LAST ] -| | | | | ) [ "f"."id", "p"."number" ] [ "f"."id" ASC, "p"."number" ASC ] -| | | | ) [ "f"."id", sys.row_number("f"."id", boolean "false" as "%17"."%17", sys.diff(sys.diff("f"."id" ASC), "p"."number" ASC) as "%20"."%20") as "line" ] -| | | ) [ "f"."id" as "fid", "line" ] -| | ) [ "fid" as "commented_function_signatures_6542"."fid" ] [ "line" ASC ] -| ) [ ] [ sys.count() NOT NULL as "%23"."%23" ] -) [ "%23"."%23" NOT NULL ] +| | | | | | | | | | | table(sys.args) [ "args"."func_id" as "p"."func_id", "args"."inout" as "p"."inout", "args"."number" as "p"."number" ] COUNT +| | | | | | | | | | ) [ "p"."inout" = tinyint "1" ] +| | | | | | | | | ) [ "f"."id" = "p"."func_id" ] +| | | | | | | | ) [ "f"."id", "p"."number" ] [ "f"."id" ASC, "p"."number" ASC ] +| | | | | | | ) [ "f"."id", "p"."number" ] [ "f"."id" ASC, "p"."number" NULLS LAST ] +| | | | | | ) [ "f"."id", "p"."number" ] [ "f"."id" ASC, "p"."number" ASC ] +| | | | | ) [ "f"."id", sys.row_number("f"."id", boolean "false" as "%17"."%17", sys.diff(sys.diff("f"."id" ASC), "p"."number" ASC) as "%20"."%20") as "line" ] +| | | | ) [ "f"."id" as "fid", "line" ] +| | | ) [ "fid" ] [ "line" ASC ] +| | ) [ "fid" as "commented_function_signatures_6542"."fid" ] +| ) [ ] [ sys.count() NOT NULL as "%24"."%24" ] +) [ "%24"."%24" NOT NULL ] #select count (*) from sys.commented_function_signatures_6542; -% .%23 # table_name -% %23 # name +% .%24 # table_name +% %24 # name % bigint # type % 1 # length [ 0 ] diff --git a/sql/test/json/Tests/jsonparser.Bug-6943.sql b/sql/test/json/Tests/jsonparser.Bug-6943.sql new file mode 100644 --- /dev/null +++ b/sql/test/json/Tests/jsonparser.Bug-6943.sql @@ -0,0 +1,2 @@ +SELECT json.isValid('"abc":"abc"'); -- false +SELECT json.isValid('{"abc":"abc":"abc"}'); -- false diff --git a/sql/test/miscellaneous/Tests/simple_selects.sql b/sql/test/miscellaneous/Tests/simple_selects.sql --- a/sql/test/miscellaneous/Tests/simple_selects.sql +++ b/sql/test/miscellaneous/Tests/simple_selects.sql @@ -185,3 +185,12 @@ select cast(x as interval month) from (v select cast(92233720368547750 as interval month); --error value to large for a month interval select cast(92233720368547750 as interval second); --error, overflow in conversion for interval second + +start transaction; +CREATE VIEW myv AS +SELECT t.schema_id AS table_schema_id, t.id AS table_id, t.name AS table_name, fk.name AS fk_name + FROM sys.tables AS t, sys.keys AS k, sys.keys AS fk + WHERE fk.rkey = k.id and k.table_id = t.id + ORDER BY t.schema_id, t.name, fk.name; +select * from myv limit 1; +rollback; diff --git a/sql/test/miscellaneous/Tests/simple_selects.stable.out b/sql/test/miscellaneous/Tests/simple_selects.stable.out --- a/sql/test/miscellaneous/Tests/simple_selects.stable.out +++ b/sql/test/miscellaneous/Tests/simple_selects.stable.out @@ -362,6 +362,18 @@ stdout of test 'simple_selects` in direc [ NULL ] [ 100 ] [ NULL ] +#start transaction; +#CREATE VIEW myv AS +#SELECT t.schema_id AS table_schema_id, t.id AS table_id, t.name AS table_name, fk.name AS fk_name +# FROM sys.tables AS t, sys.keys AS k, sys.keys AS fk +# WHERE fk.rkey = k.id and k.table_id = t.id +# ORDER BY t.schema_id, t.name, fk.name; +#select * from myv limit 1; +% .myv, .myv, .myv, .myv # table_name +% table_schema_id, table_id, table_name, fk_name # name +% int, int, varchar, varchar # type +% 1, 1, 0, 0 # length +#rollback; # 17:31:38 > # 17:31:38 > "Done." _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list