Changeset: b2a2b5fbf388 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b2a2b5fbf388
Modified Files:
        sql/test/emptydb/Tests/check.SQL.py
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
Branch: default
Log Message:

Simplify (somewhat) query.


diffs (229 lines):

diff --git a/sql/test/emptydb/Tests/check.SQL.py 
b/sql/test/emptydb/Tests/check.SQL.py
--- a/sql/test/emptydb/Tests/check.SQL.py
+++ b/sql/test/emptydb/Tests/check.SQL.py
@@ -84,37 +84,18 @@ MAXARGS = 16
 # columns of the args table we're interested in
 args = ['name', 'type', 'type_digits', 'type_scale', 'inout']
 
-out += "with\n"
-for i in range(0, MAXARGS + 1):
-    out += "arg%d (id" % i
-    for j in range(0, i + 1):
-        for k in ['id'] + args:
-            out += ", %s%d" % (k, j)
-    out += ") as (select "
-    if i == 0:
-        out += "f.id"
-        for k in ['id'] + args:
-            out += ", a%d.%s" % (i, k)
-        out += " from sys.functions f left outer join args a%d on a%d.func_id 
= f.id" % (i, i)
-    else:
-        out += "arg%d.*" % (i - 1)
-        for k in ['id'] + args:
-            out += ", a%d.%s" % (i, k)
-        out += " from arg%d left outer join args a%d on a%d.func_id = 
arg%d.id" % (i - 1, i, i, i - 1)
-    out += " and a%d.number = %d),\n" % (i, i)
-out += "funcs as (select f.id, f.name, f.func, f.mod, f.language, ft.type, 
f.side_effect, f.varres, f.vararg, f.schema_id from sys.functions f left outer 
join (values ('function',1),('procedure',2),('aggregate',3),('filter 
function',4),('table function',5),('analytic function',6),('loader 
function',7)) as ft (type,id) on f.type = ft.id)\n"
-out += r"select s.name, funcs.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(funcs.func, '--.*\n', 
'', ''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
funcs.mod, funcs.language, funcs.type, funcs.side_effect, funcs.varres, 
funcs.vararg"
+out += r"select s.name, f.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, '--.*\n', '', 
''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
f.mod, f.language, ft.type, f.side_effect, f.varres, f.vararg"
 for i in range(0, MAXARGS):
-    for k in args:
-        if k == 'inout':
-            out += ", case arg%d.%s%d when 1 then 'in' when 0 then 'out' else 
null end as %s%d" % (MAXARGS, k, i, k, i)
-        else:
-            out += ", arg%d.%s%d" % (MAXARGS, k, i)
-out += " from arg%d, sys.schemas s, funcs where s.id = funcs.schema_id and 
funcs.id = arg%d.id order by s.name, funcs.name, query" % (MAXARGS, MAXARGS)
+    for a in args[:-1]:
+        out += ", a%d.%s as %s%d" % (i, a, a, i)
+    out += ", case a%d.inout when 0 then 'out' when 1 then 'in' end as 
inout%d" % (i, i)
+out += " from sys.functions f left outer join sys.schemas s on f.schema_id = 
s.id left outer join (values ('function', 1), ('procedure', 2), ('aggregate', 
3), ('filter function', 4), ('table function', 5), ('analytic function', 6), 
('loader function', 7)) as ft (type, id) on f.type = ft.id"
 for i in range(0, MAXARGS):
-    for k in args:
-        out += ", arg%d.%s%d" % (MAXARGS, k, i)
-
+    out += " left outer join sys.args a%d on a%d.func_id = f.id and a%d.number 
= %d" % (i, i, i, i)
+out += " order by s.name, f.name, query"
+for i in range(0, MAXARGS):
+    for a in args:
+        out += ", %s%d" % (a, i)
 out += ";"
 
 # substring used a bunch of time in the queries below
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
@@ -909,6 +909,8 @@ create procedure sys.evalalgebra(ra_stmt
 create procedure fitsattach(fname string) external name fits.attach;
 create procedure fitsload(tname string) external name fits.load;
 create procedure sys.flush_log () external name sql."flush_log";
+create function sys.function_type_keyword(ftype int) returns varchar(20) begin 
return case ftype when 1 then 'FUNCTION' when 2 then 'PROCEDURE' when 3 then 
'AGGREGATE' when 4 then 'FILTER FUNCTION' when 5 then 'FUNCTION' when 6 then 
'FUNCTION' when 7 then 'LOADER' else 'ROUTINE' end;
+end;
 create function fuse(one integer, two integer) returns bigint external name 
udf.fuse;
 create function fuse(one smallint, two smallint) returns integer external name 
udf.fuse;
 create function fuse(one tinyint, two tinyint) returns smallint external name 
udf.fuse;
@@ -1229,26 +1231,7 @@ select t.name, c.name, c.type, c.type_di
 -- external functions that don't reference existing MAL function (should be 
empty)
 with x(name,func,schema_id) as (select name, split_part(func, ' external name 
', 2), schema_id from sys.functions where func like '% external name %' union 
select name, split_part(func, ' EXTERNAL NAME ', 2), schema_id from 
sys.functions where func like '% EXTERNAL NAME %'), y(name,func,schema_id) as 
(select name, trim(split_part(func, ';', 1)), schema_id from x), z(name, mod, 
func, schema_id) as (select name, trim(split_part(func, '.', 1), '"'), 
trim(split_part(func, '.', 2), '"'), schema_id from y) select s.name, z.name, 
z.mod, z.func from z, sys.schemas s where z.mod || '.' || z.func not in (select 
m.module || '.' || m."function" from sys.malfunctions() m) and z.schema_id = 
s.id;
 -- args
-with
-arg0 (id, id0, name0, type0, type_digits0, type_scale0, inout0) as (select 
f.id, a0.id, a0.name, a0.type, a0.type_digits, a0.type_scale, a0.inout from 
sys.functions f left outer join args a0 on a0.func_id = f.id and a0.number = 0),
-arg1 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1) as (select arg0.*, a1.id, a1.name, 
a1.type, a1.type_digits, a1.type_scale, a1.inout from arg0 left outer join args 
a1 on a1.func_id = arg0.id and a1.number = 1),
-arg2 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2) as (select arg1.*, a2.id, a2.name, a2.type, 
a2.type_digits, a2.type_scale, a2.inout from arg1 left outer join args a2 on 
a2.func_id = arg1.id and a2.number = 2),
-arg3 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3) as 
(select arg2.*, a3.id, a3.name, a3.type, a3.type_digits, a3.type_scale, 
a3.inout from arg2 left outer join args a3 on a3.func_id = arg2.id and 
a3.number = 3),
-arg4 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4) as (select arg3.*, a4.id, 
a4.name, a4.type, a4.type_digits, a4.type_scale, a4.inout from arg3 left outer 
join args a4 on a4.func_id = arg3.id and a4.number = 4),
-arg5 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5) as (select arg4.*, a5.id, a5.name, a5.type, 
a5.type_digits, a5.type_scale, a5.inout from arg4 left outer join args a5 on 
a5.func_id = arg4.id and a5.number = 5),
-arg6 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6) as (select arg5.*, a6.id, a6.name, a6.type, 
a6.type_digits, a6.type_scale, a6.inout from arg5 left outer join args a6 on 
a6.func_id = arg5.id and a6.number = 6),
-arg7 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7) as 
(select arg6.*, a7.id, a7.name, a7.type, a7.type_digits, a7.type_scale, 
a7.inout from arg6 left outer join args a7 on a7.func_id = arg6.id and 
a7.number = 7),
-arg8 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8) as (select arg7.*, a8.id, 
a8.name, a8.type, a8.type_digits, a8.type_scale, a8.inout from arg7 left outer 
join args a8 on a8.func_id = arg7.id and a8.number = 8),
-arg9 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9) as (select arg8.*, a9.id, a9.name, a9.type, 
a9.type_digits, a9.type_scale, a9.inout from arg8 left outer join args a9 on 
a9.func_id = arg8.id and a9.number = 9),
-arg10 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10) as (select arg9.*, a10.id, a10.name, a10.type, 
a10.type_digits, a10.type_scale, a10.inout from arg9 left outer join args a10 
on a10.func_id = arg9.id and a10.number = 10),
-arg11 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11) as (select arg10.*, a11.id, a11.name, a11.type, a11.type_digits, 
a11.type_scale, a11.inout from arg10 left outer join args a11 on a11.func_id = 
arg10.id and a11.number = 11),
-arg12 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12) as (select 
arg11.*, a12.id, a12.name, a12.type, a12.type_digits, a12.type_scale, a12.inout 
from arg11 left outer join args a12 on a12.func_id = arg11.id and a12.number = 
12),
-arg13 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13) as (select arg12.*, 
a13.id, a13.name, a13.type, a13.type_digits, a13.type_scale, a13.inout from 
arg12 left outer join args a13 on a13.func_id = arg12.id and a13.number = 13),
-arg14 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14) as (select arg13.*, a14.id, a14.name, 
a14.type, a14.type_digits, a14.type_scale, a14.inout from arg13 left outer join 
args a14 on a14.func_id = ar
 g13.id and a14.number = 14),
