Changeset: f408e6e656bf for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f408e6e656bf
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/SQL-dump.stable.out
        clients/Tests/SQL-dump.stable.out.int128
        clients/Tests/exports.stable.out
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        monetdb5/optimizer/Tests/dataflow3.stable.out
        monetdb5/optimizer/opt_mosaic.c
        sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/leaks/Tests/check0.stable.out
        sql/test/leaks/Tests/check0.stable.out.int128
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check1.stable.out.int128
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check2.stable.out.int128
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check3.stable.out.int128
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check4.stable.out.int128
        sql/test/leaks/Tests/check5.stable.out
        sql/test/leaks/Tests/check5.stable.out.int128
        sql/test/leaks/Tests/drop3.stable.out
        sql/test/leaks/Tests/drop3.stable.out.int128
        sql/test/leaks/Tests/select1.stable.out.int128
        sql/test/leaks/Tests/select2.stable.out.int128
        sql/test/leaks/Tests/temp1.stable.out
        sql/test/leaks/Tests/temp1.stable.out.int128
        sql/test/leaks/Tests/temp2.stable.out
        sql/test/leaks/Tests/temp2.stable.out.int128
        sql/test/leaks/Tests/temp3.stable.out
        sql/test/leaks/Tests/temp3.stable.out.int128
        sql/test/remote/Tests/partition_elim.stable.out
Branch: mosaic
Log Message:

Approve output


diffs (truncated from 2503 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -60,7 +60,7 @@ Ready.
 % .,   .,      .,      .,      . # table_name
 % module,      function,       signature,      address,        comment # name
 % clob,        clob,   clob,   clob,   clob # type
-% 11,  28,     346,    44,     874 # length
+% 11,  28,     367,    44,     874 # length
 [ "aggr",      "avg",  "command 
aggr.avg(b:bat[:bte],g:bat[:oid],e:bat[:any_1]):bat[:dbl] ",   
"AGGRavg13_dbl;",       "Grouped tail average on bte"   ]
 [ "aggr",      "avg",  "command 
aggr.avg(b:bat[:dbl],g:bat[:oid],e:bat[:any_1]):bat[:dbl] ",   
"AGGRavg13_dbl;",       "Grouped tail average on dbl"   ]
 [ "aggr",      "avg",  "command 
aggr.avg(b:bat[:flt],g:bat[:oid],e:bat[:any_1]):bat[:dbl] ",   
"AGGRavg13_dbl;",       "Grouped tail average on flt"   ]
@@ -8034,6 +8034,81 @@ Ready.
 [ "mmath",     "tan",  "command mmath.tan(x:flt):flt ",        
"MATHunary_TANflt;",    ""      ]
 [ "mmath",     "tanh", "command mmath.tanh(x:dbl):dbl ",       
"MATHunary_TANHdbl;",   "The tanh() function returns the hyperbolic tangent of 
x, which is \n\tdefined mathematically as sinh(x) / cosh(x)."    ]
 [ "mmath",     "tanh", "command mmath.tanh(x:flt):flt ",       
"MATHunary_TANHflt;",   ""      ]
+[ "mosaic",    "analyse",      "pattern mosaic.analyse():void ",       
"MOSanalyse;",  "Apply heap compression on all" ]
+[ "mosaic",    "analyse",      "pattern mosaic.analyse(b:int):void ",  
"MOSanalyse;",  "Apply default heap compression on a specific column"   ]
+[ "mosaic",    "analyse",      "pattern mosaic.analyse(properties:str):void ", 
"MOSanalyse;",  "Apply heap compression on all with minimum threshold"  ]
+[ "mosaic",    "analyse",      "pattern 
mosaic.analyse(properties:str,b:int):void ",   "MOSanalyse;",  "Apply heap 
compression on a single column"     ]
+[ "mosaic",    "compress",     "pattern 
mosaic.compress(b:bat[:any_1]):bat[:any_1] ",  "MOScompress;", "Apply dynamic 
compression producing a temporary"       ]
+[ "mosaic",    "compress",     "pattern 
mosaic.compress(b:bat[:any_1],prop:str):bat[:any_1] ", "MOScompress;", "Apply 
dynamic compression over chunks" ]
+[ "mosaic",    "decompress",   "pattern 
mosaic.decompress(b:bat[:any_1]):bat[:any_1] ",        "MOSdecompress;",       
"Apply dynamic decompression over chunks producing a temporary version" ]
+[ "mosaic",    "decompressStorage",    "pattern 
mosaic.decompressStorage(b:bat[:any_1]):bat[:any_1] ", "MOSdecompressStorage;", 
       "Apply dynamic decompression, changing the storage layout permanently"  ]
+[ "mosaic",    "dump", "pattern mosaic.dump(b:bat[:any]):void ",       
"MOSdump;",     "Dump the compressed structure" ]
+[ "mosaic",    "optimize",     "pattern mosaic.optimize(bid:int):void ",       
"MOSoptimizer;",        "Perform a search thru the compression space using 
depth 1"     ]
+[ "mosaic",    "optimize",     "pattern mosaic.optimize(bid:int):void ",       
"MOSoptimizer;",        "Perform a search thru the compression space using up 
to 2^ply\ncandidate combinations" ]
+[ "mosaic",    "optimize",     "pattern mosaic.optimize(bid:int,blk:int):void 
",       "MOSoptimizer;",        "Perform a search thru the compression space 
using up to 2^ply\ncandidate combinations and blk*1000 blocksize limits"   ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:bit]):bat[:bit] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:bte]):bat[:bte] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:date]):bat[:date] ",   
"MOSprojection;",       "Overloaded projection operation"       ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:daytime]):bat[:daytime] ",     
"MOSprojection;",       "Overloaded projection operation"       ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:dbl]):bat[:dbl] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:flt]):bat[:flt] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:hge]):bat[:hge] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:int]):bat[:int] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:lng]):bat[:lng] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:oid]):bat[:oid] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:sht]):bat[:sht] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:str]):bat[:str] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:timestamp]):bat[:timestamp] ", 
"MOSprojection;",       "Overloaded projection operation"       ]
+[ "mosaic",    "slice",        "pattern mosaic.slice(bid:lng) 
(b0:bte,b1:bte,b2:bte,b3:bte,b4:bte,b5:bte,b6:bte,b7:bte) ",     "MOSslice;",   
 "Break column into verticalslices"      ]
