Changeset: 75c12c463c50 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=75c12c463c50
Added Files:
sql/test/BugTracker-2020/Tests/alter-table-add-column.Bug-6816.py
sql/test/BugTracker-2020/Tests/alter-table-add-column.Bug-6816.stable.err
sql/test/BugTracker-2020/Tests/alter-table-add-column.Bug-6816.stable.out
sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.sql
sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.err
sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.out
sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.sql
sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.stable.err
sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.stable.out
Removed Files:
sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.py
sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.err
sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.out
Modified Files:
common/utils/mstring.h
gdk/gdk.h
gdk/gdk_bbp.c
monetdb5/mal/mal_instruction.c
sql/backends/monet5/sql_statistics.c
sql/server/rel_select.c
sql/storage/bat/bat_logger.c
sql/test/BugTracker-2009/Tests/lost_update.SF-2790020.py
sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.err
sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.out
sql/test/BugTracker-2020/Tests/All
sql/test/analytics/Tests/analytics00.sql
sql/test/analytics/Tests/analytics00.stable.out
Branch: default
Log Message:
Merged with linear-hashing
diffs (truncated from 764 to 300 lines):
diff --git a/common/utils/mstring.h b/common/utils/mstring.h
--- a/common/utils/mstring.h
+++ b/common/utils/mstring.h
@@ -23,7 +23,6 @@ strcpy_len(char *restrict dst, const cha
return i;
}
dst[n - 1] = 0;
- return n-1;
}
return strlen(src);
}
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1534,10 +1534,14 @@ typedef struct {
BAT *cache; /* if loaded: BAT* handle */
char *logical; /* logical name (may point at bak) */
char bak[16]; /* logical name backup (tmp_%o) */
+ BAT *desc; /* the BAT descriptor */
+ char *options; /* A string list of options */
+#if SIZEOF_VOID_P == 4
+ char physical[20]; /* dir + basename for storage */
+#else
+ char physical[24]; /* dir + basename for storage */
+#endif
bat next; /* next BBP slot in linked list */
- BAT *desc; /* the BAT descriptor */
- char physical[20]; /* dir + basename for storage */
- str options; /* A string list of options */
int refs; /* in-memory references on which the loaded
status of a BAT relies */
int lrefs; /* logical references on which the existence of
a BAT relies */
volatile unsigned status; /* status mask used for spin locking */
@@ -1545,19 +1549,20 @@ typedef struct {
} BBPrec;
gdk_export bat BBPlimit;
+#if SIZEOF_VOID_P == 4
#define N_BBPINIT 1000
-#if SIZEOF_VOID_P == 4
#define BBPINITLOG 11
#else
+#define N_BBPINIT 10000
#define BBPINITLOG 14
#endif
#define BBPINIT (1 << BBPINITLOG)
/* absolute maximum number of BATs is N_BBPINIT * BBPINIT
* this also gives the longest possible "physical" name and "bak" name
- * of a BAT: the "bak" name is "tmp_%o", so at most 12 + \0 bytes on
+ * of a BAT: the "bak" name is "tmp_%o", so at most 14 + \0 bytes on
* 64 bit architecture and 11 + \0 on 32 bit architecture; the
* physical name is a bit more complicated, but the longest possible
- * name is 17 + \0 bytes (16 + \0 on 32 bits) */
+ * name is 22 + \0 bytes (16 + \0 on 32 bits) */
gdk_export BBPrec *BBP[N_BBPINIT];
/* fast defines without checks; internal use only */
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1046,7 +1046,7 @@ BBPreadEntries(FILE *fp, unsigned bbpver
uint64_t batid;
uint16_t status;
char headname[129];
- char filename[20];
+ char filename[sizeof(BBP_physical(0))];
unsigned int properties;
int nread, n;
char *s, *options = NULL;
@@ -1054,8 +1054,6 @@ BBPreadEntries(FILE *fp, unsigned bbpver
uint64_t count, capacity, base = 0;
int Thashash;
- static_assert(sizeof(BBP_physical(0)) == sizeof(filename),
- "filename should be same size as BBPrec.physical");
if ((s = strchr(buf, '\r')) != NULL) {
/* convert \r\n into just \n */
if (s[1] != '\n') {
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -793,7 +793,12 @@ newVariable(MalBlkPtr mb, const char *na
if( name == 0 || len == 0){
(void) snprintf(getVarName(mb,n), IDLENGTH,"%c%c%d", REFMARKER,
TMPMARKER,mb->vid++);
} else {
- (void) strcpy_len( getVarName(mb,n), name, len + 1);
+ /* avoid calling strcpy_len since we're not interested in the
+ * source length, and that may be very large */
+ char *nme = getVarName(mb,n);
+ for (size_t i = 0; i < len; i++)
+ nme[i] = name[i];
+ nme[len] = 0;
}
mb->vtop++;
diff --git a/sql/backends/monet5/sql_statistics.c
b/sql/backends/monet5/sql_statistics.c
--- a/sql/backends/monet5/sql_statistics.c
+++ b/sql/backends/monet5/sql_statistics.c
@@ -84,13 +84,13 @@ sql_analyze(Client cntxt, MalBlkPtr mb,
sys = mvc_bind_schema(m, "sys");
if (sys == NULL)
- throw(SQL, "sql.analyze", SQLSTATE(3F000) "Internal error");
+ throw(SQL, "sql.analyze", SQLSTATE(3F000) "Internal error: No
schema sys");
sysstats = mvc_bind_table(m, sys, "statistics");
if (sysstats == NULL)
- throw(SQL, "sql.analyze", SQLSTATE(3F000) "No table
sys.statistics");
+ throw(SQL, "sql.analyze", SQLSTATE(3F000) "Internal error: No
table sys.statistics");
statsid = mvc_bind_column(m, sysstats, "column_id");
if (statsid == NULL)
- throw(SQL, "sql.analyze", SQLSTATE(3F000) "No table
sys.statistics");
+ throw(SQL, "sql.analyze", SQLSTATE(3F000) "Internal error: No
table sys.statistics");
switch (argc) {
case 6:
@@ -121,12 +121,12 @@ sql_analyze(Client cntxt, MalBlkPtr mb,
if (tbl && strcmp(bt->name, tbl))
continue;
- if (t->persistence != SQL_PERSIST) {
+ tfnd = 1;
+ if (tbl && !isTable(t)) {
GDKfree(maxval);
GDKfree(minval);
- throw(SQL, "analyze", SQLSTATE(42S02)
"Table '%s' is not persistent", bt->name);
+ throw(SQL, "analyze", SQLSTATE(42S02)
"%s '%s' is not persistent", TABLE_TYPE_DESCRIPTION(t->type, t->properties),
bt->name);
}
- tfnd = 1;
if (isTable(t) && t->columns.set)
for (ncol = (t)->columns.set->h; ncol;
ncol = ncol->next) {
sql_base *bc = ncol->data;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -4821,7 +4821,7 @@ rel_rankop(sql_query *query, sql_rel **r
}
if (frame_clause || supports_frames)
- ie = obe ? exp_ref(sql->sa, (sql_exp*) obe->t->data) : in;
+ ie = exp_copy(sql, obe ? (sql_exp*) obe->t->data : in);
/* Frame */
if (frame_clause) {
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -1087,7 +1087,7 @@ snapshot_bats(stream *plan, const char *
uint64_t batid;
uint64_t tail_free;
uint64_t theap_free;
- char filename[20];
+ char filename[sizeof(BBP_physical(0))];
// The lines in BBP.dir come in various lengths.
// we try to parse the longest variant then check
// the return value of sscanf to see which fields
diff --git a/sql/test/BugTracker-2009/Tests/lost_update.SF-2790020.py
b/sql/test/BugTracker-2009/Tests/lost_update.SF-2790020.py
--- a/sql/test/BugTracker-2009/Tests/lost_update.SF-2790020.py
+++ b/sql/test/BugTracker-2009/Tests/lost_update.SF-2790020.py
@@ -1,6 +1,6 @@
import sys
import os
-import time
+
try:
from MonetDBtesting import process
except ImportError:
@@ -46,6 +46,7 @@ insert into lost_update_t1 (select * fro
insert into lost_update_t1 (select * from lost_update_t1);
insert into lost_update_t1 (select * from lost_update_t1);
update lost_update_t1 set a = 2;
+call sys.flush_log();
'''
script3 = '''\
select a from lost_update_t2;
@@ -62,7 +63,6 @@ def main():
s = server()
client(script2)
- time.sleep(20) # wait until log is flushed originally
60 sec
server_stop(s)
s = server()
diff --git
a/sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.err
b/sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.err
---
a/sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.err
+++
b/sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.err
@@ -29,10 +29,6 @@ stderr of test 'statistics_nils_not_eq_z
# 13:40:16 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-25363" "--port=30826"
# 13:40:16 >
-MAPI = (monetdb) /var/tmp/mtest-4063/.s.monetdb.31696
-QUERY = ANALYZE tmp;
-ERROR = !Table '_tables' is not persistent
-CODE = 42S02
# 13:40:17 >
# 13:40:17 > "Done."
diff --git a/sql/test/BugTracker-2020/Tests/All
b/sql/test/BugTracker-2020/Tests/All
--- a/sql/test/BugTracker-2020/Tests/All
+++ b/sql/test/BugTracker-2020/Tests/All
@@ -1,3 +1,5 @@
median_avg-nulls.Bug-6807
ifthenelse-crash.Bug-6815
-alter-table-add-column-Bug-6816
+alter-table-add-column.Bug-6816
+analyze-stream-table.Bug-6817
+select-where-in-rtrim-crash.Bug-6818
diff --git a/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.py
b/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.py
deleted file mode 100644
--- a/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import sys
-
-try:
- from MonetDBtesting import process
-except ImportError:
- import process
-
-s = process.server(args = [], stdin = process.PIPE, stdout = process.PIPE,
stderr = process.PIPE)
-c1 = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr
= process.PIPE)
-c2 = process.client('sql', stdin = process.PIPE, stdout = process.PIPE, stderr
= process.PIPE)
-
-out, err = c1.communicate('''\
-CREATE TABLE "testVarcharToClob" ("varcharColumn" varchar(255));\
-INSERT INTO "testVarcharToClob" VALUES ('value1'), ('value2');\
-ALTER TABLE "testVarcharToClob" add "clobColumn" TEXT NULL;\
-UPDATE "testVarcharToClob" SET "clobColumn" = "varcharColumn";\
-ALTER TABLE "testVarcharToClob" drop "varcharColumn";
-''')
-sys.stdout.write(out)
-sys.stderr.write(err)
-
-out, err = c2.communicate('''\
-INSERT INTO "testVarcharToClob" VALUES ('value3');\
-DROP TABLE "testVarcharToClob";
-''')
-sys.stdout.write(out)
-sys.stderr.write(err)
-
-out, err = s.communicate()
-sys.stdout.write(out)
-sys.stderr.write(err)
diff --git
a/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.err
b/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.err
deleted file mode 100644
--- a/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.err
+++ /dev/null
@@ -1,24 +0,0 @@
-stderr of test 'alter-table-add-column-Bug-6816` in directory
'sql/test/BugTracker-2020` itself:
-
-
-# 14:03:52 >
-# 14:03:52 > "/usr/bin/python3" "alter-table-add-column-Bug-6816.py"
"alter-table-add-column-Bug-6816"
-# 14:03:52 >
-
-# builtin opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-Nov2019/BUILD/var/monetdb5/dbfarm/demo
-# builtin opt mapi_port = 50000
-# builtin opt mapi_open = false
-# builtin opt mapi_ipv6 = false
-# builtin opt mapi_autosense = false
-# builtin opt sql_optimizer = default_pipe
-# builtin opt sql_debug = 0
-# cmdline opt gdk_nr_threads = 0
-# cmdline opt mapi_open = true
-# cmdline opt mapi_port = 36405
-# cmdline opt mapi_usock = /var/tmp/mtest-147833/.s.monetdb.36405
-# cmdline opt gdk_dbpath =
/home/ferreira/repositories/MonetDB-Nov2019/BUILD/var/MonetDB/mTests_sql_test_BugTracker-2020
-
-# 14:03:53 >
-# 14:03:53 > "Done."
-# 14:03:53 >
-
diff --git
a/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.out
b/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.out
deleted file mode 100644
--- a/sql/test/BugTracker-2020/Tests/alter-table-add-column-Bug-6816.stable.out
+++ /dev/null
@@ -1,74 +0,0 @@
-stdout of test 'alter-table-add-column-Bug-6816` in directory
'sql/test/BugTracker-2020` itself:
-
-
-# 14:03:52 >
-# 14:03:52 > "/usr/bin/python3" "alter-table-add-column-Bug-6816.py"
"alter-table-add-column-Bug-6816"
-# 14:03:52 >
-
-#CREATE TABLE "testVarcharToClob" ("varcharColumn" varchar(255));INSERT INTO
"testVarcharToClob" VALUES ('value1'), ('value2');ALTER TABLE
"testVarcharToClob" add "clobColumn" TEXT NULL;UPDATE "testVarcharToClob" SET
"clobColumn" = "varcharColumn";ALTER TABLE "testVarcharToClob" drop
"varcharColumn";
-#CREATE TABLE "testVarcharToClob" ("varcharColumn" varchar(255));INSERT INTO
"testVarcharToClob" VALUES ('value1'), ('value2');ALTER TABLE
"testVarcharToClob" add "clobColumn" TEXT NULL;UPDATE "testVarcharToClob" SET
"clobColumn" = "varcharColumn";ALTER TABLE "testVarcharToClob" drop
"varcharColumn";
-[ 2 ]
-#CREATE TABLE "testVarcharToClob" ("varcharColumn" varchar(255));INSERT INTO
"testVarcharToClob" VALUES ('value1'), ('value2');ALTER TABLE
"testVarcharToClob" add "clobColumn" TEXT NULL;UPDATE "testVarcharToClob" SET
"clobColumn" = "varcharColumn";ALTER TABLE "testVarcharToClob" drop
"varcharColumn";
-#CREATE TABLE "testVarcharToClob" ("varcharColumn" varchar(255));INSERT INTO
"testVarcharToClob" VALUES ('value1'), ('value2');ALTER TABLE
"testVarcharToClob" add "clobColumn" TEXT NULL;UPDATE "testVarcharToClob" SET
"clobColumn" = "varcharColumn";ALTER TABLE "testVarcharToClob" drop
"varcharColumn";
-[ 2 ]
-#CREATE TABLE "testVarcharToClob" ("varcharColumn" varchar(255));INSERT INTO
"testVarcharToClob" VALUES ('value1'), ('value2');ALTER TABLE
"testVarcharToClob" add "clobColumn" TEXT NULL;UPDATE "testVarcharToClob" SET
"clobColumn" = "varcharColumn";ALTER TABLE "testVarcharToClob" drop
"varcharColumn";
-#INSERT INTO "testVarcharToClob" VALUES ('value3');DROP TABLE
"testVarcharToClob";
-[ 1 ]
-#INSERT INTO "testVarcharToClob" VALUES ('value3');DROP TABLE
"testVarcharToClob";
-# MonetDB 5 server v11.35.10 (hg id: f9ad2ccd83b7)
-# This is an unreleased version
-# Serving database 'mTests_sql_test_BugTracker-2020', using 8 threads
-# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers
-# Found 15.498 GiB available main-memory of which we use 12.631 GiB
-# Copyright (c) 1993 - July 2008 CWI.
-# Copyright (c) August 2008 - 2020 MonetDB B.V., all rights reserved
-# Visit https://www.monetdb.org/ for further information
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list