Changeset: eb81b910f336 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eb81b910f336 Removed Files: sql/scripts/09_like.sql Modified Files: sql/backends/monet5/CMakeLists.txt sql/backends/monet5/sql_upgrades.c sql/common/sql_types.c sql/scripts/CMakeLists.txt sql/storage/bat/bat_logger.c sql/test/BugDay_2005-10-06_2.9.3/Tests/simple_union.SF-1005596.stable.out sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out.single sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out sql/test/miscellaneous/Tests/simple_selects.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 Branch: Oct2020 Log Message:
Cleanup, move like and ilike filter functions definitions into sql_types. This adds the missing 'char' and 'varchar' types definitions diffs (truncated from 409 to 300 lines): diff --git a/sql/backends/monet5/CMakeLists.txt b/sql/backends/monet5/CMakeLists.txt --- a/sql/backends/monet5/CMakeLists.txt +++ b/sql/backends/monet5/CMakeLists.txt @@ -14,7 +14,6 @@ set(sql_public_headers add_library(sql SHARED) set(include_sql_files - 09_like 12_url 13_date 14_inet diff --git a/sql/backends/monet5/sql_upgrades.c b/sql/backends/monet5/sql_upgrades.c --- a/sql/backends/monet5/sql_upgrades.c +++ b/sql/backends/monet5/sql_upgrades.c @@ -2313,7 +2313,7 @@ sql_update_oscar(Client c, mvc *sql, con "DROP FUNCTION \"sys\".\"getcontent\"(url);\n" "DROP AGGREGATE \"json\".\"output\"(json);\n"); - /* Move sys.degrees and sys.radians to sql_types.c definitions (I did this at the bat_logger) Remove the obsolete entries at privileges table */ + /* Move sys.degrees,sys.radians,sys.like and sys.ilike to sql_types.c definitions (I did this at the bat_logger) Remove the obsolete entries at privileges table */ pos += snprintf(buf + pos, bufsize - pos, "delete from privileges where obj_id in (select obj_id from privileges left join functions on privileges.obj_id = functions.id where functions.id is null and privileges.obj_id not in ((SELECT tables.id from tables), 0));\n"); diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c --- a/sql/common/sql_types.c +++ b/sql/common/sql_types.c @@ -1075,6 +1075,19 @@ sql_create_aggr(sql_allocator *sa, const } static sql_func * +sql_create_filter(sql_allocator *sa, const char *name, const char *mod, const char *imp, bit semantics, bit side_effect, int fix_scale, + unsigned int res_scale, int nargs, ...) +{ + sql_func *res; + va_list valist; + + va_start(valist, nargs); + res = sql_create_func_(sa, name, mod, imp, F_FILT, semantics, side_effect, fix_scale, res_scale, BIT, nargs, valist); + va_end(valist); + return res; +} + +static sql_func * sql_create_union(sql_allocator *sa, const char *name, const char *mod, const char *imp, bit side_effect, int fix_scale, unsigned int res_scale, sql_type *fres, int nargs, ...) { @@ -1798,16 +1811,15 @@ sqltypeinit( sql_allocator *sa) sql_create_func(sa, "substring", "str", "substring", FALSE, FALSE, INOUT, 0, *t, 3, *t, INT, INT); sql_create_func(sa, "substr", "str", "substring", FALSE, FALSE, INOUT, 0, *t, 2, *t, INT); sql_create_func(sa, "substr", "str", "substring", FALSE, FALSE, INOUT, 0, *t, 3, *t, INT, INT); - /* - sql_create_func(sa, "like", "algebra", "like", FALSE, SCALE_NONE, 0, BIT, 2, *t, *t); - sql_create_func3(sa, "like", "algebra", "like", FALSE, SCALE_NONE, 0, BIT, 3, *t, *t, *t); - sql_create_func(sa, "ilike", "algebra", "ilike", FALSE, SCALE_NONE, 0, BIT, 2, *t, *t); - sql_create_func3(sa, "ilike", "algebra", "ilike", FALSE, SCALE_NONE, 0, BIT, 3, *t, *t, *t); - */ - sql_create_func(sa, "not_like", "algebra", "not_like", FALSE, FALSE, SCALE_NONE, 0, BIT, 2, *t, *t); - sql_create_func(sa, "not_like", "algebra", "not_like", FALSE, FALSE, SCALE_NONE, 0, BIT, 3, *t, *t, *t); - sql_create_func(sa, "not_ilike", "algebra", "not_ilike", FALSE, FALSE, SCALE_NONE, 0, BIT, 2, *t, *t); - sql_create_func(sa, "not_ilike", "algebra", "not_ilike", FALSE, FALSE, SCALE_NONE, 0, BIT, 3, *t, *t, *t); + + sql_create_filter(sa, "like", "algebra", "like", FALSE, FALSE, SCALE_NONE, 0, 2, *t, *t); + sql_create_filter(sa, "like", "algebra", "like", FALSE, FALSE, SCALE_NONE, 0, 3, *t, *t, *t); + sql_create_filter(sa, "ilike", "algebra", "ilike", FALSE, FALSE, SCALE_NONE, 0, 2, *t, *t); + sql_create_filter(sa, "ilike", "algebra", "ilike", FALSE, FALSE, SCALE_NONE, 0, 3, *t, *t, *t); + sql_create_filter(sa, "not_like", "algebra", "not_like", FALSE, FALSE, SCALE_NONE, 0, 2, *t, *t); + sql_create_filter(sa, "not_like", "algebra", "not_like", FALSE, FALSE, SCALE_NONE, 0, 3, *t, *t, *t); + sql_create_filter(sa, "not_ilike", "algebra", "not_ilike", FALSE, FALSE, SCALE_NONE, 0, 2, *t, *t); + sql_create_filter(sa, "not_ilike", "algebra", "not_ilike", FALSE, FALSE, SCALE_NONE, 0, 3, *t, *t, *t); sql_create_func(sa, "patindex", "pcre", "patindex", FALSE, FALSE, SCALE_NONE, 0, INT, 2, *t, *t); sql_create_func(sa, "truncate", "str", "stringleft", FALSE, FALSE, SCALE_NONE, 0, *t, 2, *t, INT); diff --git a/sql/scripts/09_like.sql b/sql/scripts/09_like.sql deleted file mode 100644 --- a/sql/scripts/09_like.sql +++ /dev/null @@ -1,15 +0,0 @@ --- This Source Code Form is subject to the terms of the Mozilla Public --- License, v. 2.0. If a copy of the MPL was not distributed with this --- file, You can obtain one at http://mozilla.org/MPL/2.0/. --- --- Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. - -create filter function "like"(val string, pat string, esc string) external name algebra."like"; -create filter function "ilike"(val string, pat string, esc string) external name algebra."ilike"; -create filter function "like"(val string, pat string) external name algebra."like"; -create filter function "ilike"(val string, pat string) external name algebra."ilike"; - -grant execute on filter function "like" (string, string, string) to public; -grant execute on filter function "ilike" (string, string, string) to public; -grant execute on filter function "like" (string, string) to public; -grant execute on filter function "ilike" (string, string) to public; diff --git a/sql/scripts/CMakeLists.txt b/sql/scripts/CMakeLists.txt --- a/sql/scripts/CMakeLists.txt +++ b/sql/scripts/CMakeLists.txt @@ -8,7 +8,6 @@ #[[ install(FILES - 09_like.sql 12_url.sql 13_date.sql 14_inet.sql diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c --- a/sql/storage/bat/bat_logger.c +++ b/sql/storage/bat/bat_logger.c @@ -871,7 +871,7 @@ bl_postversion(void *lg) "storage", str_nil, NULL) != GDK_SUCCEED) return GDK_FAIL; - { /* move sql.degrees and sql.radians functions from 10_math.sql script to sql_types list */ + { /* move sql.degrees, sql.radians, sql.like and sql.ilike functions from 09_like.sql and 10_math.sql script to sql_types list */ BAT *func_func = temp_descriptor(logger_find_bat(lg, N("sys", "functions", "name"), 0, 0)); if (func_func == NULL) { return GDK_FAIL; @@ -882,7 +882,6 @@ bl_postversion(void *lg) return GDK_FAIL; } BAT *radians_func = BATselect(func_func, NULL, "radians", NULL, 1, 1, 0); - bat_destroy(func_func); if (radians_func == NULL) { bat_destroy(degrees_func); return GDK_FAIL; @@ -892,16 +891,46 @@ bl_postversion(void *lg) bat_destroy(degrees_func); bat_destroy(radians_func); if (cands == NULL) { + bat_destroy(func_func); + return GDK_FAIL; + } + + BAT *like_func = BATselect(func_func, NULL, "like", NULL, 1, 1, 0); + if (like_func == NULL) { + bat_destroy(func_func); + bat_destroy(cands); + return GDK_FAIL; + } + + BAT *ncands = BATmergecand(cands, like_func); + bat_destroy(cands); + bat_destroy(like_func); + if (ncands == NULL) { + bat_destroy(func_func); + return GDK_FAIL; + } + + BAT *ilike_func = BATselect(func_func, NULL, "ilike", NULL, 1, 1, 0); + bat_destroy(func_func); + if (ilike_func == NULL) { + bat_destroy(ncands); + return GDK_FAIL; + } + + BAT *final_cands = BATmergecand(ncands, ilike_func); + bat_destroy(ncands); + bat_destroy(ilike_func); + if (final_cands == NULL) { return GDK_FAIL; } BAT *sys_funcs = temp_descriptor(logger_find_bat(lg, D("sys", "functions"), 0, 0)); if (sys_funcs == NULL) { - bat_destroy(cands); + bat_destroy(final_cands); return GDK_FAIL; } - gdk_return res = BATappend(sys_funcs, cands, NULL, true); - bat_destroy(cands); + gdk_return res = BATappend(sys_funcs, final_cands, NULL, true); + bat_destroy(final_cands); bat_destroy(sys_funcs); if (res != GDK_SUCCEED) return res; diff --git a/sql/test/BugDay_2005-10-06_2.9.3/Tests/simple_union.SF-1005596.stable.out b/sql/test/BugDay_2005-10-06_2.9.3/Tests/simple_union.SF-1005596.stable.out --- a/sql/test/BugDay_2005-10-06_2.9.3/Tests/simple_union.SF-1005596.stable.out +++ b/sql/test/BugDay_2005-10-06_2.9.3/Tests/simple_union.SF-1005596.stable.out @@ -25,7 +25,7 @@ stdout of test 'simple_union.SF-1005596` % .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables # table_name % TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE, REMARKS, TYPE_CAT, TYPE_SCHEM, TYPE_NAME, SELF_REFERENCING_COL_NAME, REF_GENERATION # name -% char, varchar, varchar, clob, char, char, char, char, char, char # type +% char, varchar, varchar, char, char, char, char, char, char, char # type % 4, 3, 4, 5, 0, 0, 0, 0, 5, 6 # length [ "demo", "sys", "test", "TABLE", "", NULL, NULL, NULL, "rowid", "SYSTEM" ] diff --git a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out --- a/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out +++ b/sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out @@ -88,7 +88,7 @@ stdout of test 'memory-consumption-query % .plan # table_name % rel # name % clob # type -% 2565 # length +% 2505 # length top N ( | project ( | | select ( @@ -168,7 +168,7 @@ top N ( | | | | ) [ "a3"."t3pkcol" HASHCOL = "table1"."t1cold113" ], | | | | table(sys.table12) [ "table12"."t12cola1" ] COUNT | | | ) [ "table12"."t12cola1" = "table1"."t1cola1" ] -| | ) [ (((((((((((((((clob[char["table1"."t1cold1"]] as "table1"."t1cold1") FILTER ilike (clob "%a%", clob "")) or ((clob[char["table1"."t1cola1"]] as "table1"."t1cola1") FILTER ilike (clob "%a%", clob ""))) or ((clob[char["table1"."t1colb1"]] as "table1"."t1colb1") FILTER ilike (clob "%a%", clob ""))) or ((clob[char["table1"."t1cola11"]] as "table1"."t1cola11") FILTER ilike (clob "%business%", clob ""))) or ("table1"."t1colc91" >= timestamp(7) "2016-03-21 05:00:00.000000")) or ("table1"."t1cola101" = tinyint "1")) or ((clob[char["table1"."t1cola12"]] as "table1"."t1cola12") FILTER ilike (clob "%Vijay%", clob ""))) or ((clob[char["table2"."t2cola1"]] as "table2"."t2cola1") ! FILTER ilike (clob "%gmail%", clob ""), (clob[char["table2"."t2cola1"]] as "table2"."t2cola1") ! FILTER ilike (clob "%yahoo%", clob ""))) or ((clob[char["table2"."t2cola1"]] as "table2"."t2cola1") FILTER ilike (clob "%efequitygroup.com%", clob ""))) or ("table4"."t4cola1" = clob "Customer")) or ("table4"."t4col a2" ! * = clob "NULL")) or ("table2"."t2cola81" >= date "2009-08-31")) or ((("table5"."t5cola1" = clob "BAT") or ((clob[char["table5"."t5cola2"]] as "table5"."t5cola2") FILTER ilike (clob "%AUSTRALIA%", clob ""))) or ((clob[char["table5"."t5cola2"]] as "table5"."t5cola2") FILTER ilike (clob "%Monet%", clob ""), "table5"."t5cola3" = clob "Facebook", "table5"."t5cola5" = clob "new", "table5"."t5cola81" > date "2015-07-30"))) or ((("table10"."t10cola1" != clob "Completed", "table9"."t9cola1" = clob "Tasks", "table9"."t9cola91" >= timestamp(7) "2012-01-01 04:32:27.000000", "table10"."t10cola91" <= timestamp(7) "2013-01-01 04:32:27.000000") or ("table9"."t9cola1" = clob "Events", timestamp(7) "2012-01-01 04:32:27.000000" <= "table11"."t11cola91" <= timestamp(7) "2013-01-01 04:32:27.000000" BETWEEN )) or ("table9"."t9cola1" = clob "Calls", timestamp(7) "2012-01-01 04:32:27.000000" <= "table10"."t10cola91" <= timestamp(7) "2013-01-01 04:32:27.000000" BETWEEN )), "table1"."t1cold111" in (bi gint "15842000014793046" as "%64"."%64", bigint "1584 2000017701488" as "%65"."%65", bigint "15842000000024019" as "%66"."%66", bigint "15842000000074007" as "%67"."%67", bigint "15842000009358096" as "%70"."%70", bigint "15842000010487625" as "%71"."%71", bigint "15842000006731919" as "%72"."%72", bigint "15842000002590112" as "%73"."%73", bigint "15842000000019001" as "%74"."%74", bigint "15842000014923682" as "%75"."%75", bigint "15842000027547249" as "%76"."%76")) or ("table12"."t12cola1" in (clob[bigint "15842000280111951"], clob[bigint "15842000280163015"])) ] +| | ) [ (((((((((((((((char["table1"."t1cold1"] as "table1"."t1cold1") FILTER ilike (char "%a%", char "")) or ((char["table1"."t1cola1"] as "table1"."t1cola1") FILTER ilike (char "%a%", char ""))) or ((char["table1"."t1colb1"] as "table1"."t1colb1") FILTER ilike (char "%a%", char ""))) or ((char["table1"."t1cola11"] as "table1"."t1cola11") FILTER ilike (char "%business%", char ""))) or ("table1"."t1colc91" >= timestamp(7) "2016-03-21 05:00:00.000000")) or ("table1"."t1cola101" = tinyint "1")) or ((char["table1"."t1cola12"] as "table1"."t1cola12") FILTER ilike (char "%Vijay%", char ""))) or ((char["table2"."t2cola1"] as "table2"."t2cola1") ! FILTER ilike (char "%gmail%", char ""), (char["table2"."t2cola1"] as "table2"."t2cola1") ! FILTER ilike (char "%yahoo%", char ""))) or ((char["table2"."t2cola1"] as "table2"."t2cola1") FILTER ilike (char "%efequitygroup.com%", char ""))) or ("table4"."t4cola1" = clob "Customer")) or ("table4"."t4cola2" ! * = clob "NULL")) or ("table2"."t2cola81" >= date "2009-08-31")) or ((("table5"."t5cola1" = clob "BAT") or >((char["table5"."t5cola2"] as "table5"."t5cola2") FILTER ilike (char >"%AUSTRALIA%", char ""))) or ((char["table5"."t5cola2"] as >"table5"."t5cola2") FILTER ilike (char "%Monet%", char ""), >"table5"."t5cola3" = clob "Facebook", "table5"."t5cola5" = clob "new", >"table5"."t5cola81" > date "2015-07-30"))) or ((("table10"."t10cola1" != clob >"Completed", "table9"."t9cola1" = clob "Tasks", "table9"."t9cola91" >= >timestamp(7) "2012-01-01 04:32:27.000000", "table10"."t10cola91" <= >timestamp(7) "2013-01-01 04:32:27.000000") or ("table9"."t9cola1" = clob >"Events", timestamp(7) "2012-01-01 04:32:27.000000" <= "table11"."t11cola91" ><= timestamp(7) "2013-01-01 04:32:27.000000" BETWEEN )) or >("table9"."t9cola1" = clob "Calls", timestamp(7) "2012-01-01 04:32:27.000000" ><= "table10"."t10cola91" <= timestamp(7) "2013-01-01 04:32:27.000000" BETWEEN >)), "table1"."t1cold111" in (bigint "15842000014793046" as "%64"."%64", >bigint "15842000017 701488" as "%65"."%65", bigint "15842000000024019" as "%66"."%66", bigint "15842000000074007" as "%67"."%67", bigint "15842000009358096" as "%70"."%70", bigint "15842000010487625" as "%71"."%71", bigint "15842000006731919" as "%72"."%72", bigint "15842000002590112" as "%73"."%73", bigint "15842000000019001" as "%74"."%74", bigint "15842000014923682" as "%75"."%75", bigint "15842000027547249" as "%76"."%76")) or ("table12"."t12cola1" in (clob[bigint "15842000280111951"], clob[bigint "15842000280163015"])) ] | ) [ "table1"."t1pkcol" NOT NULL HASHCOL , "table1"."t1cola82", "table2"."t2cola10", "table1"."t1cola1", "table1"."t1cola91", "a1"."t3cola1" ] [ "table2"."t2cola82" NULLS LAST ] ) [ bigint "10", bigint "0" ] #ROLLBACK; diff --git a/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out b/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out --- a/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out +++ b/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out @@ -9,12 +9,12 @@ stdout of test 'values-like-join.Bug-695 % .plan # table_name % rel # name % clob # type -% 94 # length +% 82 # length project ( | join ( | | [ [ char(3) "one", char(3) "two" ] as "l"."s" ], | | [ [ char(5) "three", char(5) "four" ] as "r"."s" ] -| ) [ (clob[char["l"."s"]] as "l"."s") FILTER like (clob[char["r"."s"]] as "r"."s", clob "") ] +| ) [ (char["l"."s"] as "l"."s") FILTER like (char["r"."s"] as "r"."s", char "") ] ) [ tinyint "1" ] #explain select 1 from (values ('one'), ('two')) as l(s), (values ('three'), ('four')) as r(s) where l.s like r.s; % .explain # table_name diff --git a/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out.single b/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out.single --- a/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out.single +++ b/sql/test/BugTracker-2020/Tests/values-like-join.Bug-6954.stable.out.single @@ -9,12 +9,12 @@ stdout of test 'values-like-join.Bug-695 % .plan # table_name % rel # name % clob # type -% 94 # length +% 82 # length project ( | join ( | | [ [ char(3) "one", char(3) "two" ] as "l"."s" ], | | [ [ char(5) "three", char(5) "four" ] as "r"."s" ] -| ) [ (clob[char["l"."s"]] as "l"."s") FILTER like (clob[char["r"."s"]] as "r"."s", clob "") ] +| ) [ (char["l"."s"] as "l"."s") FILTER like (char["r"."s"] as "r"."s", char "") ] ) [ tinyint "1" ] #explain select 1 from (values ('one'), ('two')) as l(s), (values ('three'), ('four')) as r(s) where l.s like r.s; % .explain # table_name diff --git a/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out b/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out --- a/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out +++ b/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out @@ -59,7 +59,7 @@ stdout of test 'subselect_multiple_union [ 2 ] % .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables # table_name % TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE, REMARKS, TYPE_CAT, TYPE_SCHEM, TYPE_NAME, SELF_REFERENCING_COL_NAME, REF_GENERATION # name -% char, varchar, varchar, clob, char, char, char, char, char, char # type +% char, varchar, varchar, char, char, char, char, char, char, char # type % 4, 0, 0, 0, 0, 0, 0, 0, 5, 6 # length #SELECT 3 AS number; % . # table_name @@ -69,7 +69,7 @@ stdout of test 'subselect_multiple_union [ 3 ] % .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables, .tables # table_name % TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE, REMARKS, TYPE_CAT, TYPE_SCHEM, TYPE_NAME, SELF_REFERENCING_COL_NAME, REF_GENERATION # name -% char, varchar, varchar, clob, char, char, char, char, char, char # type +% char, varchar, varchar, char, char, char, char, char, char, char # type % 4, 3, 11, 5, 0, 0, 0, 0, 5, 6 # length [ "demo", "sys", "test_update", "TABLE", "", NULL, NULL, NULL, "rowid", "SYSTEM" ] diff --git a/sql/test/miscellaneous/Tests/simple_selects.stable.out b/sql/test/miscellaneous/Tests/simple_selects.stable.out --- a/sql/test/miscellaneous/Tests/simple_selects.stable.out +++ b/sql/test/miscellaneous/Tests/simple_selects.stable.out @@ -239,14 +239,14 @@ stdout of test 'simple_selects` in direc [ 2 ] #select x like null, null like x, null like null, x ilike null, null ilike x, null ilike null, # x not like null, null not like x, null not like null, x not ilike null, null not ilike x, null not ilike null from x; -% sys.%1, .%2, .%3, sys.%4, .%5, .%6, .%7, .%10, .%11, .%12, .%13, .%14 # table_name +% .%1, .%2, .%3, .%4, .%5, .%6, .%7, .%10, .%11, .%12, .%13, .%14 # table_name % %1, %2, %3, %4, %5, %6, %7, %10, %11, %12, %13, %14 # name % boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean # type % 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 # length [ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] #select x like null from x; -% sys.%1 # table_name +% .%1 # table_name % %1 # name % boolean # type % 5 # length diff --git a/sql/test/sys-schema/Tests/systemfunctions.stable.out b/sql/test/sys-schema/Tests/systemfunctions.stable.out --- a/sql/test/sys-schema/Tests/systemfunctions.stable.out +++ b/sql/test/sys-schema/Tests/systemfunctions.stable.out @@ -902,11 +902,27 @@ stdout of test 'systemfunctions` in dire [ "sys", "ifthenelse", 1, "boolean", "" ] [ "sys", "ifthenelse", 2, "any", "" ] [ "sys", "ifthenelse", 3, "any", "" ] -[ "sys", "ilike", 0, "clob", "create filter function \"ilike\"(val string, pat string, esc string) external name algebra.\"ilike\";" ] +[ "sys", "ilike", 0, "boolean", "ilike" ] +[ "sys", "ilike", 1, "char", "" ] +[ "sys", "ilike", 2, "char", "" ] +[ "sys", "ilike", 0, "boolean", "ilike" ] +[ "sys", "ilike", 1, "char", "" ] +[ "sys", "ilike", 2, "char", "" ] +[ "sys", "ilike", 3, "char", "" ] +[ "sys", "ilike", 0, "boolean", "ilike" ] +[ "sys", "ilike", 1, "varchar", "" ] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list