Changeset: 7d51b712842e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7d51b712842e
Added Files:
        sql/test/analytics/Tests/analytics14.sql
        sql/test/analytics/Tests/analytics14.stable.err
        sql/test/analytics/Tests/analytics14.stable.out
        sql/test/analytics/Tests/analytics15.sql
        sql/test/analytics/Tests/analytics15.stable.err
        sql/test/analytics/Tests/analytics15.stable.out
        sql/test/analytics/Tests/analytics16.sql
        sql/test/analytics/Tests/analytics16.stable.err
        sql/test/analytics/Tests/analytics16.stable.out
        sql/test/analytics/Tests/analytics17.sql
        sql/test/analytics/Tests/analytics17.stable.err
        sql/test/analytics/Tests/analytics17.stable.out
Removed Files:
        sql/backends/monet5/sql_aggr_bte.mal
        sql/backends/monet5/sql_aggr_dbl.mal
        sql/backends/monet5/sql_aggr_flt.mal
        sql/backends/monet5/sql_aggr_hge.mal
        sql/backends/monet5/sql_aggr_int.mal
        sql/backends/monet5/sql_aggr_lng.mal
        sql/backends/monet5/sql_aggr_sht.mal
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/mhelp.c
        gdk/gdk_aggr.c
        gdk/gdk_analytic.h
        gdk/gdk_analytic_func.c
        gdk/gdk_calc.h
        gdk/gdk_string.c
        monetdb5/modules/kernel/00_aggr_hge.mal
        monetdb5/modules/kernel/00_aggr_hge.mal.sh
        monetdb5/modules/kernel/aggr.c
        monetdb5/modules/kernel/aggr.mal
        monetdb5/modules/kernel/aggr.mal.sh
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/algebra.h
        monetdb5/modules/kernel/algebra.mal
        monetdb5/modules/mal/calc.c
        sql/backends/monet5/Makefile.ag
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_gencode.h
        sql/backends/monet5/sql_hge.mal
        sql/backends/monet5/sql_rank.c
        sql/backends/monet5/sql_rank.h
        sql/backends/monet5/sql_rank.mal
        sql/backends/monet5/sql_rank.mal.sh
        sql/backends/monet5/sql_rank_hge.mal
        sql/backends/monet5/sql_rank_hge.mal.sh
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/backends/monet5/sql_upgrades.c
        sql/benchmarks/tpcds/Tests/47.stable.out
        sql/benchmarks/tpcds/Tests/47.stable.out.int128
        sql/benchmarks/tpcds/Tests/53.stable.out
        sql/benchmarks/tpcds/Tests/53.stable.out.int128
        sql/benchmarks/tpcds/Tests/57.stable.out
        sql/benchmarks/tpcds/Tests/57.stable.out.int128
        sql/benchmarks/tpcds/Tests/63.stable.out
        sql/benchmarks/tpcds/Tests/63.stable.out.int128
        sql/benchmarks/tpcds/Tests/89.stable.out
        sql/benchmarks/tpcds/Tests/89.stable.out.int128
        sql/common/sql_types.c
        sql/common/sql_types.h
        sql/include/sql_catalog.h
        sql/scripts/39_analytics.sql
        sql/scripts/39_analytics_hge.sql
        sql/scripts/51_sys_schema_extension.sql
        sql/server/rel_dump.c
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_propagate.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_select.h
        sql/server/rel_sequence.c
        sql/server/rel_unnest.c
        sql/server/rel_updates.c
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/server/sql_semantic.c
        sql/storage/store.c
        sql/test/BugTracker-2010/Tests/sum_on_date_crash.Bug-2643.stable.err
        sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
        
sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err
        sql/test/BugTracker-2014/Tests/aggregates-intervals.Bug-3533.sql
        sql/test/BugTracker-2014/Tests/aggregates-intervals.Bug-3533.stable.err
        sql/test/BugTracker-2014/Tests/aggregates-intervals.Bug-3533.stable.out
        sql/test/BugTracker-2015/Tests/nil_cast.Bug-3787.stable.out
        sql/test/BugTracker-2016/Tests/isaUUID_function.Bug-3997.stable.err
        sql/test/BugTracker-2017/Tests/corr_coersion.Bug-6287.stable.out
        sql/test/Tests/comment-on.stable.err
        sql/test/analytics/Tests/All
        sql/test/analytics/Tests/analytics00.stable.out
        sql/test/analytics/Tests/analytics01.sql
        sql/test/analytics/Tests/analytics01.stable.err
        sql/test/analytics/Tests/analytics01.stable.out
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/group-concat/Tests/groupconcat05.sql
        sql/test/group-concat/Tests/groupconcat05.stable.out
        sql/test/pg_regress/Tests/interval.stable.out
        sql/test/pg_regress/Tests/interval.stable.out.int128
        sql/test/subquery/Tests/correlated.stable.err
        sql/test/subquery/Tests/correlated.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
Branch: default
Log Message:

Merged statistics-analytics into default


