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

Merge with octbugs branch.


diffs (truncated from 698 to 300 lines):

diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -151,6 +151,7 @@ def main():
                vcpkg.format(r'bin\libcharset.dll'), # for libiconv.dll
                vcpkg.format(r'bin\libcrypto-1_1{}.dll'.format(libcrypto)),
                vcpkg.format(r'bin\libxml2.dll'),
+               vcpkg.format(r'bin\lz4.dll'),
                vcpkg.format(r'bin\lzma.dll'),
                vcpkg.format(r'bin\pcre.dll'),
                vcpkg.format(r'bin\zlib1.dll')])
@@ -200,8 +201,12 @@ def main():
                r'lib\stream.lib',
                vcpkg.format(r'lib\libiconv.lib'),
                vcpkg.format(r'lib\bz2.lib'),
+               vcpkg.format(r'lib\getopt.lib'),
+               vcpkg.format(r'lib\libcharset.lib'),
                vcpkg.format(r'lib\libcrypto.lib'),
                vcpkg.format(r'lib\libxml2.lib'),
+               vcpkg.format(r'lib\lz4.lib'),
+               vcpkg.format(r'lib\lzma.lib'),
                vcpkg.format(r'lib\pcre.lib'),
                vcpkg.format(r'lib\zlib.lib')])
     print(r'            </Directory>')
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
@@ -4717,9 +4717,6 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "ifthenelse",   "pattern batcalc.ifthenelse(X_1:bit, X_2:any_1, 
X_3:bat[:any_1]):bat[:any_1] ", "CMDifthen;",   ""      ]
 [ "batcalc",   "ifthenelse",   "pattern batcalc.ifthenelse(X_1:bit, 
X_2:bat[:any_1], X_3:any_1):bat[:any_1] ", "CMDifthen;",   ""      ]
 [ "batcalc",   "ifthenelse",   "pattern batcalc.ifthenelse(X_1:bit, 
X_2:bat[:any_1], X_3:bat[:any_1]):bat[:any_1] ",   "CMDifthen;",   ""      ]
-[ "batcalc",   "index",        "command batcalc.index(X_1:bat[:str], 
X_2:bit):bat[:bte] ",     "BATSTRindex_bte;",     ""      ]
-[ "batcalc",   "index",        "command batcalc.index(X_1:bat[:str], 
X_2:bit):bat[:int] ",     "BATSTRindex_int;",     ""      ]
-[ "batcalc",   "index",        "command batcalc.index(X_1:bat[:str], 
X_2:bit):bat[:sht] ",     "BATSTRindex_sht;",     ""      ]
 [ "batcalc",   "int",  "pattern batcalc.int(X_1:bat[:bit]):bat[:int] ",        
"CMDconvertsignal_int;",        ""      ]
 [ "batcalc",   "int",  "pattern batcalc.int(X_1:bat[:bit], 
X_2:bat[:oid]):bat[:int] ", "CMDconvertsignal_int;",        ""      ]
 [ "batcalc",   "int",  "pattern batcalc.int(X_1:bat[:bte]):bat[:int] ",        
"CMDconvertsignal_int;",        ""      ]
@@ -5750,7 +5747,6 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "str",  "pattern batcalc.str(X_1:int, X_2:int, X_3:int, 
X_4:int, X_5:bat[:any_1], X_6:int):bat[:str] ", "SQLbatstr_cast;",      ""      
]
 [ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(X_1:bat[:any]):bat[:str] ",        "CMDconvert_str;",      
""      ]
 [ "batcalc",   "str_noerror",  "pattern batcalc.str_noerror(X_1:bat[:any], 
X_2:bat[:oid]):bat[:str] ", "CMDconvert_str;",      ""      ]
-[ "batcalc",   "strings",      "command 
batcalc.strings(X_1:bat[:str]):bat[:str] ",    "BATSTRstrings;",       ""      ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(X_1:bat[:bte], 
X_2:bat[:bte], X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ",   "CMDbatSUB;",   ""  
    ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(X_1:bat[:bte], 
X_2:bat[:dbl], X_3:bat[:oid], X_4:bat[:oid]):bat[:dbl] ",   "CMDbatSUB;",   ""  
    ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(X_1:bat[:bte], 
X_2:bat[:flt], X_3:bat[:oid], X_4:bat[:oid]):bat[:flt] ",   "CMDbatSUB;",   ""  
    ]
