Changeset: 700f4bbd0aea for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=700f4bbd0aea
Added Files:
        monetdb5/modules/kernel/mmath_private.h
        sql/backends/monet5/UDF/pyapi/pyapi_locatepython2.bat
        sql/backends/monet5/UDF/pyapi3/pyapi_locatepython3.bat
Removed Files:
        sql/backends/monet5/UDF/pyapi/pyapi_locatepython.bat
        sql/test/BugTracker-2009/drop_history.sql
        sql/test/BugTracker-2009/set_history_and_drop_table.SF-2607045.sql
        sql/test/BugTracker-2011/Tests/history.Bug-2909.sql
        sql/test/BugTracker-2011/Tests/history.Bug-2909.stable.err
        sql/test/BugTracker-2011/Tests/history.Bug-2909.stable.out
Modified Files:
        NT/mksqlwxs.py
        NT/rules.msc
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        common/stream/stream.c
        common/utils/mutils.h
        configure.ag
        gdk/gdk_bbp.c
        gdk/gdk_storage.c
        gdk/gdk_utils.c
        monetdb5/ChangeLog.Apr2019
        monetdb5/NT/M5server.bat
        monetdb5/extras/rapi/rapi.c
        monetdb5/mal/Tests/tst016.malC
        monetdb5/mal/Tests/tst016.stable.out
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_profiler.c
        monetdb5/modules/atoms/blob.c
        monetdb5/modules/atoms/blob.h
        monetdb5/modules/atoms/blob.mal
        monetdb5/modules/kernel/Makefile.ag
        monetdb5/modules/kernel/batmmath.c
        monetdb5/modules/kernel/batmmath.h
        monetdb5/modules/kernel/batmmath.mal
        monetdb5/modules/kernel/mmath.c
        monetdb5/modules/kernel/mmath.h
        monetdb5/modules/kernel/mmath.mal
        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/sysmon.c
        sql/ChangeLog.Apr2019
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/pyapi/Makefile.ag
        sql/backends/monet5/UDF/pyapi/conversion.c
        sql/backends/monet5/UDF/pyapi/emit.c
        sql/backends/monet5/UDF/pyapi/pyheader.h
        sql/backends/monet5/UDF/pyapi/pytypes.c
        sql/backends/monet5/UDF/pyapi/type_conversion.c
        sql/backends/monet5/UDF/pyapi3/Makefile.ag
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/vaults/fits/fits.c
        sql/common/sql_types.c
        sql/scripts/51_sys_schema_extension.sql
        sql/server/rel_exp.c
        sql/server/rel_sequence.c
        sql/server/sql_env.c
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/storage/sql_storage.h
        sql/storage/store.c
        sql/test/BugTracker-2011/Tests/All
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.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
        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/sys-schema/Tests/check_AlternateKey_uniqueness.sql
        sql/test/sys-schema/Tests/check_AlternateKey_uniqueness.stable.out
        sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.sql
        
sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.stable.out
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.sql
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.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
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.powerpc64.int128
        testing/malcheck.py
Branch: ipv6
Log Message:

Merge with default.


diffs (truncated from 205732 to 300 lines):

diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -51,6 +51,8 @@ def main():
     extend = []
     debug = []
     geom = []
+    pyapi2 = []
+    pyapi3 = []
     print(r'<?xml version="1.0"?>')
     print(r'<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";>')
     print(r'  <Product Id="*" Language="1033" Manufacturer="MonetDB" 
Name="MonetDB5" UpgradeCode="%s" Version="%s">' % (upgradecode[arch], 
sys.argv[1]))
@@ -83,6 +85,19 @@ def main():
     print(r'        <FileSearch Id="CheckFile3" Name="geom.mal"/>')
     print(r'      </DirectorySearch>')
     print(r'    </Property>')