diffs (truncated from 19765 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
@@ -95,12 +95,13 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "avg",  "pattern aggr.avg(b:bat[:any_2]):dbl ", "CMDcalcavg;",  
"Gives the avg of all tail values"      ]
 [ "aggr",      "avg",  "pattern aggr.avg(b:bat[:any_2], scale:int):dbl ",      
"CMDcalcavg;",  "Gives the avg of all tail values"      ]
 [ "aggr",      "cardinality",  "command aggr.cardinality(b:bat[:any_2]):lng ", 
"ALGcard;",     "Return the cardinality of the BAT tail values."        ]
-[ "aggr",      "corr", "function aggr.corr(e1:bat[:bte], e2:bat[:bte]):dbl;",  
"",     ""      ]
-[ "aggr",      "corr", "function aggr.corr(e1:bat[:dbl], e2:bat[:dbl]):dbl;",  
"",     ""      ]
-[ "aggr",      "corr", "function aggr.corr(e1:bat[:flt], e2:bat[:flt]):dbl;",  
"",     ""      ]
-[ "aggr",      "corr", "function aggr.corr(e1:bat[:int], e2:bat[:int]):dbl;",  
"",     ""      ]
-[ "aggr",      "corr", "function aggr.corr(e1:bat[:lng], e2:bat[:lng]):dbl;",  
"",     ""      ]
-[ "aggr",      "corr", "function aggr.corr(e1:bat[:sht], e2:bat[:sht]):dbl;",  
"",     ""      ]
+[ "aggr",      "corr", "command aggr.corr(b1:bat[:bte], b2:bat[:bte], 
g:bat[:oid], e:bat[:any_1]):bat[:dbl] ", "AGGRcorr;",    "Correlation 
aggregate" ]
+[ "aggr",      "corr", "command aggr.corr(b1:bat[:dbl], b2:bat[:dbl], 
g:bat[:oid], e:bat[:any_1]):bat[:dbl] ", "AGGRcorr;",    "Correlation 
aggregate" ]
+[ "aggr",      "corr", "command aggr.corr(b1:bat[:flt], b2:bat[:flt], 
g:bat[:oid], e:bat[:any_1]):bat[:dbl] ", "AGGRcorr;",    "Correlation 
aggregate" ]
+[ "aggr",      "corr", "command aggr.corr(b1:bat[:int], b2:bat[:int], 
g:bat[:oid], e:bat[:any_1]):bat[:dbl] ", "AGGRcorr;",    "Correlation 
aggregate" ]
+[ "aggr",      "corr", "command aggr.corr(b1:bat[:lng], b2:bat[:lng], 
g:bat[:oid], e:bat[:any_1]):bat[:dbl] ", "AGGRcorr;",    "Correlation 
aggregate" ]
+[ "aggr",      "corr", "command aggr.corr(b1:bat[:sht], b2:bat[:sht], 
g:bat[:oid], e:bat[:any_1]):bat[:dbl] ", "AGGRcorr;",    "Correlation 
aggregate" ]
+[ "aggr",      "corr", "command aggr.corr(b1:bat[:any_2], b2:bat[:any_2]):dbl 
",       "ALGcorr;",     "Gives the correlation of all tail values"      ]
 [ "aggr",      "count",        "command aggr.count(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2], ignorenils:bit):bat[:lng] ",     "AGGRcount3;",  ""      ]
 [ "aggr",      "count",        "command aggr.count(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2]):bat[:lng] ",     "AGGRcount3nils;",      "Grouped count" ]
 [ "aggr",      "count",        "command aggr.count(b:bat[:any], 
cnd:bat[:oid]):lng ",  "ALGcountCND_bat;",     "Return the current size (in 
number of elements) in a BAT."     ]
@@ -110,12 +111,20 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "count_no_nil", "command aggr.count_no_nil(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2]):bat[:lng] ",      "AGGRcount3nonils;",    ""      ]
 [ "aggr",      "count_no_nil", "command aggr.count_no_nil(b:bat[:any_2], 
cnd:bat[:oid]):lng ", "ALGcountCND_no_nil;",  "Return the number of elements 
currently\n\tin a BAT ignoring BUNs with nil-tail"       ]
 [ "aggr",      "count_no_nil", "command aggr.count_no_nil(b:bat[:any_2]):lng 
",        "ALGcount_no_nil;",     "Return the number of elements 
currently\n\tin a BAT ignoring BUNs with nil-tail"       ]
-[ "aggr",      "covar",        "function aggr.covar(e1:bat[:bte], 
e2:bat[:bte]):dbl;", "",     ""      ]
-[ "aggr",      "covar",        "function aggr.covar(e1:bat[:dbl], 
e2:bat[:dbl]):dbl;", "",     ""      ]
-[ "aggr",      "covar",        "function aggr.covar(e1:bat[:flt], 
e2:bat[:flt]):dbl;", "",     ""      ]
-[ "aggr",      "covar",        "function aggr.covar(e1:bat[:int], 
e2:bat[:int]):dbl;", "",     ""      ]
-[ "aggr",      "covar",        "function aggr.covar(e1:bat[:lng], 
e2:bat[:lng]):dbl;", "",     ""      ]
-[ "aggr",      "covar",        "function aggr.covar(e1:bat[:sht], 
e2:bat[:sht]):dbl;", "",     ""      ]
+[ "aggr",      "covariance",   "command aggr.covariance(b1:bat[:bte], 
b2:bat[:bte], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",   "AGGRcovariance;",     
 "Covariance sample aggregate"   ]
+[ "aggr",      "covariance",   "command aggr.covariance(b1:bat[:dbl], 
b2:bat[:dbl], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",   "AGGRcovariance;",     
 "Covariance sample aggregate"   ]
+[ "aggr",      "covariance",   "command aggr.covariance(b1:bat[:flt], 
b2:bat[:flt], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",   "AGGRcovariance;",     
 "Covariance sample aggregate"   ]
+[ "aggr",      "covariance",   "command aggr.covariance(b1:bat[:int], 
b2:bat[:int], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",   "AGGRcovariance;",     
 "Covariance sample aggregate"   ]
+[ "aggr",      "covariance",   "command aggr.covariance(b1:bat[:lng], 
b2:bat[:lng], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",   "AGGRcovariance;",     
 "Covariance sample aggregate"   ]
+[ "aggr",      "covariance",   "command aggr.covariance(b1:bat[:sht], 
b2:bat[:sht], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",   "AGGRcovariance;",     
 "Covariance sample aggregate"   ]
+[ "aggr",      "covariance",   "command aggr.covariance(b1:bat[:any_2], 
b2:bat[:any_2]):dbl ", "ALGcovariance;",       "Gives the covariance of all 
tail values"       ]
+[ "aggr",      "covariancep",  "command aggr.covariancep(b1:bat[:bte], 
b2:bat[:bte], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",  "AGGRcovariancep;",     
"Covariance population aggregate"       ]
+[ "aggr",      "covariancep",  "command aggr.covariancep(b1:bat[:dbl], 
b2:bat[:dbl], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",  "AGGRcovariancep;",     
"Covariance population aggregate"       ]
+[ "aggr",      "covariancep",  "command aggr.covariancep(b1:bat[:flt], 
b2:bat[:flt], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",  "AGGRcovariancep;",     
"Covariance population aggregate"       ]
+[ "aggr",      "covariancep",  "command aggr.covariancep(b1:bat[:int], 
b2:bat[:int], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",  "AGGRcovariancep;",     
"Covariance population aggregate"       ]
+[ "aggr",      "covariancep",  "command aggr.covariancep(b1:bat[:lng], 
b2:bat[:lng], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",  "AGGRcovariancep;",     
"Covariance population aggregate"       ]
+[ "aggr",      "covariancep",  "command aggr.covariancep(b1:bat[:sht], 
b2:bat[:sht], g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",  "AGGRcovariancep;",     
"Covariance population aggregate"       ]
+[ "aggr",      "covariancep",  "command aggr.covariancep(b1:bat[:any_2], 
b2:bat[:any_2]):dbl ",        "ALGcovariancep;",      "Gives the covariance of 
all tail values"       ]
 [ "aggr",      "exist",        "command aggr.exist(b:bat[:any_2], h:any_1):bit 
",      "ALGexist;",    ""      ]
 [ "aggr",      "exist",        "command aggr.exist(b:bat[:any_2]):bit ",       
"SQLexist;",    ""      ]
 [ "aggr",      "exist",        "pattern aggr.exist(v:any_2):bit ",     
"SQLexist_val;",        ""      ]
@@ -291,20 +300,44 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit, scale:int) 
(X_0:bat[:dbl], X_1:bat[:lng]) ",      "AGGRsubavg2scand_dbl;",        "Grouped 
average aggregate with candidates list, also returns count"    ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:lng], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit, scale:int) 
(X_0:bat[:dbl], X_1:bat[:lng]) ",      "AGGRsubavg2scand_dbl;",        "Grouped 
average aggregate with candidates list, also returns count"    ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit, scale:int) 
(X_0:bat[:dbl], X_1:bat[:lng]) ",      "AGGRsubavg2scand_dbl;",        "Grouped 
average aggregate with candidates list, also returns count"    ]
-[ "aggr",      "subcorr",      "function aggr.subcorr(e1:bat[:bte], 
e2:bat[:bte], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",      "",     ""   
   ]
-[ "aggr",      "subcorr",      "function aggr.subcorr(e1:bat[:dbl], 
e2:bat[:dbl], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",      "",     ""   
   ]
-[ "aggr",      "subcorr",      "function aggr.subcorr(e1:bat[:flt], 
e2:bat[:flt], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",      "",     ""   
   ]
-[ "aggr",      "subcorr",      "function aggr.subcorr(e1:bat[:int], 
e2:bat[:int], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",      "",     ""   
   ]
-[ "aggr",      "subcorr",      "function aggr.subcorr(e1:bat[:lng], 
e2:bat[:lng], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",      "",     ""   
   ]
-[ "aggr",      "subcorr",      "function aggr.subcorr(e1:bat[:sht], 
e2:bat[:sht], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",      "",     ""   
   ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:bte], 
b2:bat[:bte], g:bat[:oid], e:bat[:any_1], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubcorr;", "Grouped correlation 
aggregate" ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:dbl], 
b2:bat[:dbl], g:bat[:oid], e:bat[:any_1], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubcorr;", "Grouped correlation 
aggregate" ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:flt], 
b2:bat[:flt], g:bat[:oid], e:bat[:any_1], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubcorr;", "Grouped correlation 
aggregate" ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:int], 
b2:bat[:int], g:bat[:oid], e:bat[:any_1], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubcorr;", "Grouped correlation 
aggregate" ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:lng], 
b2:bat[:lng], g:bat[:oid], e:bat[:any_1], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubcorr;", "Grouped correlation 
aggregate" ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:sht], 
b2:bat[:sht], g:bat[:oid], e:bat[:any_1], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubcorr;", "Grouped correlation 
aggregate" ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:bte], 
b2:bat[:bte], g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",      "AGGRsubcorrcand;",     "Grouped 
correlation aggregate with candidate list"     ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:dbl], 
b2:bat[:dbl], g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",      "AGGRsubcorrcand;",     "Grouped 
correlation aggregate with candidate list"     ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:flt], 
b2:bat[:flt], g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",      "AGGRsubcorrcand;",     "Grouped 
correlation aggregate with candidate list"     ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:int], 
b2:bat[:int], g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",      "AGGRsubcorrcand;",     "Grouped 
correlation aggregate with candidate list"     ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:lng], 
b2:bat[:lng], g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",      "AGGRsubcorrcand;",     "Grouped 
correlation aggregate with candidate list"     ]
+[ "aggr",      "subcorr",      "command aggr.subcorr(b1:bat[:sht], 
b2:bat[:sht], g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",      "AGGRsubcorrcand;",     "Grouped 
correlation aggregate with candidate list"     ]
 [ "aggr",      "subcount",     "command aggr.subcount(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:lng] ",   "AGGRsubcount;",      
  "Grouped count aggregate"       ]
 [ "aggr",      "subcount",     "command aggr.subcount(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:lng] ",      
"AGGRsubcountcand;",    "Grouped count aggregate with candidates list"  ]
-[ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:bte], 
e2:bat[:bte], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
-[ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:dbl], 
e2:bat[:dbl], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
-[ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:flt], 
e2:bat[:flt], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
-[ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:int], 
e2:bat[:int], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
-[ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:lng], 
e2:bat[:lng], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
-[ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:sht], 
e2:bat[:sht], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:bte], b2:bat[:bte], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     "AGGRsubcovariance;",   
"Grouped covariance sample aggregate"   ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:dbl], b2:bat[:dbl], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     "AGGRsubcovariance;",   
"Grouped covariance sample aggregate"   ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:flt], b2:bat[:flt], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     "AGGRsubcovariance;",   
"Grouped covariance sample aggregate"   ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:int], b2:bat[:int], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     "AGGRsubcovariance;",   
"Grouped covariance sample aggregate"   ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:lng], b2:bat[:lng], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     "AGGRsubcovariance;",   
"Grouped covariance sample aggregate"   ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:sht], b2:bat[:sht], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     "AGGRsubcovariance;",   
"Grouped covariance sample aggregate"   ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:bte], b2:bat[:bte], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",        
"AGGRsubcovariancecand;",       "Grouped covariance sample aggregate with 
candidate list"       ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:dbl], b2:bat[:dbl], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",        
"AGGRsubcovariancecand;",       "Grouped covariance sample aggregate with 
candidate list"       ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:flt], b2:bat[:flt], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",        
"AGGRsubcovariancecand;",       "Grouped covariance sample aggregate with 
candidate list"       ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:int], b2:bat[:int], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",        
"AGGRsubcovariancecand;",       "Grouped covariance sample aggregate with 
candidate list"       ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:lng], b2:bat[:lng], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",        
"AGGRsubcovariancecand;",       "Grouped covariance sample aggregate with 
candidate list"       ]
+[ "aggr",      "subcovariance",        "command 
aggr.subcovariance(b1:bat[:sht], b2:bat[:sht], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",        
"AGGRsubcovariancecand;",       "Grouped covariance sample aggregate with 
candidate list"       ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:bte], b2:bat[:bte], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",    "AGGRsubcovariancep;",  
"Grouped covariance population aggregate"       ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:dbl], b2:bat[:dbl], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",    "AGGRsubcovariancep;",  
"Grouped covariance population aggregate"       ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:flt], b2:bat[:flt], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",    "AGGRsubcovariancep;",  
"Grouped covariance population aggregate"       ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:int], b2:bat[:int], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",    "AGGRsubcovariancep;",  
"Grouped covariance population aggregate"       ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:lng], b2:bat[:lng], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",    "AGGRsubcovariancep;",  
"Grouped covariance population aggregate"       ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:sht], b2:bat[:sht], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:dbl] ",    "AGGRsubcovariancep;",  
"Grouped covariance population aggregate"       ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:bte], b2:bat[:bte], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",       
"AGGRsubcovariancepcand;",      "Grouped covariance population aggregate with 
candidate list"   ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:dbl], b2:bat[:dbl], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",       
"AGGRsubcovariancepcand;",      "Grouped covariance population aggregate with 
candidate list"   ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:flt], b2:bat[:flt], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",       
"AGGRsubcovariancepcand;",      "Grouped covariance population aggregate with 
candidate list"   ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:int], b2:bat[:int], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",       
"AGGRsubcovariancepcand;",      "Grouped covariance population aggregate with 
candidate list"   ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:lng], b2:bat[:lng], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",       
"AGGRsubcovariancepcand;",      "Grouped covariance population aggregate with 
candidate list"   ]
+[ "aggr",      "subcovariancep",       "command 
aggr.subcovariancep(b1:bat[:sht], b2:bat[:sht], g:bat[:oid], e:bat[:any_1], 
s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",       
"AGGRsubcovariancepcand;",      "Grouped covariance population aggregate with 
candidate list"   ]
 [ "aggr",      "subexist",     "command aggr.subexist(b:bat[:any_2], 
g:bat[:oid], e:bat[:oid], no_nil:bit):bat[:bit] ",        "SQLsubexist;", ""    
  ]
 [ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit):bat[:str] ",        "JSONsubjson;", 
"Grouped aggregation of values."        ]
 [ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:str], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit):bat[:str] ",        "JSONsubjson;", 
