Changeset: fed16a283c15 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fed16a283c15 Added Files: sql/test/rename/Tests/All sql/test/rename/Tests/rename00.py sql/test/rename/Tests/rename00.stable.err sql/test/rename/Tests/rename00.stable.out sql/test/rename/Tests/rename01.sql sql/test/rename/Tests/rename01.stable.err sql/test/rename/Tests/rename01.stable.out sql/test/rename/Tests/rename02.sql sql/test/rename/Tests/rename02.stable.err sql/test/rename/Tests/rename02.stable.out sql/test/rename/Tests/rename03.sql sql/test/rename/Tests/rename03.stable.err sql/test/rename/Tests/rename03.stable.out sql/test/rename/Tests/rename04.sql sql/test/rename/Tests/rename04.stable.err sql/test/rename/Tests/rename04.stable.out sql/test/rename/Tests/rename05.sql sql/test/rename/Tests/rename05.stable.err sql/test/rename/Tests/rename05.stable.out sql/test/rename/Tests/rename06.sql sql/test/rename/Tests/rename06.stable.err sql/test/rename/Tests/rename06.stable.out Modified Files: NT/monetdb_config.h.in clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out clients/mapiclient/mclient.c clients/mapiclient/mhelp.c clients/mapilib/mapi.c clients/mapilib/mapi.h common/stream/stream.c configure.ag monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/mal/mal_client.c monetdb5/mal/mal_client.h monetdb5/mal/mal_session.c monetdb5/modules/mal/wlc.mal monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_projectionpath.c sql/ChangeLog sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql.mal sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_cat.h sql/backends/monet5/sql_result.c sql/backends/monet5/sql_result.h sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/backends/monet5/sqlcatalog.mal sql/backends/monet5/vaults/bam/bam_db_interface.c sql/backends/monet5/wlr.mal sql/benchmarks/tpch/load-sf-0.01-LOCKED.sql sql/benchmarks/tpch/load-sf-0.01.sql sql/benchmarks/tpch/load-sf-1.sql sql/common/sql_changeset.c sql/common/sql_list.c sql/common/sql_types.c sql/include/sql_catalog.h sql/include/sql_list.h sql/include/sql_relation.h sql/server/rel_optimizer.c sql/server/rel_schema.c sql/server/rel_semantic.c sql/server/rel_sequence.c sql/server/rel_updates.c sql/server/sql_mvc.c sql/server/sql_mvc.h sql/server/sql_parser.h sql/server/sql_parser.y sql/server/sql_partition.c sql/server/sql_partition.h sql/server/sql_scan.c sql/storage/bat/bat_storage.c sql/storage/sql_storage.h sql/storage/store.c sql/storage/store_sequence.c sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out sql/test/BugTracker-2018/Tests/remote-table-where-is-null.Bug-6601.py sql/test/Tests/systemfunctions.stable.out sql/test/Tests/systemfunctions.stable.out.int128 sql/test/Users/Tests/copyinto.stable.err sql/test/Users/Tests/copyinto.stable.out sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/pg_regress/Tests/alter_table.stable.err sql/test/pg_regress/Tests/alter_table.stable.out sql/test/pg_regress/Tests/drop.stable.err sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out.powerpc64.int128 testing/exportutils.py Branch: analytics Log Message:
Merge with default. diffs (truncated from 8275 to 300 lines): diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -910,5 +910,6 @@ typedef __uint128_t uhge; #define PROMPT1 "\001\001\n" /* prompt: ready for new query */ #define PROMPT2 "\001\002\n" /* prompt: more data needed */ +#define PROMPT3 "\001\003\n" /* prompt: get file content */ #endif /* _SEEN_MONETDB_CONFIG_H */ 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 @@ -11028,7 +11028,7 @@ Ready. [ "sql", "bind_idxbat", "pattern sql.bind_idxbat(mvc:int, schema:str, table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", "Bind the 'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates" ] [ "sql", "clear_table", "pattern sql.clear_table(sname:str, tname:str):lng ", "mvc_clear_table_wrap;", "Clear the table sname.tname." ] [ "sql", "commit", "pattern sql.commit():void ", "SQLcommit;", "Trigger the commit operation for a MAL block" ] -[ "sql", "copy_from", "pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] +[ "sql", "copy_from", "pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str, onclient:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] [ "sql", "count", "pattern sql.count(b:any_1, ignils:bit, s:lng, e:lng):lng ", "SQLcount;", "return count of groups" ] @@ -11079,7 +11079,7 @@ Ready. [ "sql", "getVersion", "command sql.getVersion(clientid:int):lng ", "mvc_getVersion;", "Return the database version identifier for a client." ] [ "sql", "get_value", "pattern sql.get_value(sname:str, sequence:str):lng ", "mvc_get_value;", "return the current value of the sequence" ] [ "sql", "grow", "pattern sql.grow(tid:bat[:oid], X_0:any_1):int ", "mvc_grow_wrap;", "Resize the tid column of a declared table." ] -[ "sql", "importTable", "pattern sql.importTable(sname:str, tname:str, fname:str...):bat[:any]... ", "mvc_bin_import_table_wrap;", "Import a table from the files (fname)" ] +[ "sql", "importTable", "pattern sql.importTable(sname:str, tname:str, onclient:int, fname:str...):bat[:any]... ", "mvc_bin_import_table_wrap;", "Import a table from the files (fname)" ] [ "sql", "include", "pattern sql.include(fname:str):void ", "SQLinclude;", "Compile and execute a sql statements on the file" ] [ "sql", "init", "pattern sql.init():void ", "SQLinitEnvironment;", "Initialize the environment for MAL" ] [ "sql", "lag", "pattern sql.lag(b:any_1, l:any_2, d:any_1, p:any_3, o:any_4):any_1 ", "SQLlag;", "return the value in the previous 'l' row in the partition or 'd' if non existent" ] @@ -11259,6 +11259,9 @@ Ready. [ "sqlcatalog", "grant", "pattern sqlcatalog.grant(sname:str, tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ", "SQLgrant;", "Catalog operation grant" ] [ "sqlcatalog", "grant_function", "pattern sqlcatalog.grant_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "SQLgrant_function;", "Catalog operation grant_function" ] [ "sqlcatalog", "grant_roles", "pattern sqlcatalog.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ", "SQLgrant_roles;", "Catalog operation grant_roles" ] +[ "sqlcatalog", "rename_column", "pattern sqlcatalog.rename_column(sname:str, tname:str, cname:str, newnme:str):void ", "SQLrename_column;", "Catalog operation rename_column" ] +[ "sqlcatalog", "rename_schema", "pattern sqlcatalog.rename_schema(sname:str, newnme:str):void ", "SQLrename_schema;", "Catalog operation rename_schema" ] +[ "sqlcatalog", "rename_table", "pattern sqlcatalog.rename_table(sname:str, tname:str, newnme:str):void ", "SQLrename_table;", "Catalog operation rename_table" ] [ "sqlcatalog", "rename_user", "pattern sqlcatalog.rename_user(sname:str, newnme:str, action:int):void ", "SQLrename_user;", "Catalog operation rename_user" ] [ "sqlcatalog", "revoke", "pattern sqlcatalog.revoke(sname:str, tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ", "SQLrevoke;", "Catalog operation revoke" ] [ "sqlcatalog", "revoke_function", "pattern sqlcatalog.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "SQLrevoke_function;", "Catalog operation revoke_function" ] @@ -11490,6 +11493,9 @@ Ready. [ "wlc", "master", "pattern wlc.master():void ", "WLCmaster;", "Activate the workload-capture-replay process" ] [ "wlc", "master", "pattern wlc.master(path:str):void ", "WLCmaster;", "Activate the workload-capture-replay process. Use a different location for the logs." ] [ "wlc", "query", "pattern wlc.query(q:str):void ", "WLCquery;", "Keep the queries for replay." ] +[ "wlc", "rename_column", "pattern wlc.rename_column(sname:str, tname:str, cname:str, newnme:str):void ", "WLCgeneric;", "Catalog operation rename_column" ] +[ "wlc", "rename_schema", "pattern wlc.rename_schema(sname:str, newnme:str):void ", "WLCgeneric;", "Catalog operation rename_schema" ] +[ "wlc", "rename_table", "pattern wlc.rename_table(sname:str, tname:str, newnme:str):void ", "WLCgeneric;", "Catalog operation rename_table" ] [ "wlc", "rename_user", "pattern wlc.rename_user(sname:str, newnme:str, action:int):void ", "WLCgeneric;", "Catalog operation rename_user" ] [ "wlc", "revoke", "pattern wlc.revoke(sname:str, tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ", "WLCgeneric;", "Catalog operation revoke" ] [ "wlc", "revoke_function", "pattern wlc.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "WLCgeneric;", "Catalog operation revoke_function" ] @@ -11547,6 +11553,9 @@ Ready. [ "wlr", "grant", "pattern wlr.grant(sname:str, tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ", "WLRgeneric;", "Catalog operation grant" ] [ "wlr", "grant_function", "pattern wlr.grant_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "WLRgeneric;", "Catalog operation grant_function" ] [ "wlr", "grant_roles", "pattern wlr.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ", "WLRgeneric;", "Catalog operation grant_roles" ] +[ "wlr", "rename_column", "pattern wlr.rename_column(sname:str, tname:str, cname:str, newnme:str):void ", "WLRgeneric;", "Catalog operation rename_column" ] +[ "wlr", "rename_schema", "pattern wlr.rename_schema(sname:str, newnme:str):void ", "WLRgeneric;", "Catalog operation rename_schema" ] +[ "wlr", "rename_table", "pattern wlr.rename_table(sname:str, tname:str, newnme:str):void ", "WLRgeneric;", "Catalog operation rename_table" ] [ "wlr", "rename_user", "pattern wlr.rename_user(sname:str, newnme:str, action:int):void ", "WLRgeneric;", "Catalog operation rename_user" ] [ "wlr", "replicate", "pattern wlr.replicate():void ", "WLRreplicate;", "Roll the snapshot forward to an up-to-date clone" ] [ "wlr", "replicate", "pattern wlr.replicate(dbname:str):void ", "WLRreplicate;", "Roll the snapshot forward to an up-to-date clone" ] 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 @@ -15263,7 +15263,7 @@ Ready. [ "sql", "bind_idxbat", "pattern sql.bind_idxbat(mvc:int, schema:str, table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", "Bind the 'schema.table.index' BAT with access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates" ] [ "sql", "clear_table", "pattern sql.clear_table(sname:str, tname:str):lng ", "mvc_clear_table_wrap;", "Clear the table sname.tname." ] [ "sql", "commit", "pattern sql.commit():void ", "SQLcommit;", "Trigger the commit operation for a MAL block" ] -[ "sql", "copy_from", "pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] +[ "sql", "copy_from", "pattern sql.copy_from(t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int, fwf:str, onclient:int):bat[:any]... ", "mvc_import_table_wrap;", "Import a table from bstream s with the \n\tgiven tuple and seperators (sep/rsep)" ] [ "sql", "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", "" ] [ "sql", "copy_rejects_clear", "pattern sql.copy_rejects_clear():void ", "COPYrejects_clear;", "" ] [ "sql", "count", "pattern sql.count(b:any_1, ignils:bit, s:lng, e:lng):lng ", "SQLcount;", "return count of groups" ] @@ -15307,15 +15307,15 @@ Ready. [ "sql", "exportHead", "pattern sql.exportHead(s:streams, res_id:int):void ", "mvc_export_head_wrap;", "Export a result (in order) to stream s" ] [ "sql", "exportOperation", "pattern sql.exportOperation():void ", "mvc_export_operation_wrap;", "Export result of schema/transaction queries" ] [ "sql", "exportResult", "pattern sql.exportResult(s:streams, res_id:int):void ", "mvc_export_result_wrap;", "Export a result (in order) to stream s" ] -[ "sql", "export_table", "pattern sql.export_table(fname:str, fmt:str, colsep:str, recsep:str, qout:str, nullrep:str, tbl:bat[:str], attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:any...):int ", "mvc_export_row_wrap;", "Prepare a table result set for the COPY INTO stream" ] -[ "sql", "export_table", "pattern sql.export_table(fname:str, fmt:str, colsep:str, recsep:str, qout:str, nullrep:str, tbl:bat[:str], attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:bat[:any]...):int ", "mvc_export_table_wrap;", "Prepare a table result set for the COPY INTO stream" ] +[ "sql", "export_table", "pattern sql.export_table(fname:str, fmt:str, colsep:str, recsep:str, qout:str, nullrep:str, onclient:int, tbl:bat[:str], attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:any...):int ", "mvc_export_row_wrap;", "Prepare a table result set for the COPY INTO stream" ] +[ "sql", "export_table", "pattern sql.export_table(fname:str, fmt:str, colsep:str, recsep:str, qout:str, nullrep:str, onclient:int, tbl:bat[:str], attr:bat[:str], tpe:bat[:str], len:bat[:int], scale:bat[:int], cols:bat[:any]...):int ", "mvc_export_table_wrap;", "Prepare a table result set for the COPY INTO stream" ] [ "sql", "first_value", "pattern sql.first_value(b:any_1, s:lng, e:lng):any_1 ", "SQLfirst_value;", "return the first value of groups" ] [ "sql", "flush_log", "command sql.flush_log():void ", "SQLflush_log;", "flush the log now" ] [ "sql", "getVariable", "pattern sql.getVariable(mvc:int, varname:str):any_1 ", "getVariable;", "Get the value of a session variable" ] [ "sql", "getVersion", "command sql.getVersion(clientid:int):lng ", "mvc_getVersion;", "Return the database version identifier for a client." ] [ "sql", "get_value", "pattern sql.get_value(sname:str, sequence:str):lng ", "mvc_get_value;", "return the current value of the sequence" ] [ "sql", "grow", "pattern sql.grow(tid:bat[:oid], X_0:any_1):int ", "mvc_grow_wrap;", "Resize the tid column of a declared table." ] -[ "sql", "importTable", "pattern sql.importTable(sname:str, tname:str, fname:str...):bat[:any]... ", "mvc_bin_import_table_wrap;", "Import a table from the files (fname)" ] +[ "sql", "importTable", "pattern sql.importTable(sname:str, tname:str, onclient:int, fname:str...):bat[:any]... ", "mvc_bin_import_table_wrap;", "Import a table from the files (fname)" ] [ "sql", "include", "pattern sql.include(fname:str):void ", "SQLinclude;", "Compile and execute a sql statements on the file" ] [ "sql", "init", "pattern sql.init():void ", "SQLinitEnvironment;", "Initialize the environment for MAL" ] [ "sql", "lag", "pattern sql.lag(b:any_1, l:any_2, d:any_1, p:any_3, o:any_4):any_1 ", "SQLlag;", "return the value in the previous 'l' row in the partition or 'd' if non existent" ] @@ -15510,6 +15510,9 @@ Ready. [ "sqlcatalog", "grant", "pattern sqlcatalog.grant(sname:str, tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ", "SQLgrant;", "Catalog operation grant" ] [ "sqlcatalog", "grant_function", "pattern sqlcatalog.grant_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "SQLgrant_function;", "Catalog operation grant_function" ] [ "sqlcatalog", "grant_roles", "pattern sqlcatalog.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ", "SQLgrant_roles;", "Catalog operation grant_roles" ] +[ "sqlcatalog", "rename_column", "pattern sqlcatalog.rename_column(sname:str, tname:str, cname:str, newnme:str):void ", "SQLrename_column;", "Catalog operation rename_column" ] +[ "sqlcatalog", "rename_schema", "pattern sqlcatalog.rename_schema(sname:str, newnme:str):void ", "SQLrename_schema;", "Catalog operation rename_schema" ] +[ "sqlcatalog", "rename_table", "pattern sqlcatalog.rename_table(sname:str, tname:str, newnme:str):void ", "SQLrename_table;", "Catalog operation rename_table" ] [ "sqlcatalog", "rename_user", "pattern sqlcatalog.rename_user(sname:str, newnme:str, action:int):void ", "SQLrename_user;", "Catalog operation rename_user" ] [ "sqlcatalog", "revoke", "pattern sqlcatalog.revoke(sname:str, tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ", "SQLrevoke;", "Catalog operation revoke" ] [ "sqlcatalog", "revoke_function", "pattern sqlcatalog.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "SQLrevoke_function;", "Catalog operation revoke_function" ] @@ -15742,6 +15745,9 @@ Ready. [ "wlc", "master", "pattern wlc.master():void ", "WLCmaster;", "Activate the workload-capture-replay process" ] [ "wlc", "master", "pattern wlc.master(path:str):void ", "WLCmaster;", "Activate the workload-capture-replay process. Use a different location for the logs." ] [ "wlc", "query", "pattern wlc.query(q:str):void ", "WLCquery;", "Keep the queries for replay." ] +[ "wlc", "rename_column", "pattern wlc.rename_column(sname:str, tname:str, cname:str, newnme:str):void ", "WLCgeneric;", "Catalog operation rename_column" ] +[ "wlc", "rename_schema", "pattern wlc.rename_schema(sname:str, newnme:str):void ", "WLCgeneric;", "Catalog operation rename_schema" ] +[ "wlc", "rename_table", "pattern wlc.rename_table(sname:str, tname:str, newnme:str):void ", "WLCgeneric;", "Catalog operation rename_table" ] [ "wlc", "rename_user", "pattern wlc.rename_user(sname:str, newnme:str, action:int):void ", "WLCgeneric;", "Catalog operation rename_user" ] [ "wlc", "revoke", "pattern wlc.revoke(sname:str, tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ", "WLCgeneric;", "Catalog operation revoke" ] [ "wlc", "revoke_function", "pattern wlc.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "WLCgeneric;", "Catalog operation revoke_function" ] @@ -15799,6 +15805,9 @@ Ready. [ "wlr", "grant", "pattern wlr.grant(sname:str, tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ", "WLRgeneric;", "Catalog operation grant" ] [ "wlr", "grant_function", "pattern wlr.grant_function(sname:str, fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ", "WLRgeneric;", "Catalog operation grant_function" ] [ "wlr", "grant_roles", "pattern wlr.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ", "WLRgeneric;", "Catalog operation grant_roles" ] +[ "wlr", "rename_column", "pattern wlr.rename_column(sname:str, tname:str, cname:str, newnme:str):void ", "WLRgeneric;", "Catalog operation rename_column" ] +[ "wlr", "rename_schema", "pattern wlr.rename_schema(sname:str, newnme:str):void ", "WLRgeneric;", "Catalog operation rename_schema" ] +[ "wlr", "rename_table", "pattern wlr.rename_table(sname:str, tname:str, newnme:str):void ", "WLRgeneric;", "Catalog operation rename_table" ] [ "wlr", "rename_user", "pattern wlr.rename_user(sname:str, newnme:str, action:int):void ", "WLRgeneric;", "Catalog operation rename_user" ] [ "wlr", "replicate", "pattern wlr.replicate():void ", "WLRreplicate;", "Roll the snapshot forward to an up-to-date clone" ] [ "wlr", "replicate", "pattern wlr.replicate(dbname:str):void ", "WLRreplicate;", "Roll the snapshot forward to an up-to-date clone" ] 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 @@ -304,7 +304,7 @@ size_t HEAPvmsize(Heap *h); void IMPSdestroy(BAT *b); lng IMPSimprintsize(BAT *b); int MT_check_nr_cores(void); -int MT_create_thread(MT_Id *t, void( *function)(void *), void *arg, enum MT_thr_detach d); +int MT_create_thread(MT_Id *t, void (*function)(void *), void *arg, enum MT_thr_detach d); void MT_exiting_thread(void); MT_Id MT_getpid(void); size_t MT_getrss(void); @@ -576,6 +576,7 @@ MapiMsg mapi_seek_row(MapiHdl hdl, int64 MapiHdl mapi_send(Mapi mid, const char *cmd); MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit); MapiMsg mapi_set_size_header(Mapi mid, int value); +void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char *filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void *priv, const char *filename, const void *data, size_t size), void *priv); int mapi_split_line(MapiHdl hdl); MapiMsg mapi_start_talking(Mapi mid); MapiMsg mapi_store_field(MapiHdl hdl, int fnr, int outtype, void *outparam); @@ -2566,6 +2567,9 @@ str remapRef; str remoteRef; void removeInstruction(MalBlkPtr mb, InstrPtr p); void removeInstructionBlock(MalBlkPtr mb, int pc, int cnt); +str rename_columnRef; +str rename_schemaRef; +str rename_tableRef; str rename_userRef; str replaceRef; str replicatorRef; @@ -2728,7 +2732,7 @@ char *buffer_get_buf(buffer *b); void buffer_init(buffer *restrict b, char *restrict buf, size_t size); stream *buffer_rastream(buffer *restrict b, const char *restrict name); stream *buffer_wastream(buffer *restrict b, const char *restrict name); -stream *callback_stream(void *restrict priv, ssize_t( *read)(void *restrict priv, void *restrict buf, size_t elmsize, size_t cnt), void( *close)(void *priv), void( *destroy)(void *priv), const char *restrict name); +stream *callback_stream(void *restrict priv, ssize_t (*read)(void *restrict priv, void *restrict buf, size_t elmsize, size_t cnt), void (*close)(void *priv), void (*destroy)(void *priv), const char *restrict name); void close_stream(stream *s); stream *file_rastream(FILE *restrict fp, const char *restrict name); stream *file_rstream(FILE *restrict fp, const char *restrict name); @@ -2772,7 +2776,7 @@ int mnstr_readStr(stream *restrict s, ch ssize_t mnstr_read_block(stream *restrict s, void *restrict buf, size_t elmsize, size_t cnt); ssize_t mnstr_readline(stream *restrict s, void *restrict buf, size_t maxcnt); void mnstr_set_bigendian(stream *s, bool bigendian); -void mnstr_settimeout(stream *s, unsigned int ms, bool( *func)(void)); +void mnstr_settimeout(stream *s, unsigned int ms, bool (*func)(void)); ssize_t mnstr_write(stream *restrict s, const void *restrict buf, size_t elmsize, size_t cnt); int mnstr_writeBte(stream *s, int8_t val); int mnstr_writeBteArray(stream *restrict s, const int8_t *restrict val, size_t cnt); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -3027,6 +3027,123 @@ set_timezone(Mapi mid) mapi_close_handle(hdl); } +struct privdata { + stream *f; + char *buf; +}; + +#define READSIZE (1 << 16) +//#define READSIZE (1 << 20) + +static char * +getfile(void *data, const char *filename, bool binary, + uint64_t offset, size_t *size) +{ + stream *f; + char *buf; + struct privdata *priv = data; + ssize_t s; + + if (priv->buf == NULL) { + priv->buf = malloc(READSIZE); + if (priv->buf == NULL) { + *size = 0; + return "allocation failed"; + } + } + buf = priv->buf; + if (filename != NULL) { + if (binary) { + f = open_rstream(filename); + assert(offset <= 1); + offset = 0; + } else { + f = open_rastream(filename); +#ifdef HAVE_ICONV + if (encoding) { + stream *tmpf = f; + f = iconv_rstream(f, encoding, mnstr_name(f)); + if (f == NULL) + close_stream(tmpf); + } +#endif + } + if (f == NULL) { + *size = 0; /* indicate error */ + return "cannot open file"; + } + while (offset > 1) { + s = mnstr_readline(f, buf, READSIZE); + if (s < 0) { + close_stream(f); + *size = 0; + return "error reading file"; + } + if (s == 0) { + /* reached EOF withing offset lines */ + close_stream(f); + *size = 0; + return NULL; + } + if (buf[s - 1] == '\n') + offset--; + } + priv->f = f; + } else { + f = priv->f; + if (size == NULL) { + /* done reading before reaching EOF */ + close_stream(f); + priv->f = NULL; + return NULL; + } + } + s = mnstr_read(f, buf, 1, READSIZE); + if (s <= 0) { + *size = 0; + close_stream(f); + priv->f = NULL; + return s < 0 ? "error reading file" : NULL; + } + *size = (size_t) s; + return buf; +} + +static char * +putfile(void *data, const char *filename, const void *buf, size_t bufsize) +{ + struct privdata *priv = data; + + if (filename != NULL) { + if ((priv->f = open_wastream(filename)) == NULL) + return "cannot open file"; +#ifdef HAVE_ICONV + if (encoding) { + stream *f = priv->f; + priv->f = iconv_wstream(f, encoding, mnstr_name(f)); + if (priv->f == NULL) { + close_stream(f); + return "cannot open file"; + } + } +#endif + if (buf == NULL || bufsize == 0) + return NULL; /* successfully opened file */ + } else if (buf == NULL) { + /* done writing */ + int flush = mnstr_flush(priv->f); + close_stream(priv->f); + priv->f = NULL; + return flush < 0 ? "error writing output" : NULL; + } + if (mnstr_write(priv->f, buf, 1, bufsize) < (ssize_t) bufsize) { + close_stream(priv->f); + priv->f = NULL; + return "error writing output"; + } + return NULL; /* success */ +} + __declspec(noreturn) static void usage(const char *prog, int xit) __attribute__((__noreturn__)); @@ -3429,6 +3546,10 @@ main(int argc, char **argv) } } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list