Changeset: 11ffb2450652 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/11ffb2450652
Modified Files:
sql/server/rel_dump.c
sql/server/rel_select.c
sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.test
sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out.32bit
sql/test/SQLancer/Tests/sqlancer19.SQL.py
sql/test/merge-partitions/Tests/mergepart31.test
sql/test/mergetables/Tests/mergequery.test
sql/test/miscellaneous/Tests/simple_plans.test
sql/test/out2in/Tests/out2in.test
sql/test/sys-schema/Tests/webExamplesComparisonFunctionsOperators.test
sql/test/sys-schema/Tests/webExamplesLogicalFunctionsOperators.test
Branch: default
Log Message:
Fixes for remote plans: 1. My string truncate optimization creates issues on
remote plans, so disable it for now. 2. Distinguish between NULL literal and
NULL value string
diffs (truncated from 564 to 300 lines):
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -186,7 +186,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
} else {
char *t = dump_sql_subtype(sql->ta,
atom_type(a));
if (a->isnull)
- mnstr_printf(fout, "%s \"NULL\"", t);
+ mnstr_printf(fout, "%s NULL", t);
else {
char *s = ATOMformat(a->data.vtype,
VALptr(&a->data));
if (s && *s == '"')
@@ -803,25 +803,24 @@ readInt( char *r, int *pos)
}
static char *
-readString( char *r, int *pos)
+readAtomString( char *r, int *pos)
{
char *st = NULL, *parsed;
- if (r[*pos] == '"') {
- (*pos)++;
- st = parsed = r+*pos;
- while (r[*pos] != '"') {
- if (r[*pos] == '\\' && (r[*pos + 1] == '"' || r[*pos +
1] == '\\')) {
- *parsed++ = r[*pos + 1];
- (*pos)+=2;
- } else {
- *parsed++ = r[*pos];
- (*pos)++;
- }
+ assert(r[*pos] == '"');
+ (*pos)++;
+ st = parsed = r+*pos;
+ while (r[*pos] != '"') {
+ if (r[*pos] == '\\' && (r[*pos + 1] == '"' || r[*pos + 1] ==
'\\')) {
+ *parsed++ = r[*pos + 1];
+ (*pos)+=2;
+ } else {
+ *parsed++ = r[*pos];
+ (*pos)++;
}
- *parsed = '\0';
- (*pos)++;
}
+ *parsed = '\0';
+ (*pos)++;
return st;
}
@@ -951,11 +950,11 @@ read_exp_properties(mvc *sql, sql_exp *e
static sql_exp*
parse_atom(mvc *sql, char *r, int *pos, sql_subtype *tpe)
{
- char *st = readString(r,pos);
-
- if (st && strcmp(st, "NULL") == 0) {
+ if (strncmp(r+*pos, "NULL", strlen("NULL")) == 0) {
+ (*pos)+= (int) strlen("NULL");
return exp_atom(sql->sa, atom_general(sql->sa, tpe, NULL));
} else {
+ char *st = readAtomString(r,pos);
return exp_atom(sql->sa, atom_general(sql->sa, tpe, st));
}
}
@@ -1280,16 +1279,19 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
}
break;
case '\"':
- *e = 0;
- tname = b;
- convertIdent(tname);
- if (!sql_find_subtype(&tpe, tname, 0, 0)) {
- if (!(t = mvc_bind_type(sql, tname))) /* try an
external type */
- return sql_error(sql, ERR_NOTFOUND,
SQLSTATE(42000) "SQL type %s not found\n", tname);
- sql_init_subtype(&tpe, t, 0, 0);
+ case 'N': /* for NULL values, but 'NOT NULL' and 'NULLS LAST' cannot
match here */
+ if (r[*pos] == '\"' || (strncmp(r+*pos, "NULL", strlen("NULL"))
== 0 && r[*(pos+4)] != 'S')) {
+ *e = 0;
+ tname = b;
+ convertIdent(tname);
+ if (!sql_find_subtype(&tpe, tname, 0, 0)) {
+ if (!(t = mvc_bind_type(sql, tname))) /* try an
external type */
+ return sql_error(sql, ERR_NOTFOUND,
SQLSTATE(42000) "SQL type %s not found\n", tname);
+ sql_init_subtype(&tpe, t, 0, 0);
+ }
+ exp = parse_atom(sql, r, pos, &tpe);
+ skipWS(r, pos);
}
- exp = parse_atom(sql, r, pos, &tpe);
- skipWS(r, pos);
break;
default:
(void)sql;
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
@@ -4026,20 +4026,9 @@ rel_cast(sql_query *query, sql_rel **rel
sql_subtype *et = exp_subtype(e);
/* truncate only if the number of digits are smaller or from
clob */
if (et && EC_VARCHAR(et->type->eclass) && (tpe->digits <
et->digits || et->digits == 0)) {
- sql_subfunc *f;
- sql_exp *ne = exp_convert_inplace(sql, tpe, e); /*
first try cheap internal (in-place) conversion */
-
- if (ne) {
- exp_label(sql->sa, ne, ++sql->label);
- return ne;
- }
- f = sql_bind_func(sql, "sys", "truncate", et,
sql_bind_localtype("int"), F_FUNC);
- assert(f);
- ne = exp_binop(sql->sa, e, exp_atom_int(sql->sa,
tpe->digits), f);
- /* set output type as the one to be casted */
- f->res->h->data = sql_create_subtype(sql->sa,
tpe->type, tpe->digits, tpe->scale);
- exp_label(sql->sa, ne, ++sql->label);
- return ne;
+ sql_subfunc *c = sql_bind_func(sql, "sys", "truncate",
et, sql_bind_localtype("int"), F_FUNC);
+ if (c)
+ e = exp_binop(sql->sa, e, exp_atom_int(sql->sa,
tpe->digits), c);
}
}
if (e)
diff --git
a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
--- a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
+++ b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
@@ -1,17 +1,17 @@
% .plan # table_name
% rel # name
% clob # type
-% 210 # length
+% 206 # length
insert(
| table("sys"."cm_tmp") [ "cm_tmp"."i", "cm_tmp"."%TID%" NOT NULL ]
| union (
| | project (
-| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar "NULL", varchar "null", varchar "/file1", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar "NULL", int(9) "0", int(9) "1"),
+| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar NULL, varchar "null", varchar "/file1", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar NULL, int(9) "0", int(9) "1"),
| | | ) [ "cm_tmp"."i" ]
| | ) [ "cm_tmp"."i" ],
| | project (
-| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar "NULL", varchar "null", varchar "/file2", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar "NULL", int(9) "0", int(9) "1"),
+| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar NULL, varchar "null", varchar "/file2", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar NULL, int(9) "0", int(9) "1"),
| | | ) [ "cm_tmp"."i" ]
| | ) [ "cm_tmp"."i" ]
-| ) [ int(32) "NULL" ]
+| ) [ int(32) NULL ]
)
diff --git
a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
---
a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
+++
b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
@@ -3,35 +3,35 @@
% .plan # table_name
% rel # name
% clob # type
-% 211 # length
+% 207 # length
insert(
| table("sys"."cm_tmp") [ "cm_tmp"."i", "cm_tmp"."%TID%" NOT NULL ]
| union (
| | project (
-| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar "NULL", varchar "null", varchar "\\file1", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar "NULL", int(9) "0", int(9) "1"),
+| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar NULL, varchar "null", varchar "\\file1", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar NULL, int(9) "0", int(9) "1"),
| | | ) [ "cm_tmp"."i" ]
| | ) [ "cm_tmp"."i" ],
| | project (
-| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar "NULL", varchar "null", varchar "\\file2", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar "NULL", int(9) "0", int(9) "1"),
+| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar NULL, varchar "null", varchar "\\file2", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar NULL, int(9) "0", int(9) "1"),
| | | ) [ "cm_tmp"."i" ]
| | ) [ "cm_tmp"."i" ]
-| ) [ int(32) "NULL" ]
+| ) [ int(32) NULL ]
)
#plan copy into cm_tmp from E'a:\\file1','Z:/file2';
% .plan # table_name
% rel # name
% clob # type
-% 213 # length
+% 209 # length
insert(
| table("sys"."cm_tmp") [ "cm_tmp"."i", "cm_tmp"."%TID%" NOT NULL ]
| union (
| | project (
-| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar "NULL", varchar "null", varchar "a:\\file1", bigint(18) "-1",
bigint(18) "0", int(9) "0", varchar "NULL", int(9) "0", int(9) "1"),
+| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar NULL, varchar "null", varchar "a:\\file1", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar NULL, int(9) "0", int(9) "1"),
| | | ) [ "cm_tmp"."i" ]
| | ) [ "cm_tmp"."i" ],
| | project (
-| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar "NULL", varchar "null", varchar "Z:/file2", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar "NULL", int(9) "0", int(9) "1"),
+| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n",
varchar NULL, varchar "null", varchar "Z:/file2", bigint(18) "-1", bigint(18)
"0", int(9) "0", varchar NULL, int(9) "0", int(9) "1"),
| | | ) [ "cm_tmp"."i" ]
| | ) [ "cm_tmp"."i" ]
-| ) [ int(32) "NULL" ]
+| ) [ int(32) NULL ]
)
diff --git
a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.test
b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.test
--- a/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.test
+++ b/sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.test
@@ -29,7 +29,7 @@ query T nosort
project (
| top N (
| | table("sys"."oblo") [ "oblo"."a" ]
-| ) [ bigint(64) "NULL", bigint(64) "2" ]
+| ) [ bigint(64) NULL, bigint(64) "2" ]
) [ "oblo"."a" ]
query T nosort
@@ -73,7 +73,7 @@ top N (
| project (
| | table("sys"."oblo") [ "oblo"."a" ]
| ) [ "oblo"."a" ] [ "oblo"."a" ASC ]
-) [ bigint(64) "NULL", bigint(64) "2" ]
+) [ bigint(64) NULL, bigint(64) "2" ]
query T nosort
PLAN select * from oblo ORDER BY a LIMIT 2
diff --git
a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
---
a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
+++
b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.test
@@ -185,7 +185,7 @@ top N (
| | | | ) [ ("a3"."t3pkcol" HASHCOL ) = ("table1"."t1cold113") ],
| | | | table("sys"."table12") [ "table12"."t12cola1" ]
| | | ) [ ("table12"."t12cola1") = ("table1"."t1cola1") ]
-| | ) [ ((((((((((((((("table1"."t1cold1") FILTER "sys"."like"(clob "%a%",
clob "", boolean(1) "true")) or (("table1"."t1cola1") FILTER "sys"."like"(clob
"%a%", clob "", boolean(1) "true"))) or (("table1"."t1colb1") FILTER
"sys"."like"(clob "%a%", clob "", boolean(1) "true"))) or
(("table1"."t1cola11") FILTER "sys"."like"(clob "%business%", clob "",
boolean(1) "true"))) or (("table1"."t1colc91") >= (timestamp(7) "2016-03-21
05:00:00.000000"))) or (("table1"."t1cola101") = (tinyint(1) "1"))) or
(("table1"."t1cola12") FILTER "sys"."like"(clob "%Vijay%", clob "", boolean(1)
"true"))) or (("table2"."t2cola1") ! FILTER "sys"."like"(clob "%gmail%", clob
"", boolean(1) "true"), ("table2"."t2cola1") ! FILTER "sys"."like"(clob
"%yahoo%", clob "", boolean(1) "true"))) or (("table2"."t2cola1") FILTER
"sys"."like"(clob "%efequitygroup.com%", clob "", boolean(1) "true"))) or
(("table4"."t4cola1") = (clob "Customer"))) or (("table4"."t4cola2") ! * =
(clob "NULL"))) or (("table2"."t2cola81") >= (d
ate "2009-08-31"))) or (((("table5"."t5cola1") = (clob "BAT")) or
(("table5"."t5cola2") FILTER "sys"."like"(clob "%AUSTRALIA%", clob "",
boolean(1) "true"))) or (("table5"."t5cola2") FILTER "sys"."like"(clob
"%Monet%", clob "", boolean(1) "true"), ("table5"."t5cola3") = (clob
"Facebook"), ("table5"."t5cola5") = (clob "new"), ("table5"."t5cola81") > (date
"2015-07-30")))) or (((("table10"."t10cola1") != (clob "Completed"),
("table9"."t9cola1") = (clob "Tasks"), ("table9"."t9cola91") >= (timestamp(7)
"2012-01-01 04:32:27.000000"), ("table10"."t10cola91") <= (timestamp(7)
"2013-01-01 04:32:27.000000")) or (("table9"."t9cola1") = (clob "Events"),
(timestamp(7) "2012-01-01 04:32:27.000000") <= ("table11"."t11cola91") <=
(timestamp(7) "2013-01-01 04:32:27.000000"))) or (("table9"."t9cola1") = (clob
"Calls"), (timestamp(7) "2012-01-01 04:32:27.000000") <=
("table10"."t10cola91") <= (timestamp(7) "2013-01-01 04:32:27.000000"))),
("table1"."t1cold111") in (bigint(54) "15842000014793046", big
int(54) "15842000017701488", bigint(54) "15842000000024019", bigint(54)
"15842000000074007", bigint(54) "15842000009358096", bigint(54)
"15842000010487625", bigint(54) "15842000006731919", bigint(54)
"15842000002590112", bigint(54) "15842000000019001", bigint(54)
"15842000014923682", bigint(54) "15842000027547249")) or
(("table12"."t12cola1") in (clob[bigint(54) "15842000280111951"] NOT NULL,
clob[bigint(54) "15842000280163015"] NOT NULL)) ]
+| | ) [ ((((((((((((((("table1"."t1cold1") FILTER "sys"."like"(clob "%a%",
clob "", boolean(1) "true")) or (("table1"."t1cola1") FILTER "sys"."like"(clob
"%a%", clob "", boolean(1) "true"))) or (("table1"."t1colb1") FILTER
"sys"."like"(clob "%a%", clob "", boolean(1) "true"))) or
(("table1"."t1cola11") FILTER "sys"."like"(clob "%business%", clob "",
boolean(1) "true"))) or (("table1"."t1colc91") >= (timestamp(7) "2016-03-21
05:00:00.000000"))) or (("table1"."t1cola101") = (tinyint(1) "1"))) or
(("table1"."t1cola12") FILTER "sys"."like"(clob "%Vijay%", clob "", boolean(1)
"true"))) or (("table2"."t2cola1") ! FILTER "sys"."like"(clob "%gmail%", clob
"", boolean(1) "true"), ("table2"."t2cola1") ! FILTER "sys"."like"(clob
"%yahoo%", clob "", boolean(1) "true"))) or (("table2"."t2cola1") FILTER
"sys"."like"(clob "%efequitygroup.com%", clob "", boolean(1) "true"))) or
(("table4"."t4cola1") = (clob "Customer"))) or (("table4"."t4cola2") ! * =
(clob NULL))) or (("table2"."t2cola81") >= (dat
e "2009-08-31"))) or (((("table5"."t5cola1") = (clob "BAT")) or
(("table5"."t5cola2") FILTER "sys"."like"(clob "%AUSTRALIA%", clob "",
boolean(1) "true"))) or (("table5"."t5cola2") FILTER "sys"."like"(clob
"%Monet%", clob "", boolean(1) "true"), ("table5"."t5cola3") = (clob
"Facebook"), ("table5"."t5cola5") = (clob "new"), ("table5"."t5cola81") > (date
"2015-07-30")))) or (((("table10"."t10cola1") != (clob "Completed"),
("table9"."t9cola1") = (clob "Tasks"), ("table9"."t9cola91") >= (timestamp(7)
"2012-01-01 04:32:27.000000"), ("table10"."t10cola91") <= (timestamp(7)
"2013-01-01 04:32:27.000000")) or (("table9"."t9cola1") = (clob "Events"),
(timestamp(7) "2012-01-01 04:32:27.000000") <= ("table11"."t11cola91") <=
(timestamp(7) "2013-01-01 04:32:27.000000"))) or (("table9"."t9cola1") = (clob
"Calls"), (timestamp(7) "2012-01-01 04:32:27.000000") <=
("table10"."t10cola91") <= (timestamp(7) "2013-01-01 04:32:27.000000"))),
("table1"."t1cold111") in (bigint(54) "15842000014793046", bigin
t(54) "15842000017701488", bigint(54) "15842000000024019", bigint(54)
"15842000000074007", bigint(54) "15842000009358096", bigint(54)
"15842000010487625", bigint(54) "15842000006731919", bigint(54)
"15842000002590112", bigint(54) "15842000000019001", bigint(54)
"15842000014923682", bigint(54) "15842000027547249")) or
(("table12"."t12cola1") in (clob[bigint(54) "15842000280111951"] NOT NULL,
clob[bigint(54) "15842000280163015"] NOT NULL)) ]
| ) [ "table1"."t1pkcol" NOT NULL HASHCOL , "table1"."t1cola82",
"table2"."t2cola10", "table1"."t1cola1", "table1"."t1cola91", "a1"."t3cola1" ]
[ "table2"."t2cola82" NULLS LAST ]
) [ bigint(64) "10", bigint(64) "0" ]
diff --git
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
---
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
+++
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
@@ -14,10 +14,10 @@ project (
| | | group by (
| | | | select (
| | | | | table("sys"."tab0") [ "tab0"."col0" as "cor0"."col0", "tab0"."col1"
as "cor0"."col1" ]
-| | | | ) [ ("cor0"."col0") * = (int(32) "NULL") ]
+| | | | ) [ ("cor0"."col0") * = (int(32) NULL) ]
| | | ) [ "cor0"."col1", "cor0"."col0" ] [ "cor0"."col1", "cor0"."col0" ]
| | ) [ "cor0"."col1", "cor0"."col0" ] [ "cor0"."col1", "cor0"."col0",
"sys"."avg" no nil ("cor0"."col0") as "%1"."%1" ]
-| ) [ ("sys"."sql_add"(double(53)["sys"."sql_neg"("cor0"."col1")], "%1"."%1"))
! * = (double(53) "NULL") ]
+| ) [ ("sys"."sql_add"(double(53)["sys"."sql_neg"("cor0"."col1")], "%1"."%1"))
! * = (double(53) NULL) ]
) [ "sys"."sql_neg"("cor0"."col0") as "col1" ]
statement ok
diff --git
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
---
a/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
+++
b/sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-3join-query.stable.out
@@ -1,64 +1,64 @@
% .plan # table_name
% rel # name
% clob # type
-% 80 # length
+% 78 # length
project (
| group by (
| | select (
| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX "sys"."fk"."fk_fk1_fkey"
]
-| | ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) "NULL") ]
+| | ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) NULL) ]
| ) [ ] [ "sys"."count"() NOT NULL as "%1"."%1" ]
) [ "%1"."%1" NOT NULL ]
% .plan # table_name
% rel # name
% clob # type
-% 107 # length
+% 105 # length
project (
| select (
| | table("sys"."fk") [ "fk"."id" NOT NULL HASHCOL , "fk"."%fk_fk1_fkey"
JOINIDX "sys"."fk"."fk_fk1_fkey" ]
-| ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) "NULL") ]
+| ) [ ("fk"."%fk_fk1_fkey") ! * = (oid(63) NULL) ]
) [ "fk"."id" NOT NULL HASHCOL ] [ "fk"."id" ASC NOT NULL HASHCOL ]
% .plan # table_name
% rel # name
% clob # type
-% 134 # length
+% 132 # length
project (
| group by (
| | select (
| | | table("sys"."fk") [ "fk"."%fk_fk1_fkey" JOINIDX
"sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey" JOINIDX "sys"."fk"."fk_fk2_fkey" ]
-| | ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) "NULL"), ("fk"."%fk_fk1_fkey") !
* = (oid(63) "NULL") ]
+| | ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) NULL), ("fk"."%fk_fk1_fkey") ! *
= (oid(63) NULL) ]
| ) [ ] [ "sys"."count"() NOT NULL as "%1"."%1" ]
) [ "%1"."%1" NOT NULL ]
% .plan # table_name
% rel # name
% clob # type
-% 161 # length
+% 159 # length
project (
| select (
| | table("sys"."fk") [ "fk"."id" NOT NULL HASHCOL , "fk"."%fk_fk1_fkey"
JOINIDX "sys"."fk"."fk_fk1_fkey", "fk"."%fk_fk2_fkey" JOINIDX
"sys"."fk"."fk_fk2_fkey" ]
-| ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) "NULL"), ("fk"."%fk_fk1_fkey") ! *
= (oid(63) "NULL") ]
+| ) [ ("fk"."%fk_fk2_fkey") ! * = (oid(63) NULL), ("fk"."%fk_fk1_fkey") ! * =
(oid(63) NULL) ]
) [ "fk"."id" NOT NULL HASHCOL ] [ "fk"."id" ASC NOT NULL HASHCOL ]
% .plan # table_name
% rel # name
% clob # type
-% 163 # length
+% 161 # length
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list