+    print(r'    <Property Id="PYAPI2EXISTS">')
+    print(r'      <DirectorySearch Id="CheckFileDir4" Path="[INSTALLDIR]" 
Depth="0">')
+    print(r'        <FileSearch Id="CheckFile4" 
Name="pyapi_locatepython.bat"/>')
+    print(r'      </DirectorySearch>')
+    print(r'      <DirectorySearch Id="CheckFileDir42" Path="[INSTALLDIR]" 
Depth="0">')
+    print(r'        <FileSearch Id="CheckFile42" 
Name="pyapi_locatepython2.bat"/>')
+    print(r'      </DirectorySearch>')
+    print(r'    </Property>')
+    print(r'    <Property Id="PYAPI3EXISTS">')
+    print(r'      <DirectorySearch Id="CheckFileDir5" Path="[INSTALLDIR]" 
Depth="0">')
+    print(r'        <FileSearch Id="CheckFile5" 
Name="pyapi_locatepython3.bat"/>')
+    print(r'      </DirectorySearch>')
+    print(r'    </Property>')
     # up to and including 11.29.3, the geom module can not be
     # uninstalled if MonetDB/SQL is not installed; this somehow also
     # precludes the upgrade to this version, therefore we disallow
@@ -164,9 +179,13 @@ def main():
     print(r'              <Directory Id="monetdb5" Name="monetdb5">')
     print(r'                <Directory Id="autoload" Name="autoload">')
     id = comp(features, id, 18,
-              [r'lib\monetdb5\autoload\%s' % x for x in sorted(filter(lambda 
x: x.endswith('.mal') and ('geom' not in x), 
os.listdir(os.path.join(sys.argv[3], 'lib', 'monetdb5', 'autoload'))))])
+              [r'lib\monetdb5\autoload\%s' % x for x in sorted(filter(lambda 
x: x.endswith('.mal') and ('geom' not in x) and ('pyapi' not in x), 
os.listdir(os.path.join(sys.argv[3], 'lib', 'monetdb5', 'autoload'))))])
     id = comp(geom, id, 18,
               [r'lib\monetdb5\autoload\%s' % x for x in sorted(filter(lambda 
x: x.endswith('.mal') and ('geom' in x), os.listdir(os.path.join(sys.argv[3], 
'lib', 'monetdb5', 'autoload'))))])
+    id = comp(pyapi2, id, 18,
+              [r'lib\monetdb5\autoload\%s' % x for x in sorted(filter(lambda 
x: x.endswith('_pyapi.mal'), os.listdir(os.path.join(sys.argv[3], 'lib', 
'monetdb5', 'autoload'))))])
+    id = comp(pyapi3, id, 18,
+              [r'lib\monetdb5\autoload\%s' % x for x in sorted(filter(lambda 
x: x.endswith('_pyapi3.mal'), os.listdir(os.path.join(sys.argv[3], 'lib', 
'monetdb5', 'autoload'))))])
     print(r'                </Directory>')
     print(r'                <Directory Id="createdb" Name="createdb">')
     id = comp(features, id, 18,
@@ -175,15 +194,21 @@ def main():
               [r'lib\monetdb5\createdb\%s' % x for x in sorted(filter(lambda 
x: x.endswith('.sql') and ('geom' in x), os.listdir(os.path.join(sys.argv[3], 
'lib', 'monetdb5', 'createdb'))))])
     print(r'                </Directory>')
     id = comp(features, id, 16,
-              [r'lib\monetdb5\%s' % x for x in sorted(filter(lambda x: 
x.endswith('.mal') and ('geom' not in x), os.listdir(os.path.join(sys.argv[3], 
'lib', 'monetdb5'))))])
+              [r'lib\monetdb5\%s' % x for x in sorted(filter(lambda x: 
x.endswith('.mal') and ('geom' not in x) and ('pyapi' not in x), 
os.listdir(os.path.join(sys.argv[3], 'lib', 'monetdb5'))))])
     id = comp(features, id, 16,
-              [r'lib\monetdb5\%s' % x for x in sorted(filter(lambda x: 
x.startswith('lib_') and x.endswith('.dll') and ('geom' not in x), 
os.listdir(os.path.join(sys.argv[3], 'lib', 'monetdb5'))))])
+              [r'lib\monetdb5\%s' % x for x in sorted(filter(lambda x: 
x.startswith('lib_') and x.endswith('.dll') and ('geom' not in x) and ('pyapi' 
not in x), os.listdir(os.path.join(sys.argv[3], 'lib', 'monetdb5'))))])
     id = comp(debug, id, 16,
               [r'lib\monetdb5\%s' % x for x in sorted(filter(lambda x: 
x.startswith('lib_') and x.endswith('.pdb') and ('geom' not in x), 
os.listdir(os.path.join(sys.argv[3], 'lib', 'monetdb5'))))])
     id = comp(geom, id, 16,
               [r'lib\monetdb5\%s' % x for x in sorted(filter(lambda x: 
x.endswith('.mal') and ('geom' in x), os.listdir(os.path.join(sys.argv[3], 
'lib', 'monetdb5'))))])
     id = comp(geom, id, 16,
               [r'lib\monetdb5\%s' % x for x in sorted(filter(lambda x: 
x.startswith('lib_') and (x.endswith('.dll') or x.endswith('.pdb')) and ('geom' 
in x), os.listdir(os.path.join(sys.argv[3], 'lib', 'monetdb5'))))])
+    id = comp(pyapi2, id, 16,
+              [r'lib\monetdb5\pyapi.mal',
+               r'lib\monetdb5\lib_pyapi.dll'])
+    id = comp(pyapi3, id, 16,
+              [r'lib\monetdb5\pyapi3.mal',
+               r'lib\monetdb5\lib_pyapi3.dll'])
     print(r'              </Directory>')
     id = comp(extend, id, 14,
               [r'lib\libbat.lib',
@@ -215,8 +240,11 @@ def main():
               [r'license.rtf',
                r'M5server.bat',
                r'msqldump.bat',
-               r'pyapi_locatepython.bat',
                r'stethoscope.bat'])
+    id = comp(pyapi2, id, 12,
+              [r'pyapi_locatepython2.bat'])
+    id = comp(pyapi3, id, 12,
+              [r'pyapi_locatepython3.bat'])
     id = comp(features, id, 12,
               [r'mclient.bat'],
               name = 'MonetDB SQL Client',
@@ -245,6 +273,16 @@ def main():
         print(r'        <ComponentRef Id="%s"/>' % f)
     print(r'        <MergeRef Id="VCRedist"/>')
     print(r'      </Feature>')
+    print(r'      <Feature Id="PyAPI2" Level="1000" AllowAdvertise="no" 
Absent="allow" Title="Include embedded Python 2" Description="Files required 
for using embedded Python 2.">')
+    for f in pyapi2:
+        print(r'        <ComponentRef Id="%s"/>' % f)
+    print(r'        <Condition Level="1">PYAPI2EXISTS</Condition>')
+    print(r'      </Feature>')
+    print(r'      <Feature Id="PyAPI3" Level="1000" AllowAdvertise="no" 
Absent="allow" Title="Include embedded Python 3" Description="Files required 
for using embedded Python 3.">')
+    for f in pyapi3:
+        print(r'        <ComponentRef Id="%s"/>' % f)
+    print(r'        <Condition Level="1">PYAPI3EXISTS</Condition>')
+    print(r'      </Feature>')
     print(r'      <Feature Id="Extend" Level="1000" AllowAdvertise="no" 
Absent="allow" Title="Extend MonetDB/SQL" Description="Files required for 
extending MonetDB (include files and .lib files).">')
     for f in extend:
         print(r'        <ComponentRef Id="%s"/>' % f)
diff --git a/NT/rules.msc b/NT/rules.msc
--- a/NT/rules.msc
+++ b/NT/rules.msc
@@ -185,8 +185,13 @@ R.lib: "$(libr_DLL)"
 !ENDIF
 
 !IFDEF HAVE_LIBPY
-libpy_LIBS = $(PYTHON2DIR)\libs\python27.lib
-libpy_CFLAGS = -DHAVE_LIBPY -I$(PYTHON2DIR)\include 
-I$(PYTHON2DIR)\Lib\site-packages\numpy\core\include
+libpy_LIBS = "$(PYTHON2DIR)\libs\python27.lib"
+libpy_CFLAGS = -DHAVE_LIBPY "-I$(PYTHON2DIR)\include" 
"-I$(PYTHON2DIR)\Lib\site-packages\numpy\core\include"
+!ENDIF
+
+!IFDEF HAVE_LIBPY3
+libpy3_LIBS = "$(PYTHON3DIR)\libs\python37.lib"
+libpy3_CFLAGS = -DHAVE_LIBPY3 "-I$(PYTHON3DIR)\include" 
"-I$(PYTHON3DIR)\Lib\site-packages\numpy\core\include"
 !ENDIF
 
 # some programs we use, probably no need to edit
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
@@ -681,6 +681,10 @@ Ready.
 [ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:bit], b2:bat[:bit], 
nil_matches:bit):bat[:bit] ",   "CMDbatNE;",    "Return B1 != B2"       ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatNE;",    "Return B1 != B2 with 
candidates list"  ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid], nil_matches:bit):bat[:bit] ",      "CMDbatNE;",    "Return B1 != 
B2 with candidates list"  ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:blob], 
b2:bat[:blob]):bat[:bit] ",  "CMDbatNE;",    "Return B1 != B2"       ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:blob], b2:bat[:blob], 
nil_matches:bit):bat[:bit] ", "CMDbatNE;",    "Return B1 != B2"       ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatNE;",    "Return B1 != B2 with candidates 
list"  ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid], nil_matches:bit):bat[:bit] ",    "CMDbatNE;",    "Return B1 != B2 
with candidates list"  ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:bte], 
b2:bat[:bte]):bat[:bit] ",    "CMDbatNE;",    "Return B1 != B2"       ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:bte], b2:bat[:bte], 
nil_matches:bit):bat[:bit] ",   "CMDbatNE;",    "Return B1 != B2"       ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b1:bat[:bte], b2:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatNE;",    "Return B1 != B2 with 
candidates list"  ]
@@ -853,6 +857,10 @@ Ready.
 [ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:bit], v:bit, 
nil_matches:bit):bat[:bit] ",   "CMDbatNE;",    "Return B != V" ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:bit], v:bit, 
s:bat[:oid]):bat[:bit] ",       "CMDbatNE;",    "Return B != V with candidates 
list"    ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:bit], v:bit, s:bat[:oid], 
nil_matches:bit):bat[:bit] ",      "CMDbatNE;",    "Return B != V with 
candidates list"    ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:blob], v:blob):bat[:bit] ",  
"CMDbatNE;",    "Return B != V" ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:blob], v:blob, 
nil_matches:bit):bat[:bit] ", "CMDbatNE;",    "Return B != V" ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:blob], v:blob, 
s:bat[:oid]):bat[:bit] ",     "CMDbatNE;",    "Return B != V with candidates 
list"    ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:blob], v:blob, s:bat[:oid], 
nil_matches:bit):bat[:bit] ",    "CMDbatNE;",    "Return B != V with candidates 
list"    ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:bte], v:bte):bat[:bit] ",    
"CMDbatNE;",    "Return B != V" ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:bte], v:bte, 
nil_matches:bit):bat[:bit] ",   "CMDbatNE;",    "Return B != V" ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(b:bat[:bte], v:bte, 
s:bat[:oid]):bat[:bit] ",       "CMDbatNE;",    "Return B != V with candidates 
list"    ]
@@ -1021,6 +1029,10 @@ Ready.
 [ "batcalc",   "!=",   "pattern batcalc.!=(v:bit, b:bat[:bit], 
nil_matches:bit):bat[:bit] ",   "CMDbatNE;",    "Return V != B" ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(v:bit, b:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatNE;",    "Return V != B with candidates 
list"    ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(v:bit, b:bat[:bit], s:bat[:oid], 
nil_matches:bit):bat[:bit] ",      "CMDbatNE;",    "Return V != B with 
candidates list"    ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(v:blob, b:bat[:blob]):bat[:bit] ",  
"CMDbatNE;",    "Return V != B" ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(v:blob, b:bat[:blob], 
nil_matches:bit):bat[:bit] ", "CMDbatNE;",    "Return V != B" ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(v:blob, b:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatNE;",    "Return V != B with candidates 
list"    ]
+[ "batcalc",   "!=",   "pattern batcalc.!=(v:blob, b:bat[:blob], s:bat[:oid], 
nil_matches:bit):bat[:bit] ",    "CMDbatNE;",    "Return V != B with candidates 
list"    ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(v:bte, b:bat[:bte]):bat[:bit] ",    
"CMDbatNE;",    "Return V != B" ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(v:bte, b:bat[:bte], 
nil_matches:bit):bat[:bit] ",   "CMDbatNE;",    "Return V != B" ]
 [ "batcalc",   "!=",   "pattern batcalc.!=(v:bte, b:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatNE;",    "Return V != B with candidates 
list"    ]
@@ -4043,6 +4055,8 @@ Ready.
 [ "batcalc",   "/",    "pattern batcalc./(v:sht, b:bat[:sht], 
s:bat[:oid]):bat[:sht] ",        "CMDbatDIVsignal;",     "Return V / B with 
candidates list, signal error on overflow"   ]
 [ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:bit], 
b2:bat[:bit]):bat[:bit] ",     "CMDbatLT;",    "Return B1 < B2"        ]
 [ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid]):bat[:bit] ",        "CMDbatLT;",    "Return B1 < B2 with 
