Changeset: efd012862051 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=efd012862051
Modified Files:
        sql/server/rel_select.c
        sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.sql
        sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.stable.out
        sql/test/subquery/Tests/subquery3.sql
        sql/test/subquery/Tests/subquery3.stable.out
Branch: default
Log Message:

Convert input expression into boolean, not the other way around


diffs (truncated from 307 to 300 lines):

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
@@ -2340,13 +2340,8 @@ rel_logical_value_exp(sql_query *query, 
        }
        case SQL_ATOM: {
                AtomNode *an = (AtomNode *) sc;
-
-               if (!an || !an->a) {
-                       assert(0);
-                       return exp_null(sql->sa, sql_bind_localtype("void"));
-               } else {
-                       return exp_atom(sql->sa, atom_dup(sql->sa, an->a));
-               }
+               assert(an && an->a);
+               return exp_atom(sql->sa, atom_dup(sql->sa, an->a));
        }
        case SQL_IDENT:
        case SQL_COLUMN:
@@ -2372,18 +2367,18 @@ rel_logical_value_exp(sql_query *query, 
        case SQL_DEFAULT:
                return sql_error(sql, 02, SQLSTATE(42000) "DEFAULT keyword not 
allowed outside insert and update statements");
        default: {
-               sql_exp *re, *le = rel_value_exp(query, rel, sc, f, ek);
+               sql_exp *le = rel_value_exp(query, rel, sc, f, ek);
                sql_subtype bt;
 
                if (!le)
                        return NULL;
-               re = exp_atom_bool(sql->sa, 1);
                sql_find_subtype(&bt, "boolean", 0, 0);
                if ((le = rel_check_type(sql, &bt, rel ? *rel : NULL, le, 
type_equal)) == NULL)
                        return NULL;
-               return rel_binop_(sql, rel ? *rel : NULL, le, re, NULL, "=", 0);
-       }
-       }
+               return rel_binop_(sql, rel ? *rel : NULL, le, 
exp_atom_bool(sql->sa, 1), NULL, "=", 0);
+       }
+       }
+       /* never reached, as all switch cases have a `return` */
 }
 
 sql_rel *
