Changeset: a764357d30b7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a764357d30b7
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_execute.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_gencode.h
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_upgrades.c
sql/common/sql_backend.c
sql/common/sql_backend.h
sql/common/sql_string.c
sql/common/sql_string.h
sql/scripts/51_sys_schema_extension.sql
sql/server/rel_dump.c
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_optimizer.c
sql/server/rel_planner.c
sql/server/rel_propagate.c
sql/server/rel_psm.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_semantic.c
sql/server/rel_updates.c
sql/server/sql_env.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_parser.y
sql/server/sql_qc.c
sql/server/sql_qc.h
sql/server/sql_scan.c
sql/server/sql_scan.h
sql/server/sql_semantic.c
sql/server/sql_semantic.h
sql/test/BugDay_2005-11-09_2.9.3/Tests/sql_server_crash.SF-1080024.stable.out
sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.stable.err
sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.stable.out
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
sql/test/BugTracker-2011/Tests/and-power.Bug-3013.stable.out
sql/test/BugTracker-2012/Tests/querycache.Bug-3212.stable.out
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
sql/test/BugTracker-2016/Tests/prepare_without_querycache.Bug-4047.stable.err
sql/test/BugTracker-2017/Tests/drop_not_null_on_pkey.Bug-6189.stable.out
sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case-nullif-coalesce.Bug-6565.stable.out
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.out
sql/test/BugTracker/Tests/caching.SF-1651599.stable.out
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
sql/test/Tests/decimal2.stable.out
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/mapi/Tests/sql_int128.stable.out.int128
sql/test/merge-partitions/Tests/mergepart09.stable.err
sql/test/mergetables/Tests/mergequery.stable.out
sql/test/pg_regress/Tests/date.stable.err
sql/test/pg_regress/Tests/strings.stable.out
sql/test/pg_regress/Tests/strings_cast.stable.out
sql/test/remote/Tests/partition_elim.stable.out
sql/test/subquery/Tests/correlated.stable.out
Branch: context
Log Message:
removed query caching - seems more overhead and maintains then it gives
performance improvements
removing this also gives more early optimization tricks
execution of prepared statements are handled similar too CALL's
diffs (truncated from 6576 to 300 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -12030,7 +12030,6 @@ stdout of test 'MAL-signatures` in direc
[ "url", "url", "command url.url(s:str):url ", "URLnew;", "Create
an URL from a string literal" ]
[ "url", "url", "command url.url(s:url):url ", "URLnoop;", "Create
an URL from a string literal" ]
[ "user", "main", "function user.main():void;", "", "" ]
-[ "user", "s2_0", "function user.s2_0():void;", "", "" ]
[ "uuid", "#cmp", "command uuid.#cmp():void ", "UUIDcompare;", ""
]
[ "uuid", "#fromstr", "command uuid.#fromstr():void ",
"UUIDfromString;", "" ]
[ "uuid", "#hash", "command uuid.#hash():void ", "UUIDhash;",
"" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -16458,7 +16458,6 @@ stdout of test 'MAL-signatures` in direc
[ "url", "url", "command url.url(s:str):url ", "URLnew;", "Create
an URL from a string literal" ]
[ "url", "url", "command url.url(s:url):url ", "URLnoop;", "Create
an URL from a string literal" ]
[ "user", "main", "function user.main():void;", "", "" ]
-[ "user", "s2_0", "function user.s2_0():void;", "", "" ]
[ "uuid", "#cmp", "command uuid.#cmp():void ", "UUIDcompare;", ""
]
[ "uuid", "#fromstr", "command uuid.#fromstr():void ",
"UUIDfromString;", "" ]
[ "uuid", "#hash", "command uuid.#hash():void ", "UUIDhash;",
"" ]
diff --git
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -60,8 +60,8 @@ stdout of test 'opt_sql_append` in direc
% mal # name
% clob # type
% 180 # length
-function user.s10_0():void;
- X_1:void := querylog.define("explain copy into ttt from
\\'/tmp/xyz\\';":str, "sequential_pipe":str, 22:int);
+function user.main():void;
+ X_1:void := querylog.define("explain copy into ttt from '/tmp/xyz';":str,
"sequential_pipe":str, 21:int);
X_4:int := sql.mvc();
(X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := sql.copy_from(nil:ptr,
"|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int,
0:int, nil:str, 0:int);
X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str,
X_26:bat[:int]);
@@ -69,23 +69,17 @@ function user.s10_0():void;
X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str,
X_28:bat[:int]);
X_40:lng := aggr.count(X_28:bat[:int]);
sql.affectedRows(X_38:int, X_40:lng);
-end user.s10_0;
-#inline actions= 0 time=1 usec
-#candidates actions= 1 time=14 usec
-#remap actions= 0 time=3 usec
-#costModel actions= 1 time=12 usec
-#coercions actions=10 time=13 usec
-#evaluate actions= 0 time=2 usec
-#emptybind actions= 0 time=4 usec
-#pushselect actions= 0 time=3 usec
-#aliases actions= 0 time=4 usec
-#mitosis actions= 0 time=2 usec
-#mergetable actions= 0 time=17 usec
-#deadcode actions= 0 time=5 usec
-#aliases actions= 0 time=4 usec
-#constants actions= 0 time=5 usec
-#commonTerms actions= 0 time=4 usec
-#projectionpath actions= 0 time=3 usec
+end user.main;
+#inline actions= 0 time=0 usec
+#remap actions= 0 time=1 usec
+#costmodel actions= 1 time=1 usec
+#coercion actions=12 time=3 usec
+#aliases actions=12 time=5 usec
+#evaluate actions= 0 time=3 usec
+#emptybind actions= 0 time=0 usec
+#pushselect actions= 0 time=2 usec
+#aliases actions= 0 time=0 usec
+#mergetable actions= 0 time=15 usec
#deadcode actions= 0 time=4 usec
#reorder actions= 1 time=19 usec
#reduce actions=33 time=23 usec
@@ -119,8 +113,8 @@ end user.s10_0;
% mal # name
% clob # type
% 180 # length
-function user.s26_0():void;
- X_1:void := querylog.define("explain copy into ttt from
\\'/tmp/xyz\\';":str, "user_0":str, 22:int);
+function user.main():void;
+ X_1:void := querylog.define("explain copy into ttt from '/tmp/xyz';":str,
"user_0":str, 21:int);
X_4:int := sql.mvc();
(X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := sql.copy_from(nil:ptr,
"|":str, "\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int,
0:int, nil:str, 0:int);
X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str,
X_26:bat[:int]);
@@ -128,7 +122,7 @@ function user.s26_0():void;
X_40:lng := aggr.count(X_28:bat[:int]);
X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str,
X_28:bat[:int]);
sql.affectedRows(X_38:int, X_40:lng);
-end user.s26_0;
+end user.main;
#inline actions= 0 time=1 usec
#candidates actions= 1 time=14 usec
#remap actions= 0 time=3 usec
diff --git a/sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
b/sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
--- a/sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
+++ b/sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
@@ -27,11 +27,11 @@ stdout of test 'udf-fuse` in directory '
% mal # name
% clob # type
% 95 # length
-function user.s4_0():void;
- X_3:void := querylog.define("explain select fuse(1,2);":str,
"sequential_pipe":str, 8:int);
+function user.main():void;
+ X_1:void := querylog.define("explain select fuse(1,2);":str,
"sequential_pipe":str, 7:int);
X_9:sht := udf.fuse(1:bte, 2:bte);
sql.resultSet(".L2":str, "L2":str, "smallint":str, 16:int, 0:int, 7:int,
X_9:sht);
-end user.s4_0;
+end user.main;
#inline actions= 0 time=0 usec
#remap actions= 0 time=1 usec
#costmodel actions= 1 time=0 usec
@@ -68,11 +68,11 @@ end user.s4_0;
% mal # name
% clob # type
% 101 # length
-function user.s6_0():void;
- X_3:void := querylog.define("explain select fuse(1000,2000);":str,
"sequential_pipe":str, 8:int);
+function user.main():void;
+ X_1:void := querylog.define("explain select fuse(1000,2000);":str,
"sequential_pipe":str, 7:int);
X_9:int := udf.fuse(1000:sht, 2000:sht);
sql.resultSet(".L2":str, "L2":str, "int":str, 32:int, 0:int, 7:int,
X_9:int);
-end user.s6_0;
+end user.main;
#inline actions= 0 time=0 usec
#remap actions= 0 time=1 usec
#costmodel actions= 1 time=0 usec
@@ -109,13 +109,13 @@ end user.s6_0;
% mal # name
% clob # type
% 107 # length
-function user.s8_0():void;
- X_3:void := querylog.define("explain select fuse(1000000,2000000);":str,
"sequential_pipe":str, 8:int);
+function user.main():void;
+ X_1:void := querylog.define("explain select fuse(1000000,2000000);":str,
"sequential_pipe":str, 7:int);
X_9:lng := udf.fuse(1000000:int, 2000000:int);
sql.resultSet(".L2":str, "L2":str, "bigint":str, 64:int, 0:int, 7:int,
X_9:lng);
-end user.s8_0;
-#inline actions= 0 time=1 usec
-#remap actions= 0 time=0 usec
+end user.main;
+#inline actions= 0 time=0 usec
+#remap actions= 0 time=1 usec
#costmodel actions= 1 time=0 usec
#coercion actions= 0 time=0 usec
#aliases actions= 2 time=2 usec
@@ -168,8 +168,8 @@ end user.s8_0;
% mal # name
% clob # type
% 114 # length
-function user.s16_0():void;
- X_1:void := querylog.define("explain select fuse(a,b) from udf_fuse;":str,
"sequential_pipe":str, 27:int);
+function user.main():void;
+ X_1:void := querylog.define("explain select fuse(a,b) from udf_fuse;":str,
"sequential_pipe":str, 26:int);
X_29:bat[:str] := bat.new(nil:str);
X_35:bat[:int] := bat.new(nil:int);
X_33:bat[:int] := bat.new(nil:int);
@@ -188,9 +188,9 @@ function user.s16_0():void;
X_42:bat[:int] := bat.append(X_33:bat[:int], 16:int);
X_44:bat[:int] := bat.append(X_35:bat[:int], 0:int);
sql.resultSet(X_36:bat[:str], X_38:bat[:str], X_40:bat[:str],
X_42:bat[:int], X_44:bat[:int], X_25:bat[:sht]);
-end user.s16_0;
-#inline actions= 0 time=1 usec
-#remap actions= 1 time=6 usec
+end user.main;
+#inline actions= 0 time=0 usec
+#remap actions= 1 time=9 usec
#costmodel actions= 1 time=1 usec
#coercion actions= 0 time=1 usec
#aliases actions= 0 time=1 usec
@@ -219,8 +219,8 @@ end user.s16_0;
% mal # name
% clob # type
% 114 # length
-function user.s18_0():void;
- X_1:void := querylog.define("explain select fuse(c,d) from udf_fuse;":str,
"sequential_pipe":str, 27:int);
+function user.main():void;
+ X_1:void := querylog.define("explain select fuse(c,d) from udf_fuse;":str,
"sequential_pipe":str, 26:int);
X_29:bat[:str] := bat.new(nil:str);
X_35:bat[:int] := bat.new(nil:int);
X_33:bat[:int] := bat.new(nil:int);
@@ -239,7 +239,7 @@ function user.s18_0():void;
X_42:bat[:int] := bat.append(X_33:bat[:int], 32:int);
X_44:bat[:int] := bat.append(X_35:bat[:int], 0:int);
sql.resultSet(X_36:bat[:str], X_38:bat[:str], X_40:bat[:str],
X_42:bat[:int], X_44:bat[:int], X_25:bat[:int]);
-end user.s18_0;
+end user.main;
#inline actions= 0 time=0 usec
#remap actions= 1 time=4 usec
#costmodel actions= 1 time=1 usec
@@ -270,8 +270,8 @@ end user.s18_0;
% mal # name
% clob # type
% 114 # length
-function user.s20_0():void;
- X_1:void := querylog.define("explain select fuse(e,f) from udf_fuse;":str,
"sequential_pipe":str, 27:int);
+function user.main():void;
+ X_1:void := querylog.define("explain select fuse(e,f) from udf_fuse;":str,
"sequential_pipe":str, 26:int);
X_29:bat[:str] := bat.new(nil:str);
X_35:bat[:int] := bat.new(nil:int);
X_33:bat[:int] := bat.new(nil:int);
@@ -290,9 +290,9 @@ function user.s20_0():void;
X_42:bat[:int] := bat.append(X_33:bat[:int], 64:int);
X_44:bat[:int] := bat.append(X_35:bat[:int], 0:int);
sql.resultSet(X_36:bat[:str], X_38:bat[:str], X_40:bat[:str],
X_42:bat[:int], X_44:bat[:int], X_25:bat[:lng]);
-end user.s20_0;
-#inline actions= 0 time=0 usec
-#remap actions= 1 time=4 usec
+end user.main;
+#inline actions= 0 time=1 usec
+#remap actions= 1 time=5 usec
#costmodel actions= 1 time=1 usec
#coercion actions= 0 time=1 usec
#aliases actions= 0 time=0 usec
diff --git a/sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
b/sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
--- a/sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
+++ b/sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
@@ -46,17 +46,17 @@ stdout of test 'udf-reverse` in director
% .explain # table_name
% mal # name
% clob # type
-% 108 # length
-function user.s4_0():void;
- X_2:void := querylog.define("explain select reverse(\\'MonetDB\\');":str,
"sequential_pipe":str, 7:int);
+% 104 # length
+function user.main():void;
+ X_1:void := querylog.define("explain select reverse('MonetDB');":str,
"sequential_pipe":str, 6:int);
X_7:str := udf.reverse("MonetDB":str);
sql.resultSet(".L2":str, "L2":str, "clob":str, 0:int, 0:int, 4:int,
X_7:str);
-end user.s4_0;
-#inline actions= 0 time=1 usec
-#remap actions= 0 time=0 usec
-#costmodel actions= 1 time=0 usec
-#coercion actions= 0 time=0 usec
-#aliases actions= 1 time=2 usec
+end user.main;
+#inline actions= 0 time=0 usec
+#remap actions= 0 time=1 usec
+#costmodel actions= 1 time=1 usec
+#coercion actions= 1 time=3 usec
+#aliases actions= 1 time=3 usec
#evaluate actions= 0 time=2 usec
#emptybind actions= 0 time=1 usec
#pushselect actions= 0 time=1 usec
@@ -106,8 +106,8 @@ end user.s4_0;
% mal # name
% clob # type
% 114 # length
-function user.s16_0():void;
- X_1:void := querylog.define("explain select reverse(x) from
udf_reverse;":str, "sequential_pipe":str, 22:int);
+function user.main():void;
+ X_1:void := querylog.define("explain select reverse(x) from
udf_reverse;":str, "sequential_pipe":str, 21:int);
X_22:bat[:str] := bat.new(nil:str);
X_28:bat[:int] := bat.new(nil:int);
X_26:bat[:int] := bat.new(nil:int);
@@ -124,7 +124,7 @@ function user.s16_0():void;
X_35:bat[:int] := bat.append(X_26:bat[:int], 0:int);
X_36:bat[:int] := bat.append(X_28:bat[:int], 0:int);
sql.resultSet(X_29:bat[:str], X_31:bat[:str], X_33:bat[:str],
X_35:bat[:int], X_36:bat[:int], X_18:bat[:str]);
-end user.s16_0;
+end user.main;
#inline actions= 0 time=1 usec
#remap actions= 1 time=5 usec
#costmodel actions= 1 time=1 usec
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
@@ -268,7 +268,7 @@ distinct_value_list(backend *be, list *v
sql_exp *e = n->data;
stmt *i = exp_bin(be, e, NULL, NULL, NULL, NULL, NULL, NULL);
- if (exp_is_null(be->mvc, e))
+ if (exp_is_null(e))
*last_null_value = i;
if (!i)
@@ -1084,58 +1084,20 @@ check_table_types(backend *be, list *typ
}
#endif
-static void
-sql_convert_arg(mvc *sql, int nr, sql_subtype *rt)
-{
- atom *a = sql_bind_arg(sql, nr);
-
- if (atom_null(a)) {
- if (a->data.vtype != rt->type->localtype) {
- a->data.vtype = rt->type->localtype;
- VALset(&a->data, a->data.vtype, (ptr)
ATOMnilptr(a->data.vtype));
- }
- }
- a->tpe = *rt;
-}
-
-/* try to do an inplace convertion
- *
- * inplace conversion is only possible if the s is an variable.
- * This is only done to be able to map more cached queries onto the same
- * interface.
- */
-static stmt *
-inplace_convert(backend *be, sql_subtype *ct, stmt *s)
-{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list