"Grouped aggregation of values."        ]
@@ -8537,7 +8570,61 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "avg",  "pattern batsql.avg(b:bat[:int], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLavg;",      "return the average of groups"  ]
 [ "batsql",    "avg",  "pattern batsql.avg(b:bat[:lng], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLavg;",      "return the average of groups"  ]
 [ "batsql",    "avg",  "pattern batsql.avg(b:bat[:sht], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLavg;",      "return the average of groups"  ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:bte], c:bat[:bte], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcorr;",     "return the 
correlation value of groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:bte], c:bte, s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:dbl], c:bat[:dbl], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcorr;",     "return the 
correlation value of groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:dbl], c:dbl, s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:flt], c:bat[:flt], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcorr;",     "return the 
correlation value of groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:flt], c:flt, s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:int], c:bat[:int], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcorr;",     "return the 
correlation value of groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:int], c:int, s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:lng], c:bat[:lng], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcorr;",     "return the 
correlation value of groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:lng], c:lng, s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:sht], c:bat[:sht], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcorr;",     "return the 
correlation value of groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bat[:sht], c:sht, s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:bte, c:bat[:bte], s:lng, 
e:lng):bat[:dbl] ",     "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:dbl, c:bat[:dbl], s:lng, 
e:lng):bat[:dbl] ",     "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:flt, c:bat[:flt], s:lng, 
e:lng):bat[:dbl] ",     "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:int, c:bat[:int], s:lng, 
e:lng):bat[:dbl] ",     "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:lng, c:bat[:lng], s:lng, 
e:lng):bat[:dbl] ",     "SQLcorr;",     "return the correlation value of 
groups"        ]
+[ "batsql",    "corr", "pattern batsql.corr(b:sht, c:bat[:sht], s:lng, 
e:lng):bat[:dbl] ",     "SQLcorr;",     "return the correlation value of 
groups"        ]
 [ "batsql",    "count",        "pattern batsql.count(b:bat[:any_1], 
ignils:bit, s:bat[:lng], e:bat[:lng]):bat[:lng] ", "SQLcount;",    "return 
count of groups"        ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:bte], 
c:bat[:bte], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",     "SQLcovar_samp;",       
"return the covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:bte], c:bte, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcovar_samp;",       "return the 
covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:dbl], 
c:bat[:dbl], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",     "SQLcovar_samp;",       
"return the covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:dbl], c:dbl, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcovar_samp;",       "return the 
covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:flt], 
c:bat[:flt], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",     "SQLcovar_samp;",       
"return the covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:flt], c:flt, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcovar_samp;",       "return the 
covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:int], 
c:bat[:int], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",     "SQLcovar_samp;",       
"return the covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:int], c:int, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcovar_samp;",       "return the 
covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:lng], 
c:bat[:lng], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",     "SQLcovar_samp;",       
"return the covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:lng], c:lng, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcovar_samp;",       "return the 
covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:sht], 
c:bat[:sht], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",     "SQLcovar_samp;",       
"return the covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bat[:sht], c:sht, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLcovar_samp;",       "return the 
covariance sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:bte, c:bat[:bte], 
s:lng, e:lng):bat[:dbl] ",       "SQLcovar_samp;",       "return the covariance 
sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:dbl, c:bat[:dbl], 
s:lng, e:lng):bat[:dbl] ",       "SQLcovar_samp;",       "return the covariance 
sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:flt, c:bat[:flt], 
s:lng, e:lng):bat[:dbl] ",       "SQLcovar_samp;",       "return the covariance 
sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:int, c:bat[:int], 
s:lng, e:lng):bat[:dbl] ",       "SQLcovar_samp;",       "return the covariance 
sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:lng, c:bat[:lng], 
s:lng, e:lng):bat[:dbl] ",       "SQLcovar_samp;",       "return the covariance 
sample value of groups"  ]
+[ "batsql",    "covariance",   "pattern batsql.covariance(b:sht, c:bat[:sht], 
s:lng, e:lng):bat[:dbl] ",       "SQLcovar_samp;",       "return the covariance 
sample value of groups"  ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:bte], 
c:bat[:bte], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLcovar_pop;",        
"return the covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:bte], c:bte, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",  "SQLcovar_pop;",        "return the 
covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:dbl], 
c:bat[:dbl], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLcovar_pop;",        
"return the covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:dbl], c:dbl, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",  "SQLcovar_pop;",        "return the 
covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:flt], 
c:bat[:flt], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLcovar_pop;",        
"return the covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:flt], c:flt, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",  "SQLcovar_pop;",        "return the 
covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:int], 
c:bat[:int], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLcovar_pop;",        
"return the covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:int], c:int, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",  "SQLcovar_pop;",        "return the 
covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:lng], 
c:bat[:lng], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLcovar_pop;",        
"return the covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:lng], c:lng, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",  "SQLcovar_pop;",        "return the 
covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:sht], 
c:bat[:sht], s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLcovar_pop;",        
"return the covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bat[:sht], c:sht, 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",  "SQLcovar_pop;",        "return the 
covariance population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:bte, c:bat[:bte], 
s:lng, e:lng):bat[:dbl] ",      "SQLcovar_pop;",        "return the covariance 
population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:dbl, c:bat[:dbl], 
s:lng, e:lng):bat[:dbl] ",      "SQLcovar_pop;",        "return the covariance 
population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:flt, c:bat[:flt], 
s:lng, e:lng):bat[:dbl] ",      "SQLcovar_pop;",        "return the covariance 
population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:int, c:bat[:int], 
s:lng, e:lng):bat[:dbl] ",      "SQLcovar_pop;",        "return the covariance 
population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:lng, c:bat[:lng], 
s:lng, e:lng):bat[:dbl] ",      "SQLcovar_pop;",        "return the covariance 
population value of groups"      ]
+[ "batsql",    "covariancep",  "pattern batsql.covariancep(b:sht, c:bat[:sht], 
s:lng, e:lng):bat[:dbl] ",      "SQLcovar_pop;",        "return the covariance 
population value of groups"      ]
 [ "batsql",    "cume_dist",    "pattern batsql.cume_dist(b:bat[:any_1], 
p:any_2, o:any_3):bat[:dbl] ", "SQLcume_dist;",        "return the accumulated 
distribution of the number of rows per group to the total number of partition 
rows"     ]
 [ "batsql",    "dec_round",    "command batsql.dec_round(v:bat[:bte], 
r:bte):bat[:bte] ",      "bte_bat_dec_round_wrap;",      "round off the value v 
to nearests multiple of r"       ]
 [ "batsql",    "dec_round",    "command batsql.dec_round(v:bat[:dbl], 
r:dbl):bat[:dbl] ",      "dbl_bat_dec_round_wrap;",      "round off the value v 
to nearests multiple of r"       ]
@@ -8554,6 +8641,10 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "get_value",    "pattern batsql.get_value(sname:bat[:str], 
sequence:bat[:str]):bat[:lng] ",     "mvc_bat_get_value;",   "return the 
current value of sequences" ]
 [ "batsql",    "get_value",    "pattern batsql.get_value(sname:bat[:str], 
sequence:str):bat[:lng] ",   "mvc_bat_get_value;",   "return the current value 
of the sequence"      ]
 [ "batsql",    "get_value",    "pattern batsql.get_value(sname:str, 
sequence:bat[:str]):bat[:lng] ",   "mvc_bat_get_value;",   "return the current 
value of sequences" ]
+[ "batsql",    "lag",  "pattern batsql.lag(b:any_1, l:any_2, d:bat[:any_1], 
p:any_3, o:any_4):bat[:any_1] ",   "SQLlag;",      "return the value in the 
previous 'l' row in the partition or 'd' if non existent"      ]
+[ "batsql",    "lag",  "pattern batsql.lag(b:any_1, l:bat[:any_2], d:any_1, 
p:any_3, o:any_4):bat[:any_1] ",   "SQLlag;",      "return the value in the 
previous 'l' row in the partition or 'd' if non existent"      ]
+[ "batsql",    "lag",  "pattern batsql.lag(b:any_1, l:bat[:any_2], 
d:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ",     "SQLlag;",      "return the 
value in the previous 'l' row in the partition or 'd' if non existent"      ]
+[ "batsql",    "lag",  "pattern batsql.lag(b:any_1, l:bat[:any_2], p:any_3, 
o:any_4):bat[:any_1] ",    "SQLlag;",      "return the value in the previous 
'l' row in the partition or NULL if non existent"     ]
 [ "batsql",    "lag",  "pattern batsql.lag(b:bat[:any_1], l:any_2, d:any_1, 
p:any_3, o:any_4):bat[:any_1] ",   "SQLlag;",      "return the value in the 
previous 'l' row in the partition or 'd' if non existent"      ]
 [ "batsql",    "lag",  "pattern batsql.lag(b:bat[:any_1], l:any_2, 
d:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ",     "SQLlag;",      "return the 
value in the previous 'l' row in the partition or 'd' if non existent"      ]
 [ "batsql",    "lag",  "pattern batsql.lag(b:bat[:any_1], l:any_2, p:any_3, 
o:any_4):bat[:any_1] ",    "SQLlag;",      "return the value in the previous 
'l' row in the partition or NULL if non existent"     ]
@@ -8562,6 +8653,10 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "lag",  "pattern batsql.lag(b:bat[:any_1], l:bat[:any_2], 
p:any_3, o:any_4):bat[:any_1] ",      "SQLlag;",      "return the value in the 
previous 'l' row in the partition or NULL if non existent"     ]
 [ "batsql",    "lag",  "pattern batsql.lag(b:bat[:any_1], p:any_3, 
o:any_4):bat[:any_1] ",     "SQLlag;",      "return the value in the previous 
row in the partition or NULL if non existent" ]
 [ "batsql",    "last_value",   "pattern batsql.last_value(b:bat[:any_1], 
s:bat[:lng], e:bat[:lng]):bat[:any_1] ",      "SQLlast_value;",       "return 
the last value of groups"       ]
+[ "batsql",    "lead", "pattern batsql.lead(b:any_1, l:any_2, d:bat[:any_1], 
p:any_3, o:any_4):bat[:any_1] ",  "SQLlead;",     "return the value in the next 
'l' row in the partition or 'd' if non existent"  ]
+[ "batsql",    "lead", "pattern batsql.lead(b:any_1, l:bat[:any_2], d:any_1, 
p:any_3, o:any_4):bat[:any_1] ",  "SQLlead;",     "return the value in the next 
'l' row in the partition or 'd' if non existent"  ]
+[ "batsql",    "lead", "pattern batsql.lead(b:any_1, l:bat[:any_2], 
d:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ",    "SQLlead;",     "return the 
value in the next 'l' row in the partition or 'd' if non existent"  ]
+[ "batsql",    "lead", "pattern batsql.lead(b:any_1, l:bat[:any_2], p:any_3, 
o:any_4):bat[:any_1] ",   "SQLlead;",     "return the value in the next 'l' row 
in the partition or NULL if non existent" ]
 [ "batsql",    "lead", "pattern batsql.lead(b:bat[:any_1], l:any_2, d:any_1, 
p:any_3, o:any_4):bat[:any_1] ",  "SQLlead;",     "return the value in the next 
'l' row in the partition or 'd' if non existent"  ]
 [ "batsql",    "lead", "pattern batsql.lead(b:bat[:any_1], l:any_2, 
d:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ",    "SQLlead;",     "return the 
value in the next 'l' row in the partition or 'd' if non existent"  ]
 [ "batsql",    "lead", "pattern batsql.lead(b:bat[:any_1], l:any_2, p:any_3, 
o:any_4):bat[:any_1] ",   "SQLlead;",     "return the value in the next 'l' row 
in the partition or NULL if non existent" ]
@@ -8574,8 +8669,10 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "next_value",   "pattern batsql.next_value(sname:bat[:str], 
sequence:bat[:str]):bat[:lng] ",    "mvc_bat_next_value;",  "return the next 
value of sequences"    ]
 [ "batsql",    "next_value",   "pattern batsql.next_value(sname:bat[:str], 
sequence:str):bat[:lng] ",  "mvc_bat_next_value;",  "return the next value of 
the sequence" ]
 [ "batsql",    "next_value",   "pattern batsql.next_value(sname:str, 
sequence:bat[:str]):bat[:lng] ",  "mvc_bat_next_value;",  "return the next 
value of sequences"    ]
+[ "batsql",    "nth_value",    "pattern batsql.nth_value(b:any_1, 
n:bat[:any_2], s:lng, e:lng):bat[:any_1] ",  "SQLnth_value;",        "return 
the nth value of each group"    ]
 [ "batsql",    "nth_value",    "pattern batsql.nth_value(b:bat[:any_1], 
n:any_2, s:bat[:lng], e:bat[:lng]):bat[:any_1] ",      "SQLnth_value;",        
"return the nth value of each group"    ]
 [ "batsql",    "nth_value",    "pattern batsql.nth_value(b:bat[:any_1], 
n:bat[:any_2], s:bat[:lng], e:bat[:lng]):bat[:any_1] ",        "SQLnth_value;", 
       "return the nth value of each group"    ]
