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

Reply via email to