Changeset: 3a1f4cc1fd0b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3a1f4cc1fd0b
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        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/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

Fix and approve sys.deltas upgrade.


diffs (truncated from 611 to 300 lines):

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
@@ -1963,8 +1963,10 @@ sql_update_deltas(Client c, mvc *sql)
        schema = stack_get_string(sql, "current_schema");
 
        pos += snprintf(buf + pos, bufsize - pos,
-                                       "set schema \"sys\";\n"
-                                       "create function sys.deltas (\"schema\" 
string, \"table\" string, \"column\" string) returns table (\"values\" bigint) 
external name \"sql\".\"deltas\";\n");
+                       "set schema \"sys\";\n"
+                       "create function sys.deltas (\"schema\" string, 
\"table\" string, \"column\" string) returns table (\"values\" bigint) external 
name \"sql\".\"deltas\";\n"
+                       "update sys.functions set system = true where schema_id 
= (select id from sys.schemas where name = 'sys')"
+                       " and name in ('deltas') and type = %d;\n", F_UNION);
        if (schema)
                pos += snprintf(buf + pos, bufsize - pos, "set schema 
\"%s\";\n", schema);
        pos += snprintf(buf + pos, bufsize - pos, "commit;\n");
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -5898,6 +5898,14 @@ insert into sys.functions values (145, '
 insert into sys.args values (29566, 145, 'res', 'bigint', 64, 0, 0, 0);
 set schema "sys";
 
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
+
+# MonetDB/SQL module loaded
 
 # 15:17:55 >  
 # 15:17:55 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-6495" "--port=30245"
diff --git 
a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
--- 
a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
+++ 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
@@ -5898,6 +5898,14 @@ insert into sys.functions values (145, '
 insert into sys.args values (29561, 145, 'res', 'bigint', 64, 0, 0, 0);
 set schema "sys";
 
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
+
+# MonetDB/SQL module loaded
 
 # 15:17:55 >  
 # 15:17:55 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-6495" "--port=30245"
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
@@ -5108,6 +5108,14 @@ insert into sys.functions values (136, '
 insert into sys.args values (26298, 136, 'res', 'bigint', 64, 0, 0, 0);
 set schema "sys";
 
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
+
+# MonetDB/SQL module loaded
 
 # 15:55:37 >  
 # 15:55:37 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-12365" "--port=35877"
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
@@ -5937,7 +5937,12 @@ update sys.functions set system = true w
 set schema "sys";
 commit;
 
-# MonetDB/SQL module loaded
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
 
 
 # 16:53:35 >  
diff --git 
a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
@@ -5937,7 +5937,12 @@ update sys.functions set system = true w
 set schema "sys";
 commit;
 
-# MonetDB/SQL module loaded
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
 
 
 # 15:43:25 >  
diff --git a/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
@@ -5898,6 +5898,14 @@ insert into sys.functions values (145, '
 insert into sys.args values (13335, 145, 'res', 'bigint', 64, 0, 0, 0);
 set schema "sys";
 
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
+
+# MonetDB/SQL module loaded
 
 # 15:17:04 >  
 # 15:17:04 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-4292" "--port=34610"
diff --git a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out 
b/sql/test/emptydb-upgrade/Tests/upgrade.stable.out
--- a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-upgrade/Tests/upgrade.stable.out
@@ -5108,6 +5108,14 @@ insert into sys.functions values (136, '
 insert into sys.args values (12098, 136, 'res', 'bigint', 64, 0, 0, 0);
 set schema "sys";
 
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
+
+# MonetDB/SQL module loaded
 
 # 21:10:45 >  
 # 21:10:45 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-16714" "--port=36212"
diff --git a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
@@ -5937,7 +5937,12 @@ update sys.functions set system = true w
 set schema "sys";
 commit;
 
-# MonetDB/SQL module loaded
+Running database upgrade commands:
+set schema "sys";
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
+update sys.functions set system = true where schema_id = (select id from 
sys.schemas where name = 'sys') and name in ('deltas') and type = 5;
+set schema "sys";
+commit;
 
 
 # 18:26:24 >  
diff --git a/sql/test/emptydb/Tests/check.stable.out 
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -148,6 +148,7 @@ stdout of test 'check` in directory 'sql
 \dSf sys."db_users"
 \dSf sys."debug"
 \dSf sys."degrees"
+\dSf sys."deltas"
 \dSf sys."droporderindex"
 \dSf sys."env"
 \dSf sys."epoch"
@@ -511,6 +512,7 @@ SYSTEM FUNCTION         sys.db_users
 SYSTEM FUNCTION         sys.debug
 SYSTEM FUNCTION         sys.decade
 SYSTEM FUNCTION         sys.degrees
+SYSTEM FUNCTION         sys.deltas
 SYSTEM FUNCTION         sys.dense_rank
 SYSTEM FUNCTION         sys.diff
 SYSTEM FUNCTION         sys.difference
@@ -975,6 +977,7 @@ create function sys.date_trunc(txt strin
 CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME 
sql.db_users;
 create function sys.debug(debug int) returns integer external name 
mdb."setDebug";
 create function degrees(r double) returns double return r*180/pi();
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
 create procedure sys.droporderindex(sys string, tab string, col string) 
external name sql.droporderindex;
 CREATE FUNCTION env () RETURNS TABLE(name varchar(1024), value varchar(2048)) 
EXTERNAL NAME sql.sql_environment;
 create function sys."epoch"(sec bigint) returns timestamp external name 
timestamp."epoch";
@@ -1381,7 +1384,7 @@ drop function pcre_replace(string, strin
 [ "sys",       2,      3,      true    ]
 [ "tmp",       2,      3,      true    ]
 #select s.name, t.name, replace(replace(pcre_replace(pcre_replace(t.query, 
'--.*\n*', '', ''), '[ \t\n]+', ' ', ''), '( ', '('), ' )', ')') as query, 
tt.table_type_name as type, t.system, ca.action_name as commit_action, at.value 
as access from sys._tables t left outer join sys.schemas s on t.schema_id = 
s.id left outer join sys.table_types tt on t.type = tt.table_type_id left outer 
join (values (0, 'COMMIT'), (1, 'DELETE'), (2, 'PRESERVE'), (3, 'DROP'), (4, 
'ABORT')) as ca (action_id, action_name) on t.commit_action = ca.action_id left 
outer join (values (0, 'WRITABLE'), (1, 'READONLY'), (2, 'APPENDONLY')) as at 
(id, value) on t.access = at.id order by s.name, t.name;
-% .s,  .t,     .L10,   .L12,   .t,     .L15,   .L17 # table_name
+% .s,  .t,     .L5,    .L6,    .t,     .L7,    .L10 # table_name
 % name,        name,   query,  type,   system, commit_action,  access # name
 % varchar,     varchar,        varchar,        varchar,        boolean,        
char,   char # type
 % 3,   34,     2809,   5,      5,      8,      10 # length
@@ -2126,7 +2129,7 @@ drop function pcre_replace(string, strin
 % varchar,     varchar,        varchar # type
 % 0,   0,      0 # length
 #select s.name, f.name, case f.system when true then 'SYSTEM' else '' end as 
system, replace(replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, 
'--.*\n', '', ''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', 
')'), 'create system ', 'create ') as query, f.mod, fl.language_name, 
ft.function_type_name, f.side_effect, f.varres, f.vararg, a0.name as name0, 
a0.type as type0, a0.type_digits as type_digits0, a0.type_scale as type_scale0, 
case a0.inout when 0 then 'out' when 1 then 'in' end as inout0, a1.name as 
name1, a1.type as type1, a1.type_digits as type_digits1, a1.type_scale as 
type_scale1, case a1.inout when 0 then 'out' when 1 then 'in' end as inout1, 
a2.name as name2, a2.type as type2, a2.type_digits as type_digits2, 
a2.type_scale as type_scale2, case a2.inout when 0 then 'out' when 1 then 'in' 
end as inout2, a3.name as name3, a3.type as type3, a3.type_digits as 
type_digits3, a3.type_scale as type_scale3, case a3.inout when 0 then 'out' 
when 1 then 'in' end a
 s inout3, a4.name as name4, a4.type as type4, a4.type_digits as type_digits4, 
a4.type_scale as type_scale4, case a4.inout when 0 then 'out' when 1 then 'in' 
end as inout4, a5.name as name5, a5.type as type5, a5.type_digits as 
type_digits5, a5.type_scale as type_scale5, case a5.inout when 0 then 'out' 
when 1 then 'in' end as inout5, a6.name as name6, a6.type as type6, 
a6.type_digits as type_digits6, a6.type_scale as type_scale6, case a6.inout 
when 0 then 'out' when 1 then 'in' end as inout6, a7.name as name7, a7.type as 
type7, a7.type_digits as type_digits7, a7.type_scale as type_scale7, case 
a7.inout when 0 then 'out' when 1 then 'in' end as inout7, a8.name as name8, 
a8.type as type8, a8.type_digits as type_digits8, a8.type_scale as type_scale8, 
case a8.inout when 0 then 'out' when 1 then 'in' end as inout8, a9.name as 
name9, a9.type as type9, a9.type_digits as type_digits9, a9.type_scale as 
type_scale9, case a9.inout when 0 then 'out' when 1 then 'in' end as inout9, 
a10.name as nam
 e10, a10.type as type10, a10.type_digits as type_digits10, a10.type_scale as 
type_scale10, case a10.inout when 0 then 'out' when 1 then 'in' end as inout10, 
a11.name as name11, a11.type as type11, a11.type_digits as type_digits11, 
a11.type_scale as type_scale11, case a11.inout when 0 then 'out' when 1 then 
'in' end as inout11, a12.name as name12, a12.type as type12, a12.type_digits as 
type_digits12, a12.type_scale as type_scale12, case a12.inout when 0 then 'out' 
when 1 then 'in' end as inout12, a13.name as name13, a13.type as type13, 
a13.type_digits as type_digits13, a13.type_scale as type_scale13, case 
a13.inout when 0 then 'out' when 1 then 'in' end as inout13, a14.name as 
name14, a14.type as type14, a14.type_digits as type_digits14, a14.type_scale as 
type_scale14, case a14.inout when 0 then 'out' when 1 then 'in' end as inout14, 
a15.name as name15, a15.type as type15, a15.type_digits as type_digits15, 
a15.type_scale as type_scale15, case a15.inout when 0 then 'out' when 1 then '
 in' end as inout15 from sys.functions f left outer join sys.schemas s on 
f.schema_id = s.id left outer join sys.function_types as ft on f.type = 
ft.function_type_id left outer join sys.function_languages fl on f.language = 
fl.language_id left outer join sys.args a0 on a0.func_id = f.id and a0.number = 
0 left outer join sys.args a1 on a1.func_id = f.id and a1.number = 1 left outer 
join sys.args a2 on a2.func_id = f.id and a2.number = 2 left outer join 
sys.args a3 on a3.func_id = f.id and a3.number = 3 left outer join sys.args a4 
on a4.func_id = f.id and a4.number = 4 left outer join sys.args a5 on 
a5.func_id = f.id and a5.number = 5 left outer join sys.args a6 on a6.func_id = 
f.id and a6.number = 6 left outer join sys.args a7 on a7.func_id = f.id and 
a7.number = 7 left outer join sys.args a8 on a8.func_id = f.id and a8.number = 
8 left outer join sys.args a9 on a9.func_id = f.id and a9.number = 9 left outer 
join sys.args a10 on a10.func_id = f.id and a10.number = 10 left outer join sy
 s.args a11 on a11.func_id = f.id and a11.number = 11 left outer join sys.args 
a12 on a12.func_id = f.id and a12.number = 12 left outer join sys.args a13 on 
a13.func_id = f.id and a13.number = 13 left outer join sys.args a14 on 
a14.func_id = f.id and a14.number = 14 left outer join sys.args a15 on 
a15.func_id = f.id and a15.number = 15 order by s.name, f.name, query, name0, 
type0, type_digits0, type_scale0, inout0, name1, type1, type_digits1, 
type_scale1, inout1, name2, type2, type_digits2, type_scale2, inout2, name3, 
type3, type_digits3, type_scale3, inout3, name4, type4, type_digits4, 
type_scale4, inout4, name5, type5, type_digits5, type_scale5, inout5, name6, 
type6, type_digits6, type_scale6, inout6, name7, type7, type_digits7, 
type_scale7, inout7, name8, type8, type_digits8, type_scale8, inout8, name9, 
type9, type_digits9, type_scale9, inout9, name10, type10, type_digits10, 
type_scale10, inout10, name11, type11, type_digits11, type_scale11, inout11, 
name12, type12, type_digits12,
  type_scale12, inout12, name13, type13, type_digits13, type_scale13, inout13, 
name14, type14, type_digits14, type_scale14, inout14, name15, type15, 
type_digits15, type_scale15, inout15;
-% .s,  .f,     .L4,    .L6,    .f,     .fl,    .ft,    .f,     .f,     .f,     
.L16,   .L20,   .L22,   .L24,   .L26,   .L30,   .L32,   .L34,   .L36,   .L40,   
.L42,   .L44,   .L46,   .L50,   .L52,   .L54,   .L56,   .L60,   .L62,   .L64,   
.L66,   .L70,   .L72,   .L74,   .L76,   .L100,  .L102,  .L104,  .L106,  .L110,  
.L112,  .L114,  .L116,  .L120,  .L122,  .L124,  .L126,  .L130,  .L132,  .L134,  
.L136,  .L140,  .L142,  .L144,  .L146,  .L150,  .L152,  .L154,  .L156,  .L160,  
.L162,  .L164,  .L166,  .L170,  .L172,  .L174,  .L176,  .L200,  .L202,  .L204,  
.L206,  .L210,  .L212,  .L214,  .L216,  .L220,  .L222,  .L224,  .L226,  .L230,  
.L232,  .L234,  .L236,  .L240,  .L242,  .L244,  .L246,  .L250,  .L252,  .L254 # 
table_name
+% .s,  .f,     .L1,    .L2,    .f,     .fl,    .ft,    .f,     .f,     .f,     
.L3,    .L4,    .L5,    .L6,    .L7,    .L10,   .L11,   .L12,   .L13,   .L14,   
.L15,   .L16,   .L17,   .L20,   .L21,   .L22,   .L23,   .L24,   .L25,   .L26,   
.L27,   .L30,   .L31,   .L32,   .L33,   .L34,   .L35,   .L36,   .L37,   .L40,   
.L41,   .L42,   .L43,   .L44,   .L45,   .L46,   .L47,   .L50,   .L51,   .L52,   
.L53,   .L54,   .L55,   .L56,   .L57,   .L60,   .L61,   .L62,   .L63,   .L64,   
.L65,   .L66,   .L67,   .L70,   .L71,   .L72,   .L73,   .L74,   .L75,   .L76,   
.L77,   .L100,  .L101,  .L102,  .L103,  .L104,  .L105,  .L106,  .L107,  .L110,  
.L111,  .L112,  .L113,  .L114,  .L115,  .L116,  .L117,  .L120,  .L121,  .L122 # 
table_name
 % name,        name,   system, query,  mod,    language_name,  
function_type_name,     side_effect,    varres, vararg, name0,  type0,  
type_digits0,   type_scale0,    inout0, name1,  type1,  type_digits1,   
type_scale1,    inout1, name2,  type2,  type_digits2,   type_scale2,    inout2, 
name3,  type3,  type_digits3,   type_scale3,    inout3, name4,  type4,  
type_digits4,   type_scale4,    inout4, name5,  type5,  type_digits5,   
type_scale5,    inout5, name6,  type6,  type_digits6,   type_scale6,    inout6, 
name7,  type7,  type_digits7,   type_scale7,    inout7, name8,  type8,  
type_digits8,   type_scale8,    inout8, name9,  type9,  type_digits9,   
type_scale9,    inout9, name10, type10, type_digits10,  type_scale10,   
inout10,        name11, type11, type_digits11,  type_scale11,   inout11,        
name12, type12, type_digits12,  type_scale12,   inout12,        name13, type13, 
type_digits13,  type_scale13,   inout13,        name14, type14, type_digits14,  
type_scale14,   inout14,        name15, type15, type_digits15,  type_scale15,   
inout15 # name
 % varchar,     varchar,        char,   varchar,        varchar,        
varchar,        varchar,        boolean,        boolean,        boolean,        
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char,   
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char,   
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char,   
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char # type
 % 8,   24,     6,      1362,   9,      10,     26,     5,      5,      5,      
11,     14,     4,      1,      3,      16,     14,     4,      1,      3,      
16,     14,     4,      1,      3,      27,     12,     4,      1,      3,      
12,     7,      2,      1,      3,      10,     14,     4,      1,      3,      
8,      14,     2,      1,      3,      9,      7,      2,      1,      3,      
10,     6,      2,      1,      3,      8,      6,      2,      1,      3,      
6,      6,      2,      1,      3,      6,      7,      2,      1,      3,      
8,      6,      2,      1,      3,      6,      7,      1,      1,      3,      
9,      7,      1,      1,      3,      6,      7,      1,      1,      3 # 
length
@@ -2328,6 +2331,7 @@ drop function pcre_replace(string, strin
 [ "sys",       "decade",       "SYSTEM",       "decade",       "mtime",        
"Internal C",   "Scalar function",      false,  false,  false,  "res_0",        
"int",  32,     0,      "out",  "arg_1",        "timestamp",    7,      0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
 [ "sys",       "decade",       "SYSTEM",       "decade",       "mtime",        
"Internal C",   "Scalar function",      false,  false,  false,  "res_0",        
"int",  32,     0,      "out",  "arg_1",        "timestamptz",  7,      0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
 [ "sys",       "degrees",      "SYSTEM",       "create function degrees(r 
double) returns double return r*180/pi();",  "user", "SQL",  "Scalar function", 
     false,  false,  false,  "result",       "double",       53,     0,      
"out",  "r",    "double",       53,     0,      "in",   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
+[ "sys",       "deltas",       "SYSTEM",       "create function sys.deltas 
(\"schema\" string, \"table\" string, \"column\" string) returns table 
(\"values\" bigint) external name \"sql\".\"deltas\";",      "sql",  "MAL",  
"Function returning a table",   false,  false,  false,  "values",       
"bigint",       64,     0,      "out",  "schema",       "clob", 0,      0,      
"in",   "table",        "clob", 0,      0,      "in",   "column",       "clob", 
0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL    ]
 [ "sys",       "dense_rank",   "SYSTEM",       "dense_rank",   "sql",  
"Internal C",   "Analytic function",    false,  false,  false,  "res_0",        
"int",  32,     0,      "out",  "arg_1",        "any",  0,      0,      "in",   
"arg_2",        "boolean",      1,      0,      "in",   "arg_3",        
"boolean",      1,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys",       "diff", "SYSTEM",       "diff", "sql",  "Internal C",   
"Analytic function",    false,  false,  false,  "res_0",        "boolean",      
1,      0,      "out",  "arg_1",        "any",  0,      0,      "in",   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys",       "diff", "SYSTEM",       "diff", "sql",  "Internal C",   
"Analytic function",    false,  false,  false,  "res_0",        "boolean",      
1,      0,      "out",  "arg_1",        "boolean",      1,      0,      "in",   
"arg_2",        "any",  0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
@@ -4867,26 +4871,26 @@ drop function pcre_replace(string, strin
 % varchar,     varchar,        bigint, bigint, bigint, bigint, bigint, boolean 
# type
 % 0,   0,      1,      1,      1,      1,      1,      5 # length
 #select count(*) from sys.statistics;
-% .L3 # table_name
-% L3 # name
+% .L2 # table_name
+% L2 # name
 % bigint # type
 % 1 # length
 [ 0    ]
 #select count(*) from sys.storagemodelinput;
-% .L3 # table_name
-% L3 # name
+% .L2 # table_name
+% L2 # name
 % bigint # type
 % 1 # length
 [ 0    ]
 #select t.name, g.name, case g.time when 0 then 'BEFORE' when 1 then 'AFTER' 
when 2 then 'INSTEAD OF' end as time, case g.orientation when 0 then 'ROW' when 
1 then 'STATEMENT' end as orientation, case g.event when 0 then 'insert' when 1 
then 'DELETE' when 2 then 'UPDATE' end as event, g.old_name, g.new_name, 
g.condition, g.statement from sys.triggers g left outer join sys._tables t on 
g.table_id = t.id order by t.name, g.name;
-% .t,  .g,     .L4,    .L6,    .L10,   .g,     .g,     .g,     .g # table_name
+% .t,  .g,     .L1,    .L2,    .L3,    .g,     .g,     .g,     .g # table_name
 % name,        name,   time,   orientation,    event,  old_name,       
new_name,       condition,      statement # name
 % varchar,     varchar,        char,   char,   char,   varchar,        
varchar,        varchar,        varchar # type
 % 7,   21,     10,     9,      6,      0,      0,      0,      110 # length
 [ "_tables",   "system_update_tables", "AFTER",        "STATEMENT",    
"UPDATE",       NULL,   NULL,   NULL,   "create trigger system_update_tables 
after update on sys._tables for each statement call sys_update_tables();"  ]
 [ "schemas",   "system_update_schemas",        "AFTER",        "STATEMENT",    
"UPDATE",       NULL,   NULL,   NULL,   "create trigger system_update_schemas 
after update on sys.schemas for each statement call sys_update_schemas();"      
  ]
 #select s.name, t.systemname, t.sqlname, t.digits, t.scale, t.radix, et.value 
as eclass from sys.types t left outer join sys.schemas s on s.id = t.schema_id 
left outer join (values (0, 'ANY'), (1, 'TABLE'), (2, 'BIT'), (3, 'CHAR'), (4, 
'STRING'), (5, 'BLOB'), (6, 'POS'), (7, 'NUM'), (8, 'MONTH'), (9, 'SEC'), (10, 
'DEC'), (11, 'FLT'), (12, 'TIME'), (13, 'DATE'), (14, 'TIMESTAMP'), (15, 
'GEOM'), (16, 'EXTERNAL')) as et (id, value) on t.eclass = et.id order by 
s.name, t.systemname, t.sqlname, t.digits, t.scale, t.radix, t.eclass;
-% .s,  .t,     .t,     .t,     .t,     .t,     .L12 # table_name
+% .s,  .t,     .t,     .t,     .t,     .t,     .L3 # table_name
 % name,        systemname,     sqlname,        digits, scale,  radix,  eclass 
# name
 % varchar,     varchar,        varchar,        int,    int,    int,    char # 
type
 % 3,   9,      14,     2,      1,      2,      9 # length
diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit 
b/sql/test/emptydb/Tests/check.stable.out.32bit
--- a/sql/test/emptydb/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb/Tests/check.stable.out.32bit
@@ -148,6 +148,7 @@ stdout of test 'check` in directory 'sql
 \dSf sys."db_users"
 \dSf sys."debug"
 \dSf sys."degrees"
+\dSf sys."deltas"
 \dSf sys."droporderindex"
 \dSf sys."env"
 \dSf sys."epoch"
@@ -511,6 +512,7 @@ SYSTEM FUNCTION         sys.db_users
 SYSTEM FUNCTION         sys.debug
 SYSTEM FUNCTION         sys.decade
 SYSTEM FUNCTION         sys.degrees
+SYSTEM FUNCTION         sys.deltas
 SYSTEM FUNCTION         sys.dense_rank
 SYSTEM FUNCTION         sys.diff
 SYSTEM FUNCTION         sys.difference
@@ -975,6 +977,7 @@ create function sys.date_trunc(txt strin
 CREATE FUNCTION db_users () RETURNS TABLE(name varchar(2048)) EXTERNAL NAME 
sql.db_users;
 create function sys.debug(debug int) returns integer external name 
mdb."setDebug";
 create function degrees(r double) returns double return r*180/pi();
+create function sys.deltas ("schema" string, "table" string, "column" string) 
returns table ("values" bigint) external name "sql"."deltas";
 create procedure sys.droporderindex(sys string, tab string, col string) 
external name sql.droporderindex;
 CREATE FUNCTION env () RETURNS TABLE(name varchar(1024), value varchar(2048)) 
EXTERNAL NAME sql.sql_environment;
 create function sys."epoch"(sec bigint) returns timestamp external name 
timestamp."epoch";
@@ -1381,7 +1384,7 @@ drop function pcre_replace(string, strin
 [ "sys",       2,      3,      true    ]
 [ "tmp",       2,      3,      true    ]
 #select s.name, t.name, replace(replace(pcre_replace(pcre_replace(t.query, 
'--.*\n*', '', ''), '[ \t\n]+', ' ', ''), '( ', '('), ' )', ')') as query, 
tt.table_type_name as type, t.system, ca.action_name as commit_action, at.value 
as access from sys._tables t left outer join sys.schemas s on t.schema_id = 
s.id left outer join sys.table_types tt on t.type = tt.table_type_id left outer 
join (values (0, 'COMMIT'), (1, 'DELETE'), (2, 'PRESERVE'), (3, 'DROP'), (4, 
'ABORT')) as ca (action_id, action_name) on t.commit_action = ca.action_id left 
outer join (values (0, 'WRITABLE'), (1, 'READONLY'), (2, 'APPENDONLY')) as at 
(id, value) on t.access = at.id order by s.name, t.name;
-% .s,  .t,     .L10,   .L12,   .t,     .L15,   .L17 # table_name
+% .s,  .t,     .L5,    .L6,    .t,     .L7,    .L10 # table_name
 % name,        name,   query,  type,   system, commit_action,  access # name
 % varchar,     varchar,        varchar,        varchar,        boolean,        
char,   char # type
 % 3,   34,     2809,   5,      5,      8,      10 # length
@@ -2126,7 +2129,7 @@ drop function pcre_replace(string, strin
 % varchar,     varchar,        varchar # type
 % 0,   0,      0 # length
 #select s.name, f.name, case f.system when true then 'SYSTEM' else '' end as 
system, replace(replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, 
'--.*\n', '', ''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', 
')'), 'create system ', 'create ') as query, f.mod, fl.language_name, 
ft.function_type_name, f.side_effect, f.varres, f.vararg, a0.name as name0, 
a0.type as type0, a0.type_digits as type_digits0, a0.type_scale as type_scale0, 
case a0.inout when 0 then 'out' when 1 then 'in' end as inout0, a1.name as 
name1, a1.type as type1, a1.type_digits as type_digits1, a1.type_scale as 
type_scale1, case a1.inout when 0 then 'out' when 1 then 'in' end as inout1, 
a2.name as name2, a2.type as type2, a2.type_digits as type_digits2, 
a2.type_scale as type_scale2, case a2.inout when 0 then 'out' when 1 then 'in' 
end as inout2, a3.name as name3, a3.type as type3, a3.type_digits as 
type_digits3, a3.type_scale as type_scale3, case a3.inout when 0 then 'out' 
when 1 then 'in' end a
 s inout3, a4.name as name4, a4.type as type4, a4.type_digits as type_digits4, 
a4.type_scale as type_scale4, case a4.inout when 0 then 'out' when 1 then 'in' 
end as inout4, a5.name as name5, a5.type as type5, a5.type_digits as 
type_digits5, a5.type_scale as type_scale5, case a5.inout when 0 then 'out' 
when 1 then 'in' end as inout5, a6.name as name6, a6.type as type6, 
a6.type_digits as type_digits6, a6.type_scale as type_scale6, case a6.inout 
when 0 then 'out' when 1 then 'in' end as inout6, a7.name as name7, a7.type as 
type7, a7.type_digits as type_digits7, a7.type_scale as type_scale7, case 
a7.inout when 0 then 'out' when 1 then 'in' end as inout7, a8.name as name8, 
a8.type as type8, a8.type_digits as type_digits8, a8.type_scale as type_scale8, 
case a8.inout when 0 then 'out' when 1 then 'in' end as inout8, a9.name as 
name9, a9.type as type9, a9.type_digits as type_digits9, a9.type_scale as 
type_scale9, case a9.inout when 0 then 'out' when 1 then 'in' end as inout9, 
a10.name as nam
 e10, a10.type as type10, a10.type_digits as type_digits10, a10.type_scale as 
type_scale10, case a10.inout when 0 then 'out' when 1 then 'in' end as inout10, 
a11.name as name11, a11.type as type11, a11.type_digits as type_digits11, 
a11.type_scale as type_scale11, case a11.inout when 0 then 'out' when 1 then 
'in' end as inout11, a12.name as name12, a12.type as type12, a12.type_digits as 
type_digits12, a12.type_scale as type_scale12, case a12.inout when 0 then 'out' 
when 1 then 'in' end as inout12, a13.name as name13, a13.type as type13, 
a13.type_digits as type_digits13, a13.type_scale as type_scale13, case 
a13.inout when 0 then 'out' when 1 then 'in' end as inout13, a14.name as 
name14, a14.type as type14, a14.type_digits as type_digits14, a14.type_scale as 
type_scale14, case a14.inout when 0 then 'out' when 1 then 'in' end as inout14, 
a15.name as name15, a15.type as type15, a15.type_digits as type_digits15, 
a15.type_scale as type_scale15, case a15.inout when 0 then 'out' when 1 then '
 in' end as inout15 from sys.functions f left outer join sys.schemas s on 
f.schema_id = s.id left outer join sys.function_types as ft on f.type = 
ft.function_type_id left outer join sys.function_languages fl on f.language = 
fl.language_id left outer join sys.args a0 on a0.func_id = f.id and a0.number = 
0 left outer join sys.args a1 on a1.func_id = f.id and a1.number = 1 left outer 
join sys.args a2 on a2.func_id = f.id and a2.number = 2 left outer join 
sys.args a3 on a3.func_id = f.id and a3.number = 3 left outer join sys.args a4 
on a4.func_id = f.id and a4.number = 4 left outer join sys.args a5 on 
a5.func_id = f.id and a5.number = 5 left outer join sys.args a6 on a6.func_id = 
f.id and a6.number = 6 left outer join sys.args a7 on a7.func_id = f.id and 
a7.number = 7 left outer join sys.args a8 on a8.func_id = f.id and a8.number = 
8 left outer join sys.args a9 on a9.func_id = f.id and a9.number = 9 left outer 
join sys.args a10 on a10.func_id = f.id and a10.number = 10 left outer join sy
 s.args a11 on a11.func_id = f.id and a11.number = 11 left outer join sys.args 
a12 on a12.func_id = f.id and a12.number = 12 left outer join sys.args a13 on 
a13.func_id = f.id and a13.number = 13 left outer join sys.args a14 on 
a14.func_id = f.id and a14.number = 14 left outer join sys.args a15 on 
a15.func_id = f.id and a15.number = 15 order by s.name, f.name, query, name0, 
type0, type_digits0, type_scale0, inout0, name1, type1, type_digits1, 
type_scale1, inout1, name2, type2, type_digits2, type_scale2, inout2, name3, 
type3, type_digits3, type_scale3, inout3, name4, type4, type_digits4, 
type_scale4, inout4, name5, type5, type_digits5, type_scale5, inout5, name6, 
type6, type_digits6, type_scale6, inout6, name7, type7, type_digits7, 
type_scale7, inout7, name8, type8, type_digits8, type_scale8, inout8, name9, 
type9, type_digits9, type_scale9, inout9, name10, type10, type_digits10, 
type_scale10, inout10, name11, type11, type_digits11, type_scale11, inout11, 
name12, type12, type_digits12,
  type_scale12, inout12, name13, type13, type_digits13, type_scale13, inout13, 
name14, type14, type_digits14, type_scale14, inout14, name15, type15, 
type_digits15, type_scale15, inout15;
-% .s,  .f,     .L4,    .L6,    .f,     .fl,    .ft,    .f,     .f,     .f,     
.L16,   .L20,   .L22,   .L24,   .L26,   .L30,   .L32,   .L34,   .L36,   .L40,   
.L42,   .L44,   .L46,   .L50,   .L52,   .L54,   .L56,   .L60,   .L62,   .L64,   
.L66,   .L70,   .L72,   .L74,   .L76,   .L100,  .L102,  .L104,  .L106,  .L110,  
.L112,  .L114,  .L116,  .L120,  .L122,  .L124,  .L126,  .L130,  .L132,  .L134,  
.L136,  .L140,  .L142,  .L144,  .L146,  .L150,  .L152,  .L154,  .L156,  .L160,  
.L162,  .L164,  .L166,  .L170,  .L172,  .L174,  .L176,  .L200,  .L202,  .L204,  
.L206,  .L210,  .L212,  .L214,  .L216,  .L220,  .L222,  .L224,  .L226,  .L230,  
.L232,  .L234,  .L236,  .L240,  .L242,  .L244,  .L246,  .L250,  .L252,  .L254 # 
table_name
+% .s,  .f,     .L1,    .L2,    .f,     .fl,    .ft,    .f,     .f,     .f,     
.L3,    .L4,    .L5,    .L6,    .L7,    .L10,   .L11,   .L12,   .L13,   .L14,   
.L15,   .L16,   .L17,   .L20,   .L21,   .L22,   .L23,   .L24,   .L25,   .L26,   
.L27,   .L30,   .L31,   .L32,   .L33,   .L34,   .L35,   .L36,   .L37,   .L40,   
.L41,   .L42,   .L43,   .L44,   .L45,   .L46,   .L47,   .L50,   .L51,   .L52,   
.L53,   .L54,   .L55,   .L56,   .L57,   .L60,   .L61,   .L62,   .L63,   .L64,   
.L65,   .L66,   .L67,   .L70,   .L71,   .L72,   .L73,   .L74,   .L75,   .L76,   
.L77,   .L100,  .L101,  .L102,  .L103,  .L104,  .L105,  .L106,  .L107,  .L110,  
.L111,  .L112,  .L113,  .L114,  .L115,  .L116,  .L117,  .L120,  .L121,  .L122 # 
table_name
 % name,        name,   system, query,  mod,    language_name,  
function_type_name,     side_effect,    varres, vararg, name0,  type0,  
type_digits0,   type_scale0,    inout0, name1,  type1,  type_digits1,   
type_scale1,    inout1, name2,  type2,  type_digits2,   type_scale2,    inout2, 
name3,  type3,  type_digits3,   type_scale3,    inout3, name4,  type4,  
type_digits4,   type_scale4,    inout4, name5,  type5,  type_digits5,   
type_scale5,    inout5, name6,  type6,  type_digits6,   type_scale6,    inout6, 
name7,  type7,  type_digits7,   type_scale7,    inout7, name8,  type8,  
type_digits8,   type_scale8,    inout8, name9,  type9,  type_digits9,   
type_scale9,    inout9, name10, type10, type_digits10,  type_scale10,   
inout10,        name11, type11, type_digits11,  type_scale11,   inout11,        
name12, type12, type_digits12,  type_scale12,   inout12,        name13, type13, 
type_digits13,  type_scale13,   inout13,        name14, type14, type_digits14,  
type_scale14,   inout14,        name15, type15, type_digits15,  type_scale15,   
inout15 # name
 % varchar,     varchar,        char,   varchar,        varchar,        
varchar,        varchar,        boolean,        boolean,        boolean,        
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char,   
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char,   
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char,   
varchar,        varchar,        int,    int,    char,   varchar,        
varchar,        int,    int,    char,   varchar,        varchar,        int,    
int,    char,   varchar,        varchar,        int,    int,    char # type
 % 8,   24,     6,      1362,   9,      10,     26,     5,      5,      5,      
11,     14,     4,      1,      3,      16,     14,     4,      1,      3,      
16,     14,     4,      1,      3,      27,     12,     4,      1,      3,      
12,     7,      2,      1,      3,      10,     14,     4,      1,      3,      
8,      14,     2,      1,      3,      9,      7,      2,      1,      3,      
10,     6,      2,      1,      3,      8,      6,      2,      1,      3,      
6,      6,      2,      1,      3,      6,      7,      2,      1,      3,      
8,      6,      2,      1,      3,      6,      7,      1,      1,      3,      
9,      7,      1,      1,      3,      6,      7,      1,      1,      3 # 
length
@@ -2328,6 +2331,7 @@ drop function pcre_replace(string, strin
 [ "sys",       "decade",       "SYSTEM",       "decade",       "mtime",        
"Internal C",   "Scalar function",      false,  false,  false,  "res_0",        
"int",  32,     0,      "out",  "arg_1",        "timestamp",    7,      0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
 [ "sys",       "decade",       "SYSTEM",       "decade",       "mtime",        
"Internal C",   "Scalar function",      false,  false,  false,  "res_0",        
"int",  32,     0,      "out",  "arg_1",        "timestamptz",  7,      0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
 [ "sys",       "degrees",      "SYSTEM",       "create function degrees(r 
double) returns double return r*180/pi();",  "user", "SQL",  "Scalar function", 
     false,  false,  false,  "result",       "double",       53,     0,      
"out",  "r",    "double",       53,     0,      "in",   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
+[ "sys",       "deltas",       "SYSTEM",       "create function sys.deltas 
(\"schema\" string, \"table\" string, \"column\" string) returns table 
(\"values\" bigint) external name \"sql\".\"deltas\";",      "sql",  "MAL",  
"Function returning a table",   false,  false,  false,  "values",       
"bigint",       64,     0,      "out",  "schema",       "clob", 0,      0,      
"in",   "table",        "clob", 0,      0,      "in",   "column",       "clob", 
0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL    ]
 [ "sys",       "dense_rank",   "SYSTEM",       "dense_rank",   "sql",  
"Internal C",   "Analytic function",    false,  false,  false,  "res_0",        
"int",  32,     0,      "out",  "arg_1",        "any",  0,      0,      "in",   
"arg_2",        "boolean",      1,      0,      "in",   "arg_3",        
"boolean",      1,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys",       "diff", "SYSTEM",       "diff", "sql",  "Internal C",   
"Analytic function",    false,  false,  false,  "res_0",        "boolean",      
1,      0,      "out",  "arg_1",        "any",  0,      0,      "in",   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys",       "diff", "SYSTEM",       "diff", "sql",  "Internal C",   
"Analytic function",    false,  false,  false,  "res_0",        "boolean",      
1,      0,      "out",  "arg_1",        "boolean",      1,      0,      "in",   
"arg_2",        "any",  0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
@@ -4867,26 +4871,26 @@ drop function pcre_replace(string, strin
 % varchar,     varchar,        bigint, bigint, bigint, bigint, bigint, boolean 
# type
 % 0,   0,      1,      1,      1,      1,      1,      5 # length
 #select count(*) from sys.statistics;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to