+[ "batsql",    "ntile",        "pattern batsql.ntile(b:any_1, n:bat[:any_2], 
p:any_3, o:any_4):bat[:any_2] ",  "SQLntile;",    "return the groups divided as 
equally as possible"      ]
 [ "batsql",    "ntile",        "pattern batsql.ntile(b:bat[:any_1], n:any_2, 
p:any_3, o:any_4):bat[:any_2] ",  "SQLntile;",    "return the groups divided as 
equally as possible"      ]
 [ "batsql",    "ntile",        "pattern batsql.ntile(b:bat[:any_1], 
n:bat[:any_2], p:any_3, o:any_4):bat[:any_2] ",    "SQLntile;",    "return the 
groups divided as equally as possible"      ]
 [ "batsql",    "password",     "pattern 
batsql.password(user:bat[:str]):bat[:str] ",   "db_password_wrap;",    "Return 
password hash of user"  ]
@@ -8602,6 +8699,22 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "round",        "command batsql.round(v:bat[:lng], d:int, 
s:int, r:bte):bat[:lng] ",    "lng_bat_round_wrap;",  "round off the decimal 
v(d,s) to r digits behind the dot (if r < 0, before the dot)"    ]
 [ "batsql",    "round",        "command batsql.round(v:bat[:sht], d:int, 
s:int, r:bte):bat[:sht] ",    "sht_bat_round_wrap;",  "round off the decimal 
v(d,s) to r digits behind the dot (if r < 0, before the dot)"    ]
 [ "batsql",    "row_number",   "pattern batsql.row_number(b:bat[:any_1], 
p:any_2, o:any_3):bat[:int] ",        "SQLrow_number;",       "return the 
row_numer-ed groups"        ]
+[ "batsql",    "stdev",        "pattern batsql.stdev(b:bat[:bte], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ",       "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
+[ "batsql",    "stdev",        "pattern batsql.stdev(b:bat[:dbl], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ",       "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
+[ "batsql",    "stdev",        "pattern batsql.stdev(b:bat[:flt], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ",       "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
+[ "batsql",    "stdev",        "pattern batsql.stdev(b:bat[:int], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ",       "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
+[ "batsql",    "stdev",        "pattern batsql.stdev(b:bat[:lng], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ",       "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
+[ "batsql",    "stdev",        "pattern batsql.stdev(b:bat[:sht], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ",       "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
+[ "batsql",    "stdevp",       "pattern batsql.stdevp(b:bat[:bte], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",      "SQLstddev_pop;",       "return the 
standard deviation population of groups"    ]
+[ "batsql",    "stdevp",       "pattern batsql.stdevp(b:bat[:dbl], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",      "SQLstddev_pop;",       "return the 
standard deviation population of groups"    ]
+[ "batsql",    "stdevp",       "pattern batsql.stdevp(b:bat[:flt], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",      "SQLstddev_pop;",       "return the 
standard deviation population of groups"    ]
+[ "batsql",    "stdevp",       "pattern batsql.stdevp(b:bat[:int], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",      "SQLstddev_pop;",       "return the 
standard deviation population of groups"    ]
+[ "batsql",    "stdevp",       "pattern batsql.stdevp(b:bat[:lng], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",      "SQLstddev_pop;",       "return the 
standard deviation population of groups"    ]
+[ "batsql",    "stdevp",       "pattern batsql.stdevp(b:bat[:sht], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",      "SQLstddev_pop;",       "return the 
standard deviation population of groups"    ]
+[ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(b:bat[:str], s:bat[:lng], e:bat[:lng]):bat[:str] ",    
"SQLstrgroup_concat;",  "return the string concatenation of groups"     ]
+[ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(b:bat[:str], sep:bat[:str], s:bat[:lng], 
e:bat[:lng]):bat[:str] ",     "SQLstrgroup_concat;",  "return the string 
concatenation of groups with a custom separator"     ]
+[ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(b:bat[:str], sep:str, s:bat[:lng], 
e:bat[:lng]):bat[:str] ",   "SQLstrgroup_concat;",  "return the string 
concatenation of groups with a custom separator"     ]
+[ "batsql",    "str_group_concat",     "pattern batsql.str_group_concat(b:str, 
sep:bat[:str], s:lng, e:lng):bat[:str] ",       "SQLstrgroup_concat;",  "return 
the string concatenation of groups with a custom separator"     ]
 [ "batsql",    "sum",  "pattern batsql.sum(b:bat[:bte], s:bat[:lng], 
e:bat[:lng]):bat[:lng] ", "SQLsum;",      "return the sum of groups"      ]
 [ "batsql",    "sum",  "pattern batsql.sum(b:bat[:dbl], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLsum;",      "return the sum of groups"      ]
 [ "batsql",    "sum",  "pattern batsql.sum(b:bat[:flt], s:bat[:lng], 
e:bat[:lng]):bat[:dbl] ", "SQLsum;",      "return the sum of groups"      ]
@@ -8609,6 +8722,18 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "sum",  "pattern batsql.sum(b:bat[:int], s:bat[:lng], 
e:bat[:lng]):bat[:lng] ", "SQLsum;",      "return the sum of groups"      ]
 [ "batsql",    "sum",  "pattern batsql.sum(b:bat[:lng], s:bat[:lng], 
e:bat[:lng]):bat[:lng] ", "SQLsum;",      "return the sum of groups"      ]
 [ "batsql",    "sum",  "pattern batsql.sum(b:bat[:sht], s:bat[:lng], 
e:bat[:lng]):bat[:lng] ", "SQLsum;",      "return the sum of groups"      ]
+[ "batsql",    "variance",     "pattern batsql.variance(b:bat[:bte], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLvar_samp;", "return the variance 
sample of groups"  ]
+[ "batsql",    "variance",     "pattern batsql.variance(b:bat[:dbl], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLvar_samp;", "return the variance 
sample of groups"  ]
+[ "batsql",    "variance",     "pattern batsql.variance(b:bat[:flt], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLvar_samp;", "return the variance 
sample of groups"  ]
+[ "batsql",    "variance",     "pattern batsql.variance(b:bat[:int], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLvar_samp;", "return the variance 
sample of groups"  ]
+[ "batsql",    "variance",     "pattern batsql.variance(b:bat[:lng], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLvar_samp;", "return the variance 
sample of groups"  ]
+[ "batsql",    "variance",     "pattern batsql.variance(b:bat[:sht], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",    "SQLvar_samp;", "return the variance 
sample of groups"  ]
+[ "batsql",    "variancep",    "pattern batsql.variancep(b:bat[:bte], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLvar_pop;",  "return the variance 
population of groups"      ]
+[ "batsql",    "variancep",    "pattern batsql.variancep(b:bat[:dbl], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLvar_pop;",  "return the variance 
population of groups"      ]
+[ "batsql",    "variancep",    "pattern batsql.variancep(b:bat[:flt], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLvar_pop;",  "return the variance 
population of groups"      ]
+[ "batsql",    "variancep",    "pattern batsql.variancep(b:bat[:int], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLvar_pop;",  "return the variance 
population of groups"      ]
+[ "batsql",    "variancep",    "pattern batsql.variancep(b:bat[:lng], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLvar_pop;",  "return the variance 
population of groups"      ]
+[ "batsql",    "variancep",    "pattern batsql.variancep(b:bat[:sht], 
s:bat[:lng], e:bat[:lng]):bat[:dbl] ",   "SQLvar_pop;",  "return the variance 
population of groups"      ]
 [ "batsql",    "window_bound", "pattern batsql.window_bound(b:bat[:any_1], 
unit:int, bound:int, excl:int, limit:bat[:bte]):bat[:lng] ",        
"SQLwindow_bound;",     "computes window ranges for each row"   ]
 [ "batsql",    "window_bound", "pattern batsql.window_bound(b:bat[:any_1], 
unit:int, bound:int, excl:int, limit:bat[:dbl]):bat[:lng] ",        
"SQLwindow_bound;",     "computes window ranges for each row"   ]
 [ "batsql",    "window_bound", "pattern batsql.window_bound(b:bat[:any_1], 
unit:int, bound:int, excl:int, limit:bat[:flt]):bat[:lng] ",        
"SQLwindow_bound;",     "computes window ranges for each row"   ]
@@ -11250,7 +11375,25 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "copy_from",    "unsafe pattern sql.copy_from(t:ptr, sep:str, 
rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, 
best:int, fwf:str, onclient:int):bat[:any]... ",   "mvc_import_table_wrap;",    
   "Import a table from bstream s with the \n\tgiven tuple and seperators 
(sep/rsep)"      ]
 [ "sql",       "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], 
fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", ""      ]
 [ "sql",       "copy_rejects_clear",   "pattern sql.copy_rejects_clear():void 
",       "COPYrejects_clear;",   ""      ]
+[ "sql",       "corr", "pattern sql.corr(b:bte, c:bte, s:lng, e:lng):dbl ",    
"SQLcorr;",     "return the correlation value of groups"        ]
+[ "sql",       "corr", "pattern sql.corr(b:dbl, c:dbl, s:lng, e:lng):dbl ",    
"SQLcorr;",     "return the correlation value of groups"        ]
+[ "sql",       "corr", "pattern sql.corr(b:flt, c:flt, s:lng, e:lng):dbl ",    
"SQLcorr;",     "return the correlation value of groups"        ]
+[ "sql",       "corr", "pattern sql.corr(b:int, c:int, s:lng, e:lng):dbl ",    
"SQLcorr;",     "return the correlation value of groups"        ]
+[ "sql",       "corr", "pattern sql.corr(b:lng, c:lng, s:lng, e:lng):dbl ",    
"SQLcorr;",     "return the correlation value of groups"        ]
+[ "sql",       "corr", "pattern sql.corr(b:sht, c:sht, s:lng, e:lng):dbl ",    
"SQLcorr;",     "return the correlation value of groups"        ]
 [ "sql",       "count",        "pattern sql.count(b:any_1, ignils:bit, s:lng, 
e:lng):lng ",    "SQLcount;",    "return count of groups"        ]
+[ "sql",       "covariance",   "pattern sql.covariance(b:bte, c:bte, s:lng, 
e:lng):dbl ",      "SQLcovar_samp;",       "return the covariance sample value 
of groups"  ]
+[ "sql",       "covariance",   "pattern sql.covariance(b:dbl, c:dbl, s:lng, 
e:lng):dbl ",      "SQLcovar_samp;",       "return the covariance sample value 
of groups"  ]
+[ "sql",       "covariance",   "pattern sql.covariance(b:flt, c:flt, s:lng, 
e:lng):dbl ",      "SQLcovar_samp;",       "return the covariance sample value 
of groups"  ]
+[ "sql",       "covariance",   "pattern sql.covariance(b:int, c:int, s:lng, 
e:lng):dbl ",      "SQLcovar_samp;",       "return the covariance sample value 
of groups"  ]
+[ "sql",       "covariance",   "pattern sql.covariance(b:lng, c:lng, s:lng, 
e:lng):dbl ",      "SQLcovar_samp;",       "return the covariance sample value 
of groups"  ]
+[ "sql",       "covariance",   "pattern sql.covariance(b:sht, c:sht, s:lng, 
e:lng):dbl ",      "SQLcovar_samp;",       "return the covariance sample value 
of groups"  ]
+[ "sql",       "covariancep",  "pattern sql.covariancep(b:bte, c:bte, s:lng, 
e:lng):dbl ",     "SQLcovar_pop;",        "return the covariance population 
value of groups"      ]
+[ "sql",       "covariancep",  "pattern sql.covariancep(b:dbl, c:dbl, s:lng, 
e:lng):dbl ",     "SQLcovar_pop;",        "return the covariance population 
value of groups"      ]
+[ "sql",       "covariancep",  "pattern sql.covariancep(b:flt, c:flt, s:lng, 
e:lng):dbl ",     "SQLcovar_pop;",        "return the covariance population 
value of groups"      ]
+[ "sql",       "covariancep",  "pattern sql.covariancep(b:int, c:int, s:lng, 
e:lng):dbl ",     "SQLcovar_pop;",        "return the covariance population 
value of groups"      ]
+[ "sql",       "covariancep",  "pattern sql.covariancep(b:lng, c:lng, s:lng, 
e:lng):dbl ",     "SQLcovar_pop;",        "return the covariance population 
value of groups"      ]
+[ "sql",       "covariancep",  "pattern sql.covariancep(b:sht, c:sht, s:lng, 
e:lng):dbl ",     "SQLcovar_pop;",        "return the covariance population 
value of groups"      ]
 [ "sql",       "createorderindex",     "pattern sql.createorderindex(sch:str, 
tbl:str, col:str):void ",        "sql_createorderindex;",        "Instantiate 
the order index on a column"       ]
 [ "sql",       "cume_dist",    "pattern sql.cume_dist(b:any_1, p:bit, 
o:bit):dbl ",    "SQLcume_dist;",        "return the accumulated distribution 
of the number of rows per group to the total number of partition rows"     ]
 [ "sql",       "current_time", "pattern sql.current_time():daytime ",  
"SQLcurrent_daytime;",  "Get the clients current daytime"       ]
@@ -11307,19 +11450,11 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "importTable",  "unsafe pattern sql.importTable(sname:str, 
tname:str, onclient:int, fname:str...):bat[:any]... ",       
"mvc_bin_import_table_wrap;",   "Import a table from the files (fname)" ]
 [ "sql",       "include",      "pattern sql.include(fname:str):void ", 
"SQLinclude;",  "Compile and execute a sql statements on the file"      ]
 [ "sql",       "lag",  "pattern sql.lag(b:any_1, l:any_2, d:any_1, p:any_3, 
o:any_4):any_1 ",  "SQLlag;",      "return the value in the previous 'l' row in 
the partition or 'd' if non existent"      ]
-[ "sql",       "lag",  "pattern sql.lag(b:any_1, l:any_2, d:bat[:any_1], 
p:any_3, o:any_4):any_1 ",    "SQLlag;",      "return the value in the previous 
'l' row in the partition or 'd' if non existent"      ]
 [ "sql",       "lag",  "pattern sql.lag(b:any_1, l:any_2, p:any_3, 
o:any_4):any_1 ",   "SQLlag;",      "return the value in the previous 'l' row 
in the partition or NULL if non existent"     ]
-[ "sql",       "lag",  "pattern sql.lag(b:any_1, l:bat[:any_2], d:any_1, 
p:any_3, o:any_4):any_1 ",    "SQLlag;",      "return the value in the previous 
'l' row in the partition or 'd' if non existent"      ]
-[ "sql",       "lag",  "pattern sql.lag(b:any_1, l:bat[:any_2], d:bat[:any_1], 
p:any_3, o:any_4):any_1 ",      "SQLlag;",      "return the value in the 
previous 'l' row in the partition or 'd' if non existent"      ]
-[ "sql",       "lag",  "pattern sql.lag(b:any_1, l:bat[:any_2], p:any_3, 
o:any_4):any_1 ",     "SQLlag;",      "return the value in the previous 'l' row 
in the partition or NULL if non existent"     ]
 [ "sql",       "lag",  "pattern sql.lag(b:any_1, p:any_3, o:any_4):any_1 ",    
"SQLlag;",      "return the value in the previous row in the partition or NULL 
if non existent" ]
 [ "sql",       "last_value",   "pattern sql.last_value(b:any_1, s:lng, 
e:lng):any_1 ", "SQLlast_value;",       "return the last value of groups"       
]
 [ "sql",       "lead", "pattern sql.lead(b:any_1, l:any_2, d:any_1, p:any_3, 
o:any_4):any_1 ", "SQLlead;",     "return the value in the next 'l' row in the 
partition or 'd' if non existent"  ]
-[ "sql",       "lead", "pattern sql.lead(b:any_1, l:any_2, d:bat[:any_1], 
p:any_3, o:any_4):any_1 ",   "SQLlead;",     "return the value in the next 'l' 
row in the partition or 'd' if non existent"  ]
 [ "sql",       "lead", "pattern sql.lead(b:any_1, l:any_2, p:any_3, 
o:any_4):any_1 ",  "SQLlead;",     "return the value in the next 'l' row in the 
partition or NULL if non existent" ]
-[ "sql",       "lead", "pattern sql.lead(b:any_1, l:bat[:any_2], d:any_1, 
p:any_3, o:any_4):any_1 ",   "SQLlead;",     "return the value in the next 'l' 
row in the partition or 'd' if non existent"  ]
-[ "sql",       "lead", "pattern sql.lead(b:any_1, l:bat[:any_2], 
d:bat[:any_1], p:any_3, o:any_4):any_1 ",     "SQLlead;",     "return the value 
in the next 'l' row in the partition or 'd' if non existent"  ]
-[ "sql",       "lead", "pattern sql.lead(b:any_1, l:bat[:any_2], p:any_3, 
o:any_4):any_1 ",    "SQLlead;",     "return the value in the next 'l' row in 
the partition or NULL if non existent" ]
 [ "sql",       "lead", "pattern sql.lead(b:any_1, p:any_3, o:any_4):any_1 ",   
"SQLlead;",     "return the value in the next row in the partition or NULL if 
non existent"     ]
 [ "sql",       "logfile",      "unsafe pattern sql.logfile(filename:str):void 
",       "mvc_logfile;", "Enable/disable saving the sql statement traces"       
 ]
 [ "sql",       "max",  "pattern sql.max(b:any_1, s:lng, e:lng):any_1 ",        
"SQLmax;",      "return the maximum of groups"  ]
@@ -11330,9 +11465,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "next_value",   "pattern sql.next_value(sname:str, 
sequence:str):lng ", "mvc_next_value;",      "return the next value of the 
sequence" ]
 [ "sql",       "not_unique",   "command sql.not_unique(b:bat[:oid]):bit ",     
"not_unique;",  "check if the tail sorted bat b doesn't have unique tail 
values"        ]
 [ "sql",       "nth_value",    "pattern sql.nth_value(b:any_1, n:any_2, s:lng, 
e:lng):any_1 ", "SQLnth_value;",        "return the nth value of each group"    
]
-[ "sql",       "nth_value",    "pattern sql.nth_value(b:any_1, n:bat[:any_2], 
s:lng, e:lng):any_1 ",   "SQLnth_value;",        "return the nth value of each 
group"    ]
 [ "sql",       "ntile",        "pattern sql.ntile(b:any_1, n:any_2, p:any_3, 
o:any_4):any_2 ", "SQLntile;",    "return the groups divided as equally as 
possible"      ]
-[ "sql",       "ntile",        "pattern sql.ntile(b:any_1, n:bat[:any_2], 
p:any_3, o:any_4):any_2 ",   "SQLntile;",    "return the groups divided as 
equally as possible"      ]
 [ "sql",       "null", "command sql.null(b:bat[:any_1]):bit ", "SQLnil;",      
"if b has a nil return true, else false"        ]
 [ "sql",       "optimizer_updates",    "pattern sql.optimizer_updates():void 
",        "SQLoptimizersUpdate;", ""      ]
 [ "sql",       "optimizers",   "command sql.optimizers() (X_0:bat[:str], 
X_1:bat[:str], X_2:bat[:str]) ",      "getPipeCatalog;",      ""      ]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to