Changeset: e86a88e8d929 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e86a88e8d929
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        gdk/gdk.h
        gdk/gdk_align.c
        gdk/gdk_atoms.c
        gdk/gdk_atoms.h
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_cand.h
        gdk/gdk_firstn.c
        gdk/gdk_group.c
        gdk/gdk_project.c
        gdk/gdk_sample.c
        gdk/gdk_select.c
        gdk/gdk_unique.c
        monetdb5/extras/rapi/Tests/rapi08.malC
        monetdb5/mal/Tests/dataflow01.malC
        monetdb5/mal/Tests/tst023.malC
        monetdb5/mal/Tests/tst033.malC
        monetdb5/mal/Tests/tst034.malC
        monetdb5/mal/Tests/tst201.malC
        monetdb5/mal/Tests/tst220.malC
        monetdb5/mal/Tests/tst285.malC
        monetdb5/mal/Tests/tst903.malC
        monetdb5/mal/Tests/tst903.stable.out
        monetdb5/mal/Tests/tst911.malC
        monetdb5/mal/Tests/tst911.stable.out
        monetdb5/mal/Tests/tst912.malC
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_type.c
        monetdb5/modules/atoms/batxml.mal
        monetdb5/modules/atoms/json.mal
        monetdb5/modules/kernel/00_aggr_hge.mal
        monetdb5/modules/kernel/00_aggr_hge.mal.sh
        monetdb5/modules/kernel/Tests/select.malC
        monetdb5/modules/kernel/aggr.mal
        monetdb5/modules/kernel/aggr.mal.sh
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/algebra.mal
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/bat5.mal
        monetdb5/modules/kernel/group.mal
        monetdb5/modules/mal/00_batcalc_hge.mal
        monetdb5/modules/mal/00_batcalc_hge.mal.sh
        monetdb5/modules/mal/00_calc_hge.mal
        monetdb5/modules/mal/00_calc_hge.mal.sh
        monetdb5/modules/mal/01_batcalc.mal
        monetdb5/modules/mal/01_batcalc.mal.sh
        monetdb5/modules/mal/01_calc.mal
        monetdb5/modules/mal/01_calc.mal.sh
        monetdb5/modules/mal/Tests/inspect05.malC
        monetdb5/modules/mal/Tests/inspect05.stable.out
        monetdb5/modules/mal/Tests/inspect05.stable.out.int128
        monetdb5/modules/mal/Tests/mapi01.malC
        monetdb5/modules/mal/Tests/mapi07.malC
        monetdb5/modules/mal/Tests/orderidx01.malC
        monetdb5/modules/mal/Tests/orderidx02.malC
        monetdb5/modules/mal/Tests/remote04.malC
        monetdb5/modules/mal/batmtime.mal
        monetdb5/modules/mal/batmtime.mal.sh
        monetdb5/modules/mal/mat.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/pcre.mal
        monetdb5/optimizer/Tests/CXexample.malC
        monetdb5/optimizer/Tests/CXexample.stable.out
        monetdb5/optimizer/Tests/DCexample.malC
        monetdb5/optimizer/Tests/dataflow.malC
        monetdb5/optimizer/Tests/dataflow.stable.out
        monetdb5/optimizer/Tests/reorder00.malC
        monetdb5/optimizer/Tests/reorder00.stable.out
        monetdb5/optimizer/Tests/tst4000.malC
        monetdb5/optimizer/Tests/tst4000.stable.out
        monetdb5/optimizer/Tests/tst4003.malC
        monetdb5/optimizer/Tests/tst4003.stable.out
        monetdb5/optimizer/Tests/tst4030.malC
        monetdb5/optimizer/Tests/tst4030.stable.out
        monetdb5/optimizer/opt_jit.c
        monetdb5/optimizer/opt_matpack.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_projectionpath.c
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_wrapper.c
        sql/backends/monet5/LSST/lsst.c
        sql/backends/monet5/LSST/lsst.mal
        sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_upgrades.c
        sql/common/sql_types.c
        sql/server/rel_select.c
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/mergetables/Tests/mergequery.stable.out
        sql/test/remote/Tests/partition_elim.stable.out
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
        testing/malcheck.py
Branch: candidate-type
Log Message:

Implemented a new type cnd for candidate lists.
This type can only be used as a BAT type.


diffs (truncated from 173056 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
@@ -83,12 +83,12 @@ Ready.
 [ "aggr",      "corr", "function aggr.corr(e1:bat[:sht], e2:bat[:sht]):dbl;",  
"",     ""      ]
 [ "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."     ]
-[ "aggr",      "count",        "command aggr.count(b:bat[:any], cnd:bat[:oid], 
ignore_nils:bit):lng ", "ALGcountCND_nil;",     "Return the number of elements 
currently in a BAT ignores\n\t\tBUNs with nil-tail iff ignore_nils==TRUE."      
 ]
