Changeset: 7b74b87164c6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7b74b87164c6
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_subquery.c
        sql/backends/monet5/sql_subquery.h
        sql/backends/monet5/sql_subquery.mal
        sql/common/sql_types.c
Branch: default
Log Message:

Added bulk implementation for SQLany_cmp and SQLall_cmp. Also changed MAL 
module of sql.zero_or_one, sql.all and sql.null to aggr, because in fact they 
are aggregates and we don't wanna confuse MAL optimizers


diffs (truncated from 724 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
@@ -65,6 +65,7 @@ stdout of test 'MAL-signatures` in direc
 % module,      function,       signature,      address,        comment # name
 % clob,        clob,   clob,   clob,   clob # type
 % 12,  28,     313,    42,     0 # length
+[ "aggr",      "all",  "command aggr.all(X_1:bat[:any_1]):any_1 ",     
"SQLall;",      ""      ]
 [ "aggr",      "allnotequal",  "command aggr.allnotequal(X_1:bat[:any_1], 
X_2:bat[:any_1]):bit ",      "SQLallnotequal;",      ""      ]
 [ "aggr",      "anyequal",     "pattern aggr.anyequal(X_1:any_1, 
X_2:any_1):bit ",     "CMDvarEQ;",    ""      ]
 [ "aggr",      "anyequal",     "command aggr.anyequal(X_1:bat[:any_1], 
X_2:bat[:any_1]):bit ", "SQLanyequal;", ""      ]
@@ -139,6 +140,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "min",  "command aggr.min(X_1:bat[:any_2], X_2:bit):any_2 ",    
"ALGminany_skipnil;",   ""      ]
 [ "aggr",      "not_anyequal", "pattern aggr.not_anyequal(X_1:any_1, 
X_2:any_1):bit ", "CMDvarNE;",    ""      ]
 [ "aggr",      "not_exist",    "pattern aggr.not_exist(X_1:any_1):bit ",       
"SQLnot_exist;",        ""      ]
+[ "aggr",      "null", "command aggr.null(X_1:bat[:any_1]):bit ",      
"SQLnil;",      ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:bte] ",  "AGGRprod3_bte;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:flt], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
@@ -246,6 +248,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bit):str 
",     "CMDBATstr_group_concat;",      ""      ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(X_1:bat[:str], X_2:bat[:str], X_3:bit):str ",    
"CMDBATstr_group_concat;",      ""      ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(X_1:bat[:str], X_2:bit):str ",   
"CMDBATstr_group_concat;",      ""      ]
+[ "aggr",      "suball",       "pattern aggr.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:any_1] ",      
"SQLall_grp;",  ""      ]
+[ "aggr",      "suball",       "pattern aggr.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:any_1] ",     "SQLall_grp;",  ""    
  ]
 [ "aggr",      "suballnotequal",       "pattern 
aggr.suballnotequal(X_1:bat[:any_1], X_2:bat[:any_1], X_3:bat[:oid], 
X_4:bat[:oid], X_5:bat[:oid], X_6:bat[:oid], X_7:bit):bat[:bit] ",        
"SQLallnotequal_grp2;", ""      ]
 [ "aggr",      "suballnotequal",       "pattern 
aggr.suballnotequal(X_1:bat[:any_1], X_2:bat[:any_1], X_3:bat[:oid], 
X_4:bat[:oid], X_5:bat[:oid], X_6:bit):bat[:bit] ",       
"SQLallnotequal_grp2;", ""      ]
 [ "aggr",      "suballnotequal",       "pattern 
aggr.suballnotequal(X_1:bat[:any_1], X_2:bat[:any_1], X_3:bat[:oid], 
X_4:bat[:oid], X_5:bat[:oid], X_6:bit):bat[:bit] ",       
"SQLallnotequal_grp;",  ""      ]
@@ -360,6 +364,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "submin",       "command aggr.submin(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:any_2], X_4:bat[:oid], X_5:bit):bat[:any_1] ",    
"AGGRsubmincand_val;",  ""      ]
 [ "aggr",      "subnot_exist", "pattern aggr.subnot_exist(X_1:bat[:any], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:bit] ",    
"SQLsubnot_exist;",     ""      ]
 [ "aggr",      "subnot_exist", "pattern aggr.subnot_exist(X_1:bat[:any], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",   "SQLsubnot_exist;",     
""      ]
+[ "aggr",      "subnull",      "pattern aggr.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:bit] ",       
"SQLnil_grp;",  ""      ]
+[ "aggr",      "subnull",      "pattern aggr.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",      "SQLnil_grp;",  ""     
 ]
 [ "aggr",      "subprod",      "command aggr.subprod(X_1:bat[:bte], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:bte] ",     
"AGGRsubprod_bte;",     ""      ]
 [ "aggr",      "subprod",      "command aggr.subprod(X_1:bat[:dbl], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",     
"AGGRsubprod_dbl;",     ""      ]
 [ "aggr",      "subprod",      "command aggr.subprod(X_1:bat[:flt], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",     
"AGGRsubprod_dbl;",     ""      ]
@@ -468,6 +474,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "subvariancep", "command aggr.subvariancep(X_1:bat[:int], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ", 
"AGGRsubvariancepcand_dbl;",    ""      ]
 [ "aggr",      "subvariancep", "command aggr.subvariancep(X_1:bat[:lng], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ", 
"AGGRsubvariancepcand_dbl;",    ""      ]
 [ "aggr",      "subvariancep", "command aggr.subvariancep(X_1:bat[:sht], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ", 
"AGGRsubvariancepcand_dbl;",    ""      ]
+[ "aggr",      "subzero_or_one",       "command 
aggr.subzero_or_one(X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], 
X_4:bit):bat[:any_1] ",     "SQLsubzero_or_one;",   ""      ]
 [ "aggr",      "sum",  "command aggr.sum(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:bte] ",   "AGGRsum3_bte;",        ""      ]
 [ "aggr",      "sum",  "command aggr.sum(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRsum3_dbl;",        ""      ]
 [ "aggr",      "sum",  "command aggr.sum(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRsum3_dbl;",        ""      ]