-arg15 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14, id15, name15, type15, type_digits15, 
type_scale15, inout15) as (select arg14.*, a15.id, a15.name, a15.type, 
a15.type_digits, a15.type_scale, a15.i
 nout from arg14 left outer join args a15 on a15.func_id = arg14.id and 
a15.number = 15),
-arg16 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14, id15, name15, type15, type_digits15, 
type_scale15, inout15, id16, name16, type16, type_digits16, type_scale16, 
inout16) as (select arg15.*, a16.id
 , a16.name, a16.type, a16.type_digits, a16.type_scale, a16.inout from arg15 
left outer join args a16 on a16.func_id = arg15.id and a16.number = 16),
-funcs as (select f.id, f.name, f.func, f.mod, f.language, ft.type, 
f.side_effect, f.varres, f.vararg, f.schema_id from sys.functions f left outer 
join (values ('function',1),('procedure',2),('aggregate',3),('filter 
function',4),('table function',5),('analytic function',6),('loader 
function',7)) as ft (type,id) on f.type = ft.id)
-select s.name, funcs.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(funcs.func, '--.*\n', 
'', ''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
funcs.mod, funcs.language, funcs.type, funcs.side_effect, funcs.varres, 
funcs.vararg, arg16.name0, arg16.type0, arg16.type_digits0, arg16.type_scale0, 
case arg16.inout0 when 1 then 'in' when 0 then 'out' else null end as inout0, 
arg16.name1, arg16.type1, arg16.type_digits1, arg16.type_scale1, case 
arg16.inout1 when 1 then 'in' when 0 then 'out' else null end as inout1, 
arg16.name2, arg16.type2, arg16.type_digits2, arg16.type_scale2, case 
arg16.inout2 when 1 then 'in' when 0 then 'out' else null end as inout2, 
arg16.name3, arg16.type3, arg16.type_digits3, arg16.type_scale3, case 
arg16.inout3 when 1 then 'in' when 0 then 'out' else null end as inout3, 
arg16.name4, arg16.type4, arg16.type_digits4, arg16.type_scale4, case 
arg16.inout4 when 1 then 'in' when 0 then 'out' else null end as inout4, 
arg16.name5,
  arg16.type5, arg16.type_digits5, arg16.type_scale5, case arg16.inout5 when 1 
then 'in' when 0 then 'out' else null end as inout5, arg16.name6, arg16.type6, 
arg16.type_digits6, arg16.type_scale6, case arg16.inout6 when 1 then 'in' when 
0 then 'out' else null end as inout6, arg16.name7, arg16.type7, 
arg16.type_digits7, arg16.type_scale7, case arg16.inout7 when 1 then 'in' when 
0 then 'out' else null end as inout7, arg16.name8, arg16.type8, 
arg16.type_digits8, arg16.type_scale8, case arg16.inout8 when 1 then 'in' when 
0 then 'out' else null end as inout8, arg16.name9, arg16.type9, 
arg16.type_digits9, arg16.type_scale9, case arg16.inout9 when 1 then 'in' when 
0 then 'out' else null end as inout9, arg16.name10, arg16.type10, 
arg16.type_digits10, arg16.type_scale10, case arg16.inout10 when 1 then 'in' 
when 0 then 'out' else null end as inout10, arg16.name11, arg16.type11, 
arg16.type_digits11, arg16.type_scale11, case arg16.inout11 when 1 then 'in' 
when 0 then 'out' else null end as inout
 11, arg16.name12, arg16.type12, arg16.type_digits12, arg16.type_scale12, case 
arg16.inout12 when 1 then 'in' when 0 then 'out' else null end as inout12, 
arg16.name13, arg16.type13, arg16.type_digits13, arg16.type_scale13, case 
arg16.inout13 when 1 then 'in' when 0 then 'out' else null end as inout13, 
arg16.name14, arg16.type14, arg16.type_digits14, arg16.type_scale14, case 
arg16.inout14 when 1 then 'in' when 0 then 'out' else null end as inout14, 
arg16.name15, arg16.type15, arg16.type_digits15, arg16.type_scale15, case 
arg16.inout15 when 1 then 'in' when 0 then 'out' else null end as inout15 from 
arg16, sys.schemas s, funcs where s.id = funcs.schema_id and funcs.id = 
arg16.id order by s.name, funcs.name, query, arg16.name0, arg16.type0, 
arg16.type_digits0, arg16.type_scale0, arg16.inout0, arg16.name1, arg16.type1, 
arg16.type_digits1, arg16.type_scale1, arg16.inout1, arg16.name2, arg16.type2, 
arg16.type_digits2, arg16.type_scale2, arg16.inout2, arg16.name3, arg16.type3, 
arg16.type_di
 gits3, arg16.type_scale3, arg16.inout3, arg16.name4, arg16.type4, 
arg16.type_digits4, arg16.type_scale4, arg16.inout4, arg16.name5, arg16.type5, 
arg16.type_digits5, arg16.type_scale5, arg16.inout5, arg16.name6, arg16.type6, 
arg16.type_digits6, arg16.type_scale6, arg16.inout6, arg16.name7, arg16.type7, 
arg16.type_digits7, arg16.type_scale7, arg16.inout7, arg16.name8, arg16.type8, 
arg16.type_digits8, arg16.type_scale8, arg16.inout8, arg16.name9, arg16.type9, 
arg16.type_digits9, arg16.type_scale9, arg16.inout9, arg16.name10, 
arg16.type10, arg16.type_digits10, arg16.type_scale10, arg16.inout10, 
arg16.name11, arg16.type11, arg16.type_digits11, arg16.type_scale11, 
arg16.inout11, arg16.name12, arg16.type12, arg16.type_digits12, 
arg16.type_scale12, arg16.inout12, arg16.name13, arg16.type13, 
arg16.type_digits13, arg16.type_scale13, arg16.inout13, arg16.name14, 
arg16.type14, arg16.type_digits14, arg16.type_scale14, arg16.inout14, 
arg16.name15, arg16.type15, arg16.type_digits15, arg16.type_sca
 le15, arg16.inout15;
+select s.name, f.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, '--.*\n', '', 
''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
f.mod, f.language, ft.type, 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 as inout3, a4.name as name4, a4.type as 
type4, a4.type_digits as type_digits4, a4.type_scale as type_scale4, case 
a4.inou
 t 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 name10, a10.type as type10, 
a10.type_digits as type_digits10, a10.type_scale as type_scale10, case 
a10.inout when 0 then 'o
 ut' 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 (values 
('fu
 nction', 1), ('procedure', 2), ('aggregate', 3), ('filter function', 4), 
('table function', 5), ('analytic function', 6), ('loader function', 7)) as ft 
(type, id) on f.type = ft.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 sys.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, ty
 pe_scale13, inout13, name14, type14, type_digits14, type_scale14, inout14, 
name15, type15, type_digits15, type_scale15, inout15;
 -- auths
 select name, grantor from sys.auths;
 -- db_user_info
@@ -1794,13 +1777,11 @@ drop function pcre_replace(string, strin
 % name,        name,   mod,    func # name
 % varchar,     varchar,        varchar,        varchar # type
 % 0,   0,      0,      0 # length
-#with
-#arg0 (id, id0, name0, type0, type_digits0, type_scale0, inout0) as (select 
f.id, a0.id, a0.name, a0.type, a0.type_digits, a0.type_scale, a0.inout from 
sys.functions f left outer join args a0 on a0.func_id = f.id and a0.number = 0),
-#arg1 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1) as (select arg0.*, a1.id, a1.name, 
a1.type, a1.type_digits, a1.type_scale, a1.inout from arg0 left outer join args 
a1 on a1.func_id = arg0.id and a1.number = 1),
-% sys.s,       .funcs, .L275,  .funcs, .funcs, .funcs, .funcs, .funcs, .funcs, 
.arg16, .arg16, .arg16, .arg16, .L311,  .arg16, .arg16, .arg16, .arg16, .L317,  
.arg16, .arg16, .arg16, .arg16, .L325,  .arg16, .arg16, .arg16, .arg16, .L333,  
.arg16, .arg16, .arg16, .arg16, .L341,  .arg16, .arg16, .arg16, .arg16, .L347,  
.arg16, .arg16, .arg16, .arg16, .L355,  .arg16, .arg16, .arg16, .arg16, .L363,  
.arg16, .arg16, .arg16, .arg16, .L371,  .arg16, .arg16, .arg16, .arg16, .L377,  
.arg16, .arg16, .arg16, .arg16, .L405,  .arg16, .arg16, .arg16, .arg16, .L413,  
.arg16, .arg16, .arg16, .arg16, .L421,  .arg16, .arg16, .arg16, .arg16, .L427,  
.arg16, .arg16, .arg16, .arg16, .L435,  .arg16, .arg16, .arg16, .arg16, .L443 # 
table_name
+#select s.name, f.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, '--.*\n', '', 
''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
f.mod, f.language, ft.type, 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 as inout3, a4.name as name4, a4.type as 
type4, a4.type_digits as type_digits4, a4.type_scale as type_scale4, case a4.ino
 ut 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 name10, 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 (values 
('f
 unction', 1), ('procedure', 2), ('aggregate', 3), ('filter function', 4), 
('table function', 5), ('analytic function', 6), ('loader function', 7)) as ft 
(type, id) on f.type = ft.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 sys.args a11 on a11.func_id = f.id and a11.number = 11 lef
 t 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, t
 ype_scale13, inout13, name14, type14, type_digits14, type_scale14, inout14, 
name15, type15, type_digits15, type_scale15, inout15;
+% .s,  .f,     .L6,    .f,     .f,     .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
 % name,        name,   query,  mod,    language,       type,   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,        varchar,        varchar,        int,    char,   
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,   35,     831,    9,      1,      17,     5,      5,      5,      11,     
14,     4,      1,      0,      16,     14,     4,      1,      0,      16,     
14,     2,      1,      0,      27,     12,     2,      1,      0,      12,     
7,      2,      1,      0,      10,     7,      2,      1,      0,      8,      
7,      2,      1,      0,      9,      6,      2,      1,      0,      10,     
6,      2,      1,      0,      8,      7,      2,      1,      0,      9,      
7,      2,      1,      0,      6,      7,      2,      1,      0,      8,      
6,      2,      1,      0,      6,      7,      1,      1,      0,      9,      
7,      1,      1,      0,      6,      7,      1,      1,      0 # length
+% 8,   35,     831,    9,      1,      17,     5,      5,      5,      11,     
14,     4,      1,      3,      16,     14,     5,      1,      3,      16,     
14,     2,      1,      3,      27,     12,     2,      1,      3,      12,     
7,      2,      1,      3,      10,     7,      2,      1,      3,      8,      
7,      2,      1,      3,      9,      6,      2,      1,      3,      10,     
6,      2,      1,      3,      8,      7,      2,      1,      3,      9,      
7,      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
 [ "bam",       "bam_drop_file",        "create procedure 
bam.bam_drop_file(file_id bigint, dbschema smallint) external name 
bam.bam_drop_file;",       "bam",  1,      "procedure",    true,   false,  
false,  "file_id",      "bigint",       64,     0,      "in",   "dbschema",     
"smallint",     16,     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    ]
 [ "bam",       "bam_export",   "create procedure bam.bam_export(output_path 
string) external name bam.bam_export;",    "bam",  1,      "procedure",    
true,   false,  false,  "output_path",  "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,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL    ]
 [ "bam",       "bam_flag",     "create function bam.bam_flag(flag smallint, 
name string) returns boolean external name bam.bam_flag;", "bam",  1,      
"function",     false,  false,  false,  "result",       "boolean",      1,      
0,      "out",  "flag", "smallint",     16,     0,      "in",   "name", "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,   NULL,   NULL,   NULL,   NULL,   NULL    ]
@@ -2024,6 +2005,7 @@ drop function pcre_replace(string, strin
 [ "sys",       "floor",        "floor",        "mmath",        0,      
"function",     false,  false,  false,  "res_0",        "double",       53,     
0,      "out",  "arg_1",        "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",       "floor",        "floor",        "mmath",        0,      
"function",     false,  false,  false,  "res_0",        "real", 24,     0,      
"out",  "arg_1",        "real", 24,     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",       "flush_log",    "create procedure sys.flush_log () external 
name sql.\"flush_log\";",   "sql",  1,      "procedure",    true,   false,  
false,  NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   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",       "function_type_keyword",        "create function 
sys.function_type_keyword(ftype int) returns varchar(20) begin return case 
ftype when 1 then 'FUNCTION' when 2 then 'PROCEDURE' when 3 then 'AGGREGATE' 
when 4 then 'FILTER FUNCTION' when 5 then 'FUNCTION' when 6 then 'FUNCTION' 
when 7 then 'LOADER' else 'ROUTINE' end; end;",    "user", 2,      "function",  
   false,  false,  false,  "result",       "varchar",      20,     0,      
"out",  "ftype",        "int",  32,     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",       "fuse", "create function fuse(one integer, two integer) returns 
bigint external name udf.fuse;",        "udf",  1,      "function",     false,  
false,  false,  "result",       "bigint",       64,     0,      "out",  "one",  
"int",  32,     0,      "in",   "two",  "int",  32,     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    ]
 [ "sys",       "fuse", "create function fuse(one smallint, two smallint) 
returns integer external name udf.fuse;",     "udf",  1,      "function",     
false,  false,  false,  "result",       "int",  32,     0,      "out",  "one",  
"smallint",     16,     0,      "in",   "two",  "smallint",     16,     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    ]
 [ "sys",       "fuse", "create function fuse(one tinyint, two tinyint) returns 
smallint external name udf.fuse;",      "udf",  1,      "function",     false,  
false,  false,  "result",       "smallint",     16,     0,      "out",  "one",  
"tinyint",      8,      0,      "in",   "two",  "tinyint",      8,      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    ]
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
@@ -913,6 +913,8 @@ create procedure sys.evalalgebra(ra_stmt
 create procedure fitsattach(fname string) external name fits.attach;
 create procedure fitsload(tname string) external name fits.load;
 create procedure sys.flush_log () external name sql."flush_log";
+create function sys.function_type_keyword(ftype int) returns varchar(20) begin 
return case ftype when 1 then 'FUNCTION' when 2 then 'PROCEDURE' when 3 then 
'AGGREGATE' when 4 then 'FILTER FUNCTION' when 5 then 'FUNCTION' when 6 then 
'FUNCTION' when 7 then 'LOADER' else 'ROUTINE' end;
+end;
 create function fuse(one integer, two integer) returns bigint external name 
udf.fuse;
 create function fuse(one smallint, two smallint) returns integer external name 
udf.fuse;
 create function fuse(one tinyint, two tinyint) returns smallint external name 
udf.fuse;
@@ -1233,26 +1235,7 @@ select t.name, c.name, c.type, c.type_di
 -- external functions that don't reference existing MAL function (should be 
empty)
 with x(name,func,schema_id) as (select name, split_part(func, ' external name 
', 2), schema_id from sys.functions where func like '% external name %' union 
select name, split_part(func, ' EXTERNAL NAME ', 2), schema_id from 
sys.functions where func like '% EXTERNAL NAME %'), y(name,func,schema_id) as 
(select name, trim(split_part(func, ';', 1)), schema_id from x), z(name, mod, 
func, schema_id) as (select name, trim(split_part(func, '.', 1), '"'), 
trim(split_part(func, '.', 2), '"'), schema_id from y) select s.name, z.name, 
z.mod, z.func from z, sys.schemas s where z.mod || '.' || z.func not in (select 
m.module || '.' || m."function" from sys.malfunctions() m) and z.schema_id = 
s.id;
 -- args
-with
-arg0 (id, id0, name0, type0, type_digits0, type_scale0, inout0) as (select 
f.id, a0.id, a0.name, a0.type, a0.type_digits, a0.type_scale, a0.inout from 
sys.functions f left outer join args a0 on a0.func_id = f.id and a0.number = 0),
-arg1 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1) as (select arg0.*, a1.id, a1.name, 
a1.type, a1.type_digits, a1.type_scale, a1.inout from arg0 left outer join args 
a1 on a1.func_id = arg0.id and a1.number = 1),
-arg2 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2) as (select arg1.*, a2.id, a2.name, a2.type, 
a2.type_digits, a2.type_scale, a2.inout from arg1 left outer join args a2 on 
a2.func_id = arg1.id and a2.number = 2),
-arg3 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3) as 
(select arg2.*, a3.id, a3.name, a3.type, a3.type_digits, a3.type_scale, 
a3.inout from arg2 left outer join args a3 on a3.func_id = arg2.id and 
a3.number = 3),
-arg4 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4) as (select arg3.*, a4.id, 
a4.name, a4.type, a4.type_digits, a4.type_scale, a4.inout from arg3 left outer 
join args a4 on a4.func_id = arg3.id and a4.number = 4),
-arg5 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5) as (select arg4.*, a5.id, a5.name, a5.type, 
a5.type_digits, a5.type_scale, a5.inout from arg4 left outer join args a5 on 
a5.func_id = arg4.id and a5.number = 5),
-arg6 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6) as (select arg5.*, a6.id, a6.name, a6.type, 
a6.type_digits, a6.type_scale, a6.inout from arg5 left outer join args a6 on 
a6.func_id = arg5.id and a6.number = 6),
-arg7 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7) as 
(select arg6.*, a7.id, a7.name, a7.type, a7.type_digits, a7.type_scale, 
a7.inout from arg6 left outer join args a7 on a7.func_id = arg6.id and 
a7.number = 7),
-arg8 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8) as (select arg7.*, a8.id, 
a8.name, a8.type, a8.type_digits, a8.type_scale, a8.inout from arg7 left outer 
join args a8 on a8.func_id = arg7.id and a8.number = 8),
-arg9 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9) as (select arg8.*, a9.id, a9.name, a9.type, 
a9.type_digits, a9.type_scale, a9.inout from arg8 left outer join args a9 on 
a9.func_id = arg8.id and a9.number = 9),
-arg10 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10) as (select arg9.*, a10.id, a10.name, a10.type, 
a10.type_digits, a10.type_scale, a10.inout from arg9 left outer join args a10 
on a10.func_id = arg9.id and a10.number = 10),
-arg11 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11) as (select arg10.*, a11.id, a11.name, a11.type, a11.type_digits, 
a11.type_scale, a11.inout from arg10 left outer join args a11 on a11.func_id = 
arg10.id and a11.number = 11),
-arg12 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12) as (select 
arg11.*, a12.id, a12.name, a12.type, a12.type_digits, a12.type_scale, a12.inout 
from arg11 left outer join args a12 on a12.func_id = arg11.id and a12.number = 
12),
-arg13 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13) as (select arg12.*, 
a13.id, a13.name, a13.type, a13.type_digits, a13.type_scale, a13.inout from 
arg12 left outer join args a13 on a13.func_id = arg12.id and a13.number = 13),
-arg14 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14) as (select arg13.*, a14.id, a14.name, 
a14.type, a14.type_digits, a14.type_scale, a14.inout from arg13 left outer join 
args a14 on a14.func_id = ar
 g13.id and a14.number = 14),
