Changeset: a96e9a08f10a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a96e9a08f10a Modified Files: sql/server/rel_optimizer.c sql/test/Tests/keys.test Branch: default Log Message:
Merged with Oct2020 diffs (truncated from 309 to 300 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -9381,14 +9381,13 @@ replace_column_references_with_nulls_2(m static sql_rel * out2inner(visitor *v, sql_rel* sel, sql_rel* join, sql_rel* inner_join_side, operator_type new_type) { - list* select_predicates = exps_copy(v->sql, sel->exps); - if (!is_base(inner_join_side->op) && !is_simple_project(inner_join_side->op)) { // Nothing to do here. return sel; } list* inner_join_column_references = inner_join_side->exps; + list* select_predicates = exps_copy(v->sql, sel->exps); for(node* n = select_predicates->h; n; n=n->next) { sql_exp* e = n->data; @@ -9532,6 +9531,8 @@ rel_remove_union_partitions(visitor *v, return rel; if (exp_is_zero_rows(v->sql, rel->l, NULL)) { sql_rel *r = rel->r; + if (!is_project(r->op)) + r = rel_project(v->sql->sa, r, rel_projections(v->sql, r, NULL, 1, 1)); rel_rename_exps(v->sql, rel->exps, r->exps); rel->r = NULL; rel_destroy(rel); @@ -9540,6 +9541,8 @@ rel_remove_union_partitions(visitor *v, } if (exp_is_zero_rows(v->sql, rel->r, NULL)) { sql_rel *l = rel->l; + if (!is_project(l->op)) + l = rel_project(v->sql->sa, l, rel_projections(v->sql, l, NULL, 1, 1)); rel_rename_exps(v->sql, rel->exps, l->exps); rel->l = NULL; rel_destroy(rel); diff --git a/sql/test/Tests/keys.sql b/sql/test/Tests/keys.sql --- a/sql/test/Tests/keys.sql +++ b/sql/test/Tests/keys.sql @@ -7,9 +7,11 @@ CREATE INDEX allnewtriples_predicate_idx CREATE INDEX allnewtriples_object_idx ON allnewtriples ("object"); SELECT idxs.name, idxs."type", keys.name, keys."type" -FROM sys.idxs LEFT JOIN sys.keys on idxs.name = keys.name; +FROM sys.idxs LEFT JOIN sys.keys on idxs.name = keys.name +ORDER BY idxs.name, keys.name; SELECT idxs.name, idxs."type", keys.name, keys."type" -FROM sys.idxs JOIN sys.keys on idxs.name = keys.name; +FROM sys.idxs JOIN sys.keys on idxs.name = keys.name +ORDER BY idxs.name, keys.name; /* test elimination of distinct restriction on aggregates */ create table dummyme (a int primary key, b int); diff --git a/sql/test/Tests/keys.stable.out b/sql/test/Tests/keys.stable.out --- a/sql/test/Tests/keys.stable.out +++ b/sql/test/Tests/keys.stable.out @@ -60,27 +60,27 @@ stdout of test 'keys` in directory 'sql/ % name, type, name, type # name % varchar, int, varchar, int # type % 44, 1, 44, 1 # length +[ "allnewtriples_object_idx", 0, NULL, NULL ] +[ "allnewtriples_predicate_idx", 0, NULL, NULL ] +[ "allnewtriples_subject_idx", 0, NULL, NULL ] [ "comments_id_pkey", 0, "comments_id_pkey", 0 ] [ "dependency_types_dependency_type_id_pkey", 0, "dependency_types_dependency_type_id_pkey", 0 ] [ "dependency_types_dependency_type_name_unique", 0, "dependency_types_dependency_type_name_unique", 1 ] -[ "spatial_ref_sys_srid_pkey", 0, "spatial_ref_sys_srid_pkey", 0 ] -[ "keywords_keyword_pkey", 0, "keywords_keyword_pkey", 0 ] -[ "table_types_table_type_id_pkey", 0, "table_types_table_type_id_pkey", 0 ] -[ "table_types_table_type_name_unique", 0, "table_types_table_type_name_unique", 1 ] -[ "function_types_function_type_id_pkey", 0, "function_types_function_type_id_pkey", 0 ] -[ "function_types_function_type_name_unique", 0, "function_types_function_type_name_unique", 1 ] [ "function_languages_language_id_pkey", 0, "function_languages_language_id_pkey", 0 ] [ "function_languages_language_name_unique", 0, "function_languages_language_name_unique", 1 ] -[ "key_types_key_type_id_pkey", 0, "key_types_key_type_id_pkey", 0 ] -[ "key_types_key_type_name_unique", 0, "key_types_key_type_name_unique", 1 ] +[ "function_types_function_type_id_pkey", 0, "function_types_function_type_id_pkey", 0 ] +[ "function_types_function_type_name_unique", 0, "function_types_function_type_name_unique", 1 ] [ "index_types_index_type_id_pkey", 0, "index_types_index_type_id_pkey", 0 ] [ "index_types_index_type_name_unique", 0, "index_types_index_type_name_unique", 1 ] +[ "key_types_key_type_id_pkey", 0, "key_types_key_type_id_pkey", 0 ] +[ "key_types_key_type_name_unique", 0, "key_types_key_type_name_unique", 1 ] +[ "keywords_keyword_pkey", 0, "keywords_keyword_pkey", 0 ] [ "privilege_codes_privilege_code_id_pkey", 0, "privilege_codes_privilege_code_id_pkey", 0 ] [ "privilege_codes_privilege_code_name_unique", 0, "privilege_codes_privilege_code_name_unique", 1 ] +[ "spatial_ref_sys_srid_pkey", 0, "spatial_ref_sys_srid_pkey", 0 ] +[ "table_types_table_type_id_pkey", 0, "table_types_table_type_id_pkey", 0 ] +[ "table_types_table_type_name_unique", 0, "table_types_table_type_name_unique", 1 ] [ "unique_key", 0, "unique_key", 1 ] -[ "allnewtriples_subject_idx", 0, NULL, NULL ] -[ "allnewtriples_predicate_idx", 0, NULL, NULL ] -[ "allnewtriples_object_idx", 0, NULL, NULL ] #SELECT idxs.name, idxs."type", keys.name, keys."type" #FROM idxs JOIN keys on idxs.name = keys.name; % sys.idxs, sys.idxs, sys.keys, sys.keys # table_name @@ -90,20 +90,20 @@ stdout of test 'keys` in directory 'sql/ [ "comments_id_pkey", 0, "comments_id_pkey", 0 ] [ "dependency_types_dependency_type_id_pkey", 0, "dependency_types_dependency_type_id_pkey", 0 ] [ "dependency_types_dependency_type_name_unique", 0, "dependency_types_dependency_type_name_unique", 1 ] -[ "spatial_ref_sys_srid_pkey", 0, "spatial_ref_sys_srid_pkey", 0 ] -[ "keywords_keyword_pkey", 0, "keywords_keyword_pkey", 0 ] -[ "table_types_table_type_id_pkey", 0, "table_types_table_type_id_pkey", 0 ] -[ "table_types_table_type_name_unique", 0, "table_types_table_type_name_unique", 1 ] +[ "function_languages_language_id_pkey", 0, "function_languages_language_id_pkey", 0 ] +[ "function_languages_language_name_unique", 0, "function_languages_language_name_unique", 1 ] [ "function_types_function_type_id_pkey", 0, "function_types_function_type_id_pkey", 0 ] [ "function_types_function_type_name_unique", 0, "function_types_function_type_name_unique", 1 ] -[ "function_languages_language_id_pkey", 0, "function_languages_language_id_pkey", 0 ] -[ "function_languages_language_name_unique", 0, "function_languages_language_name_unique", 1 ] +[ "index_types_index_type_id_pkey", 0, "index_types_index_type_id_pkey", 0 ] +[ "index_types_index_type_name_unique", 0, "index_types_index_type_name_unique", 1 ] [ "key_types_key_type_id_pkey", 0, "key_types_key_type_id_pkey", 0 ] [ "key_types_key_type_name_unique", 0, "key_types_key_type_name_unique", 1 ] -[ "index_types_index_type_id_pkey", 0, "index_types_index_type_id_pkey", 0 ] -[ "index_types_index_type_name_unique", 0, "index_types_index_type_name_unique", 1 ] +[ "keywords_keyword_pkey", 0, "keywords_keyword_pkey", 0 ] [ "privilege_codes_privilege_code_id_pkey", 0, "privilege_codes_privilege_code_id_pkey", 0 ] [ "privilege_codes_privilege_code_name_unique", 0, "privilege_codes_privilege_code_name_unique", 1 ] +[ "spatial_ref_sys_srid_pkey", 0, "spatial_ref_sys_srid_pkey", 0 ] +[ "table_types_table_type_id_pkey", 0, "table_types_table_type_id_pkey", 0 ] +[ "table_types_table_type_name_unique", 0, "table_types_table_type_name_unique", 1 ] [ "unique_key", 0, "unique_key", 1 ] #create table dummyme (a int primary key, b int); #insert into dummyme values (1,1), (2,1), (3,1); diff --git a/sql/test/Tests/keys.test b/sql/test/Tests/keys.test --- a/sql/test/Tests/keys.test +++ b/sql/test/Tests/keys.test @@ -18,17 +18,172 @@ CREATE INDEX allnewtriples_object_idx ON query TITI rowsort SELECT idxs.name, idxs."type", keys.name, keys."type" FROM sys.idxs LEFT JOIN sys.keys on idxs.name = keys.name +ORDER BY idxs.name, keys.name ---- -84 values hashing to aca252ae38ab8879e6e119df7736fb5e +allnewtriples_object_idx +0 +NULL +NULL +allnewtriples_predicate_idx +0 +NULL +NULL +allnewtriples_subject_idx +0 +NULL +NULL +comments_id_pkey +0 +comments_id_pkey +0 +dependency_types_dependency_type_id_pkey +0 +dependency_types_dependency_type_id_pkey +0 +dependency_types_dependency_type_name_unique +0 +dependency_types_dependency_type_name_unique +1 +function_languages_language_id_pkey +0 +function_languages_language_id_pkey +0 +function_languages_language_name_unique +0 +function_languages_language_name_unique +1 +function_types_function_type_id_pkey +0 +function_types_function_type_id_pkey +0 +function_types_function_type_name_unique +0 +function_types_function_type_name_unique +1 +index_types_index_type_id_pkey +0 +index_types_index_type_id_pkey +0 +index_types_index_type_name_unique +0 +index_types_index_type_name_unique +1 +key_types_key_type_id_pkey +0 +key_types_key_type_id_pkey +0 +key_types_key_type_name_unique +0 +key_types_key_type_name_unique +1 +keywords_keyword_pkey +0 +keywords_keyword_pkey +0 +privilege_codes_privilege_code_id_pkey +0 +privilege_codes_privilege_code_id_pkey +0 +privilege_codes_privilege_code_name_unique +0 +privilege_codes_privilege_code_name_unique +1 +spatial_ref_sys_srid_pkey +0 +spatial_ref_sys_srid_pkey +0 +table_types_table_type_id_pkey +0 +table_types_table_type_id_pkey +0 +table_types_table_type_name_unique +0 +table_types_table_type_name_unique +1 +unique_key +0 +unique_key +1 query TITI rowsort SELECT idxs.name, idxs."type", keys.name, keys."type" FROM sys.idxs JOIN sys.keys on idxs.name = keys.name +ORDER BY idxs.name, keys.name ---- -72 values hashing to 605c876e5adbcc987c4a0294b82e9da6 +comments_id_pkey +0 +comments_id_pkey +0 +dependency_types_dependency_type_id_pkey +0 +dependency_types_dependency_type_id_pkey +0 +dependency_types_dependency_type_name_unique +0 +dependency_types_dependency_type_name_unique +1 +function_languages_language_id_pkey +0 +function_languages_language_id_pkey +0 +function_languages_language_name_unique +0 +function_languages_language_name_unique +1 +function_types_function_type_id_pkey +0 +function_types_function_type_id_pkey +0 +function_types_function_type_name_unique +0 +function_types_function_type_name_unique +1 +index_types_index_type_id_pkey +0 +index_types_index_type_id_pkey +0 +index_types_index_type_name_unique +0 +index_types_index_type_name_unique +1 +key_types_key_type_id_pkey +0 +key_types_key_type_id_pkey +0 +key_types_key_type_name_unique +0 +key_types_key_type_name_unique +1 +keywords_keyword_pkey +0 +keywords_keyword_pkey +0 +privilege_codes_privilege_code_id_pkey +0 +privilege_codes_privilege_code_id_pkey +0 +privilege_codes_privilege_code_name_unique +0 +privilege_codes_privilege_code_name_unique +1 +spatial_ref_sys_srid_pkey +0 +spatial_ref_sys_srid_pkey +0 +table_types_table_type_id_pkey +0 +table_types_table_type_id_pkey +0 +table_types_table_type_name_unique +0 +table_types_table_type_name_unique +1 +unique_key +0 +unique_key +1 statement ok _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list