Changeset: 4467af0541e8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4467af0541e8
Modified Files:
monetdb5/mal/mal_runtime.c
sql/server/rel_optimizer.c
Branch: scatter
Log Message:
Merged with Jul2021
diffs (175 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
@@ -504,6 +504,7 @@ str runMALsequence(Client cntxt, MalBlkP
runtimeProfileBegin(cntxt, mb, stk, getInstrPtr(mb,0),
&runtimeProfileFunction);
mb->starttime = GDKusec();
if (cntxt->sessiontimeout && mb->starttime - cntxt->session >
cntxt->sessiontimeout) {
+ runtimeProfileFinish(cntxt, mb, stk);
if ( backup != backups) GDKfree(backup);
if ( garbage != garbages) GDKfree(garbage);
throw(MAL, "mal.interpreter", SQLSTATE(HYT00)
RUNTIME_SESSION_TIMEOUT);
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -161,25 +161,28 @@ clearQRYqueue(size_t idx)
static void
advanceQRYqueue(void)
{
- qhead++;
- if( qhead == qsize)
- qhead = 0;
- if( qtail == qhead)
- qtail++;
- if( qtail == qsize)
- qtail = 0;
- /* clean out the element */
- str s = QRYqueue[qhead].query;
- if( s){
- /* don;t wipe them when they are still running, prepared, or
paused */
- /* The upper layer has assured there is at least one slot
available */
- if(QRYqueue[qhead].status != 0 && (QRYqueue[qhead].status[0] ==
'r' || QRYqueue[qhead].status[0] == 'p')){
- advanceQRYqueue();
- return;
+ bool found_empty_slot = false;
+
+ while (!found_empty_slot) {
+ qhead++;
+ if( qhead == qsize)
+ qhead = 0;
+ if( qtail == qhead)
+ qtail++;
+ if( qtail == qsize)
+ qtail = 0;
+ /* clean out the element */
+ str s = QRYqueue[qhead].query;
+ if (!s || QRYqueue[qhead].status == 0 ||
(QRYqueue[qhead].status[0] != 'r' && QRYqueue[qhead].status[0] != 'p')) {
+ /* don't wipe them when they are still running,
prepared, or paused */
+ /* The upper layer has assured there is at least one
slot available */
+ if (s) {
+ GDKfree(s);
+ GDKfree(QRYqueue[qhead].username);
+ clearQRYqueue(qhead);
+ }
+ found_empty_slot = true;
}
- GDKfree(s);
- GDKfree(QRYqueue[qhead].username);
- clearQRYqueue(qhead);
}
}
diff --git a/monetdb5/modules/kernel/batstr.c b/monetdb5/modules/kernel/batstr.c
--- a/monetdb5/modules/kernel/batstr.c
+++ b/monetdb5/modules/kernel/batstr.c
@@ -191,7 +191,7 @@ STRbatAscii(Client cntxt, MalBlkPtr mb,
if ((msg = str_wchr_at(&next, x, 0)) != MAL_SUCCEED)
goto bailout;
- vals[p1] = next;
+ vals[i] = next;
nils |= is_int_nil(next);
}
} else {
@@ -201,7 +201,7 @@ STRbatAscii(Client cntxt, MalBlkPtr mb,
if ((msg = str_wchr_at(&next, x, 0)) != MAL_SUCCEED)
goto bailout;
- vals[p1] = next;
+ vals[i] = next;
nils |= is_int_nil(next);
}
}
diff --git a/sql/test/SQLancer/Tests/sqlancer15.test
b/sql/test/SQLancer/Tests/sqlancer15.test
--- a/sql/test/SQLancer/Tests/sqlancer15.test
+++ b/sql/test/SQLancer/Tests/sqlancer15.test
@@ -708,6 +708,65 @@ statement ok
START TRANSACTION
statement ok
+CREATE TABLE "t0" ("c0" CHARACTER LARGE OBJECT,"c2" DOUBLE)
+
+statement ok rowcount 20
+COPY 20 RECORDS INTO "t0" FROM stdin USING DELIMITERS E'\t',E'\n','"'
+<COPY_INTO_DATA>
+"1970" NULL
+"3" NULL
+NULL NULL
+"3" NULL
+"W" NULL
+"-" NULL
+"t " NULL
+"0.1454211084558179" NULL
+"2" NULL
+"" 0.18341645025687223
+NULL 0.5805338105211456
+NULL 1810425471
+NULL NULL
+NULL 0.8204238200689035
+"Lxy}" NULL
+"-887573436" NULL
+NULL 0.6211363
+NULL 0.6211363
+"0.21185164" NULL
+"0.36241230481890585" NULL
+
+query I rowsort
+SELECT CASE WHEN t0.c2 = t0.c2 THEN 1 ELSE ascii(t0.c0) END FROM t0 LEFT OUTER
JOIN (VALUES (1), (1), (- 81524669)) AS sub0 ON 1 <= t0.c2
+----
+1
+1
+1
+1
+1
+1
+1
+1
+116
+45
+45
+48
+48
+48
+49
+50
+51
+51
+76
+87
+NULL
+NULL
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
CREATE TABLE t0(c0 DOUBLE UNIQUE, c1 CHAR(224), c4 boolean)
statement ok
diff --git a/sql/test/merge-partitions/Tests/mergepart31.test
b/sql/test/merge-partitions/Tests/mergepart31.test
--- a/sql/test/merge-partitions/Tests/mergepart31.test
+++ b/sql/test/merge-partitions/Tests/mergepart31.test
@@ -368,7 +368,7 @@ CREATE TABLE fourth_decade (stamp TIMEST
statement ok
ALTER TABLE splitted ADD TABLE fourth_decade AS PARTITION FROM RANGE MINVALUE
TO TIMESTAMP '2000-01-01 00:00:00'
-statement ok rowcount 0
+statement ok rowcount 1
INSERT INTO splitted VALUES (TIMESTAMP '1999-01-01 00:00:00', 7)
query T nosort
diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -262,7 +262,7 @@ class SQLLogic:
else:
result = ['statement', 'ok']
if expectok:
- if expected_rowcount:
+ if expected_rowcount is not None:
result.append('rowcount')
result.append('{}'.format(affected_rowcount))
if expected_rowcount != affected_rowcount:
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list