-arg15 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14, id15, name15, type15, type_digits15, 
type_scale15, inout15) as (select arg14.*, a15.id, a15.name, a15.type, 
a15.type_digits, a15.type_scale, a15.i
 nout from arg14 left outer join args a15 on a15.func_id = arg14.id and 
a15.number = 15),
-arg16 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14, id15, name15, type15, type_digits15, 
type_scale15, inout15, id16, name16, type16, type_digits16, type_scale16, 
inout16) as (select arg15.*, a16.id
 , a16.name, a16.type, a16.type_digits, a16.type_scale, a16.inout from arg15 
left outer join args a16 on a16.func_id = arg15.id and a16.number = 16),
-funcs as (select f.id, f.name, f.func, f.mod, f.language, ft.type, 
f.side_effect, f.varres, f.vararg, f.schema_id from sys.functions f left outer 
join (values ('function',1),('procedure',2),('aggregate',3),('filter 
function',4),('table function',5),('analytic function',6),('loader 
function',7)) as ft (type,id) on f.type = ft.id)
-select s.name, funcs.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(funcs.func, '--.*\n', 
'', ''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
funcs.mod, funcs.language, funcs.type, funcs.side_effect, funcs.varres, 
funcs.vararg, arg16.name0, arg16.type0, arg16.type_digits0, arg16.type_scale0, 
case arg16.inout0 when 1 then 'in' when 0 then 'out' else null end as inout0, 
arg16.name1, arg16.type1, arg16.type_digits1, arg16.type_scale1, case 
arg16.inout1 when 1 then 'in' when 0 then 'out' else null end as inout1, 
arg16.name2, arg16.type2, arg16.type_digits2, arg16.type_scale2, case 
arg16.inout2 when 1 then 'in' when 0 then 'out' else null end as inout2, 
arg16.name3, arg16.type3, arg16.type_digits3, arg16.type_scale3, case 
arg16.inout3 when 1 then 'in' when 0 then 'out' else null end as inout3, 
arg16.name4, arg16.type4, arg16.type_digits4, arg16.type_scale4, case 
arg16.inout4 when 1 then 'in' when 0 then 'out' else null end as inout4, 
arg16.name5,
  arg16.type5, arg16.type_digits5, arg16.type_scale5, case arg16.inout5 when 1 
then 'in' when 0 then 'out' else null end as inout5, arg16.name6, arg16.type6, 
arg16.type_digits6, arg16.type_scale6, case arg16.inout6 when 1 then 'in' when 
0 then 'out' else null end as inout6, arg16.name7, arg16.type7, 
arg16.type_digits7, arg16.type_scale7, case arg16.inout7 when 1 then 'in' when 
0 then 'out' else null end as inout7, arg16.name8, arg16.type8, 
arg16.type_digits8, arg16.type_scale8, case arg16.inout8 when 1 then 'in' when 
0 then 'out' else null end as inout8, arg16.name9, arg16.type9, 
arg16.type_digits9, arg16.type_scale9, case arg16.inout9 when 1 then 'in' when 
0 then 'out' else null end as inout9, arg16.name10, arg16.type10, 
arg16.type_digits10, arg16.type_scale10, case arg16.inout10 when 1 then 'in' 
when 0 then 'out' else null end as inout10, arg16.name11, arg16.type11, 
arg16.type_digits11, arg16.type_scale11, case arg16.inout11 when 1 then 'in' 
when 0 then 'out' else null end as inout
 11, arg16.name12, arg16.type12, arg16.type_digits12, arg16.type_scale12, case 
arg16.inout12 when 1 then 'in' when 0 then 'out' else null end as inout12, 
arg16.name13, arg16.type13, arg16.type_digits13, arg16.type_scale13, case 
arg16.inout13 when 1 then 'in' when 0 then 'out' else null end as inout13, 
arg16.name14, arg16.type14, arg16.type_digits14, arg16.type_scale14, case 
arg16.inout14 when 1 then 'in' when 0 then 'out' else null end as inout14, 
arg16.name15, arg16.type15, arg16.type_digits15, arg16.type_scale15, case 
arg16.inout15 when 1 then 'in' when 0 then 'out' else null end as inout15 from 
arg16, sys.schemas s, funcs where s.id = funcs.schema_id and funcs.id = 
arg16.id order by s.name, funcs.name, query, arg16.name0, arg16.type0, 
arg16.type_digits0, arg16.type_scale0, arg16.inout0, arg16.name1, arg16.type1, 
arg16.type_digits1, arg16.type_scale1, arg16.inout1, arg16.name2, arg16.type2, 
arg16.type_digits2, arg16.type_scale2, arg16.inout2, arg16.name3, arg16.type3, 
arg16.type_di
 gits3, arg16.type_scale3, arg16.inout3, arg16.name4, arg16.type4, 
arg16.type_digits4, arg16.type_scale4, arg16.inout4, arg16.name5, arg16.type5, 
arg16.type_digits5, arg16.type_scale5, arg16.inout5, arg16.name6, arg16.type6, 
arg16.type_digits6, arg16.type_scale6, arg16.inout6, arg16.name7, arg16.type7, 
arg16.type_digits7, arg16.type_scale7, arg16.inout7, arg16.name8, arg16.type8, 
arg16.type_digits8, arg16.type_scale8, arg16.inout8, arg16.name9, arg16.type9, 
arg16.type_digits9, arg16.type_scale9, arg16.inout9, arg16.name10, 
arg16.type10, arg16.type_digits10, arg16.type_scale10, arg16.inout10, 
arg16.name11, arg16.type11, arg16.type_digits11, arg16.type_scale11, 
arg16.inout11, arg16.name12, arg16.type12, arg16.type_digits12, 
arg16.type_scale12, arg16.inout12, arg16.name13, arg16.type13, 
arg16.type_digits13, arg16.type_scale13, arg16.inout13, arg16.name14, 
arg16.type14, arg16.type_digits14, arg16.type_scale14, arg16.inout14, 
arg16.name15, arg16.type15, arg16.type_digits15, arg16.type_sca
 le15, arg16.inout15;
+select s.name, f.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, '--.*\n', '', 
''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
f.mod, f.language, ft.type, 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 as inout3, a4.name as name4, a4.type as 
type4, a4.type_digits as type_digits4, a4.type_scale as type_scale4, case 
a4.inou
 t 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 name10, a10.type as type10, 
a10.type_digits as type_digits10, a10.type_scale as type_scale10, case 
a10.inout when 0 then 'o
 ut' 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 (values 
('fu
 nction', 1), ('procedure', 2), ('aggregate', 3), ('filter function', 4), 
('table function', 5), ('analytic function', 6), ('loader function', 7)) as ft 
(type, id) on f.type = ft.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 sys.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, ty
 pe_scale13, inout13, name14, type14, type_digits14, type_scale14, inout14, 
name15, type15, type_digits15, type_scale15, inout15;
 -- auths
 select name, grantor from sys.auths;
 -- db_user_info
@@ -1798,13 +1781,11 @@ drop function pcre_replace(string, strin
 % name,        name,   mod,    func # name
 % varchar,     varchar,        varchar,        varchar # type
 % 0,   0,      0,      0 # length
-#with
-#arg0 (id, id0, name0, type0, type_digits0, type_scale0, inout0) as (select 
f.id, a0.id, a0.name, a0.type, a0.type_digits, a0.type_scale, a0.inout from 
sys.functions f left outer join args a0 on a0.func_id = f.id and a0.number = 0),
-#arg1 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1) as (select arg0.*, a1.id, a1.name, 
a1.type, a1.type_digits, a1.type_scale, a1.inout from arg0 left outer join args 
a1 on a1.func_id = arg0.id and a1.number = 1),
-% sys.s,       .funcs, .L275,  .funcs, .funcs, .funcs, .funcs, .funcs, .funcs, 
.arg16, .arg16, .arg16, .arg16, .L311,  .arg16, .arg16, .arg16, .arg16, .L317,  
.arg16, .arg16, .arg16, .arg16, .L325,  .arg16, .arg16, .arg16, .arg16, .L333,  
.arg16, .arg16, .arg16, .arg16, .L341,  .arg16, .arg16, .arg16, .arg16, .L347,  
.arg16, .arg16, .arg16, .arg16, .L355,  .arg16, .arg16, .arg16, .arg16, .L363,  
.arg16, .arg16, .arg16, .arg16, .L371,  .arg16, .arg16, .arg16, .arg16, .L377,  
.arg16, .arg16, .arg16, .arg16, .L405,  .arg16, .arg16, .arg16, .arg16, .L413,  
.arg16, .arg16, .arg16, .arg16, .L421,  .arg16, .arg16, .arg16, .arg16, .L427,  
.arg16, .arg16, .arg16, .arg16, .L435,  .arg16, .arg16, .arg16, .arg16, .L443 # 
table_name
+#select s.name, f.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, '--.*\n', '', 
''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
f.mod, f.language, ft.type, 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 as inout3, a4.name as name4, a4.type as 
type4, a4.type_digits as type_digits4, a4.type_scale as type_scale4, case a4.ino
 ut 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 name10, 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 (values 
('f
 unction', 1), ('procedure', 2), ('aggregate', 3), ('filter function', 4), 
('table function', 5), ('analytic function', 6), ('loader function', 7)) as ft 
(type, id) on f.type = ft.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 sys.args a11 on a11.func_id = f.id and a11.number = 11 lef
 t 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, t
 ype_scale13, inout13, name14, type14, type_digits14, type_scale14, inout14, 
name15, type15, type_digits15, type_scale15, inout15;
+% .s,  .f,     .L6,    .f,     .f,     .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
 % name,        name,   query,  mod,    language,       type,   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,        varchar,        varchar,        int,    char,   
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,   35,     831,    9,      1,      17,     5,      5,      5,      11,     
14,     4,      1,      0,      16,     14,     4,      1,      0,      16,     
14,     2,      1,      0,      27,     12,     2,      1,      0,      12,     
7,      2,      1,      0,      10,     7,      2,      1,      0,      8,      
7,      2,      1,      0,      9,      6,      2,      1,      0,      10,     
6,      2,      1,      0,      8,      7,      2,      1,      0,      9,      
7,      2,      1,      0,      6,      7,      2,      1,      0,      8,      
6,      2,      1,      0,      6,      7,      1,      1,      0,      9,      
7,      1,      1,      0,      6,      7,      1,      1,      0 # length
+% 8,   35,     831,    9,      1,      17,     5,      5,      5,      11,     
14,     4,      1,      3,      16,     14,     5,      1,      3,      16,     
14,     2,      1,      3,      27,     12,     2,      1,      3,      12,     
7,      2,      1,      3,      10,     7,      2,      1,      3,      8,      
7,      2,      1,      3,      9,      6,      2,      1,      3,      10,     
6,      2,      1,      3,      8,      7,      2,      1,      3,      9,      
7,      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
 [ "bam",       "bam_drop_file",        "create procedure 
bam.bam_drop_file(file_id bigint, dbschema smallint) external name 
bam.bam_drop_file;",       "bam",  1,      "procedure",    true,   false,  
false,  "file_id",      "bigint",       64,     0,      "in",   "dbschema",     
"smallint",     16,     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    ]
 [ "bam",       "bam_export",   "create procedure bam.bam_export(output_path 
string) external name bam.bam_export;",    "bam",  1,      "procedure",    
true,   false,  false,  "output_path",  "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,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL    ]
 [ "bam",       "bam_flag",     "create function bam.bam_flag(flag smallint, 
name string) returns boolean external name bam.bam_flag;", "bam",  1,      
"function",     false,  false,  false,  "result",       "boolean",      1,      
0,      "out",  "flag", "smallint",     16,     0,      "in",   "name", "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,   NULL,   NULL,   NULL,   NULL,   NULL    ]
@@ -2028,6 +2009,7 @@ drop function pcre_replace(string, strin
 [ "sys",       "floor",        "floor",        "mmath",        0,      
"function",     false,  false,  false,  "res_0",        "double",       53,     
0,      "out",  "arg_1",        "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",       "floor",        "floor",        "mmath",        0,      
"function",     false,  false,  false,  "res_0",        "real", 24,     0,      
"out",  "arg_1",        "real", 24,     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",       "flush_log",    "create procedure sys.flush_log () external 
name sql.\"flush_log\";",   "sql",  1,      "procedure",    true,   false,  
false,  NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   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",       "function_type_keyword",        "create function 
sys.function_type_keyword(ftype int) returns varchar(20) begin return case 
ftype when 1 then 'FUNCTION' when 2 then 'PROCEDURE' when 3 then 'AGGREGATE' 
when 4 then 'FILTER FUNCTION' when 5 then 'FUNCTION' when 6 then 'FUNCTION' 
when 7 then 'LOADER' else 'ROUTINE' end; end;",    "user", 2,      "function",  
   false,  false,  false,  "result",       "varchar",      20,     0,      
"out",  "ftype",        "int",  32,     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",       "fuse", "create function fuse(one integer, two integer) returns 
bigint external name udf.fuse;",        "udf",  1,      "function",     false,  
false,  false,  "result",       "bigint",       64,     0,      "out",  "one",  
"int",  32,     0,      "in",   "two",  "int",  32,     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    ]
 [ "sys",       "fuse", "create function fuse(one smallint, two smallint) 
returns integer external name udf.fuse;",     "udf",  1,      "function",     
false,  false,  false,  "result",       "int",  32,     0,      "out",  "one",  
"smallint",     16,     0,      "in",   "two",  "smallint",     16,     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    ]
 [ "sys",       "fuse", "create function fuse(one tinyint, two tinyint) returns 
smallint external name udf.fuse;",      "udf",  1,      "function",     false,  
false,  false,  "result",       "smallint",     16,     0,      "out",  "one",  
"tinyint",      8,      0,      "in",   "two",  "tinyint",      8,      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    ]
diff --git a/sql/test/emptydb/Tests/check.stable.out.int128 
b/sql/test/emptydb/Tests/check.stable.out.int128
--- a/sql/test/emptydb/Tests/check.stable.out.int128
+++ b/sql/test/emptydb/Tests/check.stable.out.int128
@@ -1245,26 +1245,7 @@ select t.name, c.name, c.type, c.type_di
 -- external functions that don't reference existing MAL function (should be 
empty)
 with x(name,func,schema_id) as (select name, split_part(func, ' external name 
', 2), schema_id from sys.functions where func like '% external name %' union 
select name, split_part(func, ' EXTERNAL NAME ', 2), schema_id from 
sys.functions where func like '% EXTERNAL NAME %'), y(name,func,schema_id) as 
(select name, trim(split_part(func, ';', 1)), schema_id from x), z(name, mod, 
func, schema_id) as (select name, trim(split_part(func, '.', 1), '"'), 
trim(split_part(func, '.', 2), '"'), schema_id from y) select s.name, z.name, 
z.mod, z.func from z, sys.schemas s where z.mod || '.' || z.func not in (select 
m.module || '.' || m."function" from sys.malfunctions() m) and z.schema_id = 
s.id;
 -- args
-with
-arg0 (id, id0, name0, type0, type_digits0, type_scale0, inout0) as (select 
f.id, a0.id, a0.name, a0.type, a0.type_digits, a0.type_scale, a0.inout from 
sys.functions f left outer join args a0 on a0.func_id = f.id and a0.number = 0),
-arg1 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1) as (select arg0.*, a1.id, a1.name, 
a1.type, a1.type_digits, a1.type_scale, a1.inout from arg0 left outer join args 
a1 on a1.func_id = arg0.id and a1.number = 1),
-arg2 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2) as (select arg1.*, a2.id, a2.name, a2.type, 
a2.type_digits, a2.type_scale, a2.inout from arg1 left outer join args a2 on 
a2.func_id = arg1.id and a2.number = 2),
-arg3 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3) as 
(select arg2.*, a3.id, a3.name, a3.type, a3.type_digits, a3.type_scale, 
a3.inout from arg2 left outer join args a3 on a3.func_id = arg2.id and 
a3.number = 3),
-arg4 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4) as (select arg3.*, a4.id, 
a4.name, a4.type, a4.type_digits, a4.type_scale, a4.inout from arg3 left outer 
join args a4 on a4.func_id = arg3.id and a4.number = 4),
-arg5 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5) as (select arg4.*, a5.id, a5.name, a5.type, 
a5.type_digits, a5.type_scale, a5.inout from arg4 left outer join args a5 on 
a5.func_id = arg4.id and a5.number = 5),
-arg6 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6) as (select arg5.*, a6.id, a6.name, a6.type, 
a6.type_digits, a6.type_scale, a6.inout from arg5 left outer join args a6 on 
a6.func_id = arg5.id and a6.number = 6),
-arg7 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7) as 
(select arg6.*, a7.id, a7.name, a7.type, a7.type_digits, a7.type_scale, 
a7.inout from arg6 left outer join args a7 on a7.func_id = arg6.id and 
a7.number = 7),
-arg8 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8) as (select arg7.*, a8.id, 
a8.name, a8.type, a8.type_digits, a8.type_scale, a8.inout from arg7 left outer 
join args a8 on a8.func_id = arg7.id and a8.number = 8),
-arg9 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9) as (select arg8.*, a9.id, a9.name, a9.type, 
a9.type_digits, a9.type_scale, a9.inout from arg8 left outer join args a9 on 
a9.func_id = arg8.id and a9.number = 9),
-arg10 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10) as (select arg9.*, a10.id, a10.name, a10.type, 
a10.type_digits, a10.type_scale, a10.inout from arg9 left outer join args a10 
on a10.func_id = arg9.id and a10.number = 10),
-arg11 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11) as (select arg10.*, a11.id, a11.name, a11.type, a11.type_digits, 
a11.type_scale, a11.inout from arg10 left outer join args a11 on a11.func_id = 
arg10.id and a11.number = 11),
-arg12 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12) as (select 
arg11.*, a12.id, a12.name, a12.type, a12.type_digits, a12.type_scale, a12.inout 
from arg11 left outer join args a12 on a12.func_id = arg11.id and a12.number = 
12),
-arg13 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13) as (select arg12.*, 
a13.id, a13.name, a13.type, a13.type_digits, a13.type_scale, a13.inout from 
arg12 left outer join args a13 on a13.func_id = arg12.id and a13.number = 13),
-arg14 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14) as (select arg13.*, a14.id, a14.name, 
a14.type, a14.type_digits, a14.type_scale, a14.inout from arg13 left outer join 
args a14 on a14.func_id = ar
 g13.id and a14.number = 14),
