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