Changeset: 3416079a46b8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3416079a46b8
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/examples/C/CMakeLists.txt
        clients/mapiclient/mhelp.c
        common/stream/bs.c
        common/stream/stream.c
        common/stream/stream.h
        common/stream/stream_internal.h
        common/utils/CMakeLists.txt
        monetdb5/optimizer/CMakeLists.txt
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/optimizer/optimizer.c
        monetdb5/optimizer/optimizer.mal
        sql/backends/monet5/CMakeLists.txt
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/51_sys_schema_extension.sql
        sql/server/rel_updates.c
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/server/sql_tokens.h
        sql/storage/bat/bat_storage.c
        sql/storage/sql_storage.h
        sql/storage/store.c
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        testing/sqltest.py
Branch: default
Log Message:

Merge branch 'copybinary' into 'default'


diffs (truncated from 11009 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
@@ -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
@@ -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++) {
+                       fprintf(stderr, "  - %s\n", g->name);
+               }
+       }
+       exit(status);
+}
+
+
+static void
+gen_tinyints(FILE *f, bool byteswap, long nrecs)
+{
+       for (long i = 0; i < nrecs; i++) {
+               uint8_t v = (uint8_t)i;
+               (void)byteswap;
+               fwrite(&v, sizeof(v), 1, f);
+       }
+}
+
+static void
+gen_smallints(FILE *f, bool byteswap, long nrecs)
+{
+       for (long i = 0; i < nrecs; i++) {
+               uint16_t v = (uint16_t)i;
+               if (byteswap) {
+                       copy_binary_convert16(&v);
+               }
+               fwrite(&v, sizeof(v), 1, f);
+       }
+}
+
+static void
+gen_bigints(FILE *f, bool byteswap, long nrecs)
+{
+       for (long i = 0; i < nrecs; i++) {
+               uint64_t v = (uint64_t)i;
+               if (byteswap) {
+                       copy_binary_convert64(&v);
+               }
+               fwrite(&v, sizeof(v), 1, f);
+       }
+}
+
+#ifdef HAVE_HGE
+static void
+gen_hugeints(FILE *f, bool byteswap, long nrecs)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to