candidates list"   ]
+[ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:blob], 
b2:bat[:blob]):bat[:bit] ",   "CMDbatLT;",    "Return B1 < B2"        ]
+[ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid]):bat[:bit] ",      "CMDbatLT;",    "Return B1 < B2 with candidates 
list"   ]
 [ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:bte], 
b2:bat[:bte]):bat[:bit] ",     "CMDbatLT;",    "Return B1 < B2"        ]
 [ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:bte], b2:bat[:bte], 
s:bat[:oid]):bat[:bit] ",        "CMDbatLT;",    "Return B1 < B2 with 
candidates list"   ]
 [ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:bte], 
b2:bat[:dbl]):bat[:bit] ",     "CMDbatLT;",    "Return B1 < B2"        ]
@@ -4129,6 +4143,8 @@ Ready.
 [ "batcalc",   "<",    "pattern batcalc.<(b1:bat[:uuid], 
b2:bat[:uuid]):bat[:bit] ",   "CMDbatLT;",    "Return B1 < B2"        ]
 [ "batcalc",   "<",    "pattern batcalc.<(b:bat[:bit], v:bit):bat[:bit] ",     
"CMDbatLT;",    "Return B < V"  ]
 [ "batcalc",   "<",    "pattern batcalc.<(b:bat[:bit], v:bit, 
s:bat[:oid]):bat[:bit] ",        "CMDbatLT;",    "Return B < V with candidates 
list"     ]
+[ "batcalc",   "<",    "pattern batcalc.<(b:bat[:blob], v:blob):bat[:bit] ",   
"CMDbatLT;",    "Return B < V"  ]
+[ "batcalc",   "<",    "pattern batcalc.<(b:bat[:blob], v:blob, 
s:bat[:oid]):bat[:bit] ",      "CMDbatLT;",    "Return B < V with candidates 
list"     ]
 [ "batcalc",   "<",    "pattern batcalc.<(b:bat[:bte], v:bte):bat[:bit] ",     
"CMDbatLT;",    "Return B < V"  ]
 [ "batcalc",   "<",    "pattern batcalc.<(b:bat[:bte], v:bte, 
s:bat[:oid]):bat[:bit] ",        "CMDbatLT;",    "Return B < V with candidates 
list"     ]
 [ "batcalc",   "<",    "pattern batcalc.<(b:bat[:bte], v:dbl):bat[:bit] ",     
"CMDbatLT;",    "Return B < V"  ]
@@ -4213,6 +4229,8 @@ Ready.
 [ "batcalc",   "<",    "pattern batcalc.<(b:bat[:timestamp], v:timestamp, 
s:bat[:oid]):bat[:bit] ",    "CMDbatLT;",    "Return B < V with candidates 
list"     ]
 [ "batcalc",   "<",    "pattern batcalc.<(v:bit, b:bat[:bit]):bat[:bit] ",     
"CMDbatLT;",    "Return V < B"  ]
 [ "batcalc",   "<",    "pattern batcalc.<(v:bit, b:bat[:bit], 
s:bat[:oid]):bat[:bit] ",        "CMDbatLT;",    "Return V < B with candidates 
list"     ]
+[ "batcalc",   "<",    "pattern batcalc.<(v:blob, b:bat[:blob]):bat[:bit] ",   
"CMDbatLT;",    "Return V < B"  ]
+[ "batcalc",   "<",    "pattern batcalc.<(v:blob, b:bat[:blob], 
s:bat[:oid]):bat[:bit] ",      "CMDbatLT;",    "Return V < B with candidates 
list"     ]
 [ "batcalc",   "<",    "pattern batcalc.<(v:bte, b:bat[:bte]):bat[:bit] ",     
"CMDbatLT;",    "Return V < B"  ]
 [ "batcalc",   "<",    "pattern batcalc.<(v:bte, b:bat[:bte], 
s:bat[:oid]):bat[:bit] ",        "CMDbatLT;",    "Return V < B with candidates 
list"     ]
 [ "batcalc",   "<",    "pattern batcalc.<(v:bte, b:bat[:dbl]):bat[:bit] ",     
"CMDbatLT;",    "Return V < B"  ]
@@ -4393,6 +4411,8 @@ Ready.
 [ "batcalc",   "<<",   "pattern batcalc.<<(v:sht, b:bat[:sht], 
s:bat[:oid]):bat[:sht] ",       "CMDbatLSHsignal;",     "Return V << B with 
candidates list, raise error on out of range second operand"        ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:bit], 
b2:bat[:bit]):bat[:bit] ",    "CMDbatLE;",    "Return B1 <= B2"       ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatLE;",    "Return B1 <= B2 with 
candidates list"  ]
+[ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:blob], 
b2:bat[:blob]):bat[:bit] ",  "CMDbatLE;",    "Return B1 <= B2"       ]
+[ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatLE;",    "Return B1 <= B2 with candidates 
list"  ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:bte], 
b2:bat[:bte]):bat[:bit] ",    "CMDbatLE;",    "Return B1 <= B2"       ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:bte], b2:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatLE;",    "Return B1 <= B2 with 
candidates list"  ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:bte], 
b2:bat[:dbl]):bat[:bit] ",    "CMDbatLE;",    "Return B1 <= B2"       ]
@@ -4479,6 +4499,8 @@ Ready.
 [ "batcalc",   "<=",   "pattern batcalc.<=(b1:bat[:uuid], 
b2:bat[:uuid]):bat[:bit] ",  "CMDbatLE;",    "Return B1 <= B2"       ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:bit], v:bit):bat[:bit] ",    
"CMDbatLE;",    "Return B <= V" ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:bit], v:bit, 
s:bat[:oid]):bat[:bit] ",       "CMDbatLE;",    "Return B <= V with candidates 
list"    ]
+[ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:blob], v:blob):bat[:bit] ",  
"CMDbatLE;",    "Return B <= V" ]
+[ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:blob], v:blob, 
s:bat[:oid]):bat[:bit] ",     "CMDbatLE;",    "Return B <= V with candidates 
list"    ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:bte], v:bte):bat[:bit] ",    
"CMDbatLE;",    "Return B <= V" ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:bte], v:bte, 
s:bat[:oid]):bat[:bit] ",       "CMDbatLE;",    "Return B <= V with candidates 
list"    ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:bte], v:dbl):bat[:bit] ",    
"CMDbatLE;",    "Return B <= V" ]
@@ -4563,6 +4585,8 @@ Ready.
 [ "batcalc",   "<=",   "pattern batcalc.<=(b:bat[:timestamp], v:timestamp, 
s:bat[:oid]):bat[:bit] ",   "CMDbatLE;",    "Return B <= V with candidates 
list"    ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(v:bit, b:bat[:bit]):bat[:bit] ",    
"CMDbatLE;",    "Return V <= B" ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(v:bit, b:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatLE;",    "Return V <= B with candidates 
list"    ]
+[ "batcalc",   "<=",   "pattern batcalc.<=(v:blob, b:bat[:blob]):bat[:bit] ",  
"CMDbatLE;",    "Return V <= B" ]
+[ "batcalc",   "<=",   "pattern batcalc.<=(v:blob, b:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatLE;",    "Return V <= B with candidates 
list"    ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(v:bte, b:bat[:bte]):bat[:bit] ",    
"CMDbatLE;",    "Return V <= B" ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(v:bte, b:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatLE;",    "Return V <= B with candidates 
list"    ]
 [ "batcalc",   "<=",   "pattern batcalc.<=(v:bte, b:bat[:dbl]):bat[:bit] ",    
"CMDbatLE;",    "Return V <= B" ]
@@ -4649,6 +4673,10 @@ Ready.
 [ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:bit], b2:bat[:bit], 
nil_matches:bit):bat[:bit] ",   "CMDbatEQ;",    "Return B1 == B2"       ]
 [ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatEQ;",    "Return B1 == B2 with 
candidates list"  ]
 [ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid], nil_matches:bit):bat[:bit] ",      "CMDbatEQ;",    "Return B1 == 
B2 with candidates list"  ]
+[ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:blob], 
b2:bat[:blob]):bat[:bit] ",  "CMDbatEQ;",    "Return B1 == B2"       ]
+[ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:blob], b2:bat[:blob], 
nil_matches:bit):bat[:bit] ", "CMDbatEQ;",    "Return B1 == B2"       ]
+[ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatEQ;",    "Return B1 == B2 with candidates 
list"  ]
+[ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid], nil_matches:bit):bat[:bit] ",    "CMDbatEQ;",    "Return B1 == B2 
with candidates list"  ]
 [ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:bte], 