@@ -567,6 +574,9 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "variancep",    "command aggr.variancep(X_1:bat[:lng], 
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",     "AGGRvariancep3_dbl;",  ""     
 ]
 [ "aggr",      "variancep",    "command aggr.variancep(X_1:bat[:sht], 
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",     "AGGRvariancep3_dbl;",  ""     
 ]
 [ "aggr",      "variancep",    "command aggr.variancep(X_1:bat[:any_2]):dbl ", 
"ALGvariancep;",        ""      ]
+[ "aggr",      "zero_or_one",  "command 
aggr.zero_or_one(X_1:bat[:any_1]):any_1 ",     "zero_or_one;", ""      ]
+[ "aggr",      "zero_or_one",  "command aggr.zero_or_one(X_1:bat[:any_1], 
X_2:bit):any_1 ",    "zero_or_one_error;",   ""      ]
+[ "aggr",      "zero_or_one",  "command aggr.zero_or_one(X_1:bat[:any_1], 
X_2:bat[:bit]):any_1 ",      "zero_or_one_error_bat;",       ""      ]
 [ "alarm",     "ctime",        "unsafe command alarm.ctime():str ",    
"ALARMctime;",  ""      ]
 [ "alarm",     "epoch",        "unsafe command alarm.epoch():int ",    
"ALARMepoch;",  ""      ]
 [ "alarm",     "sleep",        "unsafe pattern alarm.sleep(X_1:any_1):any_1 ", 
"ALARMsleep;",  ""      ]
@@ -7272,8 +7282,22 @@ stdout of test 'MAL-signatures` in direc
 [ "batrapi",   "eval", "pattern batrapi.eval(X_1:ptr, X_2:str, 
X_3:any...):any... ",   "RAPIevalStd;", ""      ]
 [ "batrapi",   "eval_aggr",    "pattern batrapi.eval_aggr(X_1:ptr, X_2:str, 
X_3:any...):any... ",      "RAPIevalAggr;",        ""      ]
 [ "batrapi",   "subeval_aggr", "pattern batrapi.subeval_aggr(X_1:ptr, X_2:str, 
X_3:any...):any... ",   "RAPIevalAggr;",        ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ",   "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bit):bat[:bit] ", "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bit, 
X_3:bat[:bit]):bat[:bit] ", "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bit, 
X_3:bit):bat[:bit] ",       "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bit, X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ", "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bit, X_2:bat[:bit], 
X_3:bit):bat[:bit] ",       "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bit, X_2:bit, 
X_3:bat[:bit]):bat[:bit] ",       "SQLall_cmp;",  ""      ]
 [ "batsql",    "alpha",        "command batsql.alpha(X_1:bat[:dbl], 
X_2:dbl):bat[:dbl] ",      "SQLbat_alpha_cst;",    ""      ]
 [ "batsql",    "alpha",        "command batsql.alpha(X_1:dbl, 
X_2:bat[:dbl]):bat[:dbl] ",      "SQLcst_alpha_bat;",    ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ",   "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bit):bat[:bit] ", "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bit, 
X_3:bat[:bit]):bat[:bit] ", "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bit, 
X_3:bit):bat[:bit] ",       "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bit, X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ", "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bit, X_2:bat[:bit], 
X_3:bit):bat[:bit] ",       "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bit, X_2:bit, 
X_3:bat[:bit]):bat[:bit] ",       "SQLany_cmp;",  ""      ]
 [ "batsql",    "avg",  "pattern batsql.avg(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",      ""      ]
 [ "batsql",    "avg",  "pattern batsql.avg(X_1:bat[:dbl], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",      ""      ]
 [ "batsql",    "avg",  "pattern batsql.avg(X_1:bat[:flt], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",      ""      ]
