MonetDB: Jul2021 - Assert bat capacity must be greater or equal ...

2021-05-07 Thread Pedro Ferreira
Changeset: ceeea5ff3286 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ceeea5ff3286
Modified Files:
gdk/gdk_batop.c
Branch: Jul2021
Log Message:

Assert bat capacity must be greater or equal than the count after inserting a 
string BAT


diffs (11 lines):

diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -398,6 +398,7 @@ insert_string_bat(BAT *b, BAT *n, struct
r++;
}
}
+   assert(b->batCapacity >= b->batCount);
b->theap->dirty = true;
/* maintain hash */
for (r = oldcnt, cnt = BATcount(b); b->thash && r < cnt; r++) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Make sure capacity is set.

2021-05-07 Thread Sjoerd Mullender
Changeset: 65e54af926cf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/65e54af926cf
Modified Files:
gdk/gdk_heap.c
Branch: Jul2021
Log Message:

Make sure capacity is set.


diffs (12 lines):

diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -435,6 +435,8 @@ GDKupgradevarheap(BAT *b, var_t v, BUN c
if (b->twidth == width) {
if (newsize <= old->size) {
/* nothing to do */
+   if (cap > b->batCapacity)
+   BATsetcapacity(b, cap);
return GDK_SUCCEED;
}
return BATextend(b, newsize >> shift);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - adding some documentation for sqllogic multip...

2021-05-07 Thread svetlin
Changeset: e73ba0cef16c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e73ba0cef16c
Modified Files:
documentation/source/developers_handbook.rst
Branch: default
Log Message:

adding some documentation for sqllogic multiple connections


diffs (40 lines):

diff --git a/documentation/source/developers_handbook.rst 
b/documentation/source/developers_handbook.rst
--- a/documentation/source/developers_handbook.rst
+++ b/documentation/source/developers_handbook.rst
@@ -89,7 +89,35 @@ sqllogic protocol a bit further::
 hash-threshold number
 halt
 
-Alternatively ``.sql`` scripts can be converted to sqllogic tests (.test) with 
``Mconvert.py``.
+Consider the following single client connection example::
+
+statement ok
+create table foo(a int)
+
+statement ok
+insert into foo values (1), (2), (3)
+
+query I rowsort
+select sum(a) from foo
+
+6
+
+, the same assertions could be made from multiple clients as follows::
+
+statement ok
+create table foo(a int)
+
+@connection(id=1, username=monetdb, password=monetdb)
+statement ok
+insert into foo values (1), (2), (3)
+
+@connection(id=2, username=monetdb, password=monetdb)
+query I rowsort
+select sum(a) from foo
+
+6
+
+Alternatively existing ``.sql`` scripts can be converted to sqllogic tests 
(.test) with ``Mconvert.py``.
 For example::
 
 $Mconvert.py  --auto /Tests .sql
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Adding more test cases. The test is still right

2021-05-07 Thread Pedro Ferreira
Changeset: 6c1ea275668e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6c1ea275668e
Modified Files:
sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
Branch: Jul2021
Log Message:

Adding more test cases. The test is still right


diffs (49 lines):

diff --git a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py 
b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
--- a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
+++ b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
@@ -102,6 +102,45 @@ with SQLTestCase() as mdb1:
 mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(350,)])
 mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
 
