MonetDB: client-filetrans - Closing branch client-filetrans afte...
Changeset: a06a3965a565 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a06a3965a565 Branch: client-filetrans Log Message: Closing branch client-filetrans after merging into default. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Merged branch client-filetrans into default.
Changeset: fe8b41f64d52 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fe8b41f64d52 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/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 sql/ChangeLog sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql.mal 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/vaults/bam/bam_db_interface.c 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_types.c sql/server/rel_updates.c sql/server/sql_parser.y sql/server/sql_scan.c sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out 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/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: default Log Message: Merged branch client-filetrans into default. diffs (truncated from 3448 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 @@ -10929,7 +10929,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", "createorderindex", "pattern sql.createorderindex(sch:str, tbl:str, col:str):void ","sql_createorderindex;","Instantiate the order index on a column" ] @@ -10970,14 +10970,14 @@ 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)
MonetDB: client-filetrans - Test copy into from file ON CLIENT.
Changeset: e352dc4b10d1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e352dc4b10d1 Modified Files: sql/benchmarks/tpch/load-sf-0.01-LOCKED.sql sql/benchmarks/tpch/load-sf-0.01.sql sql/benchmarks/tpch/load-sf-1.sql Branch: client-filetrans Log Message: Test copy into from file ON CLIENT. diffs (64 lines): diff --git a/sql/benchmarks/tpch/load-sf-0.01-LOCKED.sql b/sql/benchmarks/tpch/load-sf-0.01-LOCKED.sql --- a/sql/benchmarks/tpch/load-sf-0.01-LOCKED.sql +++ b/sql/benchmarks/tpch/load-sf-0.01-LOCKED.sql @@ -1,8 +1,8 @@ -COPY 5 RECORDS INTO region from 'PWD/region.tbl' USING DELIMITERS '|', '|\n' LOCKED; -COPY 25 RECORDS INTO nation from 'PWD/nation.tbl' USING DELIMITERS '|', '|\n' LOCKED; -COPY 100 RECORDS INTO supplier from 'PWD/supplier.tbl' USING DELIMITERS '|', '|\n' LOCKED; -COPY 1500 RECORDS INTO customer from 'PWD/customer.tbl' USING DELIMITERS '|', '|\n' LOCKED; -COPY 2000 RECORDS INTO part from 'PWD/part.tbl' USING DELIMITERS '|', '|\n' LOCKED; -COPY 8000 RECORDS INTO partsupp from 'PWD/partsupp.tbl' USING DELIMITERS '|', '|\n' LOCKED; -COPY 15000 RECORDS INTO orders from 'PWD/orders.tbl' USING DELIMITERS '|', '|\n' LOCKED; -COPY 7 RECORDS INTO lineitem from 'PWD/lineitem.tbl' USING DELIMITERS '|', '|\n' LOCKED; +COPY 5 RECORDS INTO region from 'PWD/region.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; +COPY 25 RECORDS INTO nation from 'PWD/nation.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; +COPY 100 RECORDS INTO supplier from 'PWD/supplier.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; +COPY 1500 RECORDS INTO customer from 'PWD/customer.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; +COPY 2000 RECORDS INTO part from 'PWD/part.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; +COPY 8000 RECORDS INTO partsupp from 'PWD/partsupp.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; +COPY 15000 RECORDS INTO orders from 'PWD/orders.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; +COPY 7 RECORDS INTO lineitem from 'PWD/lineitem.tbl' ON CLIENT USING DELIMITERS '|', '|\n' LOCKED; diff --git a/sql/benchmarks/tpch/load-sf-0.01.sql b/sql/benchmarks/tpch/load-sf-0.01.sql --- a/sql/benchmarks/tpch/load-sf-0.01.sql +++ b/sql/benchmarks/tpch/load-sf-0.01.sql @@ -1,10 +1,10 @@ START TRANSACTION; -COPY 5 RECORDS INTO region from 'PWD/region.tbl' USING DELIMITERS '|', '|\n'; -COPY 25 RECORDS INTO nation from 'PWD/nation.tbl' USING DELIMITERS '|', '|\n'; -COPY 100 RECORDS INTO supplier from 'PWD/supplier.tbl' USING DELIMITERS '|', '|\n'; -COPY 1500 RECORDS INTO customer from 'PWD/customer.tbl' USING DELIMITERS '|', '|\n'; -COPY 2000 RECORDS INTO part from 'PWD/part.tbl' USING DELIMITERS '|', '|\n'; -COPY 8000 RECORDS INTO partsupp from 'PWD/partsupp.tbl' USING DELIMITERS '|', '|\n'; -COPY 15000 RECORDS INTO orders from 'PWD/orders.tbl' USING DELIMITERS '|', '|\n'; -COPY 7 RECORDS INTO lineitem from 'PWD/lineitem.tbl' USING DELIMITERS '|', '|\n'; +COPY 5 RECORDS INTO region from 'PWD/region.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY 25 RECORDS INTO nation from 'PWD/nation.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY 100 RECORDS INTO supplier from 'PWD/supplier.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY 1500 RECORDS INTO customer from 'PWD/customer.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY 2000 RECORDS INTO part from 'PWD/part.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY 8000 RECORDS INTO partsupp from 'PWD/partsupp.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY 15000 RECORDS INTO orders from 'PWD/orders.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY 7 RECORDS INTO lineitem from 'PWD/lineitem.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; COMMIT; diff --git a/sql/benchmarks/tpch/load-sf-1.sql b/sql/benchmarks/tpch/load-sf-1.sql --- a/sql/benchmarks/tpch/load-sf-1.sql +++ b/sql/benchmarks/tpch/load-sf-1.sql @@ -1,10 +1,10 @@ START TRANSACTION; -COPY INTO region from 'PWD/region.tbl' USING DELIMITERS '|', '|\n'; -COPY INTO nation from 'PWD/nation.tbl' USING DELIMITERS '|', '|\n'; -COPY INTO supplier from 'PWD/supplier.tbl' USING DELIMITERS '|', '|\n'; -COPY INTO customer from 'PWD/customer.tbl' USING DELIMITERS '|', '|\n'; -COPY INTO part from 'PWD/part.tbl' USING DELIMITERS '|', '|\n'; -COPY INTO partsupp from 'PWD/partsupp.tbl' USING DELIMITERS '|', '|\n'; -COPY INTO orders from 'PWD/orders.tbl' USING DELIMITERS '|', '|\n'; -COPY INTO lineitem from 'PWD/lineitem.tbl' USING DELIMITERS '|', '|\n'; +COPY INTO region from 'PWD/region.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY INTO nation from 'PWD/nation.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY INTO supplier from 'PWD/supplier.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY INTO customer from 'PWD/customer.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY INTO part from 'PWD/part.tbl' ON CLIENT USING DELIMITERS '|', '|\n'; +COPY INTO partsupp from 'PWD/partsupp.tbl' ON CLIENT USING DELIMITERS '|
MonetDB: client-filetrans - Deal with long response from client.
Changeset: 4ae8eacbc72e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4ae8eacbc72e Modified Files: sql/backends/monet5/sql.c Branch: client-filetrans Log Message: Deal with long response from client. diffs (106 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -2062,6 +2062,8 @@ mvc_export_table_wrap( Client cntxt, Mal BAT *order = NULL, *b = NULL, *tbl = NULL, *atr = NULL, *tpe = NULL,*len = NULL,*scale = NULL; res_table *t = NULL; bool tostdout; + char buf[80]; + ssize_t sz; (void) format; @@ -2167,10 +2169,13 @@ mvc_export_table_wrap( Client cntxt, Mal mnstr_write(s, PROMPT3, sizeof(PROMPT3) - 1, 1); mnstr_printf(s, "w %s\n", filename); mnstr_flush(s); - char buf[80]; - if (mnstr_readline(m->scanner.rs->s, buf, sizeof(buf)) > 1) { + if ((sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 1) { /* non-empty line indicates failure on client */ msg = createException(IO, "streams.open", "%s", buf); + /* deal with ridiculously long response from client */ + while (buf[sz - 1] != '\n' && + (sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 0) + ; goto wrapup_result_set1; } } @@ -2180,14 +2185,11 @@ mvc_export_table_wrap( Client cntxt, Mal mb->optimize = 0; if (onclient) { mnstr_flush(s); - char buf[80]; - ssize_t sz; - while ((sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 0) { - if (sz > 1) { - msg = createException(IO, "streams.open", "%s", buf); - goto wrapup_result_set1; - } + if ((sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 1) { + msg = createException(IO, "streams.open", "%s", buf); } + while (sz > 0) + sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf)); } else if (!tostdout) { close_stream(s); } @@ -2300,6 +2302,8 @@ mvc_export_row_wrap( Client cntxt, MalBl int mtype; BAT *tbl = NULL, *atr = NULL, *tpe = NULL,*len = NULL,*scale = NULL; bool tostdout; + char buf[80]; + ssize_t sz; (void) format; if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL) @@ -2404,10 +2408,13 @@ mvc_export_row_wrap( Client cntxt, MalBl mnstr_write(s, PROMPT3, sizeof(PROMPT3) - 1, 1); mnstr_printf(s, "w %s\n", filename); mnstr_flush(s); - char buf[80]; - if (mnstr_readline(m->scanner.rs->s, buf, sizeof(buf)) > 1) { + if ((sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 1) { /* non-empty line indicates failure on client */ msg = createException(IO, "streams.open", "%s", buf); + /* deal with ridiculously long response from client */ + while (buf[sz - 1] != '\n' && + (sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 0) + ; goto wrapup_result_set; } } @@ -2417,14 +2424,11 @@ mvc_export_row_wrap( Client cntxt, MalBl mb->optimize = 0; if (onclient) { mnstr_flush(s); - char buf[80]; - ssize_t sz; - while ((sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 0) { - if (sz > 1) { - msg = createException(IO, "streams.open", "%s", buf); - goto wrapup_result_set; - } + if ((sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf))) > 1) { + msg = createException(IO, "streams.open", "%s", buf); } + while (sz > 0) + sz = mnstr_readline(m->scanner.rs->s, buf, sizeof(buf)); } else if (!tostdout) { close_stream(s); } @@ -2749,8 +2753,12 @@ mvc_import_table_wrap(Client cntxt, MalB bstream_next(be->mvc->scanner.rs); ss = be->mvc->scanner.rs->s; char buf[80]; - if (mnstr_readline(ss, buf, sizeof(buf)) > 1) { - throw(IO, "sql.copy_from", "%s", buf); + if ((len = mnstr_readline(ss, buf, sizeof(buf))) > 1) { +
MonetDB: client-filetrans - Merge with default branch.
Changeset: f6ddcb764592 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f6ddcb764592 Modified Files: gdk/gdk_logger.c gdk/gdk_logger.h gdk/gdk_qsort.c gdk/gdk_qsort_impl.h sql/common/sql_list.c sql/server/rel_optimizer.c sql/server/sql_parser.y tools/mserver/monet_version.c.in Branch: client-filetrans Log Message: Merge with default branch. diffs (truncated from 700 to 300 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -936,8 +936,6 @@ tr_commit(logger *lg, trans *tr) return tr_destroy(tr); } -static gdk_return log_sequence_nrs(logger *lg); - #ifdef _MSC_VER #define access(file, mode) _access(file, mode) #endif @@ -991,7 +989,6 @@ logger_open(logger *lg) { char id[BUFSIZ]; char *filename; - bat bid; snprintf(id, sizeof(id), LLFMT, lg->id); filename = GDKfilepath(BBPselectfarm(lg->dbfarm_role, 0, offheap), lg->dir, LOGFILE, id); @@ -1003,36 +1000,12 @@ logger_open(logger *lg) } lg->end = 0; - if (lg->log == NULL || mnstr_errnr(lg->log) || log_sequence_nrs(lg) != GDK_SUCCEED) { + if (lg->log == NULL || mnstr_errnr(lg->log)) { fprintf(stderr, "!ERROR: logger_open: creating %s failed\n", filename); GDKfree(filename); return GDK_FAIL; } GDKfree(filename); - if ((bid = logger_find_bat(lg, "seqs_id", 0, 0)) != 0) { - int dbg = GDKdebug; - BAT *b; - GDKdebug &= ~CHECKMASK; - if ((b = BATdescriptor(bid)) == NULL || - BATmode(b, TRANSIENT) != GDK_SUCCEED || - logger_del_bat(lg, bid) != GDK_SUCCEED) { - logbat_destroy(b); - return GDK_FAIL; - } - logbat_destroy(b); - b = NULL; - if ((bid = logger_find_bat(lg, "seqs_val", 0, 0)) == 0 || - (b = BATdescriptor(bid)) == NULL || - BATmode(b, TRANSIENT) != GDK_SUCCEED || - logger_del_bat(lg, bid) != GDK_SUCCEED) { - logbat_destroy(b); - return GDK_FAIL; - } - logbat_destroy(b); - GDKdebug = dbg; - if (bm_commit(lg) != GDK_SUCCEED) - return GDK_FAIL; - } return GDK_SUCCEED; } @@ -1044,7 +1017,7 @@ logger_close(logger *lg) } static gdk_return -logger_readlog(logger *lg, char *filename) +logger_readlog(logger *lg, char *filename, bool *filemissing) { trans *tr = NULL; logformat l; @@ -1067,6 +1040,7 @@ logger_readlog(logger *lg, char *filenam close_stream(lg->log); lg->log = NULL; GDKdebug = dbg; + *filemissing = true; return GDK_SUCCEED; } short byteorder; @@ -1276,7 +1250,7 @@ logger_readlogs(logger *lg, FILE *fp, ch fprintf(stderr, "#logger_readlogs logger id is " LLFMT "\n", lg->id); } - while (fgets(id, sizeof(id), fp) != NULL) { + if (fgets(id, sizeof(id), fp) != NULL) { char log_filename[FILENAME_MAX]; lng lid = strtoll(id, NULL, 10); @@ -1285,13 +1259,20 @@ logger_readlogs(logger *lg, FILE *fp, ch } if (!lg->shared && lid >= lg->id) { + bool filemissing = false; + lg->id = lid; - snprintf(log_filename, sizeof(log_filename), "%s." LLFMT, filename, lg->id); - res = logger_readlog(lg, log_filename); + while (res == GDK_SUCCEED && !filemissing) { + snprintf(log_filename, sizeof(log_filename), "%s." LLFMT, filename, lg->id); + res = logger_readlog(lg, log_filename, &filemissing); + if (!filemissing) + lg->id++; + } } else { + bool filemissing = false; while (lid >= lg->id && res == GDK_SUCCEED) { snprintf(log_filename, sizeof(log_filename), "%s." LLFMT, filename, lg->id); - if ((res = logger_readlog(lg, log_filename)) != GDK_SUCCEED && lg->shared && lg->id > 1) { + if ((res = logger_readlog(lg, log_filename, &filemissing)) != GDK_SUCCEED && lg->shared && lg->id > 1) { /* The only special case is if * the file is missing * altogether and the logger @@ -1327,24 +1308,9 @@ logger_readlogs(logger *lg, FILE *fp, ch static gdk_return logger_co
MonetDB: config_rss - Let exported mal function return int inste...
Changeset: b0828adbc241 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b0828adbc241 Modified Files: sql/backends/monet5/config_rss/test_rss.c sql/backends/monet5/config_rss/test_rss.mal sql/test/configurable_rss/Tests/rss.py Branch: config_rss Log Message: Let exported mal function return int instead of void. diffs (38 lines): diff --git a/sql/backends/monet5/config_rss/test_rss.c b/sql/backends/monet5/config_rss/test_rss.c --- a/sql/backends/monet5/config_rss/test_rss.c +++ b/sql/backends/monet5/config_rss/test_rss.c @@ -17,8 +17,11 @@ #define TEST_FILE "test_file" -mal_export str TESTrestricted_rss(lng* GDK_mem_maxsize /*in bytes*/) +mal_export str TESTrestricted_rss(int* RetVal, lng* GDK_mem_maxsize /*in bytes*/) { + *RetVal = 0; // Use a dummy return value to make interfacing with sql/mal easy. + + // We are going to try to allocate twice the maximum configured rss bound. size_t rss_bound = (size_t) *GDK_mem_maxsize, to_be_allocated = 2 * rss_bound, allocated = 0; diff --git a/sql/backends/monet5/config_rss/test_rss.mal b/sql/backends/monet5/config_rss/test_rss.mal --- a/sql/backends/monet5/config_rss/test_rss.mal +++ b/sql/backends/monet5/config_rss/test_rss.mal @@ -1,5 +1,5 @@ module test_config_rss; -command run_test_config_rss(GDK_mem_maxsize:lng):void +command run_test_config_rss(GDK_mem_maxsize:lng):int address TESTrestricted_rss comment "C code will allocate memory and test whether the configured rss limit is violated."; diff --git a/sql/test/configurable_rss/Tests/rss.py b/sql/test/configurable_rss/Tests/rss.py --- a/sql/test/configurable_rss/Tests/rss.py +++ b/sql/test/configurable_rss/Tests/rss.py @@ -9,7 +9,7 @@ class RSSTestConfig: sql_template = \ """ create function test_rss(bound bigint) -returns bigint external name test_config_rss.run_test_config_rss; +returns int external name test_config_rss.run_test_config_rss; select test_rss({gdk_mem_maxsize}); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: analytics - Tests approval.
Changeset: 8f30a71e9472 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f30a71e9472 Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out gdk/gdk_analytic_func.c sql/test/Tests/systemfunctions.stable.out sql/test/Tests/systemfunctions.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 Branch: analytics Log Message: Tests approval. diffs (truncated from 331 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 @@ -8394,7 +8394,7 @@ Ready. [ "batsql","dense_rank", "pattern batsql.dense_rank(b:bat[:any_1], p:any_2, o:any_3):bat[:int] ","SQLdense_rank;", "return the densely ranked groups" ] [ "batsql","diff", "pattern batsql.diff(b:bat[:any_1]):bat[:bit] ", "SQLdiff;", "return true if cur != prev row"] [ "batsql","diff", "pattern batsql.diff(p:bat[:bit], b:bat[:any_1]):bat[:bit] ", "SQLdiff;", "return true if cur != prev row" ] -[ "batsql","first_value", "pattern batsql.first_value(b:bat[:any_1], p:any_2, o:any_3):bat[:any_1] ", "SQLfirst_value;", "return the first value of groups" ] +[ "batsql","first_value", "pattern batsql.first_value(b:bat[:any_1], s:bat[:lng], e:bat[:lng]):bat[:any_1] ", "SQLfirst_value;", "return the first value of groups" ] [ "batsql","lag", "pattern batsql.lag(b:bat[:any_1], l:any_2, d:any_1, p:any_3, o:any_4):bat[:any_1] ", "SQLlag;", "return the value in the previous 'l' row in the partition or 'd' if non existent" ] [ "batsql","lag", "pattern batsql.lag(b:bat[:any_1], l:any_2, d:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ", "SQLlag;", "return the value in the previous 'l' row in the partition or 'd' if non existent" ] [ "batsql","lag", "pattern batsql.lag(b:bat[:any_1], l:any_2, p:any_3, o:any_4):bat[:any_1] ","SQLlag;", "return the value in the previous 'l' row in the partition or NULL if non existent" ] @@ -8402,7 +8402,7 @@ Ready. [ "batsql","lag", "pattern batsql.lag(b:bat[:any_1], l:bat[:any_2], d:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ", "SQLlag;", "return the value in the previous 'l' row in the partition or 'd' if non existent" ] [ "batsql","lag", "pattern batsql.lag(b:bat[:any_1], l:bat[:any_2], p:any_3, o:any_4):bat[:any_1] ", "SQLlag;", "return the value in the previous 'l' row in the partition or NULL if non existent" ] [ "batsql","lag", "pattern batsql.lag(b:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ", "SQLlag;", "return the value in the previous row in the partition or NULL if non existent" ] -[ "batsql","last_value", "pattern batsql.last_value(b:bat[:any_1], p:any_2, o:any_3):bat[:any_1] ", "SQLlast_value;", "return the last value of groups" ] +[ "batsql","last_value", "pattern batsql.last_value(b:bat[:any_1], s:bat[:lng], e:bat[:lng]):bat[:any_1] ", "SQLlast_value;", "return the last value of groups" ] [ "batsql","lead", "pattern batsql.lead(b:bat[:any_1], l:any_2, d:any_1, p:any_3, o:any_4):bat[:any_1] ", "SQLlead;", "return the value in the next 'l' row in the partition or 'd' if non existent" ] [ "batsql","lead", "pattern batsql.lead(b:bat[:any_1], l:any_2, d:bat[:any_1], p:any_3, o:any_4):bat[:any_1] ","SQLlead;", "return the value in the next 'l' row in the partition or 'd' if non existent" ] [ "batsql","lead", "pattern batsql.lead(b:bat[:any_1], l:any_2, p:any_3, o:any_4):bat[:any_1] ", "SQLlead;", "return the value in the next 'l' row in the partition or NULL if non existent" ] @@ -8413,8 +8413,8 @@ Ready. [ "batsql","max", "pattern batsql.max(b:bat[:any_1], s:bat[:lng], e:bat[:lng]):bat[:any_1] ", "SQLmax;", "return the maximum of groups" ] [ "batsql","min", "pattern batsql.min(b:bat[:any_1], s:bat[:lng], e:bat[:lng]):bat[:any_1] ", "SQLmin;", "return the minimum of groups" ] [ "batsql","next_value", "pattern batsql.next_value(sname:bat[:str], sequence:str):bat[:lng] ", "mvc_bat_next_value;", "return the next value of the sequence" ] -[ "batsql","nth_value","pattern batsql.nth_value(b:bat[:any_1], n:any_2, p:any_3, o:any_4):bat[:any_1] ", "SQLnth_value;","return the nth value of each group"] -[ "batsql","nth_value","pattern batsql.nth_value(b:bat[:any_1], n:bat[:any_2], p:any_3, o:any_4):bat[:any_1] ","SQLnth_value;", "return the nth value of each group"] +[ "batsql","nth_value","pattern batsql.
MonetDB: default - Reduce cost of sorting lists by removing a qu...
Changeset: d8009b77c0f9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d8009b77c0f9 Modified Files: sql/common/sql_list.c sql/server/rel_optimizer.c Branch: default Log Message: Reduce cost of sorting lists by removing a quadratic part. diffs (150 lines): diff --git a/sql/common/sql_list.c b/sql/common/sql_list.c --- a/sql/common/sql_list.c +++ b/sql/common/sql_list.c @@ -473,28 +473,27 @@ list_keysort(list *l, int *keys, fdup du { list *res; node *n = NULL; - int i, j, *pos, cnt = list_length(l); + int i, cnt = list_length(l); + void **data; - pos = (int*)GDKmalloc(cnt*sizeof(int)); - if (pos == NULL) { + data = GDKmalloc(cnt*sizeof(void *)); + if (data == NULL) { return NULL; } res = list_new_(l); if (res == NULL) { - GDKfree(pos); + GDKfree(data); return NULL; } for (n = l->h, i = 0; n; n = n->next, i++) { - pos[i] = i; + data[i] = n->data; } /* sort descending */ - GDKqsort_rev(keys, pos, NULL, cnt, sizeof(int), sizeof(int), TYPE_int); - for(j=0; jh, i = 0; i != pos[j]; n = n->next, i++) - assert(n); - list_append(res, dup?dup(n->data):n->data); + GDKqsort_rev(keys, data, NULL, cnt, sizeof(int), sizeof(void *), TYPE_int); + for(i=0; ih, i = 0; n; n = n->next, i++) { keys[i] = key(n->data); - pos[i] = i; + data[i] = n->data; } /* sort descending */ - GDKqsort_rev(keys, pos, NULL, cnt, sizeof(int), sizeof(int), TYPE_int); - for(j=0; jh, i = 0; i != pos[j]; n = n->next, i++) - assert(n); - list_append(res, dup?dup(n->data):n->data); + GDKqsort_rev(keys, data, NULL, cnt, sizeof(int), sizeof(void *), TYPE_int); + for(i=0; isa); if (res == NULL) { free(keys); - free(pos); + free(data); return NULL; } for (n = dje->h, i = 0; n; n = n->next, i++) { @@ -654,18 +655,15 @@ order_join_expressions(mvc *sql, list *d if (r && is_select(r->op) && r->exps) keys[i] += list_length(r->exps)*10 + exps_count(r->exps)*debug; } - pos[i] = i; + data[i] = n->data; } /* sort descending */ - if (cnt > 1) - GDKqsort_rev(keys, pos, NULL, cnt, sizeof(int), sizeof(int), TYPE_int); - for(j=0; jh, i = 0; i != pos[j]; n = n->next, i++) - ; - list_append(res, n->data); + GDKqsort_rev(keys, data, NULL, cnt, sizeof(int), sizeof(void *), TYPE_int); + for(i=0; ihttps://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: analytics - Merge with default
Changeset: f8174cbbe776 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f8174cbbe776 Added Files: sql/test/BugTracker-2018/Tests/in-subquery-having-Bug-6651.sql sql/test/BugTracker-2018/Tests/in-subquery-having-Bug-6651.stable.err sql/test/BugTracker-2018/Tests/in-subquery-having-Bug-6651.stable.out sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.sql Modified Files: MonetDB.spec gdk/gdk_logger.c gdk/gdk_logger.h gdk/gdk_qsort.c gdk/gdk_qsort_impl.h sql/server/sql_parser.y sql/test/BugTracker-2018/Tests/All testing/Mtest.py.in testing/listexports.py.in tools/mserver/monet_version.c.in Branch: analytics Log Message: Merge with default diffs (truncated from 835 to 300 lines): diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -878,10 +878,10 @@ Group: Applications/Databases %if "%{?_selinux_policy_version}" != "" Requires: selinux-policy >= %{?_selinux_policy_version} %endif -Requires(post): MonetDB5-server = %{version}-%{release} -Requires(postun): MonetDB5-server -Requires(post): %{name}-SQL-server5 = %{version}-%{release} -Requires(postun): %{name}-SQL-server5 +Requires(post): MonetDB5-server%{?_isa} = %{version}-%{release} +Requires(postun): MonetDB5-server%{?_isa} = %{version}-%{release} +Requires(post): %{name}-SQL-server5%{?_isa} = %{version}-%{release} +Requires(postun): %{name}-SQL-server5%{?_isa} = %{version}-%{release} Requires(post): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles Requires(postun): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles BuildArch: noarch diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -936,8 +936,6 @@ tr_commit(logger *lg, trans *tr) return tr_destroy(tr); } -static gdk_return log_sequence_nrs(logger *lg); - #ifdef _MSC_VER #define access(file, mode) _access(file, mode) #endif @@ -991,7 +989,6 @@ logger_open(logger *lg) { char id[BUFSIZ]; char *filename; - bat bid; snprintf(id, sizeof(id), LLFMT, lg->id); filename = GDKfilepath(BBPselectfarm(lg->dbfarm_role, 0, offheap), lg->dir, LOGFILE, id); @@ -1003,36 +1000,12 @@ logger_open(logger *lg) } lg->end = 0; - if (lg->log == NULL || mnstr_errnr(lg->log) || log_sequence_nrs(lg) != GDK_SUCCEED) { + if (lg->log == NULL || mnstr_errnr(lg->log)) { fprintf(stderr, "!ERROR: logger_open: creating %s failed\n", filename); GDKfree(filename); return GDK_FAIL; } GDKfree(filename); - if ((bid = logger_find_bat(lg, "seqs_id", 0, 0)) != 0) { - int dbg = GDKdebug; - BAT *b; - GDKdebug &= ~CHECKMASK; - if ((b = BATdescriptor(bid)) == NULL || - BATmode(b, TRANSIENT) != GDK_SUCCEED || - logger_del_bat(lg, bid) != GDK_SUCCEED) { - logbat_destroy(b); - return GDK_FAIL; - } - logbat_destroy(b); - b = NULL; - if ((bid = logger_find_bat(lg, "seqs_val", 0, 0)) == 0 || - (b = BATdescriptor(bid)) == NULL || - BATmode(b, TRANSIENT) != GDK_SUCCEED || - logger_del_bat(lg, bid) != GDK_SUCCEED) { - logbat_destroy(b); - return GDK_FAIL; - } - logbat_destroy(b); - GDKdebug = dbg; - if (bm_commit(lg) != GDK_SUCCEED) - return GDK_FAIL; - } return GDK_SUCCEED; } @@ -1044,7 +1017,7 @@ logger_close(logger *lg) } static gdk_return -logger_readlog(logger *lg, char *filename) +logger_readlog(logger *lg, char *filename, bool *filemissing) { trans *tr = NULL; logformat l; @@ -1067,6 +1040,7 @@ logger_readlog(logger *lg, char *filenam close_stream(lg->log); lg->log = NULL; GDKdebug = dbg; + *filemissing = true; return GDK_SUCCEED; } short byteorder; @@ -1276,7 +1250,7 @@ logger_readlogs(logger *lg, FILE *fp, ch fprintf(stderr, "#logger_readlogs logger id is " LLFMT "\n", lg->id); } - while (fgets(id, sizeof(id), fp) != NULL) { + if (fgets(id, sizeof(id), fp) != NULL) { char log_filename[FILENAME_MAX]; lng lid = strtoll(id, NULL, 10); @@ -1285,13 +1259,20 @@ logger_readlogs(logger *lg, FILE *fp, ch } if (!lg->shared && lid >= lg->id) { + bool filemissing = false; + lg->id = lid; - snprintf(log_filename, sizeof(log_filename), "%s." LLFMT, filename, lg->id); - r
MonetDB: analytics - nth_value analytic function with column nth...
Changeset: 74e82cef418e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=74e82cef418e Modified Files: gdk/gdk_analytic.h gdk/gdk_analytic_func.c sql/backends/monet5/sql_rank.c sql/test/analytics/Tests/analytics01.sql sql/test/analytics/Tests/analytics01.stable.err sql/test/analytics/Tests/analytics01.stable.out Branch: analytics Log Message: nth_value analytic function with column nth parameter. diffs (truncated from 544 to 300 lines): diff --git a/gdk/gdk_analytic.h b/gdk/gdk_analytic.h --- a/gdk/gdk_analytic.h +++ b/gdk/gdk_analytic.h @@ -27,7 +27,7 @@ gdk_export gdk_return GDKanalyticalwindo gdk_export gdk_return GDKanalyticalfirst(BAT *r, BAT *b, BAT *s, BAT *e, int tpe); gdk_export gdk_return GDKanalyticallast(BAT *r, BAT *b, BAT *s, BAT *e, int tpe); -gdk_export gdk_return GDKanalyticalnthvalue(BAT *r, BAT *b, BAT *s, BAT *e, BUN nth, int tpe); +gdk_export gdk_return GDKanalyticalnthvalue(BAT *r, BAT *b, BAT *s, BAT *e, BAT *l, const void* restrict bound, int tp1, int tp2); gdk_export gdk_return GDKanalyticalmin(BAT *r, BAT *b, BAT *s, BAT *e, int tpe); gdk_export gdk_return GDKanalyticalmax(BAT *r, BAT *b, BAT *s, BAT *e, int tpe); gdk_export gdk_return GDKanalyticalcount(BAT *r, BAT *b, BAT *s, BAT *e, const bit* restrict ignore_nils, int tpe); diff --git a/gdk/gdk_analytic_func.c b/gdk/gdk_analytic_func.c --- a/gdk/gdk_analytic_func.c +++ b/gdk/gdk_analytic_func.c @@ -352,84 +352,208 @@ allocation_error: return GDK_FAIL; } -#define ANALYTICAL_NTHVALUE_IMP(TPE) \ - do { \ - TPE *bp, *bs, *be, curval, *restrict rb; \ - bp = (TPE*)Tloc(b, 0); \ - rb = (TPE*)Tloc(r, 0); \ - if (nth == BUN_NONE) { \ - has_nils = true; \ - for(; i bs && nth < (BUN)(end[i] - start[i])) ? *(bs + nth) : TPE##_nil; \ - *rb = curval;\ - if (is_##TPE##_nil(curval)) \ - has_nils = true; \ - }\ - }\ +#define ANALYTICAL_NTHVALUE_IMP_SINGLE_FIXED(TPE1) \ + do { \ + TPE1 *bp = (TPE1*)Tloc(b, 0), *bs, *be, curval, *restrict rb = (TPE1*)Tloc(r, 0); \ + if (is_lng_nil(nth)) { \ + has_nils = true; \ + for (; i bs && nth < (end[i] - start[i])) ? *(bs + nth) : TPE1##_nil; \ + *rb = curval; \ + if (is_##TPE1##_nil(curval)) \ + has_nils = true; \ + } \ + } \ + } while(0) + +#define ANALYTICAL_NTHVALUE_IMP_MULTI_FIXED(TPE1, TPE2) \ + do { \ + TPE2 *restrict lp = (TPE2*)Tloc(l, 0); \ + for (; i (end[i] - start[i])) \ + curval = TPE1##_nil; \ + else \ + curval = *(bs + lnth - 1); \ + *rb = curval; \ + if (is_##TPE1##_nil(curval)) \ + has_nils = true; \ + } \ + } while(0) + +#define ANALYTICAL_NTHVALUE_CALC_FIXED(TPE1) \ + do { \ + TPE1 *bp, *bs, *be, curval, *restrict rb; \ + bp = (TPE1*)Tloc(b, 0); \ + rb = (TPE1*)Tloc(r, 0); \ + switch (tp2) { \ + case TYPE_bte: \ + ANALYTICAL_NTHVALUE_IMP_MULTI_FIXED(TPE1, bte); \ + break; \ + case TYPE_sht: \ + ANALYTICAL_NTHVALUE_IMP_MULTI_FIXED(TPE1, sht); \ + break; \ + case TYPE_int: \ + ANALYTICAL_NTHVALUE_IMP_MULTI_FIXED(TPE1, int); \ + break; \ + case TYPE_lng: \ + ANALYTICAL_NTHVALUE_IMP_MULTI_FIXED(TPE1, lng); \ + break; \ + default: \ + goto nosupport; \ + } \ + } while(0) + +#define ANALYTICAL_NTHVALUE_IMP_MULTI_VARSIZED(TPE2) \ + do { \ + TPE2 *restrict lp = (TPE2*)Tloc(l, 0); \ + for (; i < cnt; i++) { \ + TPE2 lnth = lp[i]; \ + if (is_##TPE2##_nil(lnth) || end[i] <= start[i] || (lng)(lnth - 1) > (end[i] - start[i])) \ + curval = (void *) nil; \ + else \ + curval = BUNtail(bpi, (BUN) sta
MonetDB: default - The OpenSSL_version function seems to be a fa...
Changeset: 77393d962d1f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=77393d962d1f Modified Files: tools/mserver/monet_version.c.in Branch: default Log Message: The OpenSSL_version function seems to be a fairly recent addition. (In other words, Ubuntu is lagging way behind.) diffs (15 lines): diff --git a/tools/mserver/monet_version.c.in b/tools/mserver/monet_version.c.in --- a/tools/mserver/monet_version.c.in +++ b/tools/mserver/monet_version.c.in @@ -88,7 +88,11 @@ monet_version(void) #endif #ifdef HAVE_OPENSSL print_libversion("openssl", +#if OPENSSL_VERSION_NUMBER < 0x1010 +OPENSSL_VERSION_TEXT, +#else OpenSSL_version(OPENSSL_VERSION), +#endif OPENSSL_VERSION_TEXT); #endif #ifdef HAVE_LIBXML ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list