@@ -9981,14 +10005,13 @@ stdout of test 'MAL-signatures` in direc
 [ "shp",       "import",       "pattern shp.import(X_1:int, X_2:wkb):void ",   
"SHPpartialimport;",    ""      ]
 [ "sql",       "abort",        "unsafe pattern sql.abort():void ",     
"SQLabort;",    ""      ]
 [ "sql",       "affectedRows", "unsafe pattern sql.affectedRows(X_1:int, 
X_2:lng):int ",       "mvc_affected_rows_wrap;",      ""      ]
-[ "sql",       "all",  "command sql.all(X_1:bat[:any_1]):any_1 ",      
"SQLall;",      ""      ]
-[ "sql",       "all",  "command sql.all(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLall_cmp;",  ""      ]
+[ "sql",       "all",  "pattern sql.all(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLall_cmp;",  ""      ]
 [ "sql",       "alpha",        "command sql.alpha(X_1:dbl, X_2:dbl):dbl ",     
"SQLcst_alpha_cst;",    ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, 
X_2:lng):void ",   "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str):void ",  "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str, X_4:str):void ", "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str, X_4:str, X_5:str):void ",        "sql_analyze;", ""      ]
-[ "sql",       "any",  "command sql.any(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLany_cmp;",  ""      ]
+[ "sql",       "any",  "pattern sql.any(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLany_cmp;",  ""      ]
 [ "sql",       "append",       "pattern sql.append(X_1:int, X_2:str, X_3:str, 
X_4:str, X_5:any):int ", "mvc_append_wrap;",     ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord(X_1:any...):str ",       
"SQLargRecord;",        ""      ]
@@ -10105,7 +10128,6 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "not_unique",   "command sql.not_unique(X_1:bat[:oid]):bit ",   
"not_unique;",  ""      ]
 [ "sql",       "nth_value",    "pattern sql.nth_value(X_1:any_1, X_2:any_2, 
X_3:lng, X_4:lng):any_1 ", "SQLnth_value;",        ""      ]
 [ "sql",       "ntile",        "pattern sql.ntile(X_1:any_1, X_2:any_2, 
X_3:any_3, X_4:any_4):any_2 ", "SQLntile;",    ""      ]
-[ "sql",       "null", "command sql.null(X_1:bat[:any_1]):bit ",       
"SQLnil;",      ""      ]
 [ "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;",      ""      ]
 [ "sql",       "password",     "pattern sql.password(X_1:str):str ",   
"db_password_wrap;",    ""      ]
@@ -10188,13 +10210,8 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "storage",      "pattern sql.storage(X_17:str, X_18:str, 
X_19:str) (X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:str], 
X_4:bat[:str], X_5:bat[:str], X_6:bat[:lng], X_7:bat[:int], X_8:bat[:lng], 
X_9:bat[:lng], X_10:bat[:lng], X_11:bat[:bit], X_12:bat[:lng], X_13:bat[:bit], 
X_14:bat[:bit], X_15:bat[:bit], X_16:bat[:lng]) ",    "sql_storage;", ""      ]
 [ "sql",       "str_group_concat",     "pattern sql.str_group_concat(X_1:str, 
X_2:lng, X_3:lng):str ", "SQLstrgroup_concat;",  ""      ]
 [ "sql",       "str_group_concat",     "pattern sql.str_group_concat(X_1:str, 
X_2:str, X_3:lng, X_4:lng):str ",        "SQLstrgroup_concat;",  ""      ]
-[ "sql",       "suball",       "pattern sql.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:any_1] ",       
"SQLall_grp;",  ""      ]
-[ "sql",       "suball",       "pattern sql.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:any_1] ",      "SQLall_grp;",  ""   
   ]
 [ "sql",       "subdelta",     "command sql.subdelta(X_1:bat[:oid], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid]):bat[:oid] ",  "DELTAsub2;",   ""   
   ]
 [ "sql",       "subdelta",     "command sql.subdelta(X_1:bat[:oid], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bat[:oid]):bat[:oid] ",   
"DELTAsub;",    ""      ]
-[ "sql",       "subnull",      "pattern sql.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:bit] ",        
"SQLnil_grp;",  ""      ]
-[ "sql",       "subnull",      "pattern sql.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",       "SQLnil_grp;",  ""    
  ]
-[ "sql",       "subzero_or_one",       "command 
sql.subzero_or_one(X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], 
X_4:bit):bat[:any_1] ",      "SQLsubzero_or_one;",   ""      ]
 [ "sql",       "sum",  "pattern sql.sum(X_1:bte, X_2:lng, X_3:lng):lng ",      
"SQLsum;",      ""      ]
 [ "sql",       "sum",  "pattern sql.sum(X_1:dbl, X_2:lng, X_3:lng):dbl ",      
"SQLsum;",      ""      ]
 [ "sql",       "sum",  "pattern sql.sum(X_1:flt, X_2:lng, X_3:lng):dbl ",      
"SQLsum;",      ""      ]
@@ -10240,9 +10257,6 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "window_bound", "pattern sql.window_bound(X_1:bit, X_2:any_1, 
X_3:int, X_4:int, X_5:int, X_6:int):lng ",        "SQLwindow_bound;",     ""    
  ]
 [ "sql",       "window_bound", "pattern sql.window_bound(X_1:bit, X_2:any_1, 
X_3:int, X_4:int, X_5:int, X_6:lng):lng ",        "SQLwindow_bound;",     ""    
  ]
 [ "sql",       "window_bound", "pattern sql.window_bound(X_1:bit, X_2:any_1, 
X_3:int, X_4:int, X_5:int, X_6:sht):lng ",        "SQLwindow_bound;",     ""    
  ]