b2:bat[:bte]):bat[:bit] ",    "CMDbatEQ;",    "Return B1 == B2"       ]
 [ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:bte], b2:bat[:bte], 
nil_matches:bit):bat[:bit] ",   "CMDbatEQ;",    "Return B1 == B2"       ]
 [ "batcalc",   "==",   "pattern batcalc.==(b1:bat[:bte], b2:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatEQ;",    "Return B1 == B2 with 
candidates list"  ]
@@ -4821,6 +4849,10 @@ Ready.
 [ "batcalc",   "==",   "pattern batcalc.==(b:bat[:bit], v:bit, 
nil_matches:bit):bat[:bit] ",   "CMDbatEQ;",    "Return B == V" ]
 [ "batcalc",   "==",   "pattern batcalc.==(b:bat[:bit], v:bit, 
s:bat[:oid]):bat[:bit] ",       "CMDbatEQ;",    "Return B == V with candidates 
list"    ]
 [ "batcalc",   "==",   "pattern batcalc.==(b:bat[:bit], v:bit, s:bat[:oid], 
nil_matches:bit):bat[:bit] ",      "CMDbatEQ;",    "Return B == V with 
candidates list"    ]
+[ "batcalc",   "==",   "pattern batcalc.==(b:bat[:blob], v:blob):bat[:bit] ",  
"CMDbatEQ;",    "Return B == V" ]
+[ "batcalc",   "==",   "pattern batcalc.==(b:bat[:blob], v:blob, 
nil_matches:bit):bat[:bit] ", "CMDbatEQ;",    "Return B == V" ]
+[ "batcalc",   "==",   "pattern batcalc.==(b:bat[:blob], v:blob, 
s:bat[:oid]):bat[:bit] ",     "CMDbatEQ;",    "Return B == V with candidates 
list"    ]
+[ "batcalc",   "==",   "pattern batcalc.==(b:bat[:blob], v:blob, s:bat[:oid], 
nil_matches:bit):bat[:bit] ",    "CMDbatEQ;",    "Return B == V with candidates 
list"    ]
 [ "batcalc",   "==",   "pattern batcalc.==(b:bat[:bte], v:bte):bat[:bit] ",    
"CMDbatEQ;",    "Return B == V" ]
 [ "batcalc",   "==",   "pattern batcalc.==(b:bat[:bte], v:bte, 
nil_matches:bit):bat[:bit] ",   "CMDbatEQ;",    "Return B == V" ]
 [ "batcalc",   "==",   "pattern batcalc.==(b:bat[:bte], v:bte, 
s:bat[:oid]):bat[:bit] ",       "CMDbatEQ;",    "Return B == V with candidates 
list"    ]
@@ -4989,6 +5021,10 @@ Ready.
 [ "batcalc",   "==",   "pattern batcalc.==(v:bit, b:bat[:bit], 
nil_matches:bit):bat[:bit] ",   "CMDbatEQ;",    "Return V == B" ]
 [ "batcalc",   "==",   "pattern batcalc.==(v:bit, b:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatEQ;",    "Return V == B with candidates 
list"    ]
 [ "batcalc",   "==",   "pattern batcalc.==(v:bit, b:bat[:bit], s:bat[:oid], 
nil_matches:bit):bat[:bit] ",      "CMDbatEQ;",    "Return V == B with 
candidates list"    ]
+[ "batcalc",   "==",   "pattern batcalc.==(v:blob, b:bat[:blob]):bat[:bit] ",  
"CMDbatEQ;",    "Return V == B" ]
+[ "batcalc",   "==",   "pattern batcalc.==(v:blob, b:bat[:blob], 
nil_matches:bit):bat[:bit] ", "CMDbatEQ;",    "Return V == B" ]
+[ "batcalc",   "==",   "pattern batcalc.==(v:blob, b:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatEQ;",    "Return V == B with candidates 
list"    ]
+[ "batcalc",   "==",   "pattern batcalc.==(v:blob, b:bat[:blob], s:bat[:oid], 
nil_matches:bit):bat[:bit] ",    "CMDbatEQ;",    "Return V == B with candidates 
list"    ]
 [ "batcalc",   "==",   "pattern batcalc.==(v:bte, b:bat[:bte]):bat[:bit] ",    
"CMDbatEQ;",    "Return V == B" ]
 [ "batcalc",   "==",   "pattern batcalc.==(v:bte, b:bat[:bte], 
nil_matches:bit):bat[:bit] ",   "CMDbatEQ;",    "Return V == B" ]
 [ "batcalc",   "==",   "pattern batcalc.==(v:bte, b:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatEQ;",    "Return V == B with candidates 
list"    ]
@@ -5155,6 +5191,8 @@ Ready.
 [ "batcalc",   "==",   "pattern batcalc.==(v:timestamp, b:bat[:timestamp], 
s:bat[:oid], nil_matches:bit):bat[:bit] ",  "CMDbatEQ;",    "Return V == B with 
candidates list"    ]
 [ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:bit], 
b2:bat[:bit]):bat[:bit] ",     "CMDbatGT;",    "Return B1 > B2"        ]
 [ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid]):bat[:bit] ",        "CMDbatGT;",    "Return B1 > B2 with 
candidates list"   ]
+[ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:blob], 
b2:bat[:blob]):bat[:bit] ",   "CMDbatGT;",    "Return B1 > B2"        ]
+[ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid]):bat[:bit] ",      "CMDbatGT;",    "Return B1 > B2 with candidates 
list"   ]
 [ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:bte], 
