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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to