-[ "sql",       "zero_or_one",  "command sql.zero_or_one(X_1:bat[:any_1]):any_1 
",      "zero_or_one;", ""      ]
-[ "sql",       "zero_or_one",  "command sql.zero_or_one(X_1:bat[:any_1], 
X_2:bit):any_1 ",     "zero_or_one_error;",   ""      ]
-[ "sql",       "zero_or_one",  "command sql.zero_or_one(X_1:bat[:any_1], 
X_2:bat[:bit]):any_1 ",       "zero_or_one_error_bat;",       ""      ]
 [ "sqlcatalog",        "alter_add_range_partition",    "pattern 
sqlcatalog.alter_add_range_partition(X_1:str, X_2:str, X_3:str, X_4:str, 
X_5:any_1, X_6:any_1, X_7:bit, X_8:int):void ",       
"SQLalter_add_range_partition;",        ""      ]
 [ "sqlcatalog",        "alter_add_table",      "pattern 
sqlcatalog.alter_add_table(X_1:str, X_2:str, X_3:str, X_4:str, X_5:int):void ", 
       "SQLalter_add_table;",  ""      ]
 [ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(X_1:str, X_2:str, X_3:str, X_4:str, 
X_5:bit, X_6:int):void ",     "SQLalter_add_value_partition;",        ""      ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -69,6 +69,7 @@ stdout of test 'MAL-signatures` in direc
 % module,      function,       signature,      address,        comment # name
 % clob,        clob,   clob,   clob,   clob # type
 % 12,  28,     313,    42,     0 # length
+[ "aggr",      "all",  "command aggr.all(X_1:bat[:any_1]):any_1 ",     
"SQLall;",      ""      ]
 [ "aggr",      "allnotequal",  "command aggr.allnotequal(X_1:bat[:any_1], 
X_2:bat[:any_1]):bit ",      "SQLallnotequal;",      ""      ]
 [ "aggr",      "anyequal",     "pattern aggr.anyequal(X_1:any_1, 
X_2:any_1):bit ",     "CMDvarEQ;",    ""      ]
 [ "aggr",      "anyequal",     "command aggr.anyequal(X_1:bat[:any_1], 
X_2:bat[:any_1]):bit ", "SQLanyequal;", ""      ]
@@ -148,6 +149,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "min",  "command aggr.min(X_1:bat[:any_2], X_2:bit):any_2 ",    
"ALGminany_skipnil;",   ""      ]
 [ "aggr",      "not_anyequal", "pattern aggr.not_anyequal(X_1:any_1, 
X_2:any_1):bit ", "CMDvarNE;",    ""      ]
 [ "aggr",      "not_exist",    "pattern aggr.not_exist(X_1:any_1):bit ",       
"SQLnot_exist;",        ""      ]
+[ "aggr",      "null", "command aggr.null(X_1:bat[:any_1]):bit ",      
"SQLnil;",      ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:bte] ",  "AGGRprod3_bte;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
 [ "aggr",      "prod", "command aggr.prod(X_1:bat[:flt], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",  "AGGRprod3_dbl;",       ""      ]
@@ -286,6 +288,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(X_1:bat[:str], X_2:bat[:str], X_3:bat[:oid], X_4:bit):str 
",     "CMDBATstr_group_concat;",      ""      ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(X_1:bat[:str], X_2:bat[:str], X_3:bit):str ",    
"CMDBATstr_group_concat;",      ""      ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(X_1:bat[:str], X_2:bit):str ",   
"CMDBATstr_group_concat;",      ""      ]
+[ "aggr",      "suball",       "pattern aggr.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:any_1] ",      
"SQLall_grp;",  ""      ]
+[ "aggr",      "suball",       "pattern aggr.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:any_1] ",     "SQLall_grp;",  ""    
  ]
 [ "aggr",      "suballnotequal",       "pattern 
aggr.suballnotequal(X_1:bat[:any_1], X_2:bat[:any_1], X_3:bat[:oid], 
X_4:bat[:oid], X_5:bat[:oid], X_6:bat[:oid], X_7:bit):bat[:bit] ",        
"SQLallnotequal_grp2;", ""      ]
 [ "aggr",      "suballnotequal",       "pattern 
aggr.suballnotequal(X_1:bat[:any_1], X_2:bat[:any_1], X_3:bat[:oid], 
X_4:bat[:oid], X_5:bat[:oid], X_6:bit):bat[:bit] ",       
"SQLallnotequal_grp2;", ""      ]
 [ "aggr",      "suballnotequal",       "pattern 
aggr.suballnotequal(X_1:bat[:any_1], X_2:bat[:any_1], X_3:bat[:oid], 
X_4:bat[:oid], X_5:bat[:oid], X_6:bit):bat[:bit] ",       
"SQLallnotequal_grp;",  ""      ]
@@ -410,6 +414,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "submin",       "command aggr.submin(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:any_2], X_4:bat[:oid], X_5:bit):bat[:any_1] ",    
"AGGRsubmincand_val;",  ""      ]
 [ "aggr",      "subnot_exist", "pattern aggr.subnot_exist(X_1:bat[:any], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:bit] ",    
"SQLsubnot_exist;",     ""      ]
 [ "aggr",      "subnot_exist", "pattern aggr.subnot_exist(X_1:bat[:any], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",   "SQLsubnot_exist;",     
""      ]
+[ "aggr",      "subnull",      "pattern aggr.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:bit] ",       
"SQLnil_grp;",  ""      ]
+[ "aggr",      "subnull",      "pattern aggr.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",      "SQLnil_grp;",  ""     
 ]
 [ "aggr",      "subprod",      "command aggr.subprod(X_1:bat[:bte], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:bte] ",     
"AGGRsubprod_bte;",     ""      ]
 [ "aggr",      "subprod",      "command aggr.subprod(X_1:bat[:dbl], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",     
"AGGRsubprod_dbl;",     ""      ]
 [ "aggr",      "subprod",      "command aggr.subprod(X_1:bat[:flt], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bit, X_5:bit):bat[:dbl] ",     
"AGGRsubprod_dbl;",     ""      ]
@@ -546,6 +552,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "subvariancep", "command aggr.subvariancep(X_1:bat[:int], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ", 
"AGGRsubvariancepcand_dbl;",    ""      ]
 [ "aggr",      "subvariancep", "command aggr.subvariancep(X_1:bat[:lng], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ", 
"AGGRsubvariancepcand_dbl;",    ""      ]
 [ "aggr",      "subvariancep", "command aggr.subvariancep(X_1:bat[:sht], 
X_2:bat[:oid], X_3:bat[:any_1], X_4:bat[:oid], X_5:bit, X_6:bit):bat[:dbl] ", 
"AGGRsubvariancepcand_dbl;",    ""      ]
+[ "aggr",      "subzero_or_one",       "command 
aggr.subzero_or_one(X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], 
X_4:bit):bat[:any_1] ",     "SQLsubzero_or_one;",   ""      ]
 [ "aggr",      "sum",  "command aggr.sum(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:bte] ",   "AGGRsum3_bte;",        ""      ]
 [ "aggr",      "sum",  "command aggr.sum(X_1:bat[:bte], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRsum3_dbl;",        ""      ]
 [ "aggr",      "sum",  "command aggr.sum(X_1:bat[:dbl], X_2:bat[:oid], 
X_3:bat[:any_1]):bat[:dbl] ",   "AGGRsum3_dbl;",        ""      ]
@@ -676,6 +683,9 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "variancep",    "command aggr.variancep(X_1:bat[:lng], 
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",     "AGGRvariancep3_dbl;",  ""     
 ]
 [ "aggr",      "variancep",    "command aggr.variancep(X_1:bat[:sht], 
X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ",     "AGGRvariancep3_dbl;",  ""     
 ]
 [ "aggr",      "variancep",    "command aggr.variancep(X_1:bat[:any_2]):dbl ", 
"ALGvariancep;",        ""      ]
+[ "aggr",      "zero_or_one",  "command 
aggr.zero_or_one(X_1:bat[:any_1]):any_1 ",     "zero_or_one;", ""      ]
+[ "aggr",      "zero_or_one",  "command aggr.zero_or_one(X_1:bat[:any_1], 
X_2:bit):any_1 ",    "zero_or_one_error;",   ""      ]
+[ "aggr",      "zero_or_one",  "command aggr.zero_or_one(X_1:bat[:any_1], 
X_2:bat[:bit]):any_1 ",      "zero_or_one_error_bat;",       ""      ]
 [ "alarm",     "ctime",        "unsafe command alarm.ctime():str ",    
"ALARMctime;",  ""      ]
 [ "alarm",     "epoch",        "unsafe command alarm.epoch():int ",    
"ALARMepoch;",  ""      ]
 [ "alarm",     "sleep",        "unsafe pattern alarm.sleep(X_1:any_1):any_1 ", 
"ALARMsleep;",  ""      ]
@@ -9930,8 +9940,22 @@ stdout of test 'MAL-signatures` in direc
 [ "batrapi",   "eval", "pattern batrapi.eval(X_1:ptr, X_2:str, 
X_3:any...):any... ",   "RAPIevalStd;", ""      ]
 [ "batrapi",   "eval_aggr",    "pattern batrapi.eval_aggr(X_1:ptr, X_2:str, 
X_3:any...):any... ",      "RAPIevalAggr;",        ""      ]
 [ "batrapi",   "subeval_aggr", "pattern batrapi.subeval_aggr(X_1:ptr, X_2:str, 
X_3:any...):any... ",   "RAPIevalAggr;",        ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ",   "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bit):bat[:bit] ", "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bit, 
X_3:bat[:bit]):bat[:bit] ", "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bat[:bit], X_2:bit, 
X_3:bit):bat[:bit] ",       "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bit, X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ", "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bit, X_2:bat[:bit], 
X_3:bit):bat[:bit] ",       "SQLall_cmp;",  ""      ]
+[ "batsql",    "all",  "pattern batsql.all(X_1:bit, X_2:bit, 
X_3:bat[:bit]):bat[:bit] ",       "SQLall_cmp;",  ""      ]
 [ "batsql",    "alpha",        "command batsql.alpha(X_1:bat[:dbl], 
X_2:dbl):bat[:dbl] ",      "SQLbat_alpha_cst;",    ""      ]
 [ "batsql",    "alpha",        "command batsql.alpha(X_1:dbl, 
X_2:bat[:dbl]):bat[:dbl] ",      "SQLcst_alpha_bat;",    ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ",   "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bat[:bit], 
X_3:bit):bat[:bit] ", "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bit, 
X_3:bat[:bit]):bat[:bit] ", "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bat[:bit], X_2:bit, 
X_3:bit):bat[:bit] ",       "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bit, X_2:bat[:bit], 
X_3:bat[:bit]):bat[:bit] ", "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bit, X_2:bat[:bit], 
X_3:bit):bat[:bit] ",       "SQLany_cmp;",  ""      ]
+[ "batsql",    "any",  "pattern batsql.any(X_1:bit, X_2:bit, 
X_3:bat[:bit]):bat[:bit] ",       "SQLany_cmp;",  ""      ]
 [ "batsql",    "avg",  "pattern batsql.avg(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",      ""      ]
 [ "batsql",    "avg",  "pattern batsql.avg(X_1:bat[:dbl], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",      ""      ]
 [ "batsql",    "avg",  "pattern batsql.avg(X_1:bat[:flt], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLavg;",      ""      ]