+[ "mosaic",    "subjoin",      "pattern 
mosaic.subjoin(l:bat[:any_1],r:bat[:any_1],sl:bat[:oid],sr:bat[:oid],nil_matches:bit,estimate:lng)
 (X_0:bat[:oid],X_1:bat[:oid]) ",    "MOSsubjoin;",  "Overloaded join 
operation"     ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bit],cand:bat[:oid],low:bit,high:bit,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bit],low:bit,high:bit,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bte],cand:bat[:oid],low:bte,high:bte,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bte],low:bte,high:bte,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:date],cand:bat[:oid],low:date,high:date,li:bit,hi:bit,anti:bit):bat[:oid]
 ",   "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:date],low:date,high:date,li:bit,hi:bit,anti:bit):bat[:oid]
 ",  "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:daytime],cand:bat[:oid],low:daytime,high:daytime,li:bit,hi:bit,anti:bit):bat[:oid]
 ",  "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:daytime],low:daytime,high:daytime,li:bit,hi:bit,anti:bit):bat[:oid]
 ", "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:dbl],cand:bat[:oid],low:dbl,high:dbl,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:dbl],low:dbl,high:dbl,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:flt],cand:bat[:oid],low:flt,high:flt,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:flt],low:flt,high:flt,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:int],cand:bat[:oid],low:int,high:int,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:int],low:int,high:int,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:lng],cand:bat[:oid],low:lng,high:lng,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:lng],low:lng,high:lng,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:oid],cand:bat[:oid],low:oid,high:oid,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:oid],low:oid,high:oid,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:sht],cand:bat[:oid],low:sht,high:sht,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:sht],low:sht,high:sht,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:str],cand:bat[:oid],low:str,high:str,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:str],low:str,high:str,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:timestamp],cand:bat[:oid],low:timestamp,high:timestamp,li:bit,hi:bit,anti:bit):bat[:oid]
 ",    "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:timestamp],low:timestamp,high:timestamp,li:bit,hi:bit,anti:bit):bat[:oid]
 ",   "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bit],c:bat[:oid],low:bit,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bit],low:bit,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bte],c:bat[:oid],low:bte,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bte],low:bte,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:date],c:bat[:oid],low:date,oper:str):bat[:oid] ", 
"MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:date],low:date,oper:str):bat[:oid] ",     
"MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:daytime],c:bat[:oid],low:daytime,oper:str):bat[:oid]
 ",   "MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:daytime],low:daytime,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:dbl],c:bat[:oid],low:dbl,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:dbl],low:dbl,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:flt],c:bat[:oid],low:flt,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:flt],low:flt,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:int],c:bat[:oid],low:int,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:int],low:int,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:lng],c:bat[:oid],low:lng,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:lng],low:lng,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:oid],c:bat[:oid],low:oid,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:oid],low:oid,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:sht],c:bat[:oid],low:sht,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:sht],low:sht,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:str],c:bat[:oid],low:str,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:str],low:str,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:timestamp],c:bat[:oid],low:timestamp,oper:str):bat[:oid]
 ",       "MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:timestamp],low:timestamp,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   "Overloaded selection routine"  ]
 [ "mtime",     "add",  "command mtime.add(v:timestamp,msecs:lng):timestamp ",  
"MTIMEtimestamp_add;",  "returns the timestamp that comes 'msecs'\n\t(possibly 
negative) after 'value'."        ]
 [ "mtime",     "adddays",      "command 
mtime.adddays(value:date,days:int):date ",     "MTIMEdate_adddays;",   "returns 
the date after a number\n\tof days (possibly negative)."       ]
 [ "mtime",     "addmonths",    "command 
mtime.addmonths(value:date,months:int):date ", "MTIMEdate_addmonths;", "returns 
the date after a number of\n\tmonths (possibly negative)."     ]
@@ -8186,6 +8261,8 @@ Ready.
 [ "optimizer", "mergetable",   "pattern 
optimizer.mergetable(mod:str,fcn:str):str ",   "OPTwrapper;",  "Resolve the 
multi-table definitions"   ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis(mod:str,fcn:str):str 
",      "OPTwrapper;",  "Modify the plan to exploit parallel processing on 
multiple cores"      ]
+[ "optimizer", "mosaic",       "pattern optimizer.mosaic():str ",      
"OPTwrapper;",  ""      ]
+[ "optimizer", "mosaic",       "pattern optimizer.mosaic(mod:str,fcn:str):str 
",       "OPTwrapper;",  "Modify the plan to exploit compressed storage" ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex():void ",  
"OPTwrapper;",  "Compiler for multiplexed instructions."        ]
 [ "optimizer", "multiplex",    "pattern 
optimizer.multiplex(mod:str,fcn:str):void ",   "OPTwrapper;",  "Compiler for 
multiplexed instructions."        ]
 [ "optimizer", "optimize",     "pattern 
optimizer.optimize(mod:str,fcn:str):void ",    "QOToptimize;", "Optimize a 
specific operation" ]
@@ -8416,6 +8493,9 @@ Ready.
 [ "sql",       "include",      "pattern sql.include(fname:str):void ", 
"SQLinclude;",  "Compile and execute a sql statements on the file"      ]
 [ "sql",       "init", "pattern sql.init():void ",     "SQLinitEnvironment;",  
"Initialize the environment for MAL"    ]
 [ "sql",       "logfile",      "pattern sql.logfile(filename:str):void ",      
"mvc_logfile;", "Enable/disable saving the sql statement traces"        ]
+[ "sql",       "mosaicanalysis",       "pattern 
sql.mosaicanalysis(sch:str,tbl:str,col:str) 
(technique:bat[:str],outputsize:bat[:lng],factor:bat[:dbl],compress:bat[:lng],decompress:bat[:lng])
 ",     "sql_mosaicAnalysis;",  "Return a table with compression opportunities 
for the column"  ]
+[ "sql",       "mosaicanalysis",       "pattern 
sql.mosaicanalysis(sch:str,tbl:str,col:str,compression:str) 
(technique:bat[:str],outputsize:bat[:lng],factor:bat[:dbl],compress:bat[:lng],decompress:bat[:lng])
 ",     "sql_mosaicAnalysis;",  ""      ]
+[ "sql",       "mosaiclayout", "pattern 
sql.mosaiclayout(sch:str,tbl:str,col:str) 
(technique:bat[:str],count:bat[:lng],inputsize:bat[:lng],outputsize:bat[:lng],properties:bat[:str])
 ",       "sql_mosaicLayout;",    "Return a table with detailed compression 
information " ]
 [ "sql",       "ms_trunc",     "command sql.ms_trunc(v:dbl,r:int):dbl ",       
"dbl_trunc_wrap;",      "truncate the floating point v to r digits behind the 
dot (if r < 0, before the dot)"   ]
 [ "sql",       "ms_trunc",     "command sql.ms_trunc(v:flt,r:int):flt ",       
"flt_trunc_wrap;",      "truncate the floating point v to r digits behind the 
dot (if r < 0, before the dot)"   ]
 [ "sql",       "mvc",  "pattern sql.mvc():int ",       "SQLmvc;",      "Get 
the multiversion catalog context. \nNeeded for correct statement 
dependencies\n(ie sql.update, should be after sql.bind in concurrent 
execution)"  ]
@@ -8464,10 +8544,10 @@ Ready.
 [ "sql",       "sql_variables",        "pattern sql.sql_variables():bat[:str] 
",       "sql_variables;",       "return the table with session variables"      
 ]
 [ "sql",       "start",        "pattern sql.start():void ",    "SQLsession;",  
"Switch to processing SQL statements"   ]
 [ "sql",       "start2",       "pattern sql.start2():void ",   "SQLsession2;", 
"Switch to processing precompiled sql statements"       ]
-[ "sql",       "storage",      "pattern sql.storage() 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",        "sql_storage;", "return a table with storage information "      ]
-[ "sql",       "storage",      "pattern sql.storage(sname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",       "sql_storage;", "return a table with storage information for a 
particular schema "      ]
-[ "sql",       "storage",      "pattern sql.storage(sname:str,tname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",     "sql_storage;", "return a table with storage information for a 
particular table"        ]
-[ "sql",       "storage",      "pattern 
sql.storage(sname:str,tname:str,cname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",   "sql_storage;", "return a table with storage information for a particular 
column"       ]
+[ "sql",       "storage",      "pattern sql.storage() 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",   "sql_storage;", "return a table with storage information "      ]
+[ "sql",       "storage",      "pattern sql.storage(sname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",  "sql_storage;", "return a table with storage information for a particular 
schema "      ]
+[ "sql",       "storage",      "pattern sql.storage(sname:str,tname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",        "sql_storage;", "return a table with storage information for a 
particular table"        ]
+[ "sql",       "storage",      "pattern 
sql.storage(sname:str,tname:str,cname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",      "sql_storage;", "return a table with storage information for a 
particular column"       ]
 [ "sql",       "subdelta",     "command 
sql.subdelta(col:bat[:oid],cand:bat[:oid],uid:bat[:oid],uval:bat[:oid]):bat[:oid]
 ",   "DELTAsub2;",   "Return a single bat of subselected delta."     ]
 [ "sql",       "subdelta",     "command 
sql.subdelta(col:bat[:oid],cand:bat[:oid],uid:bat[:oid],uval:bat[:oid],ins:bat[:oid]):bat[:oid]
 ",     "DELTAsub;",    "Return a single bat of subselected delta."     ]
 [ "sql",       "subzero_or_one",       "inline function 
sql.subzero_or_one(b:bat[:any_1],gp:bat[:oid],gpe:bat[:oid],no_nil:bit):bat[:any_1];",
 "",     ""      ]
@@ -8646,10 +8726,8 @@ Ready.
 [ "url",       "url",  "command url.url(s:str):url ",  "URLnew;",      "Create 
an URL from a string literal"   ]
 [ "url",       "url",  "command url.url(s:url):url ",  "URLnoop;",     "Create 
an URL from a string literal"   ]
 [ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "main", "function user.main():void;",   "",     ""      ]
 [ "user",      "s2_1", "function user.s2_1():void;",   "",     ""      ]
+[ "user",      "sql.init",     "function user.sql.init():void;",       "",     
""      ]
 [ "uuid",      "#cmp", "command uuid.#cmp():void ",    "UUIDcompare;", ""      
]
 [ "uuid",      "#fromstr",     "command uuid.#fromstr():void ",        
"UUIDfromString;",      ""      ]
 [ "uuid",      "#hash",        "command uuid.#hash():void ",   "UUIDhash;",    
""      ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -64,7 +64,7 @@ Ready.
 % .,   .,      .,      .,      . # table_name
 % module,      function,       signature,      address,        comment # name
 % clob,        clob,   clob,   clob,   clob # type
-% 11,  28,     346,    44,     874 # length
+% 11,  28,     367,    44,     874 # length
 [ "aggr",      "avg",  "command 
aggr.avg(b:bat[:bte],g:bat[:oid],e:bat[:any_1]):bat[:dbl] ",   
"AGGRavg13_dbl;",       "Grouped tail average on bte"   ]
 [ "aggr",      "avg",  "command 
aggr.avg(b:bat[:dbl],g:bat[:oid],e:bat[:any_1]):bat[:dbl] ",   
"AGGRavg13_dbl;",       "Grouped tail average on dbl"   ]
 [ "aggr",      "avg",  "command 
aggr.avg(b:bat[:flt],g:bat[:oid],e:bat[:any_1]):bat[:dbl] ",   
"AGGRavg13_dbl;",       "Grouped tail average on flt"   ]
@@ -10401,6 +10401,81 @@ Ready.
 [ "mmath",     "tan",  "command mmath.tan(x:flt):flt ",        
"MATHunary_TANflt;",    ""      ]
 [ "mmath",     "tanh", "command mmath.tanh(x:dbl):dbl ",       
"MATHunary_TANHdbl;",   "The tanh() function returns the hyperbolic tangent of 
x, which is \n\tdefined mathematically as sinh(x) / cosh(x)."    ]
 [ "mmath",     "tanh", "command mmath.tanh(x:flt):flt ",       
"MATHunary_TANHflt;",   ""      ]
+[ "mosaic",    "analyse",      "pattern mosaic.analyse():void ",       
"MOSanalyse;",  "Apply heap compression on all" ]
+[ "mosaic",    "analyse",      "pattern mosaic.analyse(b:int):void ",  
"MOSanalyse;",  "Apply default heap compression on a specific column"   ]
+[ "mosaic",    "analyse",      "pattern mosaic.analyse(properties:str):void ", 
"MOSanalyse;",  "Apply heap compression on all with minimum threshold"  ]
+[ "mosaic",    "analyse",      "pattern 
mosaic.analyse(properties:str,b:int):void ",   "MOSanalyse;",  "Apply heap 
compression on a single column"     ]
+[ "mosaic",    "compress",     "pattern 
mosaic.compress(b:bat[:any_1]):bat[:any_1] ",  "MOScompress;", "Apply dynamic 
compression producing a temporary"       ]
+[ "mosaic",    "compress",     "pattern 
mosaic.compress(b:bat[:any_1],prop:str):bat[:any_1] ", "MOScompress;", "Apply 
dynamic compression over chunks" ]
+[ "mosaic",    "decompress",   "pattern 
mosaic.decompress(b:bat[:any_1]):bat[:any_1] ",        "MOSdecompress;",       
"Apply dynamic decompression over chunks producing a temporary version" ]
+[ "mosaic",    "decompressStorage",    "pattern 
mosaic.decompressStorage(b:bat[:any_1]):bat[:any_1] ", "MOSdecompressStorage;", 
       "Apply dynamic decompression, changing the storage layout permanently"  ]
+[ "mosaic",    "dump", "pattern mosaic.dump(b:bat[:any]):void ",       
"MOSdump;",     "Dump the compressed structure" ]
+[ "mosaic",    "optimize",     "pattern mosaic.optimize(bid:int):void ",       
"MOSoptimizer;",        "Perform a search thru the compression space using 
depth 1"     ]
+[ "mosaic",    "optimize",     "pattern mosaic.optimize(bid:int):void ",       
"MOSoptimizer;",        "Perform a search thru the compression space using up 
to 2^ply\ncandidate combinations" ]
+[ "mosaic",    "optimize",     "pattern mosaic.optimize(bid:int,blk:int):void 
",       "MOSoptimizer;",        "Perform a search thru the compression space 
using up to 2^ply\ncandidate combinations and blk*1000 blocksize limits"   ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:bit]):bat[:bit] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:bte]):bat[:bte] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:date]):bat[:date] ",   
"MOSprojection;",       "Overloaded projection operation"       ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:daytime]):bat[:daytime] ",     
"MOSprojection;",       "Overloaded projection operation"       ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:dbl]):bat[:dbl] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:flt]):bat[:flt] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:hge]):bat[:hge] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:int]):bat[:int] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:lng]):bat[:lng] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:oid]):bat[:oid] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:sht]):bat[:sht] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:str]):bat[:str] ",     
"MOSprojection;",       ""      ]
+[ "mosaic",    "projection",   "pattern 
mosaic.projection(b:bat[:oid],cand:bat[:timestamp]):bat[:timestamp] ", 
"MOSprojection;",       "Overloaded projection operation"       ]
+[ "mosaic",    "slice",        "pattern mosaic.slice(bid:lng) 
(b0:bte,b1:bte,b2:bte,b3:bte,b4:bte,b5:bte,b6:bte,b7:bte) ",     "MOSslice;",   
 "Break column into verticalslices"      ]
+[ "mosaic",    "subjoin",      "pattern 
mosaic.subjoin(l:bat[:any_1],r:bat[:any_1],sl:bat[:oid],sr:bat[:oid],nil_matches:bit,estimate:lng)
 (X_0:bat[:oid],X_1:bat[:oid]) ",    "MOSsubjoin;",  "Overloaded join 
operation"     ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bit],cand:bat[:oid],low:bit,high:bit,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bit],low:bit,high:bit,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bte],cand:bat[:oid],low:bte,high:bte,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:bte],low:bte,high:bte,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:date],cand:bat[:oid],low:date,high:date,li:bit,hi:bit,anti:bit):bat[:oid]
 ",   "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:date],low:date,high:date,li:bit,hi:bit,anti:bit):bat[:oid]
 ",  "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:daytime],cand:bat[:oid],low:daytime,high:daytime,li:bit,hi:bit,anti:bit):bat[:oid]
 ",  "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:daytime],low:daytime,high:daytime,li:bit,hi:bit,anti:bit):bat[:oid]
 ", "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:dbl],cand:bat[:oid],low:dbl,high:dbl,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:dbl],low:dbl,high:dbl,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:flt],cand:bat[:oid],low:flt,high:flt,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:flt],low:flt,high:flt,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:int],cand:bat[:oid],low:int,high:int,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:int],low:int,high:int,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:lng],cand:bat[:oid],low:lng,high:lng,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:lng],low:lng,high:lng,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:oid],cand:bat[:oid],low:oid,high:oid,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:oid],low:oid,high:oid,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:sht],cand:bat[:oid],low:sht,high:sht,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:sht],low:sht,high:sht,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:str],cand:bat[:oid],low:str,high:str,li:bit,hi:bit,anti:bit):bat[:oid]
 ",      "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:str],low:str,high:str,li:bit,hi:bit,anti:bit):bat[:oid] 
