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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list