+[ "aggr",      "count",        "command aggr.count(b:bat[:any], 
s:bat[:cnd]):lng ",    "ALGcountCND_bat;",     "Return the current size (in 
number of elements) in a BAT."     ]
+[ "aggr",      "count",        "command aggr.count(b:bat[:any], s:bat[:cnd], 
ignore_nils:bit):lng ",   "ALGcountCND_nil;",     "Return the number of 
elements currently in a BAT ignores\n\t\tBUNs with nil-tail iff 
ignore_nils==TRUE."       ]
 [ "aggr",      "count",        "command aggr.count(b:bat[:any]):lng ", 
"ALGcount_bat;",        "Return the current size (in number of elements) in a 
BAT."     ]
 [ "aggr",      "count",        "command aggr.count(b:bat[:any], 
ignore_nils:bit):lng ",        "ALGcount_nil;",        "Return the number of 
elements currently in a BAT ignores\n\t\tBUNs with nil-tail iff 
ignore_nils==TRUE."       ]
 [ "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], 
s:bat[:cnd]):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;", "",     ""      ]
@@ -129,48 +129,48 @@ Ready.
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], nil_if_empty:bit):int 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], nil_if_empty:bit):lng 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], nil_if_empty:bit):sht 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid]):bte ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid]):int ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid]):sht ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid], 
nil_if_empty:bit):bte ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid], 
nil_if_empty:bit):int ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:oid], 
nil_if_empty:bit):sht ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd]):bte ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd]):int ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd]):sht ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd], 
nil_if_empty:bit):bte ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd], 
nil_if_empty:bit):int ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:bte], s:bat[:cnd], 
nil_if_empty:bit):sht ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:dbl]):dbl ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:dbl], nil_if_empty:bit):dbl 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:dbl], s:bat[:oid]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:dbl], s:bat[:oid], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:dbl], s:bat[:cnd]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:dbl], s:bat[:cnd], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt]):dbl ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt]):flt ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], nil_if_empty:bit):dbl 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], nil_if_empty:bit):flt 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:oid]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:oid]):flt ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:oid], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:oid], 
nil_if_empty:bit):flt ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:cnd]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:cnd]):flt ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:cnd], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:flt], s:bat[:cnd], 
nil_if_empty:bit):flt ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:int]):dbl ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:int]):int ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:int]):lng ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], nil_if_empty:bit):dbl 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], nil_if_empty:bit):int 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], nil_if_empty:bit):lng 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:oid]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:oid]):int ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:oid]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:oid], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:oid], 
nil_if_empty:bit):int ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:oid], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:cnd]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:cnd]):int ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:cnd]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:cnd], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:cnd], 
nil_if_empty:bit):int ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:int], s:bat[:cnd], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng]):dbl ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng]):lng ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], nil_if_empty:bit):dbl 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], nil_if_empty:bit):lng 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:oid]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:oid]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:oid], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:oid], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:cnd]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:cnd]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:cnd], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:lng], s:bat[:cnd], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht]):dbl ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht]):int ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht]):lng ",  "CMDBATprod;",  
"Calculate aggregate product of B."     ]
@@ -179,14 +179,14 @@ Ready.
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], nil_if_empty:bit):int 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], nil_if_empty:bit):lng 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], nil_if_empty:bit):sht 
",        "CMDBATprod;",  "Calculate aggregate product of B."     ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid]):int ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid]):sht ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):int ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
-[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):sht ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd]):dbl ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd]):int ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd]):lng ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd]):sht ",     
"CMDBATprod;",  "Calculate aggregate product of B with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd], 
nil_if_empty:bit):dbl ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd], 
nil_if_empty:bit):int ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
+[ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:cnd], 
nil_if_empty:bit):sht ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "quantile",     "command aggr.quantile(b:bat[:any_1], 
q:bat[:dbl]):any_1 ",     "AGGRquantile;",        "Quantile aggregate"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on bte"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on dbl"    ]
@@ -206,36 +206,36 @@ Ready.
 [ "aggr",      "str_group_concat",     "command 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], g:bat[:oid], 
e:bat[:any_1]):bat[:str] ",     "AGGRstr_group_concat_sep;",    "Grouped string 
tail concat with custom separator"      ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str]):str ",      "CMDBATstr_group_concat;",      
"Calculate aggregate string concatenate of B."  ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], nil_if_empty:bit):str ",    
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B."  
]
-[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], s:bat[:oid]):str ", 
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with candidate list."      ]
-[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], s:bat[:oid], nil_if_empty:bit):str ",       
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with candidate list."      ]
+[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], s:bat[:cnd]):str ", 
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with candidate list."      ]
+[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], s:bat[:cnd], nil_if_empty:bit):str ",       
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with candidate list."      ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str]):str ",       
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with separator SEP."       ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], nil_if_empty:bit):str ",     
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with separator SEP."       ]
-[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], s:bat[:oid]):str ",  
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with candidate list and separator SEP."    ]
-[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], s:bat[:oid], 
nil_if_empty:bit):str ",        "CMDBATstr_group_concat;",      "Calculate 
aggregate string concatenate of B with candidate list and separator SEP."    ]
+[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], s:bat[:cnd]):str ",  
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with candidate list and separator SEP."    ]
+[ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], s:bat[:cnd], 
nil_if_empty:bit):str ",        "CMDBATstr_group_concat;",      "Calculate 
aggregate string concatenate of B with candidate list and separator SEP."    ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:lng], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
-[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
-[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
-[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
-[ "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):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
-[ "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):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
-[ "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):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:lng], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubavg1cand_dbl;", "Grouped average aggregate with candidates list"       
 ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ",      "AGGRsubavg2_dbl;",     "Grouped average aggregate, also 
returns count" ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ",      "AGGRsubavg2_dbl;",     "Grouped average aggregate, also 
returns count" ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ",      "AGGRsubavg2_dbl;",     "Grouped average aggregate, also 
returns count" ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ",      "AGGRsubavg2_dbl;",     "Grouped average aggregate, also 
returns count" ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:lng], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ",      "AGGRsubavg2_dbl;",     "Grouped average aggregate, also 
returns count" ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ",      "AGGRsubavg2_dbl;",     "Grouped average aggregate, also 
returns count" ]
-[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_dbl;", "Grouped average aggregate with 
candidates list, also returns count"    ]
-[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_dbl;", "Grouped average aggregate with 
candidates list, also returns count"    ]
-[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_dbl;", "Grouped average aggregate with 
candidates list, also returns count"    ]
-[ "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) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_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) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_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) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_dbl;", "Grouped average aggregate with 
candidates list, also returns count"    ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_dbl;", "Grouped average aggregate with 
candidates list, also returns count"    ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_dbl;", "Grouped average aggregate with 
candidates list, also returns count"    ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_dbl;", "Grouped average aggregate with 
candidates list, also returns count"    ]
+[ "aggr",      "subavg",       "command aggr.subavg(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_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[:cnd], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_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[:cnd], skip_nils:bit, abort_on_error:bit) (X_0:bat[:dbl], 
X_1:bat[:lng]) ", "AGGRsubavg2cand_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];",      "",     ""   
   ]
@@ -243,7 +243,7 @@ Ready.
 [ "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",      "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",      "subcount",     "command aggr.subcount(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:cnd], 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];",     "",     ""    
  ]
@@ -252,18 +252,18 @@ Ready.
 [ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:sht], 
e2:bat[:sht], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
 [ "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."        ]
-[ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit):bat[:str] ",   
"JSONsubjsoncand;",     "Grouped aggregation of values with candidates list."   
]
-[ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:str], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit):bat[:str] ",   
"JSONsubjsoncand;",     "Grouped aggregation of values with candidates list."   
]
+[ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit):bat[:str] ",   
"JSONsubjsoncand;",     "Grouped aggregation of values with candidates list."   
]
+[ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:str], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit):bat[:str] ",   
"JSONsubjsoncand;",     "Grouped aggregation of values with candidates list."   
]
 [ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:oid] ",     "AGGRsubmax;",  
"Grouped maximum aggregate"     ]
 [ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ",   "AGGRsubmax_val;",  
    "Grouped maximum aggregate"     ]
-[ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:oid] ",        
"AGGRsubmaxcand;",      "Grouped maximum aggregate with candidates list"        
]
-[ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:any_1] ",      
"AGGRsubmaxcand_val;",  "Grouped maximum aggregate with candidates list"        
]
+[ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:cnd], skip_nils:bit):bat[:oid] ",        
"AGGRsubmaxcand;",      "Grouped maximum aggregate with candidates list"        
]
+[ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:cnd], skip_nils:bit):bat[:any_1] ",      
"AGGRsubmaxcand_val;",  "Grouped maximum aggregate with candidates list"        
]
 [ "aggr",      "submedian",    "command aggr.submedian(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ",        
"AGGRsubmedian;",       "Grouped median aggregate"      ]
-[ "aggr",      "submedian",    "command aggr.submedian(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:any_1] ",   
"AGGRsubmediancand;",   "Grouped median aggregate with candidate list"  ]
+[ "aggr",      "submedian",    "command aggr.submedian(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:cnd], skip_nils:bit):bat[:any_1] ",   
"AGGRsubmediancand;",   "Grouped median aggregate with candidate list"  ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:oid] ",     "AGGRsubmin;",  
"Grouped minimum aggregate"     ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ",   "AGGRsubmin_val;",  
    "Grouped minimum aggregate"     ]