@@ -6340,6 +6336,9 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "get_value",    "pattern batsql.get_value(X_1:bat[:str], 
X_2:bat[:str]):bat[:lng] ",    "mvc_bat_get_value;",   ""      ]
 [ "batsql",    "get_value",    "pattern batsql.get_value(X_1:bat[:str], 
X_2:str):bat[:lng] ",  "mvc_bat_get_value;",   ""      ]
 [ "batsql",    "get_value",    "pattern batsql.get_value(X_1:str, 
X_2:bat[:str]):bat[:lng] ",  "mvc_bat_get_value;",   ""      ]
+[ "batsql",    "index",        "command batsql.index(X_1:bat[:str], 
X_2:bit):bat[:bte] ",      "BATSTRindex_bte;",     ""      ]
+[ "batsql",    "index",        "command batsql.index(X_1:bat[:str], 
X_2:bit):bat[:int] ",      "BATSTRindex_int;",     ""      ]
+[ "batsql",    "index",        "command batsql.index(X_1:bat[:str], 
X_2:bit):bat[:sht] ",      "BATSTRindex_sht;",     ""      ]
 [ "batsql",    "lag",  "pattern batsql.lag(X_1:any_1, X_2:any, 
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ",   "SQLlag;",      ""      
]
 [ "batsql",    "lag",  "pattern batsql.lag(X_1:any_1, X_2:bat[:any], 
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ",   "SQLlag;",      ""      ]
 [ "batsql",    "lag",  "pattern batsql.lag(X_1:any_1, X_2:bat[:any], 
X_3:any_2, X_4:any_3):bat[:any_1] ",      "SQLlag;",      ""      ]
@@ -6414,6 +6413,7 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(X_1:bat[:str], X_2:bat[:str], X_3:bat[:lng], 
X_4:bat[:lng]):bat[:str] ",       "SQLstrgroup_concat;",  ""      ]
 [ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(X_1:bat[:str], X_2:str, X_3:bat[:lng], 
X_4:bat[:lng]):bat[:str] ",     "SQLstrgroup_concat;",  ""      ]
 [ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(X_1:str, X_2:bat[:str], X_3:lng, X_4:lng):bat[:str] ", 
"SQLstrgroup_concat;",  ""      ]
+[ "batsql",    "strings",      "command 
batsql.strings(X_1:bat[:str]):bat[:str] ",     "BATSTRstrings;",       ""      ]
 [ "batsql",    "sum",  "pattern batsql.sum(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:lng] ",   "SQLsum;",      ""      ]
 [ "batsql",    "sum",  "pattern batsql.sum(X_1:bat[:dbl], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLsum;",      ""      ]
 [ "batsql",    "sum",  "pattern batsql.sum(X_1:bat[:flt], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLsum;",      ""      ]
@@ -7863,9 +7863,6 @@ stdout of test 'MAL-signatures` in direc
 [ "calc",      "hash", "pattern calc.hash(X_1:sht):lng ",      "MKEYhash;",    
""      ]
 [ "calc",      "identity",     "command calc.identity(X_1:any):oid ",  
"SQLidentity;", ""      ]
 [ "calc",      "ifthenelse",   "pattern calc.ifthenelse(X_1:bit, X_2:any_1, 
X_3:any_1):any_1 ",        "CALCswitchbit;",       ""      ]
-[ "calc",      "index",        "command calc.index(X_1:str, X_2:bit):bte ",    
"STRindex_bte;",        ""      ]
-[ "calc",      "index",        "command calc.index(X_1:str, X_2:bit):int ",    
"STRindex_int;",        ""      ]
-[ "calc",      "index",        "command calc.index(X_1:str, X_2:bit):sht ",    
"STRindex_sht;",        ""      ]
 [ "calc",      "inet", "command calc.inet(X_1:str):inet ",     
"INET_fromstr;",        ""      ]
 [ "calc",      "inet", "command calc.inet(X_1:inet):inet ",    "INET_inet;",   
""      ]
 [ "calc",      "int",  "pattern calc.int(X_1:bit):int ",       
"CMDvarCONVERT;",       ""      ]
@@ -8212,7 +8209,6 @@ stdout of test 'MAL-signatures` in direc
 [ "calc",      "str",  "pattern calc.str(X_1:any):str ",       
"CMDvarCONVERT;",       ""      ]
 [ "calc",      "str",  "pattern calc.str(X_1:int, X_2:int, X_3:int, X_4:int, 
X_5:any_1, X_6:int):str ",        "SQLstr_cast;", ""      ]
 [ "calc",      "str",  "command calc.str(X_1:uuid):str ",      
"UUIDuuid2str;",        ""      ]
-[ "calc",      "strings",      "command calc.strings(X_1:str):str ",   
"STRstrings;",  ""      ]
 [ "calc",      "sub_noerror",  "pattern calc.sub_noerror(X_1:bte, X_2:bte):bte 
",      "CMDvarSUB;",   ""      ]
 [ "calc",      "sub_noerror",  "pattern calc.sub_noerror(X_1:bte, X_2:dbl):dbl 
",      "CMDvarSUB;",   ""      ]
 [ "calc",      "sub_noerror",  "pattern calc.sub_noerror(X_1:bte, X_2:flt):flt 
",      "CMDvarSUB;",   ""      ]
@@ -9259,6 +9255,9 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_1:str, 
X_2:bit):void ",      "SQLhot_snapshot_wrap;",        ""      ]
 [ "sql",       "importTable",  "unsafe pattern sql.importTable(X_1:str, 
X_2:str, X_3:int, X_4:str...):bat[:any]... ",  "mvc_bin_import_table_wrap;",   
""      ]
 [ "sql",       "include",      "pattern sql.include(X_1:str):void ",   
"SQLinclude;",  ""      ]
+[ "sql",       "index",        "command sql.index(X_1:str, X_2:bit):bte ",     
"STRindex_bte;",        ""      ]
+[ "sql",       "index",        "command sql.index(X_1:str, X_2:bit):int ",     
"STRindex_int;",        ""      ]
+[ "sql",       "index",        "command sql.index(X_1:str, X_2:bit):sht ",     
"STRindex_sht;",        ""      ]
 [ "sql",       "lag",  "pattern sql.lag(X_1:any_1, X_2:any, X_3:any_1, 
X_4:bit, X_5:bit):any_1 ",      "SQLlag;",      ""      ]
 [ "sql",       "lag",  "pattern sql.lag(X_1:any_1, X_2:any, X_3:bit, 
X_4:bit):any_1 ", "SQLlag;",      ""      ]
 [ "sql",       "lag",  "pattern sql.lag(X_1:any_1, X_2:bit, X_3:bit):any_1 ",  
"SQLlag;",      ""      ]
@@ -9358,6 +9357,7 @@ 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",       "strings",      "command sql.strings(X_1:str):str ",    
"STRstrings;",  ""      ]
 [ "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",       "sum",  "pattern sql.sum(X_1:bte, X_2:lng, X_3:lng):lng ",      
"SQLsum;",      ""      ]
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
@@ -6793,9 +6793,6 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "ifthenelse",   "pattern batcalc.ifthenelse(X_1:bit, X_2:any_1, 
X_3:bat[:any_1]):bat[:any_1] ", "CMDifthen;",   ""      ]
 [ "batcalc",   "ifthenelse",   "pattern batcalc.ifthenelse(X_1:bit, 
X_2:bat[:any_1], X_3:any_1):bat[:any_1] ", "CMDifthen;",   ""      ]
 [ "batcalc",   "ifthenelse",   "pattern batcalc.ifthenelse(X_1:bit, 
X_2:bat[:any_1], X_3:bat[:any_1]):bat[:any_1] ",   "CMDifthen;",   ""      ]
-[ "batcalc",   "index",        "command batcalc.index(X_1:bat[:str], 
X_2:bit):bat[:bte] ",     "BATSTRindex_bte;",     ""      ]
-[ "batcalc",   "index",        "command batcalc.index(X_1:bat[:str], 
X_2:bit):bat[:int] ",     "BATSTRindex_int;",     ""      ]
-[ "batcalc",   "index",        "command batcalc.index(X_1:bat[:str], 
X_2:bit):bat[:sht] ",     "BATSTRindex_sht;",     ""      ]
 [ "batcalc",   "int",  "pattern batcalc.int(X_1:bat[:bit]):bat[:int] ",        
"CMDconvertsignal_int;",        ""      ]
 [ "batcalc",   "int",  "pattern batcalc.int(X_1:bat[:bit], 
X_2:bat[:oid]):bat[:int] ", "CMDconvertsignal_int;",        ""      ]
 [ "batcalc",   "int",  "pattern batcalc.int(X_1:bat[:bte]):bat[:int] ",        
"CMDconvertsignal_int;",        ""      ]
@@ -8274,7 +8271,6 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "str",  "pattern batcalc.str(X_1:int, X_2:int, X_3:int, 
X_4:int, X_5:bat[:any_1], X_6:int):bat[:str] ", "SQLbatstr_cast;",      ""      
]
 [ "batcalc",   "str_noerror",  "pattern 
batcalc.str_noerror(X_1:bat[:any]):bat[:str] ",        "CMDconvert_str;",      
""      ]
 [ "batcalc",   "str_noerror",  "pattern batcalc.str_noerror(X_1:bat[:any], 
X_2:bat[:oid]):bat[:str] ", "CMDconvert_str;",      ""      ]
-[ "batcalc",   "strings",      "command 
batcalc.strings(X_1:bat[:str]):bat[:str] ",    "BATSTRstrings;",       ""      ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(X_1:bat[:bte], 
X_2:bat[:bte], X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ",   "CMDbatSUB;",   ""  
    ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(X_1:bat[:bte], 
X_2:bat[:dbl], X_3:bat[:oid], X_4:bat[:oid]):bat[:dbl] ",   "CMDbatSUB;",   ""  
    ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(X_1:bat[:bte], 
X_2:bat[:flt], X_3:bat[:oid], X_4:bat[:oid]):bat[:flt] ",   "CMDbatSUB;",   ""  
    ]