",     "MOSsubselect;",        ""      ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:timestamp],cand:bat[:oid],low:timestamp,high:timestamp,li:bit,hi:bit,anti:bit):bat[:oid]
 ",    "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "subselect",    "pattern 
mosaic.subselect(b:bat[:timestamp],low:timestamp,high:timestamp,li:bit,hi:bit,anti:bit):bat[:oid]
 ",   "MOSsubselect;",        "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bit],c:bat[:oid],low:bit,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bit],low:bit,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bte],c:bat[:oid],low:bte,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:bte],low:bte,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:date],c:bat[:oid],low:date,oper:str):bat[:oid] ", 
"MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:date],low:date,oper:str):bat[:oid] ",     
"MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:daytime],c:bat[:oid],low:daytime,oper:str):bat[:oid]
 ",   "MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:daytime],low:daytime,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:dbl],c:bat[:oid],low:dbl,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:dbl],low:dbl,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:flt],c:bat[:oid],low:flt,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:flt],low:flt,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:int],c:bat[:oid],low:int,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:int],low:int,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:lng],c:bat[:oid],low:lng,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:lng],low:lng,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:oid],c:bat[:oid],low:oid,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:oid],low:oid,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:sht],c:bat[:oid],low:sht,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:sht],low:sht,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:str],c:bat[:oid],low:str,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:str],low:str,oper:str):bat[:oid] ",       
