Changeset: 326594c76682 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=326594c76682 Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 monetdb5/modules/mal/01_batcalc.mal monetdb5/modules/mal/01_batcalc.mal.sh Branch: Jun2020 Log Message:
Add MAL interface for conditional execution in batcalc.between. diffs (116 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 @@ -7478,12 +7478,20 @@ stdout of test 'MAL-signatures` in direc [ "batcalc", "avg", "pattern batcalc.avg(b:bat[:sht], s:bat[:oid], scale:int):dbl ", "CMDcalcavg;", "average of non-nil values of B" ] [ "batcalc", "avg", "pattern batcalc.avg(b:bat[:sht], scale:int) (X_0:dbl, X_1:lng) ", "CMDcalcavg;", "average and number of non-nil values of B" ] [ "batcalc", "avg", "pattern batcalc.avg(b:bat[:sht], scale:int):dbl ", "CMDcalcavg;", "average of non-nil values of B with candidates list" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, s:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, s:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], s:bat[:oid], s2:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], s:bat[:oid], s2:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, s:bat[:oid], s1:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, s:bat[:oid], s1:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], s:bat[:oid], s1:bat[:oid], s2:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], s:bat[:oid], s1:bat[:oid], s2:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] [ "batcalc", "bit", "pattern batcalc.bit(b:bat[:bit]):bat[:bit] ", "CMDconvertsignal_bit;", "cast from bit to bit, signal error on overflow" ] 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 @@ -10771,12 +10771,20 @@ stdout of test 'MAL-signatures` in direc [ "batcalc", "avg", "pattern batcalc.avg(b:bat[:sht], s:bat[:oid], scale:int):dbl ", "CMDcalcavg;", "average of non-nil values of B" ] [ "batcalc", "avg", "pattern batcalc.avg(b:bat[:sht], scale:int) (X_0:dbl, X_1:lng) ", "CMDcalcavg;", "average and number of non-nil values of B" ] [ "batcalc", "avg", "pattern batcalc.avg(b:bat[:sht], scale:int):dbl ", "CMDcalcavg;", "average of non-nil values of B with candidates list" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, s:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, s:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:any_1, sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], s:bat[:oid], s2:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], s:bat[:oid], s2:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:any_1, v2:bat[:any_1], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, s:bat[:oid], s1:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, s:bat[:oid], s1:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:any_1, sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with conditional execution bat" ] +[ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], s:bat[:oid], s1:bat[:oid], s2:bat[:oid], r:bat[:bit], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], s:bat[:oid], s1:bat[:oid], s2:bat[:oid], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa) with candidate list" ] [ "batcalc", "between", "pattern batcalc.between(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], sym:bit, linc:bit, hinc:bit, nils_false:bit, anti:bit):bat[:bit] ", "CMDbatBETWEEN;", "B between V1 and V2 (or vice versa)" ] [ "batcalc", "bit", "pattern batcalc.bit(b:bat[:bit]):bat[:bit] ", "CMDconvertsignal_bit;", "cast from bit to bit, signal error on overflow" ] diff --git a/monetdb5/modules/mal/01_batcalc.mal b/monetdb5/modules/mal/01_batcalc.mal --- a/monetdb5/modules/mal/01_batcalc.mal +++ b/monetdb5/modules/mal/01_batcalc.mal @@ -28674,6 +28674,30 @@ comment "B between V1 and V2 (or vice ve pattern between(b:bat[:any_1],v1:any_1,v2:any_1,s:bat[:oid],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] address CMDbatBETWEEN comment "B between V1 and V2 (or vice versa) with candidate list"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:bat[:any_1],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:bat[:any_1],s:bat[:oid],s1:bat[:oid],s2:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:any_1,r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:any_1,s:bat[:oid],s1:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:bat[:any_1],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:bat[:any_1],s:bat[:oid],s2:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:any_1,r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:any_1,s:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; pattern avg(b:bat[:bte]) :dbl diff --git a/monetdb5/modules/mal/01_batcalc.mal.sh b/monetdb5/modules/mal/01_batcalc.mal.sh --- a/monetdb5/modules/mal/01_batcalc.mal.sh +++ b/monetdb5/modules/mal/01_batcalc.mal.sh @@ -813,6 +813,30 @@ comment "B between V1 and V2 (or vice ve pattern between(b:bat[:any_1],v1:any_1,v2:any_1,s:bat[:oid],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] address CMDbatBETWEEN comment "B between V1 and V2 (or vice versa) with candidate list"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:bat[:any_1],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:bat[:any_1],s:bat[:oid],s1:bat[:oid],s2:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:any_1,r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:bat[:any_1],v2:any_1,s:bat[:oid],s1:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:bat[:any_1],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:bat[:any_1],s:bat[:oid],s2:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:any_1,r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with conditional execution bat"; +pattern between(b:bat[:any_1],v1:any_1,v2:any_1,s:bat[:oid],r:bat[:bit],sym:bit,linc:bit,hinc:bit,nils_false:bit,anti:bit) :bat[:bit] +address CMDbatBETWEEN +comment "B between V1 and V2 (or vice versa) with candidate list and conditional execution bat"; EOF echo _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list