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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list