b2:bat[:bte]):bat[:bit] ",     "CMDbatGT;",    "Return B1 > B2"        ]
 [ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:bte], b2:bat[:bte], 
s:bat[:oid]):bat[:bit] ",        "CMDbatGT;",    "Return B1 > B2 with 
candidates list"   ]
 [ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:bte], 
b2:bat[:dbl]):bat[:bit] ",     "CMDbatGT;",    "Return B1 > B2"        ]
@@ -5241,6 +5279,8 @@ Ready.
 [ "batcalc",   ">",    "pattern batcalc.>(b1:bat[:uuid], 
b2:bat[:uuid]):bat[:bit] ",   "CMDbatGT;",    "Return B1 > B2"        ]
 [ "batcalc",   ">",    "pattern batcalc.>(b:bat[:bit], v:bit):bat[:bit] ",     
"CMDbatGT;",    "Return B > V"  ]
 [ "batcalc",   ">",    "pattern batcalc.>(b:bat[:bit], v:bit, 
s:bat[:oid]):bat[:bit] ",        "CMDbatGT;",    "Return B > V with candidates 
list"     ]
+[ "batcalc",   ">",    "pattern batcalc.>(b:bat[:blob], v:blob):bat[:bit] ",   
"CMDbatGT;",    "Return B > V"  ]
+[ "batcalc",   ">",    "pattern batcalc.>(b:bat[:blob], v:blob, 
s:bat[:oid]):bat[:bit] ",      "CMDbatGT;",    "Return B > V with candidates 
list"     ]
 [ "batcalc",   ">",    "pattern batcalc.>(b:bat[:bte], v:bte):bat[:bit] ",     
"CMDbatGT;",    "Return B > V"  ]
 [ "batcalc",   ">",    "pattern batcalc.>(b:bat[:bte], v:bte, 
s:bat[:oid]):bat[:bit] ",        "CMDbatGT;",    "Return B > V with candidates 
list"     ]
 [ "batcalc",   ">",    "pattern batcalc.>(b:bat[:bte], v:dbl):bat[:bit] ",     
"CMDbatGT;",    "Return B > V"  ]
@@ -5325,6 +5365,8 @@ Ready.
 [ "batcalc",   ">",    "pattern batcalc.>(b:bat[:timestamp], v:timestamp, 
s:bat[:oid]):bat[:bit] ",    "CMDbatGT;",    "Return B > V with candidates 
list"     ]
 [ "batcalc",   ">",    "pattern batcalc.>(v:bit, b:bat[:bit]):bat[:bit] ",     
"CMDbatGT;",    "Return V > B"  ]
 [ "batcalc",   ">",    "pattern batcalc.>(v:bit, b:bat[:bit], 
s:bat[:oid]):bat[:bit] ",        "CMDbatGT;",    "Return V > B with candidates 
list"     ]
+[ "batcalc",   ">",    "pattern batcalc.>(v:blob, b:bat[:blob]):bat[:bit] ",   
"CMDbatGT;",    "Return V > B"  ]
+[ "batcalc",   ">",    "pattern batcalc.>(v:blob, b:bat[:blob], 
s:bat[:oid]):bat[:bit] ",      "CMDbatGT;",    "Return V > B with candidates 
list"     ]
 [ "batcalc",   ">",    "pattern batcalc.>(v:bte, b:bat[:bte]):bat[:bit] ",     
"CMDbatGT;",    "Return V > B"  ]
 [ "batcalc",   ">",    "pattern batcalc.>(v:bte, b:bat[:bte], 
s:bat[:oid]):bat[:bit] ",        "CMDbatGT;",    "Return V > B with candidates 
list"     ]
 [ "batcalc",   ">",    "pattern batcalc.>(v:bte, b:bat[:dbl]):bat[:bit] ",     
"CMDbatGT;",    "Return V > B"  ]
@@ -5409,6 +5451,8 @@ Ready.
 [ "batcalc",   ">",    "pattern batcalc.>(v:timestamp, b:bat[:timestamp], 
s:bat[:oid]):bat[:bit] ",    "CMDbatGT;",    "Return V > B with candidates 
list"     ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:bit], 
b2:bat[:bit]):bat[:bit] ",    "CMDbatGE;",    "Return B1 >= B2"       ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:bit], b2:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatGE;",    "Return B1 >= B2 with 
candidates list"  ]
+[ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:blob], 
b2:bat[:blob]):bat[:bit] ",  "CMDbatGE;",    "Return B1 >= B2"       ]
+[ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:blob], b2:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatGE;",    "Return B1 >= B2 with candidates 
list"  ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:bte], 
b2:bat[:bte]):bat[:bit] ",    "CMDbatGE;",    "Return B1 >= B2"       ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:bte], b2:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatGE;",    "Return B1 >= B2 with 
candidates list"  ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:bte], 
b2:bat[:dbl]):bat[:bit] ",    "CMDbatGE;",    "Return B1 >= B2"       ]
@@ -5495,6 +5539,8 @@ Ready.
 [ "batcalc",   ">=",   "pattern batcalc.>=(b1:bat[:uuid], 
b2:bat[:uuid]):bat[:bit] ",  "CMDbatGE;",    "Return B1 >= B2"       ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:bit], v:bit):bat[:bit] ",    
"CMDbatGE;",    "Return B >= V" ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:bit], v:bit, 
s:bat[:oid]):bat[:bit] ",       "CMDbatGE;",    "Return B >= V with candidates 
list"    ]
+[ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:blob], v:blob):bat[:bit] ",  
"CMDbatGE;",    "Return B >= V" ]
+[ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:blob], v:blob, 
s:bat[:oid]):bat[:bit] ",     "CMDbatGE;",    "Return B >= V with candidates 
list"    ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:bte], v:bte):bat[:bit] ",    
"CMDbatGE;",    "Return B >= V" ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:bte], v:bte, 
s:bat[:oid]):bat[:bit] ",       "CMDbatGE;",    "Return B >= V with candidates 
list"    ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:bte], v:dbl):bat[:bit] ",    
"CMDbatGE;",    "Return B >= V" ]
@@ -5579,6 +5625,8 @@ Ready.
 [ "batcalc",   ">=",   "pattern batcalc.>=(b:bat[:timestamp], v:timestamp, 
s:bat[:oid]):bat[:bit] ",   "CMDbatGE;",    "Return B >= V with candidates 
list"    ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(v:bit, b:bat[:bit]):bat[:bit] ",    
"CMDbatGE;",    "Return V >= B" ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(v:bit, b:bat[:bit], 
s:bat[:oid]):bat[:bit] ",       "CMDbatGE;",    "Return V >= B with candidates 
list"    ]
+[ "batcalc",   ">=",   "pattern batcalc.>=(v:blob, b:bat[:blob]):bat[:bit] ",  
"CMDbatGE;",    "Return V >= B" ]
+[ "batcalc",   ">=",   "pattern batcalc.>=(v:blob, b:bat[:blob], 
s:bat[:oid]):bat[:bit] ",     "CMDbatGE;",    "Return V >= B with candidates 
list"    ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(v:bte, b:bat[:bte]):bat[:bit] ",    
"CMDbatGE;",    "Return V >= B" ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(v:bte, b:bat[:bte], 
s:bat[:oid]):bat[:bit] ",       "CMDbatGE;",    "Return V >= B with candidates 
list"    ]
 [ "batcalc",   ">=",   "pattern batcalc.>=(v:bte, b:bat[:dbl]):bat[:bit] ",    
"CMDbatGE;",    "Return V >= B" ]
@@ -6115,6 +6163,7 @@ Ready.
 [ "batcalc",   "bit_noerror",  "pattern batcalc.bit_noerror(b:bat[:sht], 
s:bat[:oid]):bat[:bit] ",     "CMDconvert_bit;",      "cast from sht to bit 
with candidates list"     ]
 [ "batcalc",   "bit_noerror",  "pattern 
batcalc.bit_noerror(b:bat[:str]):bat[:bit] ",  "CMDconvert_bit;",      "cast 
from str to bit"  ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to