Changeset: e68b4bba0eb4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e68b4bba0eb4
Modified Files:
        clients/Tests/MAL-signatures.stable.out.int128
        gdk/ChangeLog.Dec2016
        gdk/gdk_calc.c
        monetdb5/modules/mal/00_batcalc_hge.mal
        monetdb5/modules/mal/00_batcalc_hge.mal.sh
        monetdb5/modules/mal/00_calc_hge.mal
        monetdb5/modules/mal/00_calc_hge.mal.sh
        monetdb5/modules/mal/01_batcalc.mal
        monetdb5/modules/mal/01_batcalc.mal.sh
        monetdb5/modules/mal/01_calc.mal
        monetdb5/modules/mal/01_calc.mal.sh
Branch: Dec2016
Log Message:

Implemented (bat)calc.str for :any type.


diffs (truncated from 518 to 300 lines):

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
@@ -7543,47 +7543,11 @@ Ready.
 [ "batcalc",   "sign", "pattern batcalc.sign(b:bat[:sht]):bat[:bte] ", 
"CMDbatSIGN;",  "Unary sign (-1,0,1) over the tail of the bat"  ]
 [ "batcalc",   "sign", "pattern 
batcalc.sign(b:bat[:sht],s:bat[:oid]):bat[:bte] ",     "CMDbatSIGN;",  "Unary 
sign (-1,0,1) over the tail of the bat with candidates list"     ]
 [ "batcalc",   "sqlblob",      "command 
batcalc.sqlblob(v:bat[:str]):bat[:sqlblob] ",  "batstr_2_sqlblob;",    "cast to 
sqlblob"       ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bit]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from bit to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bit],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from bit to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bte]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from bte to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:bte],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from bte to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:dbl]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from dbl to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:dbl],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from dbl to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:flt]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from flt to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:flt],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from flt to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:hge]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from hge to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:hge],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from hge to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:int]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from int to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:int],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from int to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:lng]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from lng to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:lng],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from lng to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:oid]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from oid to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:oid],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from oid to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:sht]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from sht to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:sht],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from sht to str with candidates 
list, signal error on overflow"   ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:str]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from str to str, signal error on 
overflow"        ]
-[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:str],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from str to str with candidates 
list, signal error on overflow"   ]
+[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:any]):bat[:str] ",  
"CMDconvertsignal_str;",        "cast from any to str, signal error on 
overflow"        ]
+[ "batcalc",   "str",  "pattern batcalc.str(b:bat[:any],s:bat[:oid]):bat[:str] 
",      "CMDconvertsignal_str;",        "cast from any to str with candidates 
list, signal error on overflow"   ]
 [ "batcalc",   "str",  "pattern 
batcalc.str(eclass:int,d1:int,s1:int,has_tz:int,v:bat[:any_1],digits:int):bat[:str]
 ", "SQLbatstr_cast;",      "cast to string and check for overflow" ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bit]):bat[:str] ",  "CMDconvert_str;",      "cast 
from bit to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bit],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from bit to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bte]):bat[:str] ",  "CMDconvert_str;",      "cast 
from bte to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:bte],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from bte to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:dbl]):bat[:str] ",  "CMDconvert_str;",      "cast 
from dbl to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:dbl],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from dbl to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:flt]):bat[:str] ",  "CMDconvert_str;",      "cast 
from flt to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:flt],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from flt to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:hge]):bat[:str] ",  "CMDconvert_str;",      "cast 
from hge to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:hge],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from hge to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:int]):bat[:str] ",  "CMDconvert_str;",      "cast 
from int to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:int],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from int to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:lng]):bat[:str] ",  "CMDconvert_str;",      "cast 
from lng to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:lng],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from lng to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:oid]):bat[:str] ",  "CMDconvert_str;",      "cast 
from oid to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:oid],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from oid to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:sht]):bat[:str] ",  "CMDconvert_str;",      "cast 
from sht to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:sht],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from sht to str with candidates list"     ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:str]):bat[:str] ",  "CMDconvert_str;",      "cast 
from str to str"  ]
-[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:str],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from str to str with candidates list"     ]
+[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:any]):bat[:str] ",  "CMDconvert_str;",      "cast 
from any to str"  ]
+[ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(b:bat[:any],s:bat[:oid]):bat[:str] ",      
"CMDconvert_str;",      "cast from any to str with candidates list"     ]
 [ "batcalc",   "strings",      "command batcalc.strings(v:bat[:str]):bat[:str] 
",      "BATSTRstrings;",       "Return the strings"    ]
 [ "batcalc",   "sub_noerror",  "pattern 
batcalc.sub_noerror(b1:bat[:bte],b2:bat[:bte]):bat[:bte] ",    "CMDbatSUB;",   
"Return B1 - B2, overflow causes NIL value"     ]
 [ "batcalc",   "sub_noerror",  "pattern 
batcalc.sub_noerror(b1:bat[:bte],b2:bat[:bte],s:bat[:oid]):bat[:bte] ",        
"CMDbatSUB;",   "Return B1 - B2 with candidates list, overflow causes NIL 
value"        ]
@@ -9664,17 +9628,7 @@ Ready.
 [ "calc",      "sqlblob",      "command calc.sqlblob(b:sqlblob):sqlblob ",     
"BLOBblob_blob;",       ""      ]
 [ "calc",      "sqlblob",      "command calc.sqlblob(s:str):sqlblob ", 
"BLOBsqlblob_fromstr;", ""      ]
 [ "calc",      "sqlblob",      "command calc.sqlblob(v:str):sqlblob ", 
"str_2_sqlblob;",       "cast to sqlblob"       ]
-[ "calc",      "str",  "pattern calc.str(v:bit):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:bte):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:dbl):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:flt):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:hge):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:int):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:lng):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:oid):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:sht):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:str):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
-[ "calc",      "str",  "pattern calc.str(v:void):str ",        
"CMDvarCONVERT;",       "Cast VALUE to str"     ]
+[ "calc",      "str",  "pattern calc.str(v:any):str ", "CMDvarCONVERT;",       
"Cast VALUE to str"     ]
 [ "calc",      "str",  "command calc.str(v:date):str ",        
"SQLdate_2_str;",       "cast date to str"      ]
 [ "calc",      "str",  "command calc.str(v:sqlblob):str ",     
"SQLsqlblob_2_str;",    "cast sqlblob to str"   ]
 [ "calc",      "str",  "pattern 
calc.str(eclass:int,d1:int,s1:int,has_tz:int,v:any_1,digits:int):str ",        
"SQLstr_cast;", "cast to string and check for overflow" ]
diff --git a/gdk/ChangeLog.Dec2016 b/gdk/ChangeLog.Dec2016
--- a/gdk/ChangeLog.Dec2016
+++ b/gdk/ChangeLog.Dec2016
@@ -1,6 +1,10 @@
 # ChangeLog file for MonetDB
 # This file is updated with Maddlog
 
+* Wed Oct 26 2016 Sjoerd Mullender <[email protected]>
+- Implemented conversion to str from any type (not just the internal
+  types).
+
 * Wed Sep 14 2016 Sjoerd Mullender <[email protected]>
 - VALcopy and VALinit both return their first argument on success or
   (and that's new) NULL on (allocation) failure.
diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -13589,36 +13589,64 @@ convert2bit_impl(flt)
 convert2bit_impl(dbl)
 
 static BUN
-convert_any_str(int tp, const void *src, BAT *bn, BUN cnt,
-               BUN start, BUN end, const oid *restrict cand,
-               const oid *candend, oid candoff)
-{
+convert_any_str(BAT *b, BAT *bn, BUN cnt, BUN start, BUN end,
+               const oid *restrict cand, const oid *candend)
+{
+       int tp = b->ttype;
+       oid candoff = b->hseqbase;
        str dst = 0;
        int len = 0;
        BUN nils = 0;
        BUN i;
        const void *nil = ATOMnilptr(tp);
+       const void *restrict src;
        int (*atomtostr)(str *, int *, const void *) = BATatoms[tp].atomToStr;
-       int size = ATOMsize(tp);
+       int (*atomcmp)(const void *, const void *) = ATOMcompare(tp);
 
        for (i = 0; i < start; i++)
                tfastins_nocheck(bn, i, str_nil, bn->twidth);
-       for (i = start; i < end; i++) {
-               if (cand) {
-                       if (i < *cand - candoff) {
+       if (b->tvarsized) {
+               BATiter bi = bat_iterator(b);
+
+               assert(b->ttype != TYPE_void);
+               for (i = start; i < end; i++) {
+                       if (cand) {
+                               if (i < *cand - candoff) {
+                                       nils++;
+                                       tfastins_nocheck(bn, i, str_nil, 
bn->twidth);
+                                       continue;
+                               }
+                               assert(i == *cand - candoff);
+                               if (++cand == candend)
+                                       end = i + 1;
+                       }
+                       src = BUNtvar(bi, i);
+                       (*atomtostr)(&dst, &len, src);
+                       if ((*atomcmp)(src, nil) == 0)
                                nils++;
-                               tfastins_nocheck(bn, i, str_nil, bn->twidth);
-                               continue;
-                       }
-                       assert(i == *cand - candoff);
-                       if (++cand == candend)
-                               end = i + 1;
-               }
-               (*atomtostr)(&dst, &len, src);
-               if (ATOMcmp(tp, src, nil) == 0)
-                       nils++;
-               tfastins_nocheck(bn, i, dst, bn->twidth);
-               src = (const void *) ((const char *) src + size);
+                       tfastins_nocheck(bn, i, dst, bn->twidth);
+               }
+       } else {
+               int size = ATOMsize(tp);
+
+               src = Tloc(b, 0);
+               for (i = start; i < end; i++) {
+                       if (cand) {
+                               if (i < *cand - candoff) {
+                                       nils++;
+                                       tfastins_nocheck(bn, i, str_nil, 
bn->twidth);
+                                       continue;
+                               }
+                               assert(i == *cand - candoff);
+                               if (++cand == candend)
+                                       end = i + 1;
+                       }
+                       (*atomtostr)(&dst, &len, src);
+                       if ((*atomcmp)(src, nil) == 0)
+                               nils++;
+                       tfastins_nocheck(bn, i, dst, bn->twidth);
+                       src = (const void *) ((const char *) src + size);
+               }
        }
        for (i = end; i < cnt; i++)
                tfastins_nocheck(bn, i, str_nil, bn->twidth);
@@ -14279,7 +14307,8 @@ BATconvert(BAT *b, BAT *s, int tp, int a
 
        CANDINIT(b, s, start, end, cnt, cand, candend);
 
-       if (s == NULL && tp != TYPE_bit && ATOMbasetype(b->ttype) == 
ATOMbasetype(tp)){
+       if (s == NULL && tp != TYPE_bit && tp != TYPE_str &&
+           ATOMbasetype(b->ttype) == ATOMbasetype(tp)) {
                return COLcopy(b, tp, 0, TRANSIENT);
        }
 
@@ -14292,9 +14321,7 @@ BATconvert(BAT *b, BAT *s, int tp, int a
                                        start, end, cand, candend, b->hseqbase,
                                        abort_on_error);
        else if (tp == TYPE_str)
-               nils = convert_any_str(b->ttype, Tloc(b, 0), bn,
-                                      cnt, start, end, cand, candend,
-                                      b->hseqbase);
+               nils = convert_any_str(b, bn, cnt, start, end, cand, candend);
        else if (b->ttype == TYPE_str)
                nils = convert_str_any(b, tp, Tloc(bn, 0),
                                       start, end, cand, candend, b->hseqbase,
@@ -14347,7 +14374,7 @@ VARconvert(ValPtr ret, const ValRecord *
        if (ret->vtype == TYPE_str) {
                if (v->vtype == TYPE_void ||
                    (*ATOMcompare(v->vtype))(VALptr(v),
-                                                 ATOMnilptr(v->vtype)) == 0) {
+                                            ATOMnilptr(v->vtype)) == 0) {
                        ret->val.sval = GDKstrdup(str_nil);
                } else if (v->vtype == TYPE_str) {
                        ret->val.sval = GDKstrdup(v->val.sval);
diff --git a/monetdb5/modules/mal/00_batcalc_hge.mal 
b/monetdb5/modules/mal/00_batcalc_hge.mal
--- a/monetdb5/modules/mal/00_batcalc_hge.mal
+++ b/monetdb5/modules/mal/00_batcalc_hge.mal
@@ -5727,16 +5727,3 @@ pattern oid_noerror(b:bat[:hge],s:bat[:o
 address CMDconvert_oid
 comment "cast from hge to oid with candidates list";
 
-pattern str(b:bat[:hge]) :bat[:str]
-address CMDconvertsignal_str
-comment "cast from hge to str, signal error on overflow";
-pattern str(b:bat[:hge],s:bat[:oid]) :bat[:str]
-address CMDconvertsignal_str
-comment "cast from hge to str with candidates list, signal error on overflow";
-pattern str_noerror(b:bat[:hge]) :bat[:str]
-address CMDconvert_str
-comment "cast from hge to str";
-pattern str_noerror(b:bat[:hge],s:bat[:oid]) :bat[:str]
-address CMDconvert_str
-comment "cast from hge to str with candidates list";
-
diff --git a/monetdb5/modules/mal/00_batcalc_hge.mal.sh 
b/monetdb5/modules/mal/00_batcalc_hge.mal.sh
--- a/monetdb5/modules/mal/00_batcalc_hge.mal.sh
+++ b/monetdb5/modules/mal/00_batcalc_hge.mal.sh
@@ -493,6 +493,9 @@ EOF
 done
 
 for tp1 in $alltypes; do
+    if [[ $tp1 == str ]]; then
+       continue
+    fi
     for tp2 in $alltypes; do
        case $tp1$tp2 in
        *hge*) ;;
diff --git a/monetdb5/modules/mal/00_calc_hge.mal 
b/monetdb5/modules/mal/00_calc_hge.mal
--- a/monetdb5/modules/mal/00_calc_hge.mal
+++ b/monetdb5/modules/mal/00_calc_hge.mal
@@ -1278,11 +1278,6 @@ address CMDvarCONVERT
 comment "Cast VALUE to oid";
 
 
-pattern str(v:hge) :str
-address CMDvarCONVERT
-comment "Cast VALUE to str";
-
-
 module aggr;
 
 pattern sum(b:bat[:bte]) :hge
diff --git a/monetdb5/modules/mal/00_calc_hge.mal.sh 
b/monetdb5/modules/mal/00_calc_hge.mal.sh
--- a/monetdb5/modules/mal/00_calc_hge.mal.sh
+++ b/monetdb5/modules/mal/00_calc_hge.mal.sh
@@ -276,6 +276,9 @@ echo
 # done
 
 for tp1 in void $alltypes; do
+    if [[ $tp1 == str ]]; then
+       continue
+    fi
     for tp2 in void $alltypes; do
        case $tp1$tp2 in
        *hge*) ;;
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
@@ -15840,122 +15840,18 @@ pattern oid_noerror(b:bat[:str],s:bat[:o
 address CMDconvert_oid
 comment "cast from str to oid with candidates list";
 
-pattern str(b:bat[:bit]) :bat[:str]
+pattern str(b:bat[:any]) :bat[:str]
 address CMDconvertsignal_str
-comment "cast from bit to str, signal error on overflow";
-pattern str(b:bat[:bit],s:bat[:oid]) :bat[:str]
+comment "cast from any to str, signal error on overflow";
+pattern str(b:bat[:any],s:bat[:oid]) :bat[:str]
 address CMDconvertsignal_str
-comment "cast from bit to str with candidates list, signal error on overflow";
-pattern str_noerror(b:bat[:bit]) :bat[:str]
+comment "cast from any to str with candidates list, signal error on overflow";
+pattern str_noerror(b:bat[:any]) :bat[:str]
 address CMDconvert_str
-comment "cast from bit to str";
-pattern str_noerror(b:bat[:bit],s:bat[:oid]) :bat[:str]
+comment "cast from any to str";
+pattern str_noerror(b:bat[:any],s:bat[:oid]) :bat[:str]
 address CMDconvert_str
-comment "cast from bit to str with candidates list";
-
-pattern str(b:bat[:bte]) :bat[:str]
-address CMDconvertsignal_str
-comment "cast from bte to str, signal error on overflow";
-pattern str(b:bat[:bte],s:bat[:oid]) :bat[:str]
-address CMDconvertsignal_str
-comment "cast from bte to str with candidates list, signal error on overflow";
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to