@@ -8921,6 +8917,9 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "get_value",    "pattern batsql.get_value(X_1:bat[:str], 
X_2:bat[:str]):bat[:lng] ",    "mvc_bat_get_value;",   ""      ]
 [ "batsql",    "get_value",    "pattern batsql.get_value(X_1:bat[:str], 
X_2:str):bat[:lng] ",  "mvc_bat_get_value;",   ""      ]
 [ "batsql",    "get_value",    "pattern batsql.get_value(X_1:str, 
X_2:bat[:str]):bat[:lng] ",  "mvc_bat_get_value;",   ""      ]
+[ "batsql",    "index",        "command batsql.index(X_1:bat[:str], 
X_2:bit):bat[:bte] ",      "BATSTRindex_bte;",     ""      ]
+[ "batsql",    "index",        "command batsql.index(X_1:bat[:str], 
X_2:bit):bat[:int] ",      "BATSTRindex_int;",     ""      ]
+[ "batsql",    "index",        "command batsql.index(X_1:bat[:str], 
X_2:bit):bat[:sht] ",      "BATSTRindex_sht;",     ""      ]
 [ "batsql",    "lag",  "pattern batsql.lag(X_1:any_1, X_2:any, 
X_3:bat[:any_1], X_4:any_2, X_5:any_3):bat[:any_1] ",   "SQLlag;",      ""      
]
 [ "batsql",    "lag",  "pattern batsql.lag(X_1:any_1, X_2:bat[:any], 
X_3:any_1, X_4:any_2, X_5:any_3):bat[:any_1] ",   "SQLlag;",      ""      ]
 [ "batsql",    "lag",  "pattern batsql.lag(X_1:any_1, X_2:bat[:any], 
X_3:any_2, X_4:any_3):bat[:any_1] ",      "SQLlag;",      ""      ]
@@ -9003,6 +9002,7 @@ stdout of test 'MAL-signatures` in direc
 [ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(X_1:bat[:str], X_2:bat[:str], X_3:bat[:lng], 
X_4:bat[:lng]):bat[:str] ",       "SQLstrgroup_concat;",  ""      ]
 [ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(X_1:bat[:str], X_2:str, X_3:bat[:lng], 
X_4:bat[:lng]):bat[:str] ",     "SQLstrgroup_concat;",  ""      ]
 [ "batsql",    "str_group_concat",     "pattern 
batsql.str_group_concat(X_1:str, X_2:bat[:str], X_3:lng, X_4:lng):bat[:str] ", 
"SQLstrgroup_concat;",  ""      ]
+[ "batsql",    "strings",      "command 
batsql.strings(X_1:bat[:str]):bat[:str] ",     "BATSTRstrings;",       ""      ]
 [ "batsql",    "sum",  "pattern batsql.sum(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:hge] ",   "SQLsum;",      ""      ]
 [ "batsql",    "sum",  "pattern batsql.sum(X_1:bat[:bte], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:lng] ",   "SQLsum;",      ""      ]
 [ "batsql",    "sum",  "pattern batsql.sum(X_1:bat[:dbl], X_2:bat[:lng], 
X_3:bat[:lng]):bat[:dbl] ",   "SQLsum;",      ""      ]
@@ -11037,9 +11037,6 @@ stdout of test 'MAL-signatures` in direc
 [ "calc",      "hge",  "command calc.hge(X_1:str, X_2:int, X_3:int):hge ",     
"str_2dec_hge;",        ""      ]
 [ "calc",      "identity",     "command calc.identity(X_1:any):oid ",  
"SQLidentity;", ""      ]
 [ "calc",      "ifthenelse",   "pattern calc.ifthenelse(X_1:bit, X_2:any_1, 
X_3:any_1):any_1 ",        "CALCswitchbit;",       ""      ]
-[ "calc",      "index",        "command calc.index(X_1:str, X_2:bit):bte ",    
"STRindex_bte;",        ""      ]
-[ "calc",      "index",        "command calc.index(X_1:str, X_2:bit):int ",    
"STRindex_int;",        ""      ]
-[ "calc",      "index",        "command calc.index(X_1:str, X_2:bit):sht ",    
"STRindex_sht;",        ""      ]
 [ "calc",      "inet", "command calc.inet(X_1:str):inet ",     
"INET_fromstr;",        ""      ]
 [ "calc",      "inet", "command calc.inet(X_1:inet):inet ",    "INET_inet;",   
""      ]
 [ "calc",      "int",  "pattern calc.int(X_1:bit):int ",       
"CMDvarCONVERT;",       ""      ]
@@ -11522,7 +11519,6 @@ stdout of test 'MAL-signatures` in direc
 [ "calc",      "str",  "pattern calc.str(X_1:any):str ",       
"CMDvarCONVERT;",       ""      ]
 [ "calc",      "str",  "pattern calc.str(X_1:int, X_2:int, X_3:int, X_4:int, 
X_5:any_1, X_6:int):str ",        "SQLstr_cast;", ""      ]
 [ "calc",      "str",  "command calc.str(X_1:uuid):str ",      
"UUIDuuid2str;",        ""      ]
-[ "calc",      "strings",      "command calc.strings(X_1:str):str ",   
"STRstrings;",  ""      ]
 [ "calc",      "sub_noerror",  "pattern calc.sub_noerror(X_1:bte, X_2:bte):bte 
",      "CMDvarSUB;",   ""      ]
 [ "calc",      "sub_noerror",  "pattern calc.sub_noerror(X_1:bte, X_2:dbl):dbl 
",      "CMDvarSUB;",   ""      ]
 [ "calc",      "sub_noerror",  "pattern calc.sub_noerror(X_1:bte, X_2:flt):flt 
",      "CMDvarSUB;",   ""      ]
@@ -12606,6 +12602,9 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_1:str, 
X_2:bit):void ",      "SQLhot_snapshot_wrap;",        ""      ]
 [ "sql",       "importTable",  "unsafe pattern sql.importTable(X_1:str, 
X_2:str, X_3:int, X_4:str...):bat[:any]... ",  "mvc_bin_import_table_wrap;",   
""      ]
 [ "sql",       "include",      "pattern sql.include(X_1:str):void ",   
"SQLinclude;",  ""      ]
+[ "sql",       "index",        "command sql.index(X_1:str, X_2:bit):bte ",     
"STRindex_bte;",        ""      ]
+[ "sql",       "index",        "command sql.index(X_1:str, X_2:bit):int ",     
"STRindex_int;",        ""      ]
+[ "sql",       "index",        "command sql.index(X_1:str, X_2:bit):sht ",     
"STRindex_sht;",        ""      ]
 [ "sql",       "lag",  "pattern sql.lag(X_1:any_1, X_2:any, X_3:any_1, 
X_4:bit, X_5:bit):any_1 ",      "SQLlag;",      ""      ]
 [ "sql",       "lag",  "pattern sql.lag(X_1:any_1, X_2:any, X_3:bit, 
X_4:bit):any_1 ", "SQLlag;",      ""      ]
 [ "sql",       "lag",  "pattern sql.lag(X_1:any_1, X_2:bit, X_3:bit):any_1 ",  
"SQLlag;",      ""      ]
@@ -12713,6 +12712,7 @@ 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",       "strings",      "command sql.strings(X_1:str):str ",    
"STRstrings;",  ""      ]
 [ "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",       "sum",  "pattern sql.sum(X_1:bte, X_2:lng, X_3:lng):hge ",      
"SQLsum;",      ""      ]
diff --git a/common/stream/stdio_stream.c b/common/stream/stdio_stream.c
--- a/common/stream/stdio_stream.c
+++ b/common/stream/stdio_stream.c
@@ -165,6 +165,7 @@ file_fsetpos(stream *restrict s, fpos_t 
 
 /* convert a string from UTF-8 to wide characters; the return value is
  * freshly allocated */
+#ifdef HAVE__WFOPEN
 static wchar_t *
 utf8towchar(const char *src)
 {
@@ -246,6 +247,8 @@ utf8towchar(const char *src)
        return dest;
 }
 
+#else
+
 static char *
 cvfilename(const char *filename)
 {
@@ -281,6 +284,7 @@ cvfilename(const char *filename)
         * locale's encoding is not UTF-8) */
        return strdup(filename);
 }
+#endif
 
 
 stream *
@@ -297,7 +301,6 @@ open_stream(const char *restrict filenam
        {
                wchar_t *wfname = utf8towchar(filename);
                wchar_t *wflags = utf8towchar(flags);
-               (void)cvfilename;
                if (wfname != NULL && wflags != NULL)
                        fp = _wfopen(wfname, wflags);
                else
@@ -310,7 +313,6 @@ open_stream(const char *restrict filenam
 #else
        {
                char *fname = cvfilename(filename);
-               (void)utf8towchar;
                if (fname) {
                        fp = fopen(fname, flags);
                        free(fname);
@@ -498,3 +500,24 @@ getFileSize(stream *s)
                return (size_t) stb.st_size;
        return 0;               /* unknown */
 }
+
+int
+file_remove(const char *filename)
+{
+       int rc = -1;
+
+#ifdef HAVE__WFOPEN
+       wchar_t *wfname = utf8towchar(filename);
+       if (wfname != NULL) {
+               rc = _wremove(wfname);
+               free(wfname);
+       }
+#else
+       char *fname = cvfilename(filename);
+       if (fname) {
+               rc = remove(fname);
+               free(fname);
+       }
+#endif
+       return rc;
+}
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -851,7 +851,7 @@ open_rstream(const char *filename)
 
        stream *c = compressed_stream(s, 0);
        if (c == NULL)
-               mnstr_close(s);
+               mnstr_destroy(s);
 
        return c;
 }
@@ -870,8 +870,10 @@ open_wstream(const char *filename)
                return NULL;
 
        stream *c = compressed_stream(s, 0);
-       if (c == NULL)
-               mnstr_close(s);
+       if (c == NULL) {
+               mnstr_destroy(s);
+               file_remove(filename);
+       }
 
        return c;
 }
@@ -890,7 +892,7 @@ open_rastream(const char *filename)
 
        stream *t = create_text_stream(s);
        if (t == NULL)
-               mnstr_close(s);
+               mnstr_destroy(s);
 
        return t;
 }
@@ -908,8 +910,10 @@ open_wastream(const char *filename)
                return NULL;
 
        stream *t = create_text_stream(s);
-       if (t == NULL)
-               mnstr_close(s);
+       if (t == NULL) {
+               mnstr_destroy(s);
+               file_remove(filename);
+       }
 
        return t;
 }
diff --git a/common/stream/stream_internal.h b/common/stream/stream_internal.h
--- a/common/stream/stream_internal.h
+++ b/common/stream/stream_internal.h
@@ -207,6 +207,9 @@ stream *open_stream(const char *restrict
 stream *file_stream(const char *name)
        __attribute__((__visibility__("hidden")));
 
+int file_remove(const char *filename)
+       __attribute__((__visibility__("hidden")));
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to