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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list