"MOSthetasubselect;",   ""      ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:timestamp],c:bat[:oid],low:timestamp,oper:str):bat[:oid]
 ",       "MOSthetasubselect;",   "Overloaded selection routine"  ]
+[ "mosaic",    "thetasubselect",       "pattern 
mosaic.thetasubselect(b:bat[:timestamp],low:timestamp,oper:str):bat[:oid] ",   
"MOSthetasubselect;",   "Overloaded selection routine"  ]
 [ "mtime",     "add",  "command mtime.add(v:timestamp,msecs:lng):timestamp ",  
"MTIMEtimestamp_add;",  "returns the timestamp that comes 'msecs'\n\t(possibly 
negative) after 'value'."        ]
 [ "mtime",     "adddays",      "command 
mtime.adddays(value:date,days:int):date ",     "MTIMEdate_adddays;",   "returns 
the date after a number\n\tof days (possibly negative)."       ]
 [ "mtime",     "addmonths",    "command 
mtime.addmonths(value:date,months:int):date ", "MTIMEdate_addmonths;", "returns 
the date after a number of\n\tmonths (possibly negative)."     ]
@@ -10553,6 +10628,8 @@ Ready.
 [ "optimizer", "mergetable",   "pattern 
optimizer.mergetable(mod:str,fcn:str):str ",   "OPTwrapper;",  "Resolve the 
multi-table definitions"   ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis(mod:str,fcn:str):str 
",      "OPTwrapper;",  "Modify the plan to exploit parallel processing on 
multiple cores"      ]
+[ "optimizer", "mosaic",       "pattern optimizer.mosaic():str ",      
"OPTwrapper;",  ""      ]
+[ "optimizer", "mosaic",       "pattern optimizer.mosaic(mod:str,fcn:str):str 
",       "OPTwrapper;",  "Modify the plan to exploit compressed storage" ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex():void ",  
"OPTwrapper;",  "Compiler for multiplexed instructions."        ]
 [ "optimizer", "multiplex",    "pattern 
optimizer.multiplex(mod:str,fcn:str):void ",   "OPTwrapper;",  "Compiler for 
multiplexed instructions."        ]
 [ "optimizer", "optimize",     "pattern 
optimizer.optimize(mod:str,fcn:str):void ",    "QOToptimize;", "Optimize a 
specific operation" ]
@@ -10784,6 +10861,9 @@ Ready.
 [ "sql",       "include",      "pattern sql.include(fname:str):void ", 
"SQLinclude;",  "Compile and execute a sql statements on the file"      ]
 [ "sql",       "init", "pattern sql.init():void ",     "SQLinitEnvironment;",  
"Initialize the environment for MAL"    ]
 [ "sql",       "logfile",      "pattern sql.logfile(filename:str):void ",      
"mvc_logfile;", "Enable/disable saving the sql statement traces"        ]
+[ "sql",       "mosaicanalysis",       "pattern 
sql.mosaicanalysis(sch:str,tbl:str,col:str) 
(technique:bat[:str],outputsize:bat[:lng],factor:bat[:dbl],compress:bat[:lng],decompress:bat[:lng])
 ",     "sql_mosaicAnalysis;",  "Return a table with compression opportunities 
for the column"  ]
+[ "sql",       "mosaicanalysis",       "pattern 
sql.mosaicanalysis(sch:str,tbl:str,col:str,compression:str) 
(technique:bat[:str],outputsize:bat[:lng],factor:bat[:dbl],compress:bat[:lng],decompress:bat[:lng])
 ",     "sql_mosaicAnalysis;",  ""      ]
+[ "sql",       "mosaiclayout", "pattern 
sql.mosaiclayout(sch:str,tbl:str,col:str) 
(technique:bat[:str],count:bat[:lng],inputsize:bat[:lng],outputsize:bat[:lng],properties:bat[:str])
 ",       "sql_mosaicLayout;",    "Return a table with detailed compression 
information " ]
 [ "sql",       "ms_trunc",     "command sql.ms_trunc(v:dbl,r:int):dbl ",       
"dbl_trunc_wrap;",      "truncate the floating point v to r digits behind the 
dot (if r < 0, before the dot)"   ]
 [ "sql",       "ms_trunc",     "command sql.ms_trunc(v:flt,r:int):flt ",       
"flt_trunc_wrap;",      "truncate the floating point v to r digits behind the 
dot (if r < 0, before the dot)"   ]
 [ "sql",       "mvc",  "pattern sql.mvc():int ",       "SQLmvc;",      "Get 
the multiversion catalog context. \nNeeded for correct statement 
dependencies\n(ie sql.update, should be after sql.bind in concurrent 
execution)"  ]
@@ -10833,10 +10913,10 @@ Ready.
 [ "sql",       "sql_variables",        "pattern sql.sql_variables():bat[:str] 
",       "sql_variables;",       "return the table with session variables"      
 ]
 [ "sql",       "start",        "pattern sql.start():void ",    "SQLsession;",  
"Switch to processing SQL statements"   ]
 [ "sql",       "start2",       "pattern sql.start2():void ",   "SQLsession2;", 
"Switch to processing precompiled sql statements"       ]
-[ "sql",       "storage",      "pattern sql.storage() 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",        "sql_storage;", "return a table with storage information "      ]
-[ "sql",       "storage",      "pattern sql.storage(sname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",       "sql_storage;", "return a table with storage information for a 
particular schema "      ]
-[ "sql",       "storage",      "pattern sql.storage(sname:str,tname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",     "sql_storage;", "return a table with storage information for a 
particular table"        ]
-[ "sql",       "storage",      "pattern 
sql.storage(sname:str,tname:str,cname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng])
 ",   "sql_storage;", "return a table with storage information for a particular 
column"       ]
+[ "sql",       "storage",      "pattern sql.storage() 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",   "sql_storage;", "return a table with storage information "      ]
+[ "sql",       "storage",      "pattern sql.storage(sname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",  "sql_storage;", "return a table with storage information for a particular 
schema "      ]
+[ "sql",       "storage",      "pattern sql.storage(sname:str,tname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",        "sql_storage;", "return a table with storage information for a 
particular table"        ]
+[ "sql",       "storage",      "pattern 
sql.storage(sname:str,tname:str,cname:str) 
(schema:bat[:str],table:bat[:str],column:bat[:str],type:bat[:str],mode:bat[:str],location:bat[:str],count:bat[:lng],atomwidth:bat[:int],columnsize:bat[:lng],heap:bat[:lng],hashes:bat[:lng],phash:bat[:bit],imprints:bat[:lng],sorted:bat[:bit],revsorted:bat[:bit],key:bat[:bit],orderidx:bat[:lng],compressed:bat[:bit])
 ",      "sql_storage;", "return a table with storage information for a 
particular column"       ]
 [ "sql",       "subdelta",     "command 
sql.subdelta(col:bat[:oid],cand:bat[:oid],uid:bat[:oid],uval:bat[:oid]):bat[:oid]
 ",   "DELTAsub2;",   "Return a single bat of subselected delta."     ]
 [ "sql",       "subdelta",     "command 
sql.subdelta(col:bat[:oid],cand:bat[:oid],uid:bat[:oid],uval:bat[:oid],ins:bat[:oid]):bat[:oid]
 ",     "DELTAsub;",    "Return a single bat of subselected delta."     ]
 [ "sql",       "subzero_or_one",       "inline function 
sql.subzero_or_one(b:bat[:any_1],gp:bat[:oid],gpe:bat[:oid],no_nil:bit):bat[:any_1];",
 "",     ""      ]
@@ -11016,10 +11096,8 @@ Ready.
 [ "url",       "url",  "command url.url(s:str):url ",  "URLnew;",      "Create 
an URL from a string literal"   ]
 [ "url",       "url",  "command url.url(s:url):url ",  "URLnoop;",     "Create 
an URL from a string literal"   ]
 [ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "main", "function user.main():void;",   "",     ""      ]
-[ "user",      "main", "function user.main():void;",   "",     ""      ]
 [ "user",      "s2_1", "function user.s2_1():void;",   "",     ""      ]
+[ "user",      "sql.init",     "function user.sql.init():void;",       "",     
""      ]
 [ "uuid",      "#cmp", "command uuid.#cmp():void ",    "UUIDcompare;", ""      
]
 [ "uuid",      "#fromstr",     "command uuid.#fromstr():void ",        
"UUIDfromString;",      ""      ]
 [ "uuid",      "#hash",        "command uuid.#hash():void ",   "UUIDhash;",    
""      ]
diff --git a/clients/Tests/SQL-dump.stable.out 
b/clients/Tests/SQL-dump.stable.out
--- a/clients/Tests/SQL-dump.stable.out
+++ b/clients/Tests/SQL-dump.stable.out
@@ -211,6 +211,8 @@ Ready.
 \dSf sys."mbr"
 \dSf sys."md5"
 \dSf sys."median"
+\dSf sys."mosaic_analysis"
+\dSf sys."mosaic_layout"
 \dSf sys."ms_round"
 \dSf sys."ms_str"
 \dSf sys."ms_stuff"
@@ -580,6 +582,8 @@ SYSTEM FUNCTION  sys.min
 SYSTEM FUNCTION  sys.minute
 SYSTEM FUNCTION  sys.mod
 SYSTEM FUNCTION  sys.month
+SYSTEM FUNCTION  sys.mosaic_analysis
+SYSTEM FUNCTION  sys.mosaic_layout
 SYSTEM FUNCTION  sys.ms_round
 SYSTEM FUNCTION  sys.ms_str
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to