Changeset: 1065fb37f75b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1065fb37f75b
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_upgrades.c
        sql/include/sql_list.h
        sql/server/rel_optimizer.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/storage/bat/bat_storage.c
        sql/storage/sql_storage.h
        sql/storage/store.c
Branch: nospare
Log Message:

mergeddddddd with default (ie copybinary and sqlancer fixes)


diffs (truncated from 13866 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -621,8 +621,8 @@ stdout of test 'MAL-signatures` in direc
 [ "algebra",   "ilike",        "command algebra.ilike(X_1:str, X_2:str, 
X_3:str):bit ",        "PCREilike3;",  ""      ]
 [ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, 
X_7:bit):bat[:oid] ",  "ILIKEjoin1;",  ""      ]
 [ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit) 
(X_0:bat[:oid], X_1:bat[:oid]) ",     "ILIKEjoin;",   ""      ]
-[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:str, X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ", "ILIKEjoin_esc1;",      ""      ]
-[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:str, X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",    "ILIKEjoin_esc;",       ""      ]
+[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ",   "ILIKEjoin_esc1;",      ""      ]
+[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:str], X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",      "ILIKEjoin_esc;",       ""      
]
 [ "algebra",   "ilikeselect",  "command algebra.ilikeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:str, X_5:bit):bat[:oid] ",      "PCRElikeselect1;", 
    ""      ]
 [ "algebra",   "ilikeselect",  "command algebra.ilikeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:bit):bat[:oid] ",       "PCRElikeselect4;",     ""  
    ]
 [ "algebra",   "intersect",    "command algebra.intersect(X_1:bat[:any_1], 
X_2:bat[:any_1], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:bit, 
X_7:lng):bat[:oid] ",      "ALGintersect;",        ""      ]
@@ -634,8 +634,8 @@ stdout of test 'MAL-signatures` in direc
 [ "algebra",   "like", "command algebra.like(X_1:str, X_2:str, X_3:str):bit ", 
"PCRElike3;",   ""      ]
 [ "algebra",   "likejoin",     "command algebra.likejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, 
X_7:bit):bat[:oid] ",   "LIKEjoin1;",   ""      ]
 [ "algebra",   "likejoin",     "command algebra.likejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit) 
(X_0:bat[:oid], X_1:bat[:oid]) ",      "LIKEjoin;",    ""      ]
-[ "algebra",   "likejoin",     "command algebra.likejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:str, X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ",  "LIKEjoin_esc1;",       ""      ]
-[ "algebra",   "likejoin",     "command algebra.likejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:str, X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",     "LIKEjoin_esc;",        ""      ]
+[ "algebra",   "likejoin",     "command algebra.likejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ",    "LIKEjoin_esc1;",       ""      ]
+[ "algebra",   "likejoin",     "command algebra.likejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:str], X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",       "LIKEjoin_esc;",        ""     
 ]
 [ "algebra",   "likeselect",   "command algebra.likeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:str, X_5:bit, X_6:bit):bat[:oid] ",      
"PCRElikeselect2;",     ""      ]
 [ "algebra",   "likeselect",   "command algebra.likeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:str, X_5:bit):bat[:oid] ",       
"PCRElikeselect3;",     ""      ]
 [ "algebra",   "likeselect",   "command algebra.likeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:bit):bat[:oid] ",        "PCRElikeselect5;",     "" 
     ]
@@ -9111,6 +9111,8 @@ stdout of test 'MAL-signatures` in direc
 [ "oltp",      "table",        "unsafe pattern oltp.table() 
(X_0:bat[:timestamp], X_1:bat[:str], X_2:bat[:int], X_3:bat[:int]) ",      
"OLTPtable;",   ""      ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases(X_1:str, 
X_2:str):str ",     "OPTwrapper;",  ""      ]
+[ "optimizer", "bincopyfrom",  "pattern optimizer.bincopyfrom():str ", 
"OPTwrapper;",  ""      ]
+[ "optimizer", "bincopyfrom",  "pattern optimizer.bincopyfrom(X_1:str, 
X_2:str):str ", "OPTwrapper;",  ""      ]
 [ "optimizer", "candidates",   "pattern optimizer.candidates():str ",  
"OPTwrapper;",  ""      ]
 [ "optimizer", "candidates",   "pattern optimizer.candidates(X_1:str, 
X_2:str):str ",  "OPTwrapper;",  ""      ]
 [ "optimizer", "coercions",    "pattern optimizer.coercions():str ",   
"OPTwrapper;",  ""      ]
@@ -9150,8 +9152,8 @@ stdout of test 'MAL-signatures` in direc
 [ "optimizer", "minimal_pipe", "function optimizer.minimal_pipe():void;",      
"",     ""      ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis(X_1:str, 
X_2:str):str ",     "OPTwrapper;",  ""      ]
-[ "optimizer", "multiplex",    "pattern optimizer.multiplex():void ",  
"OPTwrapper;",  ""      ]
-[ "optimizer", "multiplex",    "pattern optimizer.multiplex(X_1:str, 
X_2:str):void ",  "OPTwrapper;",  ""      ]
+[ "optimizer", "multiplex",    "pattern optimizer.multiplex():str ",   
"OPTwrapper;",  ""      ]
+[ "optimizer", "multiplex",    "pattern optimizer.multiplex(X_1:str, 
X_2:str):str ",   "OPTwrapper;",  ""      ]
 [ "optimizer", "no_mitosis_pipe",      "function 
optimizer.no_mitosis_pipe():void;",   "",     ""      ]
 [ "optimizer", "oltp", "pattern optimizer.oltp():str ",        "OPTwrapper;",  
""      ]
 [ "optimizer", "oltp", "pattern optimizer.oltp(X_1:str, X_2:str):str ",        
"OPTwrapper;",  ""      ]
@@ -9159,6 +9161,8 @@ stdout of test 'MAL-signatures` in direc
 [ "optimizer", "optimize",     "pattern optimizer.optimize(X_1:str, 
X_2:str):void ",   "QOToptimize;", ""      ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_1:str, X_2:str):void 
",      "OPTorcam;",    ""      ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_1:str, X_2:str, 
X_3:str, X_4:str):void ",    "OPTorcam;",    ""      ]
+[ "optimizer", "parappend",    "pattern optimizer.parappend():str ",   
"OPTwrapper;",  ""      ]
+[ "optimizer", "parappend",    "pattern optimizer.parappend(X_1:str, 
X_2:str):str ",   "OPTwrapper;",  ""      ]
 [ "optimizer", "postfix",      "pattern optimizer.postfix():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "postfix",      "pattern optimizer.postfix(X_1:str, 
X_2:str):str ",     "OPTwrapper;",  ""      ]
 [ "optimizer", "prelude",      "pattern optimizer.prelude():void ",    
"optimizer_prelude;",   ""      ]
@@ -9277,6 +9281,9 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str, X_4:str, X_5:str):void ",        "sql_analyze;", ""      ]
 [ "sql",       "any",  "pattern sql.any(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLany_cmp;",  ""      ]
 [ "sql",       "append",       "pattern sql.append(X_1:int, X_2:str, X_3:str, 
X_4:str, X_5:any):int ", "mvc_append_wrap;",     ""      ]
+[ "sql",       "append_exec",  "pattern sql.append_exec(X_1:ptr, 
X_2:any_1):ptr ",     "mvc_append_exec_wrap;",        ""      ]
+[ "sql",       "append_finish",        "pattern sql.append_finish(X_1:int, 
X_2:ptr...):int ",  "mvc_append_finish_wrap;",      ""      ]
+[ "sql",       "append_prep",  "pattern sql.append_prep(X_2:int, X_3:str, 
X_4:str, X_5:str...) (X_0:int, X_1:ptr...) ",        "mvc_append_prep_wrap;",   
     ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord(X_1:any...):str ",       
"SQLargRecord;",        ""      ]
 [ "sql",       "assert",       "pattern sql.assert(X_1:bit, X_2:str):void ",   
"SQLassert;",   ""      ]
@@ -9372,7 +9379,8 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "grow", "pattern sql.grow(X_1:bat[:oid], X_2:any_1):int ",      
"mvc_grow_wrap;",       ""      ]
 [ "sql",       "hot_snapshot", "unsafe command sql.hot_snapshot(X_1:str):void 
",       "SQLhot_snapshot;",     ""      ]
 [ "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",       "importColumn", "pattern sql.importColumn(X_2:str, X_3:bit, 
X_4:str, X_5:int, X_6:oid) (X_0:bat[:any], X_1:oid) ",      
"mvc_bin_import_column_wrap;",  ""      ]
+[ "sql",       "importTable",  "unsafe pattern sql.importTable(X_1:str, 
X_2:str, X_3:int, X_4:bit, X_5: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;",        ""      ]
@@ -9477,6 +9485,8 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "transaction_rollback", "unsafe pattern 
sql.transaction_rollback(X_1:int, X_2:str):void ",      
"SQLtransaction_rollback;",     ""      ]
 [ "sql",       "unionfunc",    "pattern sql.unionfunc(X_1:str, X_2:str, 
X_3:any...):any... ",  "SQLunionfunc;",        ""      ]
 [ "sql",       "update",       "pattern sql.update(X_1:int, X_2:str, X_3:str, 
X_4:str, X_5:any, X_6:any):int ",        "mvc_update_wrap;",     ""      ]
+[ "sql",       "update_exec",  "pattern sql.update_exec(X_1:ptr, 
X_2:bat[:oid], X_3:bat[:any_1]):ptr ",        "mvc_update_exec_wrap;",        
""      ]
+[ "sql",       "update_prep",  "pattern sql.update_prep(X_2:int, X_3:str, 
X_4:str, X_5:str...) (X_0:int, X_1:ptr...) ",        "mvc_update_prep_wrap;",   
     ""      ]
 [ "sql",       "update_schemas",       "unsafe pattern 
sql.update_schemas():void ",    "SYSupdate_schemas;",   ""      ]
 [ "sql",       "update_tables",        "unsafe pattern 
sql.update_tables():void ",     "SYSupdate_tables;",    ""      ]
 [ "sql",       "vacuum",       "unsafe pattern sql.vacuum(X_1:str, 
X_2:str):void ",    "SQLvacuum;",   ""      ]
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
@@ -734,8 +734,8 @@ stdout of test 'MAL-signatures` in direc
 [ "algebra",   "ilike",        "command algebra.ilike(X_1:str, X_2:str, 
X_3:str):bit ",        "PCREilike3;",  ""      ]
 [ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, 
X_7:bit):bat[:oid] ",  "ILIKEjoin1;",  ""      ]
 [ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit) 
(X_0:bat[:oid], X_1:bat[:oid]) ",     "ILIKEjoin;",   ""      ]
-[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:str, X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ", "ILIKEjoin_esc1;",      ""      ]
-[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:str, X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",    "ILIKEjoin_esc;",       ""      ]
+[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ",   "ILIKEjoin_esc1;",      ""      ]
+[ "algebra",   "ilikejoin",    "command algebra.ilikejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:str], X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",      "ILIKEjoin_esc;",       ""      
]
 [ "algebra",   "ilikeselect",  "command algebra.ilikeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:str, X_5:bit):bat[:oid] ",      "PCRElikeselect1;", 
    ""      ]
 [ "algebra",   "ilikeselect",  "command algebra.ilikeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:bit):bat[:oid] ",       "PCRElikeselect4;",     ""  
    ]
 [ "algebra",   "intersect",    "command algebra.intersect(X_1:bat[:any_1], 
X_2:bat[:any_1], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:bit, 
X_7:lng):bat[:oid] ",      "ALGintersect;",        ""      ]
@@ -747,8 +747,8 @@ stdout of test 'MAL-signatures` in direc
 [ "algebra",   "like", "command algebra.like(X_1:str, X_2:str, X_3:str):bit ", 
"PCRElike3;",   ""      ]
 [ "algebra",   "likejoin",     "command algebra.likejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:oid], X_4:bat[:oid], X_5:bit, X_6:lng, 
X_7:bit):bat[:oid] ",   "LIKEjoin1;",   ""      ]
 [ "algebra",   "likejoin",     "command algebra.likejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, X_8:bit) 
(X_0:bat[:oid], X_1:bat[:oid]) ",      "LIKEjoin;",    ""      ]
-[ "algebra",   "likejoin",     "command algebra.likejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:str, X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ",  "LIKEjoin_esc1;",       ""      ]
-[ "algebra",   "likejoin",     "command algebra.likejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:str, X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",     "LIKEjoin_esc;",        ""      ]
+[ "algebra",   "likejoin",     "command algebra.likejoin(X_1:bat[:str], 
X_2:bat[:str], X_3:bat[:str], X_4:bat[:oid], X_5:bat[:oid], X_6:bit, X_7:lng, 
X_8:bit):bat[:oid] ",    "LIKEjoin_esc1;",       ""      ]
+[ "algebra",   "likejoin",     "command algebra.likejoin(X_2:bat[:str], 
X_3:bat[:str], X_4:bat[:str], X_5:bat[:oid], X_6:bat[:oid], X_7:bit, X_8:lng, 
X_9:bit) (X_0:bat[:oid], X_1:bat[:oid]) ",       "LIKEjoin_esc;",        ""     
 ]
 [ "algebra",   "likeselect",   "command algebra.likeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:str, X_5:bit, X_6:bit):bat[:oid] ",      
"PCRElikeselect2;",     ""      ]
 [ "algebra",   "likeselect",   "command algebra.likeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:str, X_5:bit):bat[:oid] ",       
"PCRElikeselect3;",     ""      ]
 [ "algebra",   "likeselect",   "command algebra.likeselect(X_1:bat[:str], 
X_2:bat[:oid], X_3:str, X_4:bit):bat[:oid] ",        "PCRElikeselect5;",     "" 
     ]
@@ -12413,6 +12413,8 @@ stdout of test 'MAL-signatures` in direc
 [ "oltp",      "table",        "unsafe pattern oltp.table() 
(X_0:bat[:timestamp], X_1:bat[:str], X_2:bat[:int], X_3:bat[:int]) ",      
"OLTPtable;",   ""      ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases(X_1:str, 
X_2:str):str ",     "OPTwrapper;",  ""      ]
+[ "optimizer", "bincopyfrom",  "pattern optimizer.bincopyfrom():str ", 
"OPTwrapper;",  ""      ]
+[ "optimizer", "bincopyfrom",  "pattern optimizer.bincopyfrom(X_1:str, 
X_2:str):str ", "OPTwrapper;",  ""      ]
 [ "optimizer", "candidates",   "pattern optimizer.candidates():str ",  
"OPTwrapper;",  ""      ]
 [ "optimizer", "candidates",   "pattern optimizer.candidates(X_1:str, 
X_2:str):str ",  "OPTwrapper;",  ""      ]
 [ "optimizer", "coercions",    "pattern optimizer.coercions():str ",   
"OPTwrapper;",  ""      ]
@@ -12452,8 +12454,8 @@ stdout of test 'MAL-signatures` in direc
 [ "optimizer", "minimal_pipe", "function optimizer.minimal_pipe():void;",      
"",     ""      ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "mitosis",      "pattern optimizer.mitosis(X_1:str, 
X_2:str):str ",     "OPTwrapper;",  ""      ]
-[ "optimizer", "multiplex",    "pattern optimizer.multiplex():void ",  
"OPTwrapper;",  ""      ]
-[ "optimizer", "multiplex",    "pattern optimizer.multiplex(X_1:str, 
X_2:str):void ",  "OPTwrapper;",  ""      ]
+[ "optimizer", "multiplex",    "pattern optimizer.multiplex():str ",   
"OPTwrapper;",  ""      ]
+[ "optimizer", "multiplex",    "pattern optimizer.multiplex(X_1:str, 
X_2:str):str ",   "OPTwrapper;",  ""      ]
 [ "optimizer", "no_mitosis_pipe",      "function 
optimizer.no_mitosis_pipe():void;",   "",     ""      ]
 [ "optimizer", "oltp", "pattern optimizer.oltp():str ",        "OPTwrapper;",  
""      ]
 [ "optimizer", "oltp", "pattern optimizer.oltp(X_1:str, X_2:str):str ",        
"OPTwrapper;",  ""      ]
@@ -12461,6 +12463,8 @@ stdout of test 'MAL-signatures` in direc
 [ "optimizer", "optimize",     "pattern optimizer.optimize(X_1:str, 
X_2:str):void ",   "QOToptimize;", ""      ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_1:str, X_2:str):void 
",      "OPTorcam;",    ""      ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_1:str, X_2:str, 
X_3:str, X_4:str):void ",    "OPTorcam;",    ""      ]
+[ "optimizer", "parappend",    "pattern optimizer.parappend():str ",   
"OPTwrapper;",  ""      ]
+[ "optimizer", "parappend",    "pattern optimizer.parappend(X_1:str, 
X_2:str):str ",   "OPTwrapper;",  ""      ]
 [ "optimizer", "postfix",      "pattern optimizer.postfix():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "postfix",      "pattern optimizer.postfix(X_1:str, 
X_2:str):str ",     "OPTwrapper;",  ""      ]
 [ "optimizer", "prelude",      "pattern optimizer.prelude():void ",    
"optimizer_prelude;",   ""      ]
@@ -12579,6 +12583,9 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "analyze",      "unsafe pattern sql.analyze(X_1:int, X_2:lng, 
X_3:str, X_4:str, X_5:str):void ",        "sql_analyze;", ""      ]
 [ "sql",       "any",  "pattern sql.any(X_1:bit, X_2:bit, X_3:bit):bit ",      
"SQLany_cmp;",  ""      ]
 [ "sql",       "append",       "pattern sql.append(X_1:int, X_2:str, X_3:str, 
X_4:str, X_5:any):int ", "mvc_append_wrap;",     ""      ]
+[ "sql",       "append_exec",  "pattern sql.append_exec(X_1:ptr, 
X_2:any_1):ptr ",     "mvc_append_exec_wrap;",        ""      ]
+[ "sql",       "append_finish",        "pattern sql.append_finish(X_1:int, 
X_2:ptr...):int ",  "mvc_append_finish_wrap;",      ""      ]
+[ "sql",       "append_prep",  "pattern sql.append_prep(X_2:int, X_3:str, 
X_4:str, X_5:str...) (X_0:int, X_1:ptr...) ",        "mvc_append_prep_wrap;",   
     ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        ""      ]
 [ "sql",       "argRecord",    "pattern sql.argRecord(X_1:any...):str ",       
"SQLargRecord;",        ""      ]
 [ "sql",       "assert",       "pattern sql.assert(X_1:bit, X_2:str):void ",   
"SQLassert;",   ""      ]
@@ -12679,7 +12686,8 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "grow", "pattern sql.grow(X_1:bat[:oid], X_2:any_1):int ",      
"mvc_grow_wrap;",       ""      ]
 [ "sql",       "hot_snapshot", "unsafe command sql.hot_snapshot(X_1:str):void 
",       "SQLhot_snapshot;",     ""      ]
 [ "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",       "importColumn", "pattern sql.importColumn(X_2:str, X_3:bit, 
X_4:str, X_5:int, X_6:oid) (X_0:bat[:any], X_1:oid) ",      
"mvc_bin_import_column_wrap;",  ""      ]
+[ "sql",       "importTable",  "unsafe pattern sql.importTable(X_1:str, 
X_2:str, X_3:int, X_4:bit, X_5: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;",        ""      ]
@@ -12796,6 +12804,8 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "transaction_rollback", "unsafe pattern 
sql.transaction_rollback(X_1:int, X_2:str):void ",      
"SQLtransaction_rollback;",     ""      ]
 [ "sql",       "unionfunc",    "pattern sql.unionfunc(X_1:str, X_2:str, 
X_3:any...):any... ",  "SQLunionfunc;",        ""      ]
 [ "sql",       "update",       "pattern sql.update(X_1:int, X_2:str, X_3:str, 
X_4:str, X_5:any, X_6:any):int ",        "mvc_update_wrap;",     ""      ]
+[ "sql",       "update_exec",  "pattern sql.update_exec(X_1:ptr, 
X_2:bat[:oid], X_3:bat[:any_1]):ptr ",        "mvc_update_exec_wrap;",        
""      ]
+[ "sql",       "update_prep",  "pattern sql.update_prep(X_2:int, X_3:str, 
X_4:str, X_5:str...) (X_0:int, X_1:ptr...) ",        "mvc_update_prep_wrap;",   
     ""      ]
 [ "sql",       "update_schemas",       "unsafe pattern 
sql.update_schemas():void ",    "SYSupdate_schemas;",   ""      ]
 [ "sql",       "update_tables",        "unsafe pattern 
sql.update_tables():void ",     "SYSupdate_tables;",    ""      ]
 [ "sql",       "vacuum",       "unsafe pattern sql.vacuum(X_1:str, 
X_2:str):void ",    "SQLvacuum;",   ""      ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -862,6 +862,7 @@ str OLTPreset(Client cntxt, MalBlkPtr mb
 str OLTPtable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 void OPTaliasRemap(InstrPtr p, int *alias);
 str OPTaliasesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
+str OPTbincopyfromImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTcandidatesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTcoercionImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 str OPTcommonTermsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
@@ -887,6 +888,7 @@ str OPTmultiplexSimple(Client cntxt, Mal
 str OPToltpImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str OPTorcam(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str OPTorcamImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
+str OPTparappendImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTpostfixImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTprofilerImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTprojectionpathImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
@@ -1061,6 +1063,9 @@ str alter_viewRef;
 str andRef;
 str appendBulkRef;
 str appendRef;
+str append_execRef;
+str append_finishRef;
+str append_prepRef;
 str appendidxRef;
 str arrayRef;
 str assertRef;
@@ -1285,6 +1290,7 @@ str ilikejoinRef;
 str ilikeselectRef;
 str ilikethetaselectRef;
 str ilikeuselectRef;
+str importColumnRef;
 void initHeartbeat(void);
 void initNamespace(void);
 void initParser(void);
@@ -1662,6 +1668,7 @@ str unpackRef;
 str unpinRef;
 str updateRef;
 void updateScenario(str scen, str nme, MALfcn fcn);
+str update_execRef;
 Module userModule(void);
 str userRef;
 size_t usrstatscnt;
@@ -1767,6 +1774,7 @@ stream *open_rstream(const char *filenam
 stream *open_urlstream(const char *url);
 stream *open_wastream(const char *filename);
 stream *open_wstream(const char *filename);
+void set_prompting(stream *block_stream, const char *prompt, stream 
*prompt_stream);
 stream *socket_rstream(SOCKET socket, const char *name);
 stream *socket_wstream(SOCKET socket, const char *name);
 stream *stderr_wastream(void);
diff --git a/clients/examples/C/CMakeLists.txt 
b/clients/examples/C/CMakeLists.txt
--- a/clients/examples/C/CMakeLists.txt
+++ b/clients/examples/C/CMakeLists.txt
@@ -45,6 +45,29 @@ if(TESTING)
     monetdb_config_header
     stream)
 
+  add_executable(bincopydata
+    bincopydata.c
+    bincopydata.h
+    bincopytemporaldata.c
+    bincopyuuid.c
+  )
+
+  target_link_libraries(bincopydata
+    PRIVATE
+    monetdb_config_header
+    copybinary
+  )
+
+  add_executable(bincopyloops
+    bincopyloops.c
+  )
+
+  target_link_libraries(bincopyloops
+    PRIVATE
+    monetdb_config_header
+    copybinary
+  )
+
   install(TARGETS
     sample0
     sample1
@@ -52,6 +75,7 @@ if(TESTING)
     smack00
     smack01
     streamcat
+    bincopydata
     RUNTIME
     DESTINATION
     ${CMAKE_INSTALL_BINDIR}
diff --git a/clients/examples/C/bincopydata.c b/clients/examples/C/bincopydata.c
new file mode 100644
--- /dev/null
+++ b/clients/examples/C/bincopydata.c
@@ -0,0 +1,357 @@
+#include "bincopydata.h"
+
+static char *exe_name = "<to_be_filled_in>";
+
+static struct gen {
+       char *name;
+       void (*gen)(FILE *f, bool byteswap, long nrecs);
+} generators[];
+
+_Noreturn static void croak(int status, const char *msg, ...)
+       __attribute__((__format__(__printf__, 2, 3)));
+
+/* Format the message and write it to stderr. Then exit with the given status.
+ * If status is 1, include USAGE in the message.
+ * Otherwise, if errno is set, include the error message.
+ */
+static void
+croak(int status, const char *ctx, ...)
+{
+       va_list ap;
+
+       fprintf(stderr, "Error: ");
+       if (ctx != NULL) {
+               fprintf(stderr, " ");
+               va_start(ap, ctx);
+               vfprintf(stderr, ctx, ap);
+               va_end(ap);
+       }
+       fprintf(stderr, "\n");
+       if (errno) {
+               fprintf(stderr, "Possibly due to: %s\n", strerror(errno));
+       } else if (status == 1) {
+               fprintf(stderr, "USAGE: %s TYPE NRECS DESTFILE\n", exe_name);
+               fprintf(stderr, "TYPE:\n");
+               for (struct gen *g = generators; g->name != NULL; g++) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to