+mdb1.execute("delete from integers where i between 131 and 140 or i < 
91;").assertRowCount(80) # 121 - 130, 141 - 200, 121 - 130, 141 - 300, 121 - 
130, 141 - 160
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(270,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb1.execute("insert into integers (select value from 
generate_series(41,51,1));").assertRowCount(10) # 121 - 130, 141 - 200, 121 - 
130, 141 - 300, 121 - 130, 141 - 160, 41 - 50
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(280,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb1.execute("delete from integers where i > 99;").assertRowCount(270) 
# 41 - 50
+mdb1.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
 mdb1.execute('commit;').assertSucceeded()
 
+mdb1.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+
+mdb1.execute('start transaction;').assertSucceeded()
+mdb1.execute('TRUNCATE integers;').assertRowCount(10)
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(0,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb1.execute("insert into integers (select value from 
generate_series(1,101,1));").assertRowCount(100) # 1 - 100
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(100,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb1.execute("insert into integers (select value from 
generate_series(1,31,1));").assertRowCount(30) # 1 - 100, 1 - 30
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(130,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb1.execute('DELETE FROM integers WHERE i between 11 and 
20;').assertRowCount(20) # 1 - 10, 21 - 100, 1 - 10, 21 - 30
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(110,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb1.execute('DELETE FROM integers WHERE i between 1 and 10 or i 
between 91 and 100;').assertRowCount(30) # 21 - 90, 21 - 30
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(80,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb1.execute("insert into integers (select value from 
generate_series(1,11,1));").assertRowCount(10) # 21 - 90, 21 - 30, 1 - 10
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(90,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb1.execute("TRUNCATE integers;").assertRowCount(90)
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(0,)])
+mdb2.execute('SELECT i FROM integers order by 
i;').assertDataResultMatch([(41,),(42,),(43,),(44,),(45,),(46,),(47,),(48,),(49,),(50,)])
+mdb1.execute('commit;').assertSucceeded()
+
+mdb1.execute('SELECT i FROM integers;').assertDataResultMatch([])
+mdb2.execute('SELECT i FROM integers;').assertDataResultMatch([])
+
 mdb1.execute("drop table integers;")
___
checkin-list mailing list
checkin-list@monetdb.org

MonetDB: default - fix connection decorator sqllogic

2021-05-07 Thread svetlin
Changeset: 16d21fb46c01 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/16d21fb46c01
Modified Files:
testing/sqllogictest.py
Branch: default
Log Message:

fix connection decorator sqllogic


diffs (23 lines):

diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -571,8 +571,9 @@ class SQLLogic:
 '''parse strings like @connection(id=con1, ...)
 '''
 res = dict()
+s = s.strip()
 if not (s.startswith('@connection(') and s.endswith(')')):
-self.raise_error('invalid connection string!')
+self.raise_error(f'ERROR: invalid connection string {s}!')
 params = s[12:-1].split(',')
 for p in params:
 p = p.strip()
@@ -610,7 +611,7 @@ class SQLLogic:
 conn = None
 # look for connection string
 if line.startswith('@connection'):
-conn_params = parse_connection_string(line)
+conn_params = self.parse_connection_string(line)
 conn = self.get_connection(conn_params.get('conn_id')) or 
self.add_connection(**conn_params)
 self.writeline(line)
 line = self.readline()
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Removed unused test. Concurrent `mclient` is...

2021-05-07 Thread Ying Zhang
Changeset: 88eebed58672 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/88eebed58672
Removed Files:
sql/test/concurrent-stress.sh
Branch: Jul2021
Log Message:

Removed unused test.  Concurrent `mclient` is already covered by other tests


diffs (76 lines):

diff --git a/sql/test/concurrent-stress.sh b/sql/test/concurrent-stress.sh
deleted file mode 100755
--- a/sql/test/concurrent-stress.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env bash
-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0.  If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# Copyright 1997 - July 2008 CWI, August 2008 - 2021 MonetDB B.V.
-
-# Run mclient with a variable number of concurrent connections for
-# simple SELECT 1; queries.  Disconnect after each query.  Continue as
-# long as the server can cope.
-# This script intends to simulate a scenario as reported in bug #2700
-
-do_usage() {
-   echo "usage: concurrent_stress.sh  [database [host 
[port]]]" 
-   exit 1
-}
-
-[[ -z $1 ]] && do_usage
-
-CONCURRENCY=$1
-shift
-for v in MDATABASE:d MHOST:h MPORT:p ; do
-   [[ -z $1 ]] && break
-   eval ${v%:*}="-${v#*:}$1"
-   shift
-done
-
-if ! type -P mclient > /dev/null ; then
-   echo "cannot find mclient in PATH!" > /dev/stderr
-   exit 1
-fi
-
-echo "invoking $CONCURRENCY runners using the command:"
-echo "  mclient $MDATABASE $MHOST $MPORT -ftab -s \"SELECT 1;\""
-
-concurrent_runner() {
-   local num=$1
-   local cnt=1
-   local now=$SECONDS
-   local lcnt=0
-   local elapse=
-   local t=
-   while mclient $MDATABASE $MHOST $MPORT -ftab -s "SELECT 1;" > /dev/null 
; do
-   : $((cnt++))
-   elapse=$((SECONDS - now))
-   if [[ ${elapse} -ge 3 ]] ; then
-   t=$((cnt - lcnt))
-   t=$((t * 100))
-   t=$((t / elapse))
-   echo "mclient $num executed query $cnt, current speed: 
${t%??}.${t#${t%??}}q/s"
-   lcnt=${cnt}
-   now=$SECONDS
-   fi
-   done
-   echo "mclient $num terminated in query $cnt"
-}
-
-FORKS=
-for nr in $(seq 1 $CONCURRENCY) ; do
-   concurrent_runner $nr &
-   FORKS+=" $!"
-done
-
-cleanup() {
-   kill $FORKS
-}
-trap cleanup TERM INT QUIT
-
-# wait for all children to end
-wait $FORKS
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - Fix a bat leak.

2021-05-07 Thread Sjoerd Mullender
Changeset: d944dfdea7b9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d944dfdea7b9
Modified Files:
monetdb5/mal/mal_interpreter.c
Branch: Oct2020
Log Message:

Fix a bat leak.


diffs (15 lines):

diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -766,10 +766,7 @@ str runMALsequence(Client cntxt, MalBlkP
}
if (ret == MAL_SUCCEED && ii == pci->argc) {
ret = runMALsequence(cntxt, pci->blk, 
1, pci->blk->stop, nstk, stk, pci);
-   //garbageCollector(cntxt, pci->blk, 
nstk, 0);
-   for (ii = 0; ii < nstk->stktop; ii++)
-   if 
(ATOMextern(nstk->stk[ii].vtype))
-   
GDKfree(nstk->stk[ii].val.pval);
+   garbageCollector(cntxt, pci->blk, nstk, 
0);
arg = q->retc;
for (ii = pci->retc; ii < pci->argc; 
ii++,arg++) {
lhs = >stk[q->argv[arg]];
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - Fix comparison.

2021-05-07 Thread Sjoerd Mullender
Changeset: ace9edb47d1c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ace9edb47d1c
Modified Files:
gdk/gdk_logger.c
Branch: Oct2020
Log Message:

Fix comparison.
If we first skip freed bats with lid > save_id, we should then
resubmit those same bats for the next try.


diffs (12 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -3214,7 +3214,7 @@ bm_commit(logger *lg, lng save_id)
BATloop(lg->freed, p, q) {
lng lid = lids[p];
 
-   if (lid < save_id && (
+   if (lid > save_id && (
BUNappend(nfreed, bids+p, false) != GDK_SUCCEED 
||
BUNappend(nfreed_lid, , false) != 
GDK_SUCCEED)) {
logbat_destroy(n);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - Fix up a comment.

2021-05-07 Thread Sjoerd Mullender
Changeset: 9bbd66531873 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9bbd66531873
Modified Files:
gdk/gdk_bbp.c
Branch: Oct2020
Log Message:

Fix up a comment.


diffs (12 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -3055,7 +3055,7 @@ do_backup(const char *srcdir, const char
/* there is a situation where the move may fail,
 * namely if this heap was not supposed to be existing
 * before, i.e. after a BATmaterialize on a persistent
-* bat as a workaround, do not complain about move
+* bat; as a workaround, do not complain about move
 * failure if the source file is nonexistent
 */
if (mvret != GDK_SUCCEED && file_exists(h->farmid, srcdir, nme, 
ext)) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - Add some asserts.

2021-05-07 Thread Sjoerd Mullender
Changeset: da186fecb9d2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/da186fecb9d2
Modified Files:
gdk/gdk_bbp.c
gdk/gdk_select.c
Branch: Oct2020
Log Message:

Add some asserts.


diffs (29 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2403,7 +2403,12 @@ decref(bat i, bool logical, bool release
if (lock)
MT_lock_set((i));
if (releaseShare) {
-   --BBP_desc(i)->batSharecnt;
+   if (BBP_desc(i)->batSharecnt == 0) {
+   GDKerror("%s: %s does not have any shares.\n", func, 
BBPname(i));
+   assert(0);
+   } else {
+   --BBP_desc(i)->batSharecnt;
+   }
if (lock)
MT_lock_unset((i));
return refs;
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -36,6 +36,8 @@ virtualize(BAT *bn)
   (((bn->ttype == TYPE_void && !is_oid_nil(bn->tseqbase)) ||
 bn->ttype == TYPE_oid) &&
bn->tkey && bn->tsorted));
+   assert(BBP_refs(bn->batCacheid) == 1);
+   assert(BBP_lrefs(bn->batCacheid) == 0);
/* since bn has unique and strictly ascending values, we can
 * easily check whether the column is dense */
if (bn && bn->ttype == TYPE_oid &&
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - use IS_VALID (not !IS_DELETED) for handling t...

2021-05-07 Thread Niels Nes
Changeset: 789b96ab3237 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/789b96ab3237
Modified Files:
sql/storage/bat/bat_storage.c
Branch: Jul2021
Log Message:

use IS_VALID (not !IS_DELETED) for handling the candidate bits

the clear_table now limits segments used both for the total count and deleted 
count.


diffs (89 lines):

diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -34,18 +34,30 @@ static int tc_gc_del( sql_store Store, s
 
 static int tr_merge_delta( sql_trans *tr, sql_delta *obat);
 
+/* valid
+ * !deleted && VALID_4_READ(TS, tr)existing or 
newly created segment
+ *  deleted && TS > tr->ts && OLDTS < tr->ts   deleted after current 
transaction
+ */
+
 #define VALID_4_READ(TS,tr) \
(TS == tr->tid || (tr->parent && tr_version_of_parent(tr, TS)) || TS < 
tr->ts)
 
+/* when changed, check if the old status is still valid */
+#define OLD_VALID_4_READ(TS,OLDTS,tr) \
+   (OLDTS && TS != tr->tid && TS > tr->ts && OLDTS < tr->ts)
+
 #define SEG_VALID_4_DELETE(seg,tr) \
(!seg->deleted && VALID_4_READ(seg->ts, tr))
 
+/* Delete (in current trans or by some other finised transaction, or re-used 
segment which used to be deleted */
 #define SEG_IS_DELETED(seg,tr) \
-   ((seg->deleted && VALID_4_READ(seg->ts, tr)) || \
-(!seg->deleted && seg->oldts && seg->ts != tr->tid && seg->ts > 
TRANSACTION_ID_BASE && seg->oldts < tr->ts))
-
+   ((seg->deleted && (VALID_4_READ(seg->ts, tr) || 
!OLD_VALID_4_READ(seg->ts, seg->oldts, tr))) || \
+(!seg->deleted && OLD_VALID_4_READ(seg->ts, seg->oldts, tr)))
+
+/* A segment is part of the current transaction is someway or is deleted by 
some other transaction but use to be valid */
 #define SEG_IS_VALID(seg, tr) \
-   (VALID_4_READ(seg->ts, tr) || (seg->deleted && seg->oldts && 
seg->ts > tr->ts && seg->oldts < tr->ts))
+   ((!seg->deleted && VALID_4_READ(seg->ts, tr)) || \
+(seg->deleted && OLD_VALID_4_READ(seg->ts, seg->oldts, tr)))
 
 static void
 lock_table(sqlstore *store, sqlid id)
@@ -129,7 +141,7 @@ split_segment(segments *segs, segment *o
 
n->oldts = 0;
if (o->ts == tr->tid) {
-   n->ts = 0;
+   n->ts = 1;
n->deleted = true;
} else {
n->oldts = o->ts;
@@ -499,6 +511,21 @@ count_inserts( segment *s, sql_trans *tr
 }
 
 static size_t
+count_deletes_in_range( segment *s, sql_trans *tr, BUN start, BUN end)
+{
+   size_t cnt = 0;
+
+   for(;s && s->end <= start; s = s->next)
+   ;
+
+   for(;s && s->start < end; s = s->next) {
+   if (SEG_IS_DELETED(s, tr)) /* assume aligned s->end and end */
+   cnt += s->end - s->start;
+   }
+   return cnt;
+}
+
+static size_t
 count_deletes( segment *s, sql_trans *tr)
 {
size_t cnt = 0;
@@ -2322,7 +2349,9 @@ clear_table(sql_trans *tr, sql_table *t)
sql_column *c = n->data;
BUN sz = count_col(tr, c, 0);
 
-   sz -= count_del(tr, t, 0);
+   //sz -= count_del(tr, t, 0);
+   storage *d = tab_timestamp_storage(tr, t);
+   sz -= count_deletes_in_range(d->segs->h, tr, 0, sz);
if ((clear_del(tr, t)) == BUN_NONE)
return BUN_NONE;
 
@@ -2988,7 +3017,7 @@ segments2cands(segment *s, sql_trans *tr
continue;
if (s->start >= end)
break;
-   msk m = !(SEG_IS_DELETED(s, tr));
+   msk m = (SEG_IS_VALID(s, tr));
size_t lnr = s->end-s->start;
if (s->start < start)
lnr -= (start - s->start);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - This count goes wrong. Client 2 sees uncommit...

2021-05-07 Thread Pedro Ferreira
Changeset: 7f63b61e5cd8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7f63b61e5cd8
Modified Files:
sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
Branch: Jul2021
Log Message:

This count goes wrong. Client 2 sees uncommitted changes of client 1


diffs (17 lines):

diff --git a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py 
b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
--- a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
+++ b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
@@ -95,6 +95,13 @@ with SQLTestCase() as mdb1:
 mdb1.execute("delete from integers where i < 
101;").assertRowCount(170) # 101 - 200, 101 - 300
 mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(300,)])
 mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb1.execute("insert into integers (select value from 
generate_series(41,161,1));").assertRowCount(120) # 101 - 200, 101 - 300, 41 - 
160
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(420,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb1.execute("delete from integers where i between 91 and 
120;").assertRowCount(70) # 121 - 200, 121 - 300, 41 - 90, 121 - 160
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(350,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+
 mdb1.execute('commit;').assertSucceeded()
 
 mdb1.execute("drop table integers;")
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - small fix too the test

2021-05-07 Thread Niels Nes
Changeset: 5219ad2daee2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5219ad2daee2
Modified Files:
sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
Branch: Jul2021
Log Message:

small fix too the test


diffs (27 lines):

diff --git a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py 
b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
--- a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
+++ b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
@@ -80,10 +80,10 @@ with SQLTestCase() as mdb1:
 
 mdb1.execute("insert into integers (select value from 
generate_series(1,201,1));").assertRowCount(200) # 1 - 20, 1 - 20, 1 - 200
 mdb1.execute('start transaction;').assertSucceeded()
-mdb1.execute("delete from integers where i < 21;").assertRowCount(60) 
# 1 - 180
+mdb1.execute("delete from integers where i < 21;").assertRowCount(60) 
# 21 - 200
 mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(180,)])
 mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(240,)])
-mdb1.execute("insert into integers (select value from 
generate_series(11,301,1));").assertRowCount(290) # 1 - 180, 11 - 300
+mdb1.execute("insert into integers (select value from 
generate_series(11,301,1));").assertRowCount(290) # 21 - 200, 11 - 300
 mdb1.execute('commit;').assertSucceeded()
 
 mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
@@ -92,8 +92,8 @@ with SQLTestCase() as mdb1:
 mdb1.execute('start transaction;').assertSucceeded()
 mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
 mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
-mdb1.execute("delete from integers where i < 
101;").assertRowCount(190) # 101 - 180, 101 - 300
-mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(280,)])
+mdb1.execute("delete from integers where i < 
101;").assertRowCount(170) # 101 - 200, 101 - 300
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(300,)])
 mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
 mdb1.execute('commit;').assertSucceeded()
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - adding sqltest multiple connection example to...

2021-05-07 Thread svetlin
Changeset: 930ea50bc9fc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/930ea50bc9fc
Modified Files:
documentation/source/developers_handbook.rst
Branch: default
Log Message:

adding sqltest multiple connection example to doc


diffs (30 lines):

diff --git a/documentation/source/developers_handbook.rst 
b/documentation/source/developers_handbook.rst
--- a/documentation/source/developers_handbook.rst
+++ b/documentation/source/developers_handbook.rst
@@ -101,8 +101,8 @@ Python tests API
 
 
 We are using ``pymonetdb`` client in our testing infrastructure heavily. All 
.py tests needs to log errors in ``stderror``
-and exit abnormally if failure is present. To ease up writing testing scripts 
the ``SQLTestCase`` class from ``MonetDBtesting`` 
-module can be utilized. Following is an example of the ``SQLTestCase`` API::
+and exit abnormally if a failure is present. To ease up writing testing 
scripts the ``SQLTestCase`` class from ``MonetDBtesting`` 
+module can be utilized. Following is an example of the ``SQLTestCase`` API 
using single client::
 
 from MonetDBtesting.sqltest import SQLTestCase
 
@@ -117,4 +117,15 @@ module can be utilized. Following is an 
 tc.execute('insert into foo values (888.42), 
(444.42);').assertSucceeded().assertRowCount(2)
 tc.execute('select * from 
foo;').assertSucceeded().assertDataResultMatch([(Decimal('888.42'),), 
(Decimal('444.42'),)])
 
+Similarly testing concurrent connections with multiple clients can be written 
as::
+
+from MonetDBtesting.sqltest import SQLTestCase
+
+with SQLTestCase() as conn1:
+with SQLTestCase() as conn2:
+...
+do something with conn1
+do something with conn2
+
+
 For more examples check out tests in ``sql/test/Users/Tests``.
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Delete count mismatch

2021-05-07 Thread Pedro Ferreira
Changeset: 0359765d0bfa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0359765d0bfa
Modified Files:
sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
Branch: Jul2021
Log Message:

Delete count mismatch


diffs (55 lines):

diff --git a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py 
b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
--- a/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
+++ b/sql/test/miscellaneous/Tests/transaction_isolation.SQL.py
@@ -50,4 +50,51 @@ with SQLTestCase() as mdb1:
 mdb1.execute('SELECT i FROM 
integers;').assertDataResultMatch([(4,),(7,)])
 mdb2.execute('SELECT i FROM 
integers;').assertDataResultMatch([(4,),(7,)])
 
+mdb1.execute('TRUNCATE integers;').assertRowCount(2)
+mdb1.execute("insert into integers (select value from 
generate_series(1,21,1));").assertRowCount(20) # 1 - 20
+
+mdb1.execute('start transaction;').assertSucceeded()
+mdb2.execute('start transaction;').assertSucceeded()
+mdb1.execute("delete from integers where i % 5 <> 
0;").assertRowCount(16)
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(4,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(20,)])
+mdb1.execute("update integers set i = i + 1 where i % 2 = 
0;").assertRowCount(2)
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(4,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(20,)])
+mdb1.execute("insert into integers (select value from 
generate_series(1,11,1));").assertRowCount(10)
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(14,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(20,)])
+mdb1.execute("delete from integers where i between 1 and 
5;").assertRowCount(6)
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(8,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(20,)])
+mdb1.execute('TRUNCATE integers;').assertRowCount(8)
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(0,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(20,)])
+mdb1.execute('rollback;').assertSucceeded()
+mdb2.execute('rollback;').assertSucceeded()
+
+mdb1.execute("insert into integers (select value from 
generate_series(1,21,1));").assertRowCount(20) # 1 - 20, 1 - 20
+
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(40,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(40,)])
+
+mdb1.execute("insert into integers (select value from 
generate_series(1,201,1));").assertRowCount(200) # 1 - 20, 1 - 20, 1 - 200
+mdb1.execute('start transaction;').assertSucceeded()
+mdb1.execute("delete from integers where i < 21;").assertRowCount(60) 
# 1 - 180
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(180,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(240,)])
+mdb1.execute("insert into integers (select value from 
generate_series(11,301,1));").assertRowCount(290) # 1 - 180, 11 - 300
+mdb1.execute('commit;').assertSucceeded()
+
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+
+mdb1.execute('start transaction;').assertSucceeded()
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb1.execute("delete from integers where i < 
101;").assertRowCount(190) # 101 - 180, 101 - 300
+mdb1.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(280,)])
+mdb2.execute('SELECT count(*) FROM 
integers;').assertDataResultMatch([(470,)])
+mdb1.execute('commit;').assertSucceeded()
+
 mdb1.execute("drop table integers;")
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Oct2020 - Typo.

2021-05-07 Thread Sjoerd Mullender
Changeset: 5bddde10a5be for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5bddde10a5be
Modified Files:
clients/odbc/ChangeLog.Oct2020
Branch: Oct2020
Log Message:

Typo.


diffs (10 lines):

diff --git a/clients/odbc/ChangeLog.Oct2020 b/clients/odbc/ChangeLog.Oct2020
--- a/clients/odbc/ChangeLog.Oct2020
+++ b/clients/odbc/ChangeLog.Oct2020
@@ -1,3 +1,6 @@
 # ChangeLog file for odbc
 # This file is updated with Maddlog
 
+* Fri May  7 2021 Sjoerd Mullender 
+- A typo that made the SQLSpecialColumns function unusable was fixed.
+
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: pushcands - Merged with default

2021-05-07 Thread Pedro Ferreira
Changeset: 2ea1d8f39502 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2ea1d8f39502
Modified Files:
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/server/rel_optimizer.c
Branch: pushcands
Log Message:

Merged with default


diffs (truncated from 1482 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
@@ -7961,7 +7961,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "droporderindex",   "unsafe pattern 
sql.droporderindex(X_0:str, X_1:str, X_2:str):void ",   "sql_droporderindex;",  
""  ]
 [ "sql",   "dump_cache",   "pattern sql.dump_cache() (X_0:bat[:str], 
X_1:bat[:int]) ", "dump_cache;",  ""  ]
 [ "sql",   "dump_opt_stats",   "pattern sql.dump_opt_stats() 
(X_0:bat[:str], X_1:bat[:int]) ", "dump_opt_stats;",  ""  ]
-[ "sql",   "dump_trace",   "pattern sql.dump_trace() (X_0:bat[:lng], 
X_1:bat[:str]) ", "dump_trace;",  ""  ]
+[ "sql",   "dump_trace",   "pattern sql.dump_trace() (X_0:bat[:lng], 
X_1:bat[:str], X_2:bat[:str]) ",  "dump_trace;",  ""  ]
 [ "sql",   "emptybind","pattern sql.emptybind(X_0:int, X_1:str, 
X_2:str, X_3:str, X_4:int) (X_5:bat[:oid], X_6:bat[:any_1]) ", 
"mvc_bind_wrap;",   ""  ]
 [ "sql",   "emptybind","pattern sql.emptybind(X_0:int, X_1:str, 
X_2:str, X_3:str, X_4:int):bat[:any_1] ",  "mvc_bind_wrap;",   ""  ]
 [ "sql",   "emptybind","pattern sql.emptybind(X_0:int, X_1:str, 
X_2:str, X_3:str, X_4:int, X_5:int, X_6:int) (X_7:bat[:oid], X_8:bat[:any_1]) 
",   "mvc_bind_wrap;",   ""  ]
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
@@ -10863,7 +10863,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",   "droporderindex",   "unsafe pattern 
sql.droporderindex(X_0:str, X_1:str, X_2:str):void ",   "sql_droporderindex;",  
""  ]
 [ "sql",   "dump_cache",   "pattern sql.dump_cache() (X_0:bat[:str], 
X_1:bat[:int]) ", "dump_cache;",  ""  ]
 [ "sql",   "dump_opt_stats",   "pattern sql.dump_opt_stats() 
(X_0:bat[:str], X_1:bat[:int]) ", "dump_opt_stats;",  ""  ]
-[ "sql",   "dump_trace",   "pattern sql.dump_trace() (X_0:bat[:lng], 
X_1:bat[:str]) ", "dump_trace;",  ""  ]
+[ "sql",   "dump_trace",   "pattern sql.dump_trace() (X_0:bat[:lng], 
X_1:bat[:str], X_2:bat[:str]) ",  "dump_trace;",  ""  ]
 [ "sql",   "emptybind","pattern sql.emptybind(X_0:int, X_1:str, 
X_2:str, X_3:str, X_4:int) (X_5:bat[:oid], X_6:bat[:any_1]) ", 
"mvc_bind_wrap;",   ""  ]
 [ "sql",   "emptybind","pattern sql.emptybind(X_0:int, X_1:str, 
X_2:str, X_3:str, X_4:int):bat[:any_1] ",  "mvc_bind_wrap;",   ""  ]
 [ "sql",   "emptybind","pattern sql.emptybind(X_0:int, X_1:str, 
X_2:str, X_3:str, X_4:int, X_5:int, X_6:int) (X_7:bat[:oid], X_8:bat[:any_1]) 
",   "mvc_bind_wrap;",   ""  ]
diff --git a/clients/odbc/driver/SQLSpecialColumns.c 
b/clients/odbc/driver/SQLSpecialColumns.c
--- a/clients/odbc/driver/SQLSpecialColumns.c
+++ b/clients/odbc/driver/SQLSpecialColumns.c
@@ -221,7 +221,7 @@ MNDBSpecialColumns(ODBCStmt *stmt,
  "sys.tables t, "
  "sys.columns c, "
  "sys.keys k, "
- "sys.objects kc"
+ "sys.objects kc "
 "where s.id = t.schema_id and "
   "t.id = c.table_id and "
   "t.id = k.table_id and "
diff --git a/ctest/tools/monetdbe/CMakeLists.txt 
b/ctest/tools/monetdbe/CMakeLists.txt
--- a/ctest/tools/monetdbe/CMakeLists.txt
+++ b/ctest/tools/monetdbe/CMakeLists.txt
@@ -85,7 +85,6 @@ target_link_libraries(example_proxy
   PRIVATE
 monetdb_config_header
 monetdbe)
-add_test(run_example_proxy example_proxy)
 
 if(WITH_CMOCKA)
   add_executable(cmocka_test cmocka_test.c test_helper.c)
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -4016,13 +4016,15 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
if ((parent = VIEWtparent(l)) != 0) {
BAT *b = BBPdescriptor(parent);
if (l->hseqbase == b->hseqbase &&
-   BATcount(l) == BATcount(b))
+   BATcount(l) == BATcount(b) &&
+   ATOMtype(l->ttype) == ATOMtype(b->ttype))
l = b;
}
if ((parent = VIEWtparent(r)) != 0) {
BAT *b = BBPdescriptor(parent);
if 

MonetDB: pushcands - Preparing the merge

2021-05-07 Thread Pedro Ferreira
Changeset: 3c3f3713eb93 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3c3f3713eb93
Added Files:
sql/test/SQLancer/Tests/sqlancer16.test
Removed Files:
sql/test/SQLancer/Tests/sqlancer15.test
Modified Files:
sql/test/SQLancer/Tests/All
Branch: pushcands
Log Message:

Preparing the merge


diffs (11 lines):

diff --git a/sql/test/SQLancer/Tests/All b/sql/test/SQLancer/Tests/All
--- a/sql/test/SQLancer/Tests/All
+++ b/sql/test/SQLancer/Tests/All
@@ -13,3 +13,4 @@ sqlancer12
 sqlancer13
 sqlancer14
 sqlancer15
+sqlancer16
diff --git a/sql/test/SQLancer/Tests/sqlancer15.test 
b/sql/test/SQLancer/Tests/sqlancer16.test
rename from sql/test/SQLancer/Tests/sqlancer15.test
rename to sql/test/SQLancer/Tests/sqlancer16.test
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Merged again with Jul2021 (I messed it up I k...

2021-05-07 Thread Pedro Ferreira
Changeset: cf816a9ad544 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cf816a9ad544
Branch: default
Log Message:

Merged again with Jul2021 (I messed it up I know)


diffs (32 lines):

diff --git a/clients/odbc/driver/SQLSpecialColumns.c 
b/clients/odbc/driver/SQLSpecialColumns.c
--- a/clients/odbc/driver/SQLSpecialColumns.c
+++ b/clients/odbc/driver/SQLSpecialColumns.c
@@ -221,7 +221,7 @@ MNDBSpecialColumns(ODBCStmt *stmt,
  "sys.tables t, "
  "sys.columns c, "
  "sys.keys k, "
- "sys.objects kc"
+ "sys.objects kc "
 "where s.id = t.schema_id and "
   "t.id = c.table_id and "
   "t.id = k.table_id and "
diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.out 
b/sql/test/prepare/Tests/sqlancer_prepare.stable.out
--- a/sql/test/prepare/Tests/sqlancer_prepare.stable.out
+++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.out
@@ -131,14 +131,14 @@
 % .prepare,.prepare,   .prepare,   .prepare,   .prepare,   
.prepare # table_name
 % type,digits, scale,  schema, table,  column # name
 % varchar, int,int,str,str,str # type
-% 7,   2,  1,  0,  2,  2 # length
+% 7,   2,  1,  0,  3,  3 # length
 [ "boolean",   1,  0,  "", "%11",  "%11"   ]
 [ "decimal",   16, 6,  NULL,   NULL,   NULL]
 #PREPARE SELECT "quarter"(date '2021-01-02') IN ("second"(TIME '01:00:00'), 
(select ? where true));
 % .prepare,.prepare,   .prepare,   .prepare,   .prepare,   
.prepare # table_name
 % type,digits, scale,  schema, table,  column # name
 % varchar, int,int,str,str,str # type
-% 7,   2,  1,  0,  2,  2 # length
+% 7,   2,  1,  0,  3,  3 # length
 [ "boolean",   1,  0,  "", "%11",  "%11"   ]
 [ "decimal",   16, 6,  NULL,   NULL,   NULL]
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Approved no-int128 output

2021-05-07 Thread Pedro Ferreira
Changeset: d9dee2cc2155 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d9dee2cc2155
Modified Files:
sql/test/prepare/Tests/sqlancer_prepare.stable.out
Branch: Jul2021
Log Message:

Approved no-int128 output


diffs (20 lines):

diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.out 
b/sql/test/prepare/Tests/sqlancer_prepare.stable.out
--- a/sql/test/prepare/Tests/sqlancer_prepare.stable.out
+++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.out
@@ -131,14 +131,14 @@
 % .prepare,.prepare,   .prepare,   .prepare,   .prepare,   
.prepare # table_name
 % type,digits, scale,  schema, table,  column # name
 % varchar, int,int,str,str,str # type
-% 7,   2,  1,  0,  2,  2 # length
+% 7,   2,  1,  0,  3,  3 # length
 [ "boolean",   1,  0,  "", "%11",  "%11"   ]
 [ "decimal",   16, 6,  NULL,   NULL,   NULL]
 #PREPARE SELECT "quarter"(date '2021-01-02') IN ("second"(TIME '01:00:00'), 
(select ? where true));
 % .prepare,.prepare,   .prepare,   .prepare,   .prepare,   
.prepare # table_name
 % type,digits, scale,  schema, table,  column # name
 % varchar, int,int,str,str,str # type
-% 7,   2,  1,  0,  2,  2 # length
+% 7,   2,  1,  0,  3,  3 # length
 [ "boolean",   1,  0,  "", "%11",  "%11"   ]
 [ "decimal",   16, 6,  NULL,   NULL,   NULL]
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: Jul2021 - Merged with Oct2020

2021-05-07 Thread Pedro Ferreira
Changeset: 5c344f0668e5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5c344f0668e5
Branch: Jul2021
Log Message:

Merged with Oct2020


diffs (12 lines):

diff --git a/clients/odbc/driver/SQLSpecialColumns.c 
b/clients/odbc/driver/SQLSpecialColumns.c
--- a/clients/odbc/driver/SQLSpecialColumns.c
+++ b/clients/odbc/driver/SQLSpecialColumns.c
@@ -221,7 +221,7 @@ MNDBSpecialColumns(ODBCStmt *stmt,
  "sys.tables t, "
  "sys.columns c, "
  "sys.keys k, "
- "sys.objects kc"
+ "sys.objects kc "
 "where s.id = t.schema_id and "
   "t.id = c.table_id and "
   "t.id = k.table_id and "
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Merged with Jul2021

2021-05-07 Thread Pedro Ferreira
Changeset: 1c21fb27d410 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1c21fb27d410
Modified Files:
gdk/gdk_join.c
Branch: default
Log Message:

Merged with Jul2021


diffs (truncated from 973 to 300 lines):

diff --git a/ctest/tools/monetdbe/CMakeLists.txt 
b/ctest/tools/monetdbe/CMakeLists.txt
--- a/ctest/tools/monetdbe/CMakeLists.txt
+++ b/ctest/tools/monetdbe/CMakeLists.txt
@@ -85,7 +85,6 @@ target_link_libraries(example_proxy
   PRIVATE
 monetdb_config_header
 monetdbe)
-add_test(run_example_proxy example_proxy)
 
 if(WITH_CMOCKA)
   add_executable(cmocka_test cmocka_test.c test_helper.c)
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -4016,13 +4016,15 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
if ((parent = VIEWtparent(l)) != 0) {
BAT *b = BBPdescriptor(parent);
if (l->hseqbase == b->hseqbase &&
-   BATcount(l) == BATcount(b))
+   BATcount(l) == BATcount(b) &&
+   ATOMtype(l->ttype) == ATOMtype(b->ttype))
l = b;
}
if ((parent = VIEWtparent(r)) != 0) {
BAT *b = BBPdescriptor(parent);
if (r->hseqbase == b->hseqbase &&
-   BATcount(r) == BATcount(b))
+   BATcount(r) == BATcount(b) &&
+   ATOMtype(r->ttype) == ATOMtype(b->ttype))
r = b;
}
 
diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c
--- a/gdk/gdk_project.c
+++ b/gdk/gdk_project.c
@@ -45,6 +45,7 @@ project1_##TYPE(BAT *restrict bn, BAT *r
for (lo = 0, hi = BATcount(l); lo < hi; lo++)   \
bt[lo] = r1t[lo];   \
} else {\
+   assert(l->ttype);\
const oid *restrict ot = (const oid *) Tloc(l, 0);  \
for (lo = 0, hi = BATcount(l); lo < hi; lo++) { \
oid o = ot[lo]; \
@@ -85,7 +86,8 @@ project_##TYPE(BAT *restrict bn, BAT *re
oid r1seq, r1end;   \
oid r2seq, r2end;   \
\
-   if ((!ci || ci->tpe == cand_dense) && l->tnonil && !r2) \
+   if ((!ci || (ci->tpe == cand_dense && BATtdense(l))) && \
+l->tnonil && r1->ttype && !BATtdense(r1) && !r2) \
return project1_##TYPE(bn, l, r1);  \
MT_thread_setalgorithm(__func__);   \
r1t = (const TYPE *) Tloc(r1, 0);   \
@@ -173,7 +175,7 @@ project_oid(BAT *restrict bn, BAT *restr
const oid *restrict r2t = NULL;
struct canditer r1ci = {0}, r2ci = {0};
 
-   if ((!lci || lci->tpe == cand_dense) && r1->ttype && !BATtdense(r1) && 
!r2) {
+   if ((!lci || (lci->tpe == cand_dense && BATtdense(l))) && r1->ttype && 
!BATtdense(r1) && !r2) {
if (sizeof(oid) == sizeof(lng))
return project1_lng(bn, l, r1);
else
diff --git a/monetdb5/optimizer/opt_mitosis.c b/monetdb5/optimizer/opt_mitosis.c
--- a/monetdb5/optimizer/opt_mitosis.c
+++ b/monetdb5/optimizer/opt_mitosis.c
@@ -94,10 +94,13 @@ OPTmitosisImplementation(Client cntxt, M
}
 
/* locate the largest non-partitioned table */
-   if (getModuleId(p) != sqlRef || (getFunctionId(p) != bindRef && 
getFunctionId(p) != bindidxRef))
+   if (getModuleId(p) != sqlRef ||
+   (getFunctionId(p) != bindRef &&
+getFunctionId(p) != bindidxRef &&
+getFunctionId(p) != tidRef))
continue;
/* don't split insert BATs */
-   if (getVarConstant(mb, getArg(p, 5)).val.ival == 1)
+   if (p->argc > 5 && getVarConstant(mb, getArg(p, 5)).val.ival == 
1)
continue;
if (p->argc > 6)
continue;  /* already partitioned */
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2778,11 +2778,11 @@ rel2bin_antijoin(backend *be, sql_rel *r
assert(list_length(mexps) == 1);
for( en = mexps->h; en; en = en->next ) {
sql_exp *e = en->data;
-   stmt *ls = exp_bin(be, e->l, left, right, NULL, NULL, 
NULL, NULL, 0, 1, 0), *rs;
+   stmt *ls = exp_bin(be, e->l, left, right, NULL, NULL, 
NULL, NULL, 1, 0, 0), *rs;
if (!ls)
return NULL;
 
-   if (!(rs =