@@ -2637,7 +2632,7 @@ rel_logical_exp(sql_query *query, sql_re
                return rel_select(sql->sa, rel, le);
        }
        case SQL_NOT: {
-               sql_exp *re, *le;
+               sql_exp *le;
                switch (sc->data.sym->token) {
                case SQL_IN:
                        sc->data.sym->token = SQL_NOT_IN;
@@ -2655,8 +2650,7 @@ rel_logical_exp(sql_query *query, sql_re
                le = rel_unop_(sql, rel, le, NULL, "not", card_value);
                if (le == NULL)
                        return NULL;
-               re = exp_atom_bool(sql->sa, 1);
-               le = exp_compare(sql->sa, le, re, cmp_equal);
+               le = exp_compare(sql->sa, le, exp_atom_bool(sql->sa, 1), 
cmp_equal);
                return rel_select(sql->sa, rel, le);
        }
        case SQL_ATOM: {
@@ -2688,14 +2682,15 @@ rel_logical_exp(sql_query *query, sql_re
        case SQL_DEFAULT:
                return sql_error(sql, 02, SQLSTATE(42000) "DEFAULT keyword not 
allowed outside insert and update statements");
        default: {
-               sql_exp *re, *le = rel_value_exp(query, &rel, sc, f, ek);
+               sql_exp *le = rel_value_exp(query, &rel, sc, f, ek);
+               sql_subtype bt;
 
                if (!le)
                        return NULL;
-               re = exp_atom_bool(sql->sa, 1);
-               if (rel_convert_types(sql, rel, NULL, &le, &re, 1, type_equal) 
< 0)
+               sql_find_subtype(&bt, "boolean", 0, 0);
+               if (!(le = rel_check_type(sql, &bt, rel, le, type_equal)))
                        return NULL;
-               le = exp_compare(sql->sa, le, re, cmp_equal);
+               le = exp_compare(sql->sa, le, exp_atom_bool(sql->sa, 1), 
cmp_equal);
                return rel_select(sql->sa, rel, le);
        }
        }
diff --git a/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.sql 
b/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.sql
--- a/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.sql
+++ b/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.sql
@@ -1,1 +1,111 @@
-select schema_id from tables group by schema_id having min(schema_id);
+START TRANSACTION;
+CREATE TABLE "sys"."mytables" (
+       "id"            INTEGER,
+       "name"          VARCHAR(1024),
+       "schema_id"     INTEGER,
+       "query"         VARCHAR(1048576),
+       "type"          SMALLINT,
+       "system"        BOOLEAN,
+       "commit_action" SMALLINT,
+       "access"        SMALLINT
+);
+COPY 96 RECORDS INTO "sys"."mytables" FROM stdin USING DELIMITERS 
E'\t',E'\n','"';
+2001   "schemas"       2000    NULL    0       true    0       0
+2007   "types" 2000    NULL    0       true    0       0
+2016   "functions"     2000    NULL    0       true    0       0
+2028   "args"  2000    NULL    0       true    0       0
+2037   "sequences"     2000    NULL    0       true    0       0
+2047   "table_partitions"      2000    NULL    0       true    0       0
+2053   "range_partitions"      2000    NULL    0       true    0       0
+2059   "value_partitions"      2000    NULL    0       true    0       0
+2063   "dependencies"  2000    NULL    0       true    0       0
+2067   "_tables"       2000    NULL    0       true    0       0
+2076   "_columns"      2000    NULL    0       true    0       0
+2087   "keys"  2000    NULL    0       true    0       0
+2094   "idxs"  2000    NULL    0       true    0       0
+2099   "triggers"      2000    NULL    0       true    0       0
+2110   "objects"       2000    NULL    0       true    0       0
+2115   "_tables"       2114    NULL    0       true    2       0
+2124   "_columns"      2114    NULL    0       true    2       0
+2135   "keys"  2114    NULL    0       true    2       0
+2142   "idxs"  2114    NULL    0       true    2       0
+2147   "triggers"      2114    NULL    0       true    2       0
+2158   "objects"       2114    NULL    0       true    2       0
+6530   "tables"        2000    "SELECT ""id"", ""name"", ""schema_id"", 
""query"", CAST(CASE WHEN ""system"" THEN ""type"" + 10 /* system table/view */ 
ELSE (CASE WHEN ""commit_action"" = 0 THEN ""type"" /* table/view */ ELSE 
""type"" + 20 /* global temp table */ END) END AS SMALLINT) AS ""type"", 
""system"", ""commit_action"", ""access"", CASE WHEN (NOT ""system"" AND 
""commit_action"" > 0) THEN 1 ELSE 0 END AS ""temporary"" FROM 
""sys"".""_tables"" WHERE ""type"" <> 2 UNION ALL SELECT ""id"", ""name"", 
""schema_id"", ""query"", CAST(""type"" + 30 /* local temp table */ AS 
SMALLINT) AS ""type"", ""system"", ""commit_action"", ""access"", 1 AS 
""temporary"" FROM ""tmp"".""_tables"";"   1       true    0       0
+6540   "columns"       2000    "SELECT * FROM (SELECT p.* FROM 
""sys"".""_columns"" AS p UNION ALL SELECT t.* FROM ""tmp"".""_columns"" AS t) 
AS columns;"     1       true    0       0
+6556   "comments"      2000    NULL    0       true    0       0
+6561   "db_user_info"  2000    NULL    0       true    0       0
+6567   "users" 2000    "SELECT u.""name"" AS ""name"", ui.""fullname"", 
ui.""default_schema"" FROM db_users() AS u LEFT JOIN ""sys"".""db_user_info"" 
AS ui ON u.""name"" = ui.""name"";"      1       true    0       0
+6571   "user_role"     2000    NULL    0       true    0       0
+6574   "auths" 2000    NULL    0       true    0       0
+6578   "privileges"    2000    NULL    0       true    0       0
+6798   "querylog_catalog"      2000    "create view sys.querylog_catalog as 
select * from sys.querylog_catalog();"     1       true    0       0
+6809   "querylog_calls"        2000    "create view sys.querylog_calls as 
select * from sys.querylog_calls();" 1       true    0       0
+6827   "querylog_history"      2000    "create view sys.querylog_history 
as\nselect qd.*, ql.""start"",ql.""stop"", ql.arguments, ql.tuples, ql.run, 
ql.ship, ql.cpu, ql.io\nfrom sys.querylog_catalog() qd, sys.querylog_calls() 
ql\nwhere qd.id = ql.id and qd.owner = user;"        1       true    0       0
+6844   "tracelog"      2000    "create view sys.tracelog as select * from 
sys.tracelog();"     1       true    0       0
+6896   "ids"   2000    "create view sys.ids (id, name, schema_id, table_id, 
table_name, obj_type, sys_table) as\nselect id, name, cast(null as int) as 
schema_id, cast(null as int) as table_id, cast(null as varchar(124)) as 
table_name, 'author' as obj_type, 'sys.auths' as sys_table from sys.auths union 
all\nselect id, name, cast(null as int) as schema_id, cast(null as int) as 
table_id, cast(null as varchar(124)) as table_name, 'schema', 'sys.schemas' 
from sys.schemas union all\nselect id, name, schema_id, id as table_id, name as 
table_name, case when type = 1 then 'view' else 'table' end, 'sys._tables' from 
sys._tables union all\nselect id, name, schema_id, id as table_id, name as 
table_name, case when type = 1 then 'view' else 'table' end, 'tmp._tables' from 
tmp._tables union all\nselect c.id, c.name, t.schema_id, c.table_id, t.name as 
table_name, 'column', 'sys._columns' from sys._columns c join sys._tables t on 
c.table_id = t.id union all\nselect c.id, c.name, t.schema_id, c.table_id, t.
 name as table_name, 'column', 'tmp._columns' from tmp._columns c join 
tmp._tables t on c.table_id = t.id union all\nselect k.id, k.name, t.schema_id, 
k.table_id, t.name as table_name, 'key', 'sys.keys' from sys.keys k join 
sys._tables t on k.table_id = t.id union all\nselect k.id, k.name, t.schema_id, 
k.table_id, t.name as table_name, 'key', 'tmp.keys' from tmp.keys k join 
tmp._tables t on k.table_id = t.id union all\nselect i.id, i.name, t.schema_id, 
i.table_id, t.name as table_name, 'index', 'sys.idxs' from sys.idxs i join 
sys._tables t on i.table_id = t.id union all\nselect i.id, i.name, t.schema_id, 
i.table_id, t.name as table_name, 'index', 'tmp.idxs' from tmp.idxs i join 
tmp._tables t on i.table_id = t.id union all\nselect g.id, g.name, t.schema_id, 
g.table_id, t.name as table_name, 'trigger', 'sys.triggers' from sys.triggers g 
join sys._tables t on g.table_id = t.id union all\nselect g.id, g.name, 
t.schema_id, g.table_id, t.name as table_name, 'trigger', 'tmp.triggers' from t
 mp.triggers g join tmp._tables t on g.table_id = t.id union all\nselect id, 
name, schema_id, cast(null as int) as table_id, cast(null as varchar(124)) as 
table_name, case when type = 2 then 'procedure' else 'function' end, 
'sys.functions' from sys.functions union all\nselect a.id, a.name, f.schema_id, 
cast(null as int) as table_id, cast(null as varchar(124)) as table_name, case 
when f.type = 2 then 'procedure arg' else 'function arg' end, 'sys.args' from 
sys.args a join sys.functions f on a.func_id = f.id union all\nselect id, name, 
schema_id, cast(null as int) as table_id, cast(null as varchar(124)) as 
table_name, 'sequence', 'sys.sequences' from sys.sequences union all\nselect 
id, sqlname, schema_id, cast(null as int) as table_id, cast(null as 
varchar(124)) as table_name, 'type', 'sys.types' from sys.types where id > 2000 
\n order by id;"   1       true    0       0
+6904   "dependency_types"      2000    NULL    0       true    0       1
+6914   "dependencies_vw"       2000    "create view sys.dependencies_vw 
as\nselect d.id, i1.obj_type, i1.name,\n d.depend_id as used_by_id, i2.obj_type 
as used_by_obj_type, i2.name as used_by_name,\n d.depend_type, 
dt.dependency_type_name\n from sys.dependencies d\n join sys.ids i1 on d.id = 
i1.id\n join sys.ids i2 on d.depend_id = i2.id\n join sys.dependency_types dt 
on d.depend_type = dt.dependency_type_id\n order by id, depend_id;" 1       
true    0       0
+6920   "dependency_owners_on_schemas"  2000    "create view 
sys.dependency_owners_on_schemas as\nselect a.name as owner_name, s.id as 
schema_id, s.name as schema_name, cast(1 as smallint) as depend_type\n from 
sys.schemas as s, sys.auths as a\n where s.owner = a.id\n order by a.name, 
s.name;"  1       true    0       0
+6932   "dependency_columns_on_keys"    2000    "create view 
sys.dependency_columns_on_keys as\nselect t.schema_id as table_schema_id, t.id 
as table_id, t.name as table_name, c.id as column_id, c.name as column_name, 
k.id as key_id, k.name as key_name, cast(kc.nr +1 as int) as key_col_nr, 
cast(k.type as smallint) as key_type, cast(4 as smallint) as depend_type\n from 
sys.columns as c, sys.objects as kc, sys.keys as k, sys.tables as t\n where 
k.table_id = c.table_id and c.table_id = t.id and kc.id = k.id and kc.name = 
c.name\n and k.type in (0, 1)\n order by t.schema_id, t.name, c.name, k.type, 
k.name, kc.nr;"        1       true    0       0
+6941   "dependency_tables_on_views"    2000    "create view 
sys.dependency_tables_on_views as\nselect t.schema_id as table_schema_id, t.id 
as table_id, t.name as table_name, v.schema_id as view_schema_id, v.id as 
view_id, v.name as view_name, dep.depend_type as depend_type\n from sys.tables 
as t, sys.tables as v, sys.dependencies as dep\n where t.id = dep.id and v.id = 
dep.depend_id\n and dep.depend_type = 5 and t.type not in (1, 11) and v.type in 
(1, 11)\n order by t.schema_id, t.name, v.schema_id, v.name;"      1       true 
   0       0
+6950   "dependency_views_on_views"     2000    "create view 
sys.dependency_views_on_views as\nselect v1.schema_id as view1_schema_id, v1.id 
as view1_id, v1.name as view1_name, v2.schema_id as view2_schema_id, v2.id as 
view2_id, v2.name as view2_name, dep.depend_type as depend_type\n from 
sys.tables as v1, sys.tables as v2, sys.dependencies as dep\n where v1.id = 
dep.id and v2.id = dep.depend_id\n and dep.depend_type = 5 and v1.type in (1, 
11) and v2.type in (1, 11)\n order by v1.schema_id, v1.name, v2.schema_id, 
v2.name;"        1       true    0       0
+6961   "dependency_columns_on_views"   2000    "create view 
sys.dependency_columns_on_views as\nselect t.schema_id as table_schema_id, t.id 
as table_id, t.name as table_name, c.id as column_id, c.name as column_name, 
v.schema_id as view_schema_id, v.id as view_id, v.name as view_name, 
dep.depend_type as depend_type\n from sys.columns as c, sys.tables as v, 
sys.tables as t, sys.dependencies as dep\n where c.id = dep.id and v.id = 
dep.depend_id and c.table_id = t.id\n and dep.depend_type = 5 and v.type in (1, 
11)\n order by t.schema_id, t.name, c.name, v.name;"  1       true    0       0
+6970   "dependency_functions_on_views" 2000    "create view 
sys.dependency_functions_on_views as\nselect f.schema_id as function_schema_id, 
f.id as function_id, f.name as function_name, v.schema_id as view_schema_id, 
v.id as view_id, v.name as view_name, dep.depend_type as depend_type\n from 
sys.functions as f, sys.tables as v, sys.dependencies as dep\n where f.id = 
dep.id and v.id = dep.depend_id\n and dep.depend_type = 5 and v.type in (1, 
11)\n order by f.schema_id, f.name, v.schema_id, v.name;" 1       true    0     
  0
+6976   "dependency_schemas_on_users"   2000    "create view 
sys.dependency_schemas_on_users as\nselect s.id as schema_id, s.name as 
schema_name, u.name as user_name, cast(6 as smallint) as depend_type\n from 
sys.users as u, sys.schemas as s\n where u.default_schema = s.id\n order by 
s.name, u.name;"   1       true    0       0
+6984   "dependency_tables_on_functions"        2000    "create view 
sys.dependency_tables_on_functions as\nselect t.schema_id as table_schema_id, 
t.id as table_id, t.name as table_name, f.name as function_name, f.type as 
function_type, dep.depend_type as depend_type\n from sys.functions as f, 
sys.tables as t, sys.dependencies as dep\n where t.id = dep.id and f.id = 
dep.depend_id\n and dep.depend_type = 7 and f.type <> 2 and t.type not in (1, 
11)\n order by t.name, t.schema_id, f.name, f.id;"       1       true    0      
 0
+6992   "dependency_views_on_functions" 2000    "create view 
sys.dependency_views_on_functions as\nselect v.schema_id as view_schema_id, 
v.id as view_id, v.name as view_name, f.name as function_name, f.type as 
function_type, dep.depend_type as depend_type\n from sys.functions as f, 
sys.tables as v, sys.dependencies as dep\n where v.id = dep.id and f.id = 
dep.depend_id\n and dep.depend_type = 7 and f.type <> 2 and v.type in (1, 11)\n 
order by v.name, v.schema_id, f.name, f.id;"       1       true    0       0
+7001   "dependency_columns_on_functions"       2000    "create view 
sys.dependency_columns_on_functions as\nselect c.table_id, c.id as column_id, 
c.name, f.id as function_id, f.name as function_name, f.type as function_type, 
dep.depend_type as depend_type\n from sys.functions as f, sys.columns as c, 
sys.dependencies as dep\n where c.id = dep.id and f.id = dep.depend_id\n and 
dep.depend_type = 7 and f.type <> 2\n order by c.name, c.table_id, f.name, 
f.id;"    1       true    0       0
+7012   "dependency_functions_on_functions"     2000    "create view 
sys.dependency_functions_on_functions as\nselect f1.schema_id, f1.id as 
function_id, f1.name as function_name, f1.type as function_type,\n f2.schema_id 
as used_in_function_schema_id, f2.id as used_in_function_id, f2.name as 
used_in_function_name, f2.type as used_in_function_type, dep.depend_type as 
depend_type\n from sys.functions as f1, sys.functions as f2, sys.dependencies 
as dep\n where f1.id = dep.id and f2.id = dep.depend_id\n and dep.depend_type = 
7 and f2.type <> 2\n order by f1.name, f1.id, f2.name, f2.id;"   1       true   
 0       0
+7020   "dependency_tables_on_triggers" 2000    "create view 
sys.dependency_tables_on_triggers as\n(select t.schema_id as table_schema_id, 
t.id as table_id, t.name as table_name, tri.id as trigger_id, tri.name as 
trigger_name, cast(8 as smallint) as depend_type\n from sys.tables as t, 
sys.triggers as tri\n where tri.table_id = t.id)\nunion\n(select t.schema_id as 
table_schema_id, t.id as table_id, t.name as table_name, tri.id as trigger_id, 
tri.name as trigger_name, dep.depend_type as depend_type\n from sys.tables as 
t, sys.triggers as tri, sys.dependencies as dep\n where dep.id = t.id and 
dep.depend_id = tri.id\n and dep.depend_type = 8)\n order by table_schema_id, 
table_name, trigger_name;"   1       true    0       0
+7030   "dependency_columns_on_triggers"        2000    "create view 
sys.dependency_columns_on_triggers as\nselect t.schema_id as table_schema_id, 
t.id as table_id, t.name as table_name, tri.id as trigger_id, tri.name as 
trigger_name, c.id as column_id, c.name as column_name, dep.depend_type as 
depend_type\n from sys.tables as t, sys.columns as c, sys.triggers as tri, 
sys.dependencies as dep\n where dep.id = c.id and dep.depend_id = tri.id and 
c.table_id = t.id\n and dep.depend_type = 8\n order by t.schema_id, t.name, 
tri.name, c.name;"  1       true    0       0
+7040   "dependency_functions_on_triggers"      2000    "create view 
sys.dependency_functions_on_triggers as\nselect f.schema_id as 
function_schema_id, f.id as function_id, f.name as function_name, f.type as 
function_type,\n tri.id as trigger_id, tri.name as trigger_name, tri.table_id 
as trigger_table_id, dep.depend_type as depend_type\n from sys.functions as f, 
sys.triggers as tri, sys.dependencies as dep\n where dep.id = f.id and 
dep.depend_id = tri.id\n and dep.depend_type = 8\n order by f.schema_id, 
f.name, tri.name;" 1       true    0       0
+7049   "dependency_tables_on_indexes"  2000    "create view 
sys.dependency_tables_on_indexes as\nselect t.schema_id as table_schema_id, 
t.id as table_id, t.name as table_name, i.id as index_id, i.name as index_name, 
i.type as index_type, cast(10 as smallint) as depend_type\n from sys.tables as 
t, sys.idxs as i\n where i.table_id = t.id\n \n and (i.table_id, i.name) not in 
(select k.table_id, k.name from sys.keys k)\n order by t.schema_id, t.name, 
i.name;"    1       true    0       0
+7061   "dependency_columns_on_indexes" 2000    "create view 
sys.dependency_columns_on_indexes as\nselect c.id as column_id, c.name as 
column_name, t.id as table_id, t.name as table_name, t.schema_id, i.id as 
index_id, i.name as index_name, i.type as index_type, cast(ic.nr +1 as int) as 
seq_nr, cast(10 as smallint) as depend_type\n from sys.tables as t, sys.columns 
as c, sys.objects as ic, sys.idxs as i\n where ic.name = c.name and ic.id = 
i.id and c.table_id = i.table_id and c.table_id = t.id\n \n and (i.table_id, 
i.name) not in (select k.table_id, k.name from sys.keys k)\n order by c.name, 
t.name, t.schema_id, i.name, ic.nr;"     1       true    0       0
+7069   "dependency_tables_on_foreignkeys"      2000    "create view 
sys.dependency_tables_on_foreignkeys as\nselect t.schema_id as table_schema_id, 
t.id as table_id, t.name as table_name, fk.name as fk_name, cast(k.type as 
smallint) as key_type, cast(11 as smallint) as depend_type\n from sys.tables as 
t, sys.keys as k, sys.keys as fk\n where fk.rkey = k.id and k.table_id = t.id\n 
order by t.schema_id, t.name, fk.name;" 1       true    0       0
+7079   "dependency_keys_on_foreignkeys"        2000    "create view 
sys.dependency_keys_on_foreignkeys as\nselect k.table_id as key_table_id, k.id 
as key_id, k.name as key_name, fk.table_id as fk_table_id, fk.id as fk_id, 
fk.name as fk_name, cast(k.type as smallint) as key_type, cast(11 as smallint) 
as depend_type\n from sys.keys as k, sys.keys as fk\n where k.id = fk.rkey\n 
order by k.name, fk.name;"   1       true    0       0
+7088   "dependency_tables_on_procedures"       2000    "create view 
sys.dependency_tables_on_procedures as\nselect t.schema_id as table_schema_id, 
t.id as table_id, t.name as table_name, p.id as procedure_id, p.name as 
procedure_name, p.type as procedure_type, dep.depend_type as depend_type\n from 
sys.functions as p, sys.tables as t, sys.dependencies as dep\n where t.id = 
dep.id and p.id = dep.depend_id\n and dep.depend_type = 13 and p.type = 2 and 
t.type not in (1, 11)\n order by t.name, t.schema_id, p.name, p.id;"      1     
  true    0       0
+7097   "dependency_views_on_procedures"        2000    "create view 
sys.dependency_views_on_procedures as\nselect v.schema_id as view_schema_id, 
v.id as view_id, v.name as view_name, p.id as procedure_id, p.name as 
procedure_name, p.type as procedure_type, dep.depend_type as depend_type\n from 
sys.functions as p, sys.tables as v, sys.dependencies as dep\n where v.id = 
dep.id and p.id = dep.depend_id\n and dep.depend_type = 13 and p.type = 2 and 
v.type in (1, 11)\n order by v.name, v.schema_id, p.name, p.id;"      1       
true    0       0
+7106   "dependency_columns_on_procedures"      2000    "create view 
sys.dependency_columns_on_procedures as\nselect c.table_id, c.id as column_id, 
c.name as column_name, p.id as procedure_id, p.name as procedure_name, p.type 
as procedure_type, dep.depend_type as depend_type\n from sys.functions as p, 
sys.columns as c, sys.dependencies as dep\n where c.id = dep.id and p.id = 
dep.depend_id\n and dep.depend_type = 13 and p.type = 2\n order by c.name, 
c.table_id, p.name, p.id;" 1       true    0       0
+7117   "dependency_functions_on_procedures"    2000    "create view 
sys.dependency_functions_on_procedures as\nselect f.schema_id as 
function_schema_id, f.id as function_id, f.name as function_name, f.type as 
function_type,\n p.schema_id as procedure_schema_id, p.id as procedure_id, 
p.name as procedure_name, p.type as procedure_type, dep.depend_type as 
depend_type\n from sys.functions as p, sys.functions as f, sys.dependencies as 
dep\n where f.id = dep.id and p.id = dep.depend_id\n and dep.depend_type = 13 
and p.type = 2\n order by p.name, p.id, f.name, f.id;" 1       true    0       0
+7127   "dependency_columns_on_types"   2000    "create view 
sys.dependency_columns_on_types as\nselect t.schema_id as table_schema_id, t.id 
as table_id, t.name as table_name, dt.id as type_id, dt.sqlname as type_name, 
c.id as column_id, c.name as column_name, dep.depend_type as depend_type\n from 
sys.tables as t, sys.columns as c, sys.types as dt, sys.dependencies as dep\n 
where dep.id = dt.id and dep.depend_id = c.id and c.table_id = t.id\n and 
dep.depend_type = 15\n order by dt.sqlname, t.name, c.name, c.id;"   1       
true    0       0
+7135   "dependency_functions_on_types" 2000    "create view 
sys.dependency_functions_on_types as\nselect dt.id as type_id, dt.sqlname as 
type_name, f.id as function_id, f.name as function_name, f.type as 
function_type, dep.depend_type as depend_type\n from sys.functions as f, 
sys.types as dt, sys.dependencies as dep\n where dep.id = dt.id and 
dep.depend_id = f.id\n and dep.depend_type = 15\n order by dt.sqlname, f.name, 
f.id;" 1       true    0       0
+7145   "dependency_args_on_types"      2000    "create view 
sys.dependency_args_on_types as\nselect dt.id as type_id, dt.sqlname as 
type_name, f.id as function_id, f.name as function_name, a.id as arg_id, a.name 
as arg_name, a.number as arg_nr, dep.depend_type as depend_type\n from sys.args 
as a, sys.functions as f, sys.types as dt, sys.dependencies as dep\n where 
dep.id = dt.id and dep.depend_id = a.id and a.func_id = f.id\n and 
dep.depend_type = 15\n order by dt.sqlname, f.name, a.number, a.name;"       1  
     true    0       0
+7177   "sessions"      2000    "create view sys.sessions as select * from 
sys.sessions();"     1       true    0       0
+7249   "prepared_statements"   2000    "create view sys.prepared_statements as 
select * from sys.prepared_statements();"       1       true    0       0
+7271   "prepared_statements_args"      2000    "create view 
sys.prepared_statements_args as select * from sys.prepared_statements_args();"  
   1       true    0       0
+7322   "optimizers"    2000    "create view sys.optimizers as select * from 
sys.optimizers();" 1       true    0       0
+7326   "environment"   2000    "create view sys.environment as select * from 
sys.env();"       1       true    0       0
+7444   "queue" 2000    "create view sys.queue as select * from sys.queue();"   
1       true    0       0
+7465   "rejects"       2000    "create view sys.rejects as select * from 
sys.rejects();"       1       true    0       0
+8236   "spatial_ref_sys"       2000    NULL    0       true    0       0
+8245   "geometry_columns"      2000    "create view sys.geometry_columns as\n 
select cast(null as varchar(1)) as f_table_catalog,\n s.name as 
f_table_schema,\n t.name as f_table_name,\n c.name as f_geometry_column,\n 
cast(has_z(c.type_digits) + has_m(c.type_digits) +2 as integer) as 
coord_dimension,\n c.type_scale as srid,\n get_type(c.type_digits, 0) as type\n 
from sys.columns c, sys.tables t, sys.schemas s\n where c.table_id = t.id and 
t.schema_id = s.id\n and c.type in (select sqlname from sys.types where 
systemname in ('wkb', 'wkba'));"     1       true    0       0
+8933   "keywords"      2000    NULL    0       true    0       1
+8941   "table_types"   2000    NULL    0       true    0       1
+8950   "function_types"        2000    NULL    0       true    0       1
+8959   "function_languages"    2000    NULL    0       true    0       1
+8967   "key_types"     2000    NULL    0       true    0       1
+8975   "index_types"   2000    NULL    0       true    0       1
+8983   "privilege_codes"       2000    NULL    0       true    0       1
+8988   "roles" 2000    "create view sys.roles as select id, name, grantor from 
sys.auths a where a.name not in (select u.name from sys.db_users() u);" 1       
true    0       0
+8992   "var_values"    2000    "create view sys.var_values (var_name, value) 
as\nselect 'cache' as var_name, convert(cache, varchar(10)) as value union 
all\nselect 'current_role', current_role union all\nselect 'current_schema', 
current_schema union all\nselect 'current_timezone', current_timezone union 
all\nselect 'current_user', current_user union all\nselect 'debug', debug union 
all\nselect 'last_id', last_id union all\nselect 'optimizer', optimizer union 
all\nselect 'pi', pi() union all\nselect 'rowcnt', rowcnt;"     1       true    
0       0
+9083   "netcdf_files"  2000    NULL    0       true    0       0
+9089   "netcdf_dims"   2000    NULL    0       true    0       0
+9097   "netcdf_vars"   2000    NULL    0       true    0       0
+9103   "netcdf_vardim" 2000    NULL    0       true    0       0
+9111   "netcdf_attrs"  2000    NULL    0       true    0       0
+9177   "storage"       2000    "create view sys.""storage"" as\nselect * from 
sys.""storage""()\n where (""schema"", ""table"") in (\n select sch.""name"", 
tbl.""name""\n from sys.""tables"" as tbl join sys.""schemas"" as sch on 
tbl.schema_id = sch.id\n where tbl.""system"" = false)\norder by ""schema"", 
""table"", ""column"";"      1       true    0       0
+9188   "tablestorage"  2000    "create view sys.""tablestorage"" as\nselect 
""schema"", ""table"",\n max(""count"") as ""rowcount"",\n count(*) as 
""storages"",\n sum(columnsize) as columnsize,\n sum(heapsize) as heapsize,\n 
sum(hashes) as hashsize,\n sum(""imprints"") as imprintsize,\n sum(orderidx) as 
orderidxsize\n from sys.""storage""\ngroup by ""schema"", ""table""\norder by 
""schema"", ""table"";" 1       true    0       0
+9197   "schemastorage" 2000    "create view sys.""schemastorage"" as\nselect 
""schema"",\n count(*) as ""storages"",\n sum(columnsize) as columnsize,\n 
sum(heapsize) as heapsize,\n sum(hashes) as hashsize,\n sum(""imprints"") as 
imprintsize,\n sum(orderidx) as orderidxsize\n from sys.""storage""\ngroup by 
""schema""\norder by ""schema"";"   1       true    0       0
+9274   "storagemodelinput"     2000    NULL    0       true    0       0
+9313   "storagemodel"  2000    "create view sys.storagemodel as\nselect 
""schema"", ""table"", ""column"", ""type"", ""count"",\n 
sys.columnsize(""type"", ""count"") as columnsize,\n sys.heapsize(""type"", 
""count"", ""distinct"", ""atomwidth"") as heapsize,\n 
sys.hashsize(""reference"", ""count"") as hashsize,\n case when isacolumn then 
sys.imprintsize(""type"", ""count"") else 0 end as imprintsize,\n case when 
(isacolumn and not sorted) then cast(8 * ""count"" as bigint) else 0 end as 
orderidxsize,\n sorted, ""unique"", isacolumn\n from 
sys.storagemodelinput\norder by ""schema"", ""table"", ""column"";"   1       
true    0       0
+9324   "tablestoragemodel"     2000    "create view sys.tablestoragemodel 
as\nselect ""schema"", ""table"",\n max(""count"") as ""rowcount"",\n count(*) 
as ""storages"",\n sum(sys.columnsize(""type"", ""count"")) as columnsize,\n 
sum(sys.heapsize(""type"", ""count"", ""distinct"", ""atomwidth"")) as 
heapsize,\n sum(sys.hashsize(""reference"", ""count"")) as hashsize,\n sum(case 
when isacolumn then sys.imprintsize(""type"", ""count"") else 0 end) as 
imprintsize,\n sum(case when (isacolumn and not sorted) then cast(8 * ""count"" 
as bigint) else 0 end) as orderidxsize\n from sys.storagemodelinput\ngroup by 
""schema"", ""table""\norder by ""schema"", ""table"";"     1       true    0   
    0
+9338   "statistics"    2000    NULL    0       true    0       0
+9421   "compinfo"      9385    "create view logging.compinfo as select * from 
logging.compinfo();"     1       true    0       0
+9505   "systemfunctions"       2000    "create view sys.systemfunctions as 
select id as function_id from sys.functions where system;"  1       true    0   
    0
+9588   "integers"      2000    NULL    0       false   0       0
+9594   "tbl_productsales"      2000    NULL    0       false   0       0
+9604   "another_t"     2000    NULL    0       false   0       0
+
+select schema_id from mytables group by schema_id having min(schema_id);
+ROLLBACK;
diff --git 
a/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.stable.out 
b/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.stable.out
--- a/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.stable.out
+++ b/sql/test/BugTracker-2009/Tests/having_min_crash.SF-2795951.stable.out
@@ -1,34 +1,46 @@
 stdout of test 'having_min_crash.SF-2795951` in directory 
'sql/test/BugTracker-2009` itself:
 
 
-# 21:57:32 >  
-# 21:57:32 >   mserver5 
"--config=/ufs/niels/scratch/rc/Linux-x86_64/etc/monetdb5.conf" --debug=10 
--set gdk_nr_threads=0 --set 
"monet_mod_path=/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/lib:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/bin"
 --set "gdk_dbfarm=/ufs/niels/scratch/rc/Linux-x86_64/var/MonetDB5/dbfarm"    
--set mapi_open=true --set xrpc_open=true --set mapi_port=36965 --set 
xrpc_port=41502 --set monet_prompt= --trace  
"--dbname=mTests_src_test_BugTracker-2009" --set mal_listing=0 "--dbinit= 
include sql;" ; echo ; echo Over..
-# 21:57:32 >  
+# 10:36:22 >  
+# 10:36:22 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-173588" "--port=30774"
+# 10:36:22 >  
 
-# MonetDB server v5.12.0, based on kernel v1.30.0
-# Serving database 'mTests_src_test_BugTracker-2009', using 4 threads
-# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
-# Copyright (c) 1993-July 2008 CWI.
-# Copyright (c) August 2008-2009 MonetDB B.V., all rights reserved
-# Visit http://monetdb.cwi.nl/ for further information
-# Listening for connection requests on mapi:monetdb://alf.ins.cwi.nl:36965/
-# MonetDB/SQL module v2.30.0 loaded
-
-#function user.main():void;
-#    clients.quit();
-#end main;
-
-
-# 21:57:32 >  
-# 21:57:32 >  mclient -lsql -umonetdb -Pmonetdb --host=alf --port=36965 
-# 21:57:32 >  
-
-% .tables # table_name
+#START TRANSACTION;
+#CREATE TABLE "sys"."mytables" (
+#      "id"            INTEGER,
+#      "name"          VARCHAR(1024),
+#      "schema_id"     INTEGER,
+#      "query"         VARCHAR(1048576),
+#      "type"          SMALLINT,
+#      "system"        BOOLEAN,
+#      "commit_action" SMALLINT,
+#      "access"        SMALLINT
+#);
+#COPY 96 RECORDS INTO "sys"."mytables" FROM stdin USING DELIMITERS 
E'\t',E'\n','"';
+#2001  "schemas"       2000    NULL    0       true    0       0
+#2007  "types" 2000    NULL    0       true    0       0
+#2016  "functions"     2000    NULL    0       true    0       0
+#2028  "args"  2000    NULL    0       true    0       0
+#2037  "sequences"     2000    NULL    0       true    0       0
+#2047  "table_partitions"      2000    NULL    0       true    0       0
+#2053  "range_partitions"      2000    NULL    0       true    0       0
+#2059  "value_partitions"      2000    NULL    0       true    0       0
+#2063  "dependencies"  2000    NULL    0       true    0       0
+#2067  "_tables"       2000    NULL    0       true    0       0
+#2076  "_columns"      2000    NULL    0       true    0       0
+#2087  "keys"  2000    NULL    0       true    0       0
+[ 96   ]
+#select schema_id from mytables group by schema_id having min(schema_id);
+% sys.mytables # table_name
 % schema_id # name
 % int # type
-% 1 # length
+% 4 # length
+[ 2000 ]
+[ 2114 ]
+[ 9385 ]
+#ROLLBACK;
 
-# 21:57:32 >  
-# 21:57:32 >  Done.
-# 21:57:32 >  
+# 10:36:22 >  
+# 10:36:22 >  "Done."
+# 10:36:22 >  
 
diff --git a/sql/test/subquery/Tests/subquery3.sql 
b/sql/test/subquery/Tests/subquery3.sql
--- a/sql/test/subquery/Tests/subquery3.sql
+++ b/sql/test/subquery/Tests/subquery3.sql
@@ -565,6 +565,11 @@ SELECT i FROM integers ORDER BY (SELECT 
 --CALL sys_update_schemas();
 --CALL sys_update_tables();
 
+SELECT i FROM integers GROUP BY i HAVING (SELECT i);
+       -- 1
+       -- 2
+       -- 3
+
 DROP FUNCTION evilfunction(INT);
 DROP TABLE tbl_ProductSales;
 DROP TABLE another_T;
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
@@ -513,6 +513,14 @@ stdout of test 'subquery3` in directory 
 [ 2    ]
 [ 3    ]
 [ NULL ]
+#SELECT i FROM integers GROUP BY i HAVING (SELECT i);
+% .integers # table_name
+% i # name
+% int # type
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to