-arg15 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14, id15, name15, type15, type_digits15, 
type_scale15, inout15) as (select arg14.*, a15.id, a15.name, a15.type, 
a15.type_digits, a15.type_scale, a15.i
 nout from arg14 left outer join args a15 on a15.func_id = arg14.id and 
a15.number = 15),
-arg16 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1, id2, name2, type2, type_digits2, 
type_scale2, inout2, id3, name3, type3, type_digits3, type_scale3, inout3, id4, 
name4, type4, type_digits4, type_scale4, inout4, id5, name5, type5, 
type_digits5, type_scale5, inout5, id6, name6, type6, type_digits6, 
type_scale6, inout6, id7, name7, type7, type_digits7, type_scale7, inout7, id8, 
name8, type8, type_digits8, type_scale8, inout8, id9, name9, type9, 
type_digits9, type_scale9, inout9, id10, name10, type10, type_digits10, 
type_scale10, inout10, id11, name11, type11, type_digits11, type_scale11, 
inout11, id12, name12, type12, type_digits12, type_scale12, inout12, id13, 
name13, type13, type_digits13, type_scale13, inout13, id14, name14, type14, 
type_digits14, type_scale14, inout14, id15, name15, type15, type_digits15, 
type_scale15, inout15, id16, name16, type16, type_digits16, type_scale16, 
inout16) as (select arg15.*, a16.id
 , a16.name, a16.type, a16.type_digits, a16.type_scale, a16.inout from arg15 
left outer join args a16 on a16.func_id = arg15.id and a16.number = 16),
-funcs as (select f.id, f.name, f.func, f.mod, f.language, ft.type, 
f.side_effect, f.varres, f.vararg, f.schema_id from sys.functions f left outer 
join (values ('function',1),('procedure',2),('aggregate',3),('filter 
function',4),('table function',5),('analytic function',6),('loader 
function',7)) as ft (type,id) on f.type = ft.id)
-select s.name, funcs.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(funcs.func, '--.*\n', 
'', ''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
funcs.mod, funcs.language, funcs.type, funcs.side_effect, funcs.varres, 
funcs.vararg, arg16.name0, arg16.type0, arg16.type_digits0, arg16.type_scale0, 
case arg16.inout0 when 1 then 'in' when 0 then 'out' else null end as inout0, 
arg16.name1, arg16.type1, arg16.type_digits1, arg16.type_scale1, case 
arg16.inout1 when 1 then 'in' when 0 then 'out' else null end as inout1, 
arg16.name2, arg16.type2, arg16.type_digits2, arg16.type_scale2, case 
arg16.inout2 when 1 then 'in' when 0 then 'out' else null end as inout2, 
arg16.name3, arg16.type3, arg16.type_digits3, arg16.type_scale3, case 
arg16.inout3 when 1 then 'in' when 0 then 'out' else null end as inout3, 
arg16.name4, arg16.type4, arg16.type_digits4, arg16.type_scale4, case 
arg16.inout4 when 1 then 'in' when 0 then 'out' else null end as inout4, 
arg16.name5,
  arg16.type5, arg16.type_digits5, arg16.type_scale5, case arg16.inout5 when 1 
then 'in' when 0 then 'out' else null end as inout5, arg16.name6, arg16.type6, 
arg16.type_digits6, arg16.type_scale6, case arg16.inout6 when 1 then 'in' when 
0 then 'out' else null end as inout6, arg16.name7, arg16.type7, 
arg16.type_digits7, arg16.type_scale7, case arg16.inout7 when 1 then 'in' when 
0 then 'out' else null end as inout7, arg16.name8, arg16.type8, 
arg16.type_digits8, arg16.type_scale8, case arg16.inout8 when 1 then 'in' when 
0 then 'out' else null end as inout8, arg16.name9, arg16.type9, 
arg16.type_digits9, arg16.type_scale9, case arg16.inout9 when 1 then 'in' when 
0 then 'out' else null end as inout9, arg16.name10, arg16.type10, 
arg16.type_digits10, arg16.type_scale10, case arg16.inout10 when 1 then 'in' 
when 0 then 'out' else null end as inout10, arg16.name11, arg16.type11, 
arg16.type_digits11, arg16.type_scale11, case arg16.inout11 when 1 then 'in' 
when 0 then 'out' else null end as inout
 11, arg16.name12, arg16.type12, arg16.type_digits12, arg16.type_scale12, case 
arg16.inout12 when 1 then 'in' when 0 then 'out' else null end as inout12, 
arg16.name13, arg16.type13, arg16.type_digits13, arg16.type_scale13, case 
arg16.inout13 when 1 then 'in' when 0 then 'out' else null end as inout13, 
arg16.name14, arg16.type14, arg16.type_digits14, arg16.type_scale14, case 
arg16.inout14 when 1 then 'in' when 0 then 'out' else null end as inout14, 
arg16.name15, arg16.type15, arg16.type_digits15, arg16.type_scale15, case 
arg16.inout15 when 1 then 'in' when 0 then 'out' else null end as inout15 from 
arg16, sys.schemas s, funcs where s.id = funcs.schema_id and funcs.id = 
arg16.id order by s.name, funcs.name, query, arg16.name0, arg16.type0, 
arg16.type_digits0, arg16.type_scale0, arg16.inout0, arg16.name1, arg16.type1, 
arg16.type_digits1, arg16.type_scale1, arg16.inout1, arg16.name2, arg16.type2, 
arg16.type_digits2, arg16.type_scale2, arg16.inout2, arg16.name3, arg16.type3, 
arg16.type_di
 gits3, arg16.type_scale3, arg16.inout3, arg16.name4, arg16.type4, 
arg16.type_digits4, arg16.type_scale4, arg16.inout4, arg16.name5, arg16.type5, 
arg16.type_digits5, arg16.type_scale5, arg16.inout5, arg16.name6, arg16.type6, 
arg16.type_digits6, arg16.type_scale6, arg16.inout6, arg16.name7, arg16.type7, 
arg16.type_digits7, arg16.type_scale7, arg16.inout7, arg16.name8, arg16.type8, 
arg16.type_digits8, arg16.type_scale8, arg16.inout8, arg16.name9, arg16.type9, 
arg16.type_digits9, arg16.type_scale9, arg16.inout9, arg16.name10, 
arg16.type10, arg16.type_digits10, arg16.type_scale10, arg16.inout10, 
arg16.name11, arg16.type11, arg16.type_digits11, arg16.type_scale11, 
arg16.inout11, arg16.name12, arg16.type12, arg16.type_digits12, 
arg16.type_scale12, arg16.inout12, arg16.name13, arg16.type13, 
arg16.type_digits13, arg16.type_scale13, arg16.inout13, arg16.name14, 
arg16.type14, arg16.type_digits14, arg16.type_scale14, arg16.inout14, 
arg16.name15, arg16.type15, arg16.type_digits15, arg16.type_sca
 le15, arg16.inout15;
+select s.name, f.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, '--.*\n', '', 
''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
f.mod, f.language, ft.type, 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 as inout3, a4.name as name4, a4.type as 
type4, a4.type_digits as type_digits4, a4.type_scale as type_scale4, case 
a4.inou
 t 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 name10, a10.type as type10, 
a10.type_digits as type_digits10, a10.type_scale as type_scale10, case 
a10.inout when 0 then 'o
 ut' 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 (values 
('fu
 nction', 1), ('procedure', 2), ('aggregate', 3), ('filter function', 4), 
('table function', 5), ('analytic function', 6), ('loader function', 7)) as ft 
(type, id) on f.type = ft.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 sys.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, ty
 pe_scale13, inout13, name14, type14, type_digits14, type_scale14, inout14, 
name15, type15, type_digits15, type_scale15, inout15;
 -- auths
 select name, grantor from sys.auths;
 -- db_user_info
@@ -1810,13 +1791,11 @@ drop function pcre_replace(string, strin
 % name,        name,   mod,    func # name
 % varchar,     varchar,        varchar,        varchar # type
 % 0,   0,      0,      0 # length
-#with
-#arg0 (id, id0, name0, type0, type_digits0, type_scale0, inout0) as (select 
f.id, a0.id, a0.name, a0.type, a0.type_digits, a0.type_scale, a0.inout from 
sys.functions f left outer join args a0 on a0.func_id = f.id and a0.number = 0),
-#arg1 (id, id0, name0, type0, type_digits0, type_scale0, inout0, id1, name1, 
type1, type_digits1, type_scale1, inout1) as (select arg0.*, a1.id, a1.name, 
a1.type, a1.type_digits, a1.type_scale, a1.inout from arg0 left outer join args 
a1 on a1.func_id = arg0.id and a1.number = 1),
-% sys.s,       .funcs, .L275,  .funcs, .funcs, .funcs, .funcs, .funcs, .funcs, 
.arg16, .arg16, .arg16, .arg16, .L311,  .arg16, .arg16, .arg16, .arg16, .L317,  
.arg16, .arg16, .arg16, .arg16, .L325,  .arg16, .arg16, .arg16, .arg16, .L333,  
.arg16, .arg16, .arg16, .arg16, .L341,  .arg16, .arg16, .arg16, .arg16, .L347,  
.arg16, .arg16, .arg16, .arg16, .L355,  .arg16, .arg16, .arg16, .arg16, .L363,  
.arg16, .arg16, .arg16, .arg16, .L371,  .arg16, .arg16, .arg16, .arg16, .L377,  
.arg16, .arg16, .arg16, .arg16, .L405,  .arg16, .arg16, .arg16, .arg16, .L413,  
.arg16, .arg16, .arg16, .arg16, .L421,  .arg16, .arg16, .arg16, .arg16, .L427,  
.arg16, .arg16, .arg16, .arg16, .L435,  .arg16, .arg16, .arg16, .arg16, .L443 # 
table_name
+#select s.name, f.name, 
replace(replace(pcre_replace(pcre_replace(pcre_replace(f.func, '--.*\n', '', 
''), '[ \t\n]+', ' ', 'm'), '^ ', '', ''), '( ', '('), ' )', ')') as query, 
f.mod, f.language, ft.type, 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 as inout3, a4.name as name4, a4.type as 
type4, a4.type_digits as type_digits4, a4.type_scale as type_scale4, case a4.ino
 ut 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 name10, 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 (values 
('f
 unction', 1), ('procedure', 2), ('aggregate', 3), ('filter function', 4), 
('table function', 5), ('analytic function', 6), ('loader function', 7)) as ft 
(type, id) on f.type = ft.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 sys.args a11 on a11.func_id = f.id and a11.number = 11 lef
 t 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, t
 ype_scale13, inout13, name14, type14, type_digits14, type_scale14, inout14, 
name15, type15, type_digits15, type_scale15, inout15;
+% .s,  .f,     .L6,    .f,     .f,     .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
 % name,        name,   query,  mod,    language,       type,   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,        varchar,        varchar,        int,    char,   
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,   35,     831,    9,      1,      17,     5,      5,      5,      11,     
14,     4,      1,      0,      16,     14,     5,      1,      0,      16,     
14,     3,      1,      0,      27,     12,     3,      1,      0,      12,     
7,      2,      1,      0,      10,     7,      2,      1,      0,      8,      
7,      2,      1,      0,      9,      6,      2,      1,      0,      10,     
6,      2,      1,      0,      8,      7,      2,      1,      0,      9,      
7,      2,      1,      0,      6,      7,      2,      1,      0,      8,      
6,      2,      1,      0,      6,      7,      1,      1,      0,      9,      
7,      1,      1,      0,      6,      7,      1,      1,      0 # length
+% 8,   35,     831,    9,      1,      17,     5,      5,      5,      11,     
14,     4,      1,      3,      16,     14,     5,      1,      3,      16,     
14,     3,      1,      3,      27,     12,     3,      1,      3,      12,     
7,      2,      1,      3,      10,     7,      2,      1,      3,      8,      
7,      2,      1,      3,      9,      6,      2,      1,      3,      10,     
6,      2,      1,      3,      8,      7,      2,      1,      3,      9,      
7,      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
 [ "bam",       "bam_drop_file",        "create procedure 
bam.bam_drop_file(file_id bigint, dbschema smallint) external name 
bam.bam_drop_file;",       "bam",  1,      "procedure",    true,   false,  
false,  "file_id",      "bigint",       64,     0,      "in",   "dbschema",     
"smallint",     16,     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    ]
 [ "bam",       "bam_export",   "create procedure bam.bam_export(output_path 
string) external name bam.bam_export;",    "bam",  1,      "procedure",    
true,   false,  false,  "output_path",  "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,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL    ]
 [ "bam",       "bam_flag",     "create function bam.bam_flag(flag smallint, 
name string) returns boolean external name bam.bam_flag;", "bam",  1,      
"function",     false,  false,  false,  "result",       "boolean",      1,      
0,      "out",  "flag", "smallint",     16,     0,      "in",   "name", "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,   NULL,   NULL,   NULL,   NULL,   NULL    ]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to