Changeset: 838ecbe3492c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=838ecbe3492c Modified Files: sql/backends/monet5/rel_bin.c sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/subquery/Tests/subquery3.stable.out Branch: default Log Message:
make sure we handle select expression (within a join) properly diffs (194 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -1936,7 +1936,6 @@ rel2bin_join(backend *be, sql_rel *rel, char *handled = SA_ZNEW_ARRAY(sql->sa, char, list_length(rel->exps)); /* get equi-joins/filters first */ - /* TODO handle select expressions!! */ if (list_length(rel->exps) > 1) { for( en = rel->exps->h, i=0; en; en = en->next, i++) { sql_exp *e = en->data; @@ -1973,17 +1972,25 @@ rel2bin_join(backend *be, sql_rel *rel, /* only handle simple joins here */ if ((exp_has_func(e) && get_cmp(e) != cmp_filter) || - get_cmp(e) == cmp_or || (e->f && e->anti)) { + get_cmp(e) == cmp_or || (e->f && e->anti) || + (e->type == e_cmp && e->flag == cmp_equal && + ((rel_find_exp(rel->l, e->l) && rel_find_exp(rel->l, e->r)) || + (rel_find_exp(rel->r, e->l) && rel_find_exp(rel->r, e->r)))) ) { if (!join && !list_length(lje)) { stmt *l = bin_first_column(be, left); stmt *r = bin_first_column(be, right); - join = stmt_join(be, l, r, 0, cmp_all); + join = stmt_join(be, l, r, 0, cmp_all); } break; } if (list_length(lje) && (idx || e->type != e_cmp || (e->flag != cmp_equal && e->flag != cmp_filter) || (join && e->flag == cmp_filter))) break; + if (e->type == e_cmp && e->flag == cmp_equal && + ((rel_find_exp(rel->l, e->l) && rel_find_exp(rel->l, e->r)) || + (rel_find_exp(rel->r, e->l) && rel_find_exp(rel->r, e->r)))) { + break; + } /* handle possible index lookups */ /* expressions are in index order ! */ diff --git a/sql/test/emptydb/Tests/check.stable.out b/sql/test/emptydb/Tests/check.stable.out --- a/sql/test/emptydb/Tests/check.stable.out +++ b/sql/test/emptydb/Tests/check.stable.out @@ -149,6 +149,7 @@ stdout of test 'check` in directory 'sql \dSf sys."date_trunc" \dSf sys."db_users" \dSf sys."debug" +\dSf sys."debugflags" \dSf sys."degrees" \dSf sys."deltas" \dSf sys."droporderindex" @@ -515,6 +516,7 @@ SYSTEM FUNCTION sys.dayofweek SYSTEM FUNCTION sys.dayofyear SYSTEM FUNCTION sys.db_users SYSTEM FUNCTION sys.debug +SYSTEM FUNCTION sys.debugflags SYSTEM FUNCTION sys.decade SYSTEM FUNCTION sys.degrees SYSTEM FUNCTION sys.deltas @@ -986,6 +988,8 @@ create function date_to_str(d date, form create function sys.date_trunc(txt string, t timestamp) returns timestamp external name sql.date_trunc; CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME sql.db_users; create function sys.debug(debug int) returns integer external name mdb."setDebug"; +create function sys.debug(flag string) returns integer external name mdb."setDebug"; +create function sys.debugflags() returns table("flag" string, "val" bool) external name "mdb"."getDebugFlags"; create function degrees(r double) returns double return r*180/pi(); create function sys.deltas ("schema" string) returns table ("id" int, "cleared" boolean, "immutable" bigint, "inserted" bigint, "updates" bigint, "deletes" bigint, "level" int) external name "sql"."deltas"; create function sys.deltas ("schema" string, "table" string) returns table ("id" int, "cleared" boolean, "immutable" bigint, "inserted" bigint, "updates" bigint, "deletes" bigint, "level" int) external name "sql"."deltas"; @@ -2362,6 +2366,8 @@ drop function pcre_replace(string, strin [ "sys", "dayofyear", "SYSTEM", "dayofyear", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "date", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "db_users", "SYSTEM", "CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME sql.db_users;", "sql", "SQL", "Function returning a table", false, false, false, "name", "varchar", 2048, 0, "out", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "debug", "SYSTEM", "create function sys.debug(debug int) returns integer external name mdb.\"setDebug\";", "mdb", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "debug", "int", 32, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "debug", "SYSTEM", "create function sys.debug(flag string) returns integer external name mdb.\"setDebug\";", "mdb", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "flag", "clob", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "debugflags", "SYSTEM", "create function sys.debugflags() returns table(\"flag\" string, \"val\" bool) external name \"mdb\".\"getDebugFlags\";", "mdb", "MAL", "Function returning a table", true, false, false, "flag", "clob", 0, 0, "out", "val", "boolean", 1, 0, "out", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "date", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "timestamp", 7, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "timestamptz", 7, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit b/sql/test/emptydb/Tests/check.stable.out.32bit --- a/sql/test/emptydb/Tests/check.stable.out.32bit +++ b/sql/test/emptydb/Tests/check.stable.out.32bit @@ -149,6 +149,7 @@ stdout of test 'check` in directory 'sql \dSf sys."date_trunc" \dSf sys."db_users" \dSf sys."debug" +\dSf sys."debugflags" \dSf sys."degrees" \dSf sys."deltas" \dSf sys."droporderindex" @@ -517,6 +518,7 @@ SYSTEM FUNCTION sys.dayofweek SYSTEM FUNCTION sys.dayofyear SYSTEM FUNCTION sys.db_users SYSTEM FUNCTION sys.debug +SYSTEM FUNCTION sys.debugflags SYSTEM FUNCTION sys.decade SYSTEM FUNCTION sys.degrees SYSTEM FUNCTION sys.deltas @@ -990,6 +992,8 @@ create function date_to_str(d date, form create function sys.date_trunc(txt string, t timestamp) returns timestamp external name sql.date_trunc; CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME sql.db_users; create function sys.debug(debug int) returns integer external name mdb."setDebug"; +create function sys.debug(flag string) returns integer external name mdb."setDebug"; +create function sys.debugflags() returns table("flag" string, "val" bool) external name "mdb"."getDebugFlags"; create function degrees(r double) returns double return r*180/pi(); create function sys.deltas ("schema" string) returns table ("id" int, "cleared" boolean, "immutable" bigint, "inserted" bigint, "updates" bigint, "deletes" bigint, "level" int) external name "sql"."deltas"; create function sys.deltas ("schema" string, "table" string) returns table ("id" int, "cleared" boolean, "immutable" bigint, "inserted" bigint, "updates" bigint, "deletes" bigint, "level" int) external name "sql"."deltas"; @@ -2354,6 +2358,8 @@ drop function pcre_replace(string, strin [ "sys", "dayofyear", "SYSTEM", "dayofyear", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "date", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "db_users", "SYSTEM", "CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME sql.db_users;", "sql", "SQL", "Function returning a table", false, false, false, "name", "varchar", 2048, 0, "out", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "debug", "SYSTEM", "create function sys.debug(debug int) returns integer external name mdb.\"setDebug\";", "mdb", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "debug", "int", 32, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "debug", "SYSTEM", "create function sys.debug(flag string) returns integer external name mdb.\"setDebug\";", "mdb", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "flag", "clob", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "debugflags", "SYSTEM", "create function sys.debugflags() returns table(\"flag\" string, \"val\" bool) external name \"mdb\".\"getDebugFlags\";", "mdb", "MAL", "Function returning a table", true, false, false, "flag", "clob", 0, 0, "out", "val", "boolean", 1, 0, "out", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "date", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "timestamp", 7, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "timestamptz", 7, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] diff --git a/sql/test/emptydb/Tests/check.stable.out.int128 b/sql/test/emptydb/Tests/check.stable.out.int128 --- a/sql/test/emptydb/Tests/check.stable.out.int128 +++ b/sql/test/emptydb/Tests/check.stable.out.int128 @@ -149,6 +149,7 @@ stdout of test 'check` in directory 'sql \dSf sys."date_trunc" \dSf sys."db_users" \dSf sys."debug" +\dSf sys."debugflags" \dSf sys."degrees" \dSf sys."deltas" \dSf sys."droporderindex" @@ -515,6 +516,7 @@ SYSTEM FUNCTION sys.dayofweek SYSTEM FUNCTION sys.dayofyear SYSTEM FUNCTION sys.db_users SYSTEM FUNCTION sys.debug +SYSTEM FUNCTION sys.debugflags SYSTEM FUNCTION sys.decade SYSTEM FUNCTION sys.degrees SYSTEM FUNCTION sys.deltas @@ -987,6 +989,8 @@ create function date_to_str(d date, form create function sys.date_trunc(txt string, t timestamp) returns timestamp external name sql.date_trunc; CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME sql.db_users; create function sys.debug(debug int) returns integer external name mdb."setDebug"; +create function sys.debug(flag string) returns integer external name mdb."setDebug"; +create function sys.debugflags() returns table("flag" string, "val" bool) external name "mdb"."getDebugFlags"; create function degrees(r double) returns double return r*180/pi(); create function sys.deltas ("schema" string) returns table ("id" int, "cleared" boolean, "immutable" bigint, "inserted" bigint, "updates" bigint, "deletes" bigint, "level" int) external name "sql"."deltas"; create function sys.deltas ("schema" string, "table" string) returns table ("id" int, "cleared" boolean, "immutable" bigint, "inserted" bigint, "updates" bigint, "deletes" bigint, "level" int) external name "sql"."deltas"; @@ -2388,6 +2392,8 @@ drop function pcre_replace(string, strin [ "sys", "dayofyear", "SYSTEM", "dayofyear", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "date", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "db_users", "SYSTEM", "CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME sql.db_users;", "sql", "SQL", "Function returning a table", false, false, false, "name", "varchar", 2048, 0, "out", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "debug", "SYSTEM", "create function sys.debug(debug int) returns integer external name mdb.\"setDebug\";", "mdb", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "debug", "int", 32, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "debug", "SYSTEM", "create function sys.debug(flag string) returns integer external name mdb.\"setDebug\";", "mdb", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "flag", "clob", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "debugflags", "SYSTEM", "create function sys.debugflags() returns table(\"flag\" string, \"val\" bool) external name \"mdb\".\"getDebugFlags\";", "mdb", "MAL", "Function returning a table", true, false, false, "flag", "clob", 0, 0, "out", "val", "boolean", 1, 0, "out", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "date", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "timestamp", 7, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "decade", "SYSTEM", "decade", "mtime", "Internal C", "Scalar function", false, false, false, "res_0", "int", 32, 0, "out", "arg_1", "timestamptz", 7, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] diff --git a/sql/test/subquery/Tests/subquery3.stable.out b/sql/test/subquery/Tests/subquery3.stable.out --- a/sql/test/subquery/Tests/subquery3.stable.out +++ b/sql/test/subquery/Tests/subquery3.stable.out @@ -32,8 +32,8 @@ stdout of test 'subquery3` in directory # NOT MAX(t1.col6) IN (SELECT SUM(t1.col6) FROM tbl_ProductSales tp HAVING MAX(t1.col1) > MIN(tp.colID)) #FROM another_T t1 #GROUP BY t1.col6, t1.col7; -% .%30 # table_name -% %30 # name +% .%31 # table_name +% %31 # name % boolean # type % 5 # length [ false ] @@ -190,14 +190,27 @@ stdout of test 'subquery3` in directory # NOT SUM(t1.col2) * MIN(t1.col6 + t1.col6 - t1.col6 * t1.col6) NOT IN (SELECT MAX(t2.col6) FROM another_T t2 GROUP BY t1.col6 HAVING t1.col7 + MIN(t2.col8) < MAX(t2.col7 - t1.col6)) #FROM another_T t1 #GROUP BY t1.col7, t1.col6; -% .%53 # table_name -% %53 # name +% .%21 # table_name +% %21 # name % boolean # type % 5 # length [ false ] [ false ] [ false ] [ false ] +#SELECT +# CASE WHEN NOT t1.col2 NOT IN (SELECT (SELECT MAX(t1.col7)) UNION (SELECT MIN(ColID) FROM tbl_ProductSales LEFT JOIN another_T t2 ON MIN(t1.col5) = t1.col1)) THEN 1 ELSE 2 END, +# CASE WHEN NOT t1.col2 NOT IN (SELECT (SELECT MAX(t1.col7)) UNION (SELECT MIN(ColID) FROM tbl_ProductSales tp LEFT JOIN another_T t2 ON tp.ColID = t1.col1 AND tp.ColID = t2.col2)) THEN 1 ELSE 2 END +#FROM another_T t1 +#GROUP BY t1.col1, t1.col2; +% .%203, .%204 # table_name +% %203, %204 # name +% tinyint, tinyint # type +% 1, 1 # length +[ 2, 2 ] +[ 2, 2 ] +[ 2, 2 ] +[ 2, 2 ] #DROP TABLE tbl_ProductSales; #DROP TABLE another_T; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list