@@ -13334,14 +13358,13 @@ stdout of test 'MAL-signatures` in direc
 [ "shp",       "import",       "pattern shp.import(X_1:int, X_2:wkb):void ",   
"SHPpartialimport;",    ""      ]
 [ "sql",       "abort",        "unsafe pattern sql.abort():void ",     
"SQLabort;",    ""      ]
 [ "sql",       "affectedRows", "unsafe pattern sql.affectedRows(X_1:int, 
X_2:lng):int ",       "mvc_affected_rows_wrap;",      ""      ]
-[ "sql",       "all",  "command sql.all(X_1:bat[:any_1]):any_1 ",      
"SQLall;",      ""      ]
-[ "sql",       "all",  "command sql.all(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLall_cmp;",  ""      ]
+[ "sql",       "all",  "pattern sql.all(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLall_cmp;",  ""      ]
 [ "sql",       "alpha",        "command sql.alpha(X_1:dbl, X_2:dbl):dbl ",     
"SQLcst_alpha_cst;",    ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, 
X_2:lng):void ",   "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str):void ",  "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str, X_4:str):void ", "sql_analyze;", ""      ]
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str, X_4:str, X_5:str):void ",        "sql_analyze;", ""      ]
-[ "sql",       "any",  "command sql.any(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLany_cmp;",  ""      ]
+[ "sql",       "any",  "pattern sql.any(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLany_cmp;",  ""      ]
 [ "sql",       "append",       "pattern sql.append(X_1:int, X_2:str, X_3:str, 
X_4:str, X_5:any):int ", "mvc_append_wrap;",     ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord(X_1:any...):str ",       
"SQLargRecord;",        ""      ]
@@ -13463,7 +13486,6 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "not_unique",   "command sql.not_unique(X_1:bat[:oid]):bit ",   
"not_unique;",  ""      ]
 [ "sql",       "nth_value",    "pattern sql.nth_value(X_1:any_1, X_2:any_2, 
X_3:lng, X_4:lng):any_1 ", "SQLnth_value;",        ""      ]
 [ "sql",       "ntile",        "pattern sql.ntile(X_1:any_1, X_2:any_2, 
X_3:any_3, X_4:any_4):any_2 ", "SQLntile;",    ""      ]
-[ "sql",       "null", "command sql.null(X_1:bat[:any_1]):bit ",       
"SQLnil;",      ""      ]
 [ "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;",      ""      ]
 [ "sql",       "password",     "pattern sql.password(X_1:str):str ",   
"db_password_wrap;",    ""      ]
@@ -13554,13 +13576,8 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "storage",      "pattern sql.storage(X_17:str, X_18:str, 
X_19:str) (X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:str], 
X_4:bat[:str], X_5:bat[:str], X_6:bat[:lng], X_7:bat[:int], X_8:bat[:lng], 
X_9:bat[:lng], X_10:bat[:lng], X_11:bat[:bit], X_12:bat[:lng], X_13:bat[:bit], 
X_14:bat[:bit], X_15:bat[:bit], X_16:bat[:lng]) ",    "sql_storage;", ""      ]
 [ "sql",       "str_group_concat",     "pattern sql.str_group_concat(X_1:str, 
X_2:lng, X_3:lng):str ", "SQLstrgroup_concat;",  ""      ]
 [ "sql",       "str_group_concat",     "pattern sql.str_group_concat(X_1:str, 
X_2:str, X_3:lng, X_4:lng):str ",        "SQLstrgroup_concat;",  ""      ]
-[ "sql",       "suball",       "pattern sql.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:any_1] ",       
"SQLall_grp;",  ""      ]
-[ "sql",       "suball",       "pattern sql.suball(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:any_1] ",      "SQLall_grp;",  ""   
   ]
 [ "sql",       "subdelta",     "command sql.subdelta(X_1:bat[:oid], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid]):bat[:oid] ",  "DELTAsub2;",   ""   
   ]
 [ "sql",       "subdelta",     "command sql.subdelta(X_1:bat[:oid], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bat[:oid]):bat[:oid] ",   
"DELTAsub;",    ""      ]
-[ "sql",       "subnull",      "pattern sql.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bat[:oid], X_5:bit):bat[:bit] ",        
"SQLnil_grp;",  ""      ]
-[ "sql",       "subnull",      "pattern sql.subnull(X_1:bat[:any_1], 
X_2:bat[:oid], X_3:bat[:oid], X_4:bit):bat[:bit] ",       "SQLnil_grp;",  ""    
  ]