-[ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:oid] ",        
"AGGRsubmincand;",      "Grouped minimum aggregate with candidates list"        
]
-[ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:any_1] ",      
"AGGRsubmincand_val;",  "Grouped minimum aggregate with candidates list"        
]
+[ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:cnd], skip_nils:bit):bat[:oid] ",        
"AGGRsubmincand;",      "Grouped minimum aggregate with candidates list"        
]
+[ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:cnd], skip_nils:bit):bat[:any_1] ",      
"AGGRsubmincand_val;",  "Grouped minimum aggregate with candidates list"        
]
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:bte] ",  
"AGGRsubprod_bte;",     "Grouped product aggregate"     ]
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",  
"AGGRsubprod_dbl;",     "Grouped product aggregate"     ]
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",  
"AGGRsubprod_dbl;",     "Grouped product aggregate"     ]
@@ -277,49 +277,49 @@ Ready.
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:lng] ",  
"AGGRsubprod_lng;",     "Grouped product aggregate"     ]
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:sht] ",  
"AGGRsubprod_sht;",     "Grouped product aggregate"     ]
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:sht] ",  
"AGGRsubprod_sht;",     "Grouped product aggregate"     ]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:bte] ",     
"AGGRsubprodcand_bte;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
"AGGRsubprodcand_dbl;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
"AGGRsubprodcand_dbl;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:flt] ",     
"AGGRsubprodcand_flt;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
"AGGRsubprodcand_int;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
"AGGRsubprodcand_int;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
"AGGRsubprodcand_int;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:lng], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
"AGGRsubprodcand_sht;", "Grouped product aggregate with candidates list"        
]
-[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
"AGGRsubprodcand_sht;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:bte] ",     
"AGGRsubprodcand_bte;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
"AGGRsubprodcand_dbl;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
"AGGRsubprodcand_dbl;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:flt] ",     
"AGGRsubprodcand_flt;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
"AGGRsubprodcand_int;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
"AGGRsubprodcand_int;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
"AGGRsubprodcand_int;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:lng], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
"AGGRsubprodcand_lng;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
"AGGRsubprodcand_sht;", "Grouped product aggregate with candidates list"        
]
+[ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
"AGGRsubprodcand_sht;", "Grouped product aggregate with candidates list"        
]
 [ "aggr",      "subquantile",  "command aggr.subquantile(b:bat[:any_1], 
q:bat[:dbl], g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ", 
"AGGRsubquantile;",     "Grouped quantile aggregate"    ]
-[ "aggr",      "subquantile",  "command aggr.subquantile(b:bat[:any_1], 
q:bat[:dbl], g:bat[:oid], e:bat[:any_2], s:bat[:oid], 
skip_nils:bit):bat[:any_1] ",    "AGGRsubquantilecand;", "Grouped quantile 
aggregate with candidate list"        ]
+[ "aggr",      "subquantile",  "command aggr.subquantile(b:bat[:any_1], 
q:bat[:dbl], g:bat[:oid], e:bat[:any_2], s:bat[:cnd], 
skip_nils:bit):bat[:any_1] ",    "AGGRsubquantilecand;", "Grouped quantile 
aggregate with candidate list"        ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:int], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:lng], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:sht], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
-[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
-[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
-[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
-[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:int], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
-[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:lng], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
-[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:sht], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
+[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
+[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
+[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
+[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:int], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
+[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:lng], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
+[ "aggr",      "substdev",     "command aggr.substdev(b:bat[:sht], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",    "AGGRsubstdevcand_dbl;",        "Grouped 
standard deviation (sample/non-biased) aggregate with candidates list" ]
 [ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
   "AGGRsubstdevp_dbl;",   "Grouped standard deviation (population/biased) 
aggregate"      ]
 [ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
   "AGGRsubstdevp_dbl;",   "Grouped standard deviation (population/biased) 
aggregate"      ]
 [ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
   "AGGRsubstdevp_dbl;",   "Grouped standard deviation (population/biased) 
aggregate"      ]
 [ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:int], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
   "AGGRsubstdevp_dbl;",   "Grouped standard deviation (population/biased) 
aggregate"      ]
 [ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:lng], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
   "AGGRsubstdevp_dbl;",   "Grouped standard deviation (population/biased) 
aggregate"      ]
 [ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:sht], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
   "AGGRsubstdevp_dbl;",   "Grouped standard deviation (population/biased) 
aggregate"      ]
-[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
-[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
-[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
-[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:int], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
-[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:lng], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
-[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:sht], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
+[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
+[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
+[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
+[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:int], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
+[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:lng], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
+[ "aggr",      "substdevp",    "command aggr.substdevp(b:bat[:sht], 
g:bat[:oid], e:bat[:any_1], s:bat[:cnd], skip_nils:bit, 
abort_on_error:bit):bat[:dbl] ",   "AGGRsubstdevpcand_dbl;",       "Grouped 
standard deviation (population/biased) aggregate with candidates list" ]
 [ "aggr",      "substr_group_concat",  "command 
aggr.substr_group_concat(b:bat[:str], g:bat[:oid], e:bat[:any_1], 
skip_nils:bit, abort_on_error:bit):bat[:str] ",      
"AGGRsubstr_group_concat;",     "Grouped string concat" ]
 [ "aggr",      "substr_group_concat",  "command 
aggr.substr_group_concat(b:bat[:str], sep:bat[:str], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:str] ",       
"AGGRsubstr_group_concat_sep;", "Grouped string concat with custom separator"   
]
-[ "aggr",      "substr_group_concat",  "command 
aggr.substr_group_concat(b:bat[:str], g:bat[:oid], e:bat[:any_1], s:bat[:oid], 
skip_nils:bit, abort_on_error:bit):bat[:str] ", "AGGRsubstr_group_concatcand;", 
"Grouped string concat with candidates list"    ]
-[ "aggr",      "substr_group_concat",  "command 
aggr.substr_group_concat(b:bat[:str], sep:bat[:str], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:str] ",  
"AGGRsubstr_group_concatcand_sep;",     "Grouped string concat with candidates 
list with custom separator"      ]
+[ "aggr",      "substr_group_concat",  "command 
aggr.substr_group_concat(b:bat[:str], g:bat[:oid], e:bat[:any_1], s:bat[:cnd], 
skip_nils:bit, abort_on_error:bit):bat[:str] ", "AGGRsubstr_group_concatcand;", 
"Grouped string concat with candidates list"    ]
+[ "aggr",      "substr_group_concat",  "command 
aggr.substr_group_concat(b:bat[:str], sep:bat[:str], g:bat[:oid], 
e:bat[:any_1], s:bat[:cnd], skip_nils:bit, abort_on_error:bit):bat[:str] ",  
"AGGRsubstr_group_concatcand_sep;",     "Grouped string concat with candidates 
list with custom separator"      ]
 [ "aggr",      "subsum",       "command aggr.subsum(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:bte] ",   
"AGGRsubsum_bte;",      "Grouped sum aggregate" ]
 [ "aggr",      "subsum",       "command aggr.subsum(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubsum_dbl;",      "Grouped sum aggregate" ]
 [ "aggr",      "subsum",       "command aggr.subsum(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubsum_dbl;",      "Grouped sum aggregate" ]
@@ -333,43 +333,43 @@ Ready.
 [ "aggr",      "subsum",       "command aggr.subsum(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:lng] ",   
"AGGRsubsum_lng;",      "Grouped sum aggregate" ]
 [ "aggr",      "subsum",       "command aggr.subsum(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:sht] ",   
"AGGRsubsum_sht;",      "Grouped sum aggregate" ]
 [ "aggr",      "subsum",       "command aggr.subsum(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:sht] ",   
"AGGRsubsum_sht;",      "Grouped sum aggregate" ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:bte] ",     
 "AGGRsubsumcand_bte;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubsumcand_dbl;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",     
 "AGGRsubsumcand_dbl;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:flt] ",     
 "AGGRsubsumcand_flt;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
 "AGGRsubsumcand_int;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
 "AGGRsubsumcand_int;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:int] ",     
 "AGGRsubsumcand_int;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
 "AGGRsubsumcand_lng;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:int], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
 "AGGRsubsumcand_lng;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:lng], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
 "AGGRsubsumcand_lng;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:lng] ",     
 "AGGRsubsumcand_lng;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
 "AGGRsubsumcand_sht;",  "Grouped sum aggregate with candidates list"    ]
-[ "aggr",      "subsum",       "command aggr.subsum(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
 "AGGRsubsumcand_sht;",  "Grouped sum aggregate with candidates list"    ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to