Changeset: d116771b6b1e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d116771b6b1e Added Files: sql/test/SQLite_regress/sqllogictest/Tests/test1.SQL.bat sql/test/SQLite_regress/sqllogictest/Tests/test1.SQL.sh sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.err sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.err-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.out sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.out-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test1.timeout sql/test/SQLite_regress/sqllogictest/Tests/test2.SQL.bat sql/test/SQLite_regress/sqllogictest/Tests/test2.SQL.sh sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.err sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.err-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.out sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.out-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test2.timeout sql/test/SQLite_regress/sqllogictest/Tests/test3.SQL.bat sql/test/SQLite_regress/sqllogictest/Tests/test3.SQL.sh sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.err sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.err-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.out sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.out-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test3.timeout sql/test/SQLite_regress/sqllogictest/Tests/test4.SQL.bat sql/test/SQLite_regress/sqllogictest/Tests/test4.SQL.sh sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.err sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.err-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.out sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.out-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test4.timeout sql/test/SQLite_regress/sqllogictest/Tests/test5.SQL.bat sql/test/SQLite_regress/sqllogictest/Tests/test5.SQL.sh sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.err sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.err-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.out sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.out-noapprove sql/test/SQLite_regress/sqllogictest/Tests/test5.timeout sql/test/SQLite_regress/sqllogictest/sqllogictest.py Removed Files: sql/test/BugTracker-2015/Tests/incorrect_result_type.Bug-3687.stable.out.int128 sql/test/BugTracker-2016/Tests/column_alias_in_where_clause.Bug-3947.stable.out.int128 sql/test/BugTracker-2016/Tests/inner_join_cross_join.Bug-6140.stable.out.int128 sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out.int128 sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out.int128 sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.stable.out.int128 sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128 sql/test/BugTracker-2018/Tests/sqlitelogictest-coalesce-division-by-zero.Bug-6556.stable.out.int128 sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.stable.out.int128 sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out.int128 sql/test/BugTracker-2018/Tests/sqlitelogictest-select-nullif-case.Bug-6579.stable.out.int128 sql/test/SQLite_regress/sqllogictest/Tests/select1.test.sql sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.err sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.out sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.out.int128 sql/test/SQLite_regress/sqllogictest/Tests/select1.test.timeout sql/test/SQLite_regress/sqllogictest/Tests/select2.test.sql sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.err sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.out sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.out.int128 sql/test/SQLite_regress/sqllogictest/Tests/select2.test.timeout sql/test/SQLite_regress/sqllogictest/Tests/select3.test.sql sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.err sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out.int128 sql/test/SQLite_regress/sqllogictest/Tests/select3.test.timeout sql/test/SQLite_regress/sqllogictest/Tests/select4.test.sql sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.err sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.out sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.out.int128 sql/test/SQLite_regress/sqllogictest/Tests/select4.test.timeout sql/test/SQLite_regress/sqllogictest/Tests/select5.test.sql sql/test/SQLite_regress/sqllogictest/Tests/select5.test.stable.err sql/test/SQLite_regress/sqllogictest/Tests/select5.test.stable.out sql/test/SQLite_regress/sqllogictest/Tests/select5.test.timeout Modified Files: monetdb5/modules/mal/sysmon.c sql/backends/monet5/sql.c sql/backends/monet5/wlr.c sql/server/rel_optimizer.c sql/server/rel_prop.c sql/server/rel_prop.h sql/test/BugTracker-2015/Tests/incorrect_result_type.Bug-3687.sql sql/test/BugTracker-2016/Tests/column_alias_in_where_clause.Bug-3947.sql sql/test/BugTracker-2016/Tests/inner_join_cross_join.Bug-6140.sql sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.sql sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.sql sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-algebra-join-not-in.Bug-6519.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-algebra-join-not-in.Bug-6519.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-not-in.Bug-6605.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-not-in.Bug-6605.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.sql sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.stable.out sql/test/BugTracker-2018/Tests/sqlitelogictest-select-nullif-case.Bug-6579.sql sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.sql sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out sql/test/SQLite_regress/sqllogictest/Tests/All sql/test/subquery/Tests/subquery2.sql sql/test/wlcr/Tests/wlc01.py testing/Mtest.py.bat testing/process.py tools/merovingian/daemon/forkmserver.c Branch: mosaic Log Message:
Merge with default. diffs (truncated from 2094383 to 300 lines): diff --git a/monetdb5/modules/mal/sysmon.c b/monetdb5/modules/mal/sysmon.c --- a/monetdb5/modules/mal/sysmon.c +++ b/monetdb5/modules/mal/sysmon.c @@ -13,7 +13,7 @@ #include "mtime.h" /* (c) M.L. Kersten - * The query runtime monitor facility is hardwired + * The query runtime monitor facility is hardwired */ str @@ -177,7 +177,7 @@ SYSMONresume(Client cntxt, MalBlkPtr mb, throw(MAL, "SYSMONresume", "type hge not handled, yet"); #endif default: - throw(MAL, "SYSMONpause", "Pause requires integer"); + throw(MAL, "SYSMONresume", "Resume requires integer"); } MT_lock_set(&mal_delayLock); for ( i = 0; QRYqueue[i].tag; i++) @@ -207,7 +207,7 @@ SYSMONstop(Client cntxt, MalBlkPtr mb, M throw(MAL, "SYSMONstop", "type hge not handled, yet"); #endif default: - throw(MAL, "SYSMONpause", "Pause requires integer"); + throw(MAL, "SYSMONstop", "Stop requires integer"); } MT_lock_set(&mal_delayLock); for ( i = 0; QRYqueue[i].tag; i++) 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 @@ -1113,6 +1113,51 @@ mvc_bind_wrap(Client cntxt, MalBlkPtr mb * If the table is cleared, the values RDONLY, RD_INS and RD_UPD_ID and the number of deletes will be 0. */ +static str +mvc_insert_delta_values(mvc *m, BAT *col1, BAT *col2, BAT *col3, BAT *col4, BAT *col5, BAT *col6, BAT *col7, sql_column *c, bit cleared, lng deletes) +{ + int level = 0; + + lng inserted = (lng) store_funcs.count_col(m->session->tr, c, 0); + lng all = (lng) store_funcs.count_col(m->session->tr, c, 1); + lng updates = (lng) store_funcs.count_col_upd(m->session->tr, c); + lng readonly = all - inserted; + + assert(all >= inserted); + + if (BUNappend(col1, &c->base.id, false) != GDK_SUCCEED) { + return createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + if (BUNappend(col2, &cleared, false) != GDK_SUCCEED) { + return createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + if (BUNappend(col3, &readonly, false) != GDK_SUCCEED) { + return createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + if (BUNappend(col4, &inserted, false) != GDK_SUCCEED) { + return createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + if (BUNappend(col5, &updates, false) != GDK_SUCCEED) { + return createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + if (BUNappend(col6, &deletes, false) != GDK_SUCCEED) { + return createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + /* compute level using global transaction */ + if (gtrans) { + sql_column *oc = tr_find_column(gtrans, c); + + if (oc) { + for(sql_delta *d = oc->data; d; d = d->next) + level++; + } + } + if (BUNappend(col7, &level, false) != GDK_SUCCEED) { + return createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + } + return MAL_SUCCEED; +} + str mvc_delta_values(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { @@ -1129,15 +1174,13 @@ mvc_delta_values(Client cntxt, MalBlkPtr *b5 = getArgReference_bat(stk, pci, 4), *b6 = getArgReference_bat(stk, pci, 5), *b7 = getArgReference_bat(stk, pci, 6); - sql_trans *tr; sql_schema *s = NULL; sql_table *t = NULL; sql_column *c = NULL; node *n; bit cleared; - int level = 0; BUN nrows = 0; - lng all, readonly, inserted, updates, deletes; + lng deletes; if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL) goto cleanup; @@ -1205,85 +1248,17 @@ mvc_delta_values(Client cntxt, MalBlkPtr } if (nrows) { - tr = m->session->tr; - while((tr = tr->parent)) level++; - if (tname) { cleared = (t->cleared != 0); deletes = (lng) store_funcs.count_del(m->session->tr, t); if (cname) { - inserted = (lng) store_funcs.count_col(m->session->tr, c, 0); - all = (lng) store_funcs.count_col(m->session->tr, c, 1); - updates = (lng) store_funcs.count_col_upd(m->session->tr, c); - assert(all >= inserted); - readonly = all - inserted; - - if (BUNappend(col1, &c->base.id, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col2, &cleared, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col3, &readonly, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + if ((msg=mvc_insert_delta_values(m, col1, col2, col3, col4, col5, col6, col7, c, cleared, deletes)) != NULL) goto cleanup; - } - if (BUNappend(col4, &inserted, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col5, &updates, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col6, &deletes, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col7, &level, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } } else { for (n = t->columns.set->h; n ; n = n->next) { c = (sql_column*) n->data; - - inserted = (lng) store_funcs.count_col(m->session->tr, c, 0); - all = (lng) store_funcs.count_col(m->session->tr, c, 1); - updates = (lng) store_funcs.count_col_upd(m->session->tr, c); - assert(all >= inserted); - readonly = all - inserted; - - if (BUNappend(col1, &c->base.id, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col2, &cleared, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col3, &readonly, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + if ((msg=mvc_insert_delta_values(m, col1, col2, col3, col4, col5, col6, col7, c, cleared, deletes)) != NULL) goto cleanup; - } - if (BUNappend(col4, &inserted, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col5, &updates, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col6, &deletes, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col7, &level, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } } } } else if (s->tables.set) { @@ -1296,40 +1271,9 @@ mvc_delta_values(Client cntxt, MalBlkPtr for (node *nn = t->columns.set->h; nn ; nn = nn->next) { c = (sql_column*) nn->data; - inserted = (lng) store_funcs.count_col(m->session->tr, c, 0); - all = (lng) store_funcs.count_col(m->session->tr, c, 1); - updates = (lng) store_funcs.count_col_upd(m->session->tr, c); - assert(all >= inserted); - readonly = all - inserted; - - if (BUNappend(col1, &c->base.id, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col2, &cleared, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col3, &readonly, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); + if ((msg=mvc_insert_delta_values(m, col1, col2, col3, col4, col5, col6, col7, + c, cleared, deletes)) != NULL) goto cleanup; - } - if (BUNappend(col4, &inserted, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col5, &updates, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col6, &deletes, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } - if (BUNappend(col7, &level, false) != GDK_SUCCEED) { - msg = createException(SQL,"sql.delta", SQLSTATE(HY001) MAL_MALLOC_FAIL); - goto cleanup; - } } } } diff --git a/sql/backends/monet5/wlr.c b/sql/backends/monet5/wlr.c --- a/sql/backends/monet5/wlr.c +++ b/sql/backends/monet5/wlr.c @@ -7,13 +7,12 @@ */ /* - * A master can be replicated by taking a binary copy of the 'bat' directory. - * This should be done under control of the program monetdb, e.g. - * monetdb replica <masterlocation> <dbname>+ + * A master can be replicated by taking a binary copy of the 'bat' directory + * when in quiescent mode or a more formal snapshot.. * Alternatively you start with an empty database. * * After restart of a mserver against the newly created image, - * the log files from the master are processed. + * the log files from the master are processed by calling.... * * In replay mode also all queries are executed if they surpass * the latest threshold set for by the master. @@ -39,21 +38,24 @@ #define WLC_ERROR 60 #define _WLR_DEBUG_ + +MT_Lock wlr_lock = MT_LOCK_INITIALIZER("wlr_lock"); /* The current status of the replica processing */ static char wlr_master[IDLENGTH]; -static char wlr_error[FILENAME_MAX]; // errors should stop the process -static int wlr_batches; // the next file to be processed -static lng wlr_tag; // the next transaction id to be processed -static lng wlr_limit = -1; // stop re-processing transactions when limit is reached -static char wlr_timelimit[26]; // stop re-processing transactions when time limit is reached -static char wlr_read[26]; // stop re-processing transactions when time limit is reached -static int wlr_state; // which state RUN/PAUSE -static int wlr_beat; // period between successive synchronisations with master +static char wlr_error[FILENAME_MAX]; // errors should stop the process +static int wlr_batches; // the next file to be processed +static lng wlr_tag; // the next transaction id to be processed +static lng wlr_limit = -1; // stop re-processing transactions when limit is reached +static char wlr_timelimit[26]; // stop re-processing transactions when time limit is reached +static char wlr_read[26]; // stop re-processing transactions when time limit is reached +static int wlr_state; // which state RUN/PAUSE +static int wlr_beat; // period between successive synchronisations with master static MT_Id wlr_thread; #define MAXLINE 2048 +/* Simple read the configuration file */ static str WLRgetConfig(void){ char *path; @@ -62,8 +64,10 @@ WLRgetConfig(void){ int len; str msg = MAL_SUCCEED; - if((path = GDKfilepath(0,0,"wlr.config",0)) == NULL) - throw(MAL,"wlr.getConfig","Could not access wlr.config file\n"); + if((path = GDKfilepath(0, 0, "wlr.config", 0)) == NULL){ + msg = createException(MAL, "wlr.getConfig","Could not access wlr.config file\n"); + return msg; + } fd = fopen(path,"r"); GDKfree(path); if( fd == NULL) @@ -95,11 +99,14 @@ WLRgetConfig(void){ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list