-[ "sql",       "subzero_or_one",       "command 
sql.subzero_or_one(X_1:bat[:any_1], X_2:bat[:oid], X_3:bat[:oid], 
X_4:bit):bat[:any_1] ",      "SQLsubzero_or_one;",   ""      ]
 [ "sql",       "sum",  "pattern sql.sum(X_1:bte, X_2:lng, X_3:lng):hge ",      
"SQLsum;",      ""      ]
 [ "sql",       "sum",  "pattern sql.sum(X_1:bte, X_2:lng, X_3:lng):lng ",      
"SQLsum;",      ""      ]
 [ "sql",       "sum",  "pattern sql.sum(X_1:dbl, X_2:lng, X_3:lng):dbl ",      
"SQLsum;",      ""      ]
@@ -13615,9 +13632,6 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "window_bound", "pattern sql.window_bound(X_1:bit, X_2:any_1, 
X_3:int, X_4:int, X_5:int, X_6:int):lng ",        "SQLwindow_bound;",     ""    
  ]
 [ "sql",       "window_bound", "pattern sql.window_bound(X_1:bit, X_2:any_1, 
X_3:int, X_4:int, X_5:int, X_6:lng):lng ",        "SQLwindow_bound;",     ""    
  ]
 [ "sql",       "window_bound", "pattern sql.window_bound(X_1:bit, X_2:any_1, 
X_3:int, X_4:int, X_5:int, X_6:sht):lng ",        "SQLwindow_bound;",     ""    
  ]
-[ "sql",       "zero_or_one",  "command sql.zero_or_one(X_1:bat[:any_1]):any_1 
",      "zero_or_one;", ""      ]
-[ "sql",       "zero_or_one",  "command sql.zero_or_one(X_1:bat[:any_1], 
X_2:bit):any_1 ",     "zero_or_one_error;",   ""      ]
-[ "sql",       "zero_or_one",  "command sql.zero_or_one(X_1:bat[:any_1], 
X_2:bat[:bit]):any_1 ",       "zero_or_one_error_bat;",       ""      ]
 [ "sqlcatalog",        "alter_add_range_partition",    "pattern 
sqlcatalog.alter_add_range_partition(X_1:str, X_2:str, X_3:str, X_4:str, 
X_5:any_1, X_6:any_1, X_7:bit, X_8:int):void ",       
"SQLalter_add_range_partition;",        ""      ]
 [ "sqlcatalog",        "alter_add_table",      "pattern 
sqlcatalog.alter_add_table(X_1:str, X_2:str, X_3:str, X_4:str, X_5:int):void ", 
       "SQLalter_add_table;",  ""      ]
 [ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(X_1:str, X_2:str, X_3:str, X_4:str, 
X_5:bit, X_6:int):void ",     "SQLalter_add_value_partition;",        ""      ]
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -6622,18 +6622,32 @@ static mel_func sql_init_funcs[] = {
  pattern("batsql", "str_group_concat", SQLstrgroup_concat, false, "return the 
string concatenation of groups with a custom separator", args(1,5, 
batarg("",str),arg("b",str),batarg("sep",str),arg("s",lng),arg("e",lng))),
  pattern("batsql", "str_group_concat", SQLstrgroup_concat, false, "return the 
string concatenation of groups with a custom separator", args(1,5, 
batarg("",str),batarg("b",str),batarg("sep",str),batarg("s",lng),batarg("e",lng))),
  /* sql_subquery */
- command("sql", "zero_or_one", zero_or_one, false, "if col contains exactly 
one value return this. Incase of more raise an exception else return nil", 
args(1,2, argany("",1),batargany("col",1))),
- command("sql", "zero_or_one", zero_or_one_error, false, "if col contains 
exactly one value return this. Incase of more raise an exception if err is true 
else return nil", args(1,3, argany("",1),batargany("col",1),arg("err",bit))),
- command("sql", "zero_or_one", zero_or_one_error_bat, false, "if col contains 
exactly one value return this. Incase of more raise an exception if err is true 
else return nil", args(1,3, argany("",1),batargany("col",1),batarg("err",bit))),
- command("sql", "subzero_or_one", SQLsubzero_or_one, false, "", args(1,5, 
batargany("",1),batargany("b",1),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
- command("sql", "all", SQLall, false, "if all values in b are equal return 
this, else nil", args(1,2, argany("",1),batargany("b",1))),
- pattern("sql", "suball", SQLall_grp, false, "if all values in l are equal 
(per group) return the value, else nil", args(1,5, 
batargany("",1),batargany("l",1),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
- pattern("sql", "suball", SQLall_grp, false, "if all values in l are equal 
(per group) return the value, else nil", args(1,6, 
batargany("",1),batargany("l",1),batarg("g",oid),batarg("e",oid),batarg("s",oid),arg("no_nil",bit))),
- command("sql", "null", SQLnil, false, "if b has a nil return true, else 
false", args(1,2, arg("",bit),batargany("b",1))),
- pattern("sql", "subnull", SQLnil_grp, false, "if any value in l is nil with 
in a group return true for that group, else false", args(1,5, 
batarg("",bit),batargany("l",1),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
- pattern("sql", "subnull", SQLnil_grp, false, "if any value in l is nil with 
in a group return true for that group, else false; with candidate list", 
args(1,6, 
batarg("",bit),batargany("l",1),batarg("g",oid),batarg("e",oid),batarg("s",oid),arg("no_nil",bit))),
- command("sql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
arg("",bit),arg("cmp",bit),arg("nl",bit),arg("nr",bit))),
- command("sql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) then 
nil, else true", args(1,4, 
arg("",bit),arg("cmp",bit),arg("nl",bit),arg("nr",bit))),
+ command("aggr", "zero_or_one", zero_or_one, false, "if col contains exactly 
one value return this. Incase of more raise an exception else return nil", 
args(1,2, argany("",1),batargany("col",1))),
+ command("aggr", "zero_or_one", zero_or_one_error, false, "if col contains 
exactly one value return this. Incase of more raise an exception if err is true 
else return nil", args(1,3, argany("",1),batargany("col",1),arg("err",bit))),
+ command("aggr", "zero_or_one", zero_or_one_error_bat, false, "if col contains 
exactly one value return this. Incase of more raise an exception if err is true 
else return nil", args(1,3, argany("",1),batargany("col",1),batarg("err",bit))),
+ command("aggr", "subzero_or_one", SQLsubzero_or_one, false, "", args(1,5, 
batargany("",1),batargany("b",1),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
+ command("aggr", "all", SQLall, false, "if all values in b are equal return 
this, else nil", args(1,2, argany("",1),batargany("b",1))),
+ pattern("aggr", "suball", SQLall_grp, false, "if all values in l are equal 
(per group) return the value, else nil", args(1,5, 
batargany("",1),batargany("l",1),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
+ pattern("aggr", "suball", SQLall_grp, false, "if all values in l are equal 
(per group) return the value, else nil", args(1,6, 
batargany("",1),batargany("l",1),batarg("g",oid),batarg("e",oid),batarg("s",oid),arg("no_nil",bit))),
+ command("aggr", "null", SQLnil, false, "if b has a nil return true, else 
false", args(1,2, arg("",bit),batargany("b",1))),
+ pattern("aggr", "subnull", SQLnil_grp, false, "if any value in l is nil with 
in a group return true for that group, else false", args(1,5, 
batarg("",bit),batargany("l",1),batarg("g",oid),batarg("e",oid),arg("no_nil",bit))),
+ pattern("aggr", "subnull", SQLnil_grp, false, "if any value in l is nil with 
in a group return true for that group, else false; with candidate list", 
args(1,6, 
batarg("",bit),batargany("l",1),batarg("g",oid),batarg("e",oid),batarg("s",oid),arg("no_nil",bit))),
+ pattern("sql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
arg("",bit),arg("cmp",bit),arg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
batarg("",bit),batarg("cmp",bit),arg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
batarg("",bit),arg("cmp",bit),batarg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
batarg("",bit),arg("cmp",bit),arg("nl",bit),batarg("nr",bit))),
+ pattern("batsql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
batarg("",bit),arg("cmp",bit),batarg("nl",bit),batarg("nr",bit))),
+ pattern("batsql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
batarg("",bit),batarg("cmp",bit),arg("nl",bit),batarg("nr",bit))),
+ pattern("batsql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
batarg("",bit),batarg("cmp",bit),batarg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "any", SQLany_cmp, false, "if cmp then true, (nl or nr) nil 
then nil, else false", args(1,4, 
batarg("",bit),batarg("cmp",bit),batarg("nl",bit),batarg("nr",bit))),
+ pattern("sql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) then 
nil, else true", args(1,4, 
arg("",bit),arg("cmp",bit),arg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) 
then nil, else true", args(1,4, 
batarg("",bit),batarg("cmp",bit),arg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) 
then nil, else true", args(1,4, 
batarg("",bit),arg("cmp",bit),batarg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) 
then nil, else true", args(1,4, 
batarg("",bit),arg("cmp",bit),arg("nl",bit),batarg("nr",bit))),
+ pattern("batsql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) 
then nil, else true", args(1,4, 
batarg("",bit),arg("cmp",bit),batarg("nl",bit),batarg("nr",bit))),
+ pattern("batsql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) 
then nil, else true", args(1,4, 
batarg("",bit),batarg("cmp",bit),arg("nl",bit),batarg("nr",bit))),
+ pattern("batsql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) 
then nil, else true", args(1,4, 
batarg("",bit),batarg("cmp",bit),batarg("nl",bit),arg("nr",bit))),
+ pattern("batsql", "all", SQLall_cmp, false, "if !cmp then false, (nl or nr) 
then nil, else true", args(1,4, 
batarg("",bit),batarg("cmp",bit),batarg("nl",bit),batarg("nr",bit))),
  command("aggr", "anyequal", SQLanyequal, false, "if any value in r is equal 
to l return true, else if r has nil nil else false", args(1,3, 
arg("",bit),batargany("l",1),batargany("r",1))),
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to