Changeset: c391682e44e8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c391682e44e8
Modified Files:
        common/utils/mstring.h
        gdk/gdk_logger.c
        gdk/gdk_project.c
        sql/storage/bat/bat_logger.c
        sql/storage/store.c
        sql/test/BugTracker-2021/Tests/All
Branch: Jul2021
Log Message:

merged


diffs (truncated from 439 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
@@ -29,7 +29,10 @@ strcpy_len(char *restrict dst, const cha
                        if ((dst[i] = src[i]) == 0)
                                return i;
                }
-               dst[n - 1] = 0;
+               /* for correctness, the decrement isn't needed (just assigning 0
+                * to dst[n-1] would be sufficient), but to work around a too
+                * strict GNU C compiler, we do need it */
+               dst[--n] = 0;
 /* in some versions of GCC (at least gcc (Ubuntu 7.5.0-3ubuntu1~18.04)
  * 7.5.0), the error just can't be turned off when using
  * --enable-strict, so we just use the (more) expensive way of getting the
diff --git a/sql/test/BugTracker-2021/Tests/All 
b/sql/test/BugTracker-2021/Tests/All
--- a/sql/test/BugTracker-2021/Tests/All
+++ b/sql/test/BugTracker-2021/Tests/All
@@ -11,3 +11,5 @@ unnest-union.Bug-7127
 subquery-missing.Bug-7128
 batcalc-between-undefined.Bug-7129
 batappend-undefined.Bug-7130
+KNOWNFAIL?WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133
+KNOWNFAIL?WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133
diff --git 
a/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.sql
 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.sql
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.sql
@@ -0,0 +1,65 @@
+CREATE TABLE test (ID BIGINT, UUID STRING, sec BIGINT, data VARCHAR(1000));
+INSERT INTO test VALUES
+  (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000001, 'uuid0001', 1621539934, 'a1' )
+, (1000002, 'uuid0002', 1621539934, 'a2' )
+, (1000003, 'uuid0003', 1621539934, 'a3' );
+
+CREATE TABLE extra (ID BIGINT, UUID STRING, sec BIGINT, extra VARCHAR(1000));
+INSERT INTO extra VALUES
+  (1000009, 'uuid0009', 1621539934, 'a9' )
+, (1000009, 'uuid0009', 1621539934, 'a9' )
+, (1000009, 'uuid0009', 1621539934, 'a9' )
+, (1000009, 'uuid0009', 1621539934, 'a9' )
+
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+
+, (1000001, 'uuid0001', 1621539934, 'a1' )
+, (1000001, 'uuid0001', 1621539934, 'a1' )
+, (1000001, 'uuid0001', 1621539934, 'a1' )
+, (1000001, 'uuid0001', 1621539934, 'a1' )
+
+, (1000002, 'uuid0002', 1621539934, 'a2' )
+, (1000002, 'uuid0002', 1621539934, 'a2' )
+, (1000002, 'uuid0002', 1621539934, 'a2' )
+, (1000002, 'uuid0002', 1621539934, 'a2' )
+
+, (1000003, 'uuid0003', 1621539934, 'a3' )
+, (1000003, 'uuid0003', 1621539934, 'a3' )
+, (1000003, 'uuid0003', 1621539934, 'a3' )
+, (1000003, 'uuid0003', 1621539934, 'a3' );
+
+-- validate 4x of each id.
+SELECT id, COUNT(*) as cnt FROM extra GROUP BY id ORDER BY id;
+
+WITH ca AS
+(
+        SELECT e.ID as id
+             , e.UUID as uuid
+             , e.sec as sec
+          FROM extra AS e
+LEFT OUTER JOIN test AS t
+            ON t.ID = e.ID
+           AND t.UUID = e.UUID
+           AND t.sec = e.sec
+         WHERE t.ID IS NULL
+           AND t.UUID IS NULL
+           AND t.sec IS NULL
+)
+DELETE
+FROM extra AS i
+WHERE i.id = ca.id
+  AND i.sec = ca.sec
+  AND i.uuid = ca.uuid
+;
+
+-- wrong tuples were deleted:
+SELECT id, COUNT(*) as cnt FROM extra GROUP BY id ORDER BY id;
+
+-- clean up
+DROP TABLE IF EXISTS test;
+DROP TABLE IF EXISTS extra;
+
diff --git 
a/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.stable.err
 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.stable.err
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133` in 
directory 'sql/test/BugTracker-2021` itself:
+
+
+# 14:48:57 >  
+# 14:48:57 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_listenaddr=all" "--set" "mapi_port=38559" "--set" 
"mapi_usock=/var/tmp/mtest-711137/.s.monetdb.38559" "--forcemito" 
"--dbpath=/export/scratch1/home/zhang/monetdb/mdb-nst/Oct2020/var/MonetDB/mTests_sql_test_BugTracker-2021"
 "--set" "embedded_r=yes" "--set" "embedded_c=true"
+# 14:48:57 >  
+
+# builtin opt  gdk_dbpath = 
/export/scratch1/home/zhang/monetdb/mdb-nst/Oct2020/var/monetdb5/dbfarm/demo
+# builtin opt  mapi_port = 50000
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# builtin opt  raw_strings = false
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_listenaddr = all
+# cmdline opt  mapi_port = 38559
+# cmdline opt  mapi_usock = /var/tmp/mtest-711137/.s.monetdb.38559
+# cmdline opt  gdk_dbpath = 
/export/scratch1/home/zhang/monetdb/mdb-nst/Oct2020/var/MonetDB/mTests_sql_test_BugTracker-2021
+# cmdline opt  embedded_r = yes
+# cmdline opt  embedded_c = true
+
+
+
+
+
+
+# 14:48:58 >  
+# 14:48:58 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-711137" "--port=38559"
+# 14:48:58 >  
+
+MAPI  = (monetdb) /var/tmp/mtest-711137/.s.monetdb.38559
+ACTION= mapi_query_done
+
+
+# 14:49:09 >  
+# 14:49:09 >  "Done."
+# 14:49:09 >  
+
diff --git 
a/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.stable.out
 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.stable.out
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133.stable.out
@@ -0,0 +1,94 @@
+stdout of test 'WITH-alias-DELETE-1.deletes-wrong-tuples.Bug-7133` in 
directory 'sql/test/BugTracker-2021` itself:
+
+
+# 14:48:57 >  
+# 14:48:57 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_listenaddr=all" "--set" "mapi_port=38559" "--set" 
"mapi_usock=/var/tmp/mtest-711137/.s.monetdb.38559" "--forcemito" 
"--dbpath=/export/scratch1/home/zhang/monetdb/mdb-nst/Oct2020/var/MonetDB/mTests_sql_test_BugTracker-2021"
 "--set" "embedded_r=yes" "--set" "embedded_c=true"
+# 14:48:57 >  
+
+# MonetDB 5 server v11.39.18 (hg id: d9135c8dafb2)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2021', using 12 threads
+# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers
+# Found 62.658 GiB available main-memory of which we use 51.067 GiB
+# Copyright (c) 1993 - July 2008 CWI.
+# Copyright (c) August 2008 - 2021 MonetDB B.V., all rights reserved
+# Visit https://www.monetdb.org/ for further information
+# Listening for connection requests on 
mapi:monetdb://rocks202.scilens.private:38559/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-711137/.s.monetdb.38559
+# MonetDB/GIS module loaded
+# MonetDB/R   module loaded
+# MonetDB/SQL module loaded
+
+# 14:48:58 >  
+# 14:48:58 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-711137" "--port=38559"
+# 14:48:58 >  
+
+#CREATE TABLE test (ID BIGINT, UUID STRING, sec BIGINT, data VARCHAR(1000));
+#INSERT INTO test VALUES
+#  (1000000, 'uuid0000', 1621539934, 'a0' )
+#, (1000001, 'uuid0001', 1621539934, 'a1' )
+#, (1000002, 'uuid0002', 1621539934, 'a2' )
+#, (1000003, 'uuid0003', 1621539934, 'a3' );
+[ 4    ]
+#CREATE TABLE extra (ID BIGINT, UUID STRING, sec BIGINT, extra VARCHAR(1000));
+#INSERT INTO extra VALUES
+#  (1000009, 'uuid0009', 1621539934, 'a9' )
+#, (1000009, 'uuid0009', 1621539934, 'a9' )
+#, (1000009, 'uuid0009', 1621539934, 'a9' )
+#, (1000009, 'uuid0009', 1621539934, 'a9' )
+#
+#, (1000000, 'uuid0000', 1621539934, 'a0' )
+#, (1000000, 'uuid0000', 1621539934, 'a0' )
+#, (1000000, 'uuid0000', 1621539934, 'a0' )
+#, (1000000, 'uuid0000', 1621539934, 'a0' )
+#
+#, (1000001, 'uuid0001', 1621539934, 'a1' )
+#, (1000001, 'uuid0001', 1621539934, 'a1' )
+#, (1000001, 'uuid0001', 1621539934, 'a1' )
+#, (1000001, 'uuid0001', 1621539934, 'a1' )
+[ 20   ]
+#SELECT id, COUNT(*) as cnt FROM extra GROUP BY id ORDER BY id;
+% sys.extra,   sys. # table_name
+% id,  cnt # name
+% bigint,      bigint # type
+% 7,   1 # length
+[ 1000000,     4       ]
+[ 1000001,     4       ]
+[ 1000002,     4       ]
+[ 1000003,     4       ]
+[ 1000009,     4       ]
+#WITH ca AS
+#(
+#        SELECT e.ID as id
+#             , e.UUID as uuid
+#             , e.sec as sec
+#          FROM extra AS e
+#LEFT OUTER JOIN test AS t
+#            ON t.ID = e.ID
+#           AND t.UUID = e.UUID
+#           AND t.sec = e.sec
+#         WHERE t.ID IS NULL
+#           AND t.UUID IS NULL
+#           AND t.sec IS NULL
+#)
+#DELETE
+#FROM extra AS i
+#WHERE i.id = ca.id
+#  AND i.sec = ca.sec
+#  AND i.uuid = ca.uuid
+#;
+[ 4    ]
+#SELECT id, COUNT(*) as cnt FROM extra GROUP BY id ORDER BY id;
+% sys.extra,   sys. # table_name
+% id,  cnt # name
+% bigint,      bigint # type
+% 7,   1 # length
+[ 1000000,     4       ]
+[ 1000001,     4       ]
+[ 1000002,     4       ]
+[ 1000003,     4       ]
+
+# 14:49:09 >  
+# 14:49:09 >  "Done."
+# 14:49:09 >  
+
diff --git 
a/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133.sql
 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133.sql
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133.sql
@@ -0,0 +1,55 @@
+CREATE TABLE test (ID BIGINT, UUID STRING, sec BIGINT, data VARCHAR(1000));
+INSERT INTO test VALUES
+  (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000003, 'uuid0003', 1621539934, 'a3' );
+
+CREATE TABLE extra (ID BIGINT, UUID STRING, sec BIGINT, extra VARCHAR(1000));
+INSERT INTO extra VALUES
+  (1000009, 'uuid0009', 1621539934, 'a9' )
+, (1000009, 'uuid0009', 1621539934, 'a9' )
+, (1000009, 'uuid0009', 1621539934, 'a9' )
+, (1000009, 'uuid0009', 1621539934, 'a9' )
+
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+, (1000000, 'uuid0000', 1621539934, 'a0' )
+
+, (1000003, 'uuid0003', 1621539934, 'a3' )
+, (1000003, 'uuid0003', 1621539934, 'a3' )
+, (1000003, 'uuid0003', 1621539934, 'a3' )
+, (1000003, 'uuid0003', 1621539934, 'a3' );
+
+-- validate 4x of each id.
+SELECT id, COUNT(*) as cnt FROM extra GROUP BY id ORDER BY id;
+
+WITH ca AS
+(
+        SELECT e.ID as id
+             , e.UUID as uuid
+             , e.sec as sec
+          FROM extra AS e
+LEFT OUTER JOIN test AS t
+            ON t.ID = e.ID
+           AND t.UUID = e.UUID
+           AND t.sec = e.sec
+         WHERE t.ID IS NULL
+           AND t.UUID IS NULL
+           AND t.sec IS NULL
+)
+DELETE
+FROM extra AS i
+WHERE i.id = ca.id
+  AND i.sec = ca.sec
+  AND i.uuid = ca.uuid
+; -- 16 affected rows!
+
+-- Count is -4!
+SELECT COUNT(*) FROM extra;
+-- Count is 12!
+select table, column, type, count from sys.storage() where table = 'extra';
+
+-- clean up
+DROP TABLE IF EXISTS test;
+DROP TABLE IF EXISTS extra;
+
diff --git 
a/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133.stable.err
 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133.stable.err
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2021/Tests/WITH-alias-DELETE-2.deletes-too-many-tuples.Bug-7133.stable.err
@@ -0,0 +1,38 @@
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to