Changeset: 88b72f1f0c74 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/88b72f1f0c74
Modified Files:
        sql/storage/store.c
        sql/test/BugTracker-2022/Tests/All
Branch: default
Log Message:

Merged with Jan2022


diffs (78 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5784,6 +5784,7 @@ create_sql_ic(sqlstore *store, sql_alloc
 sql_idx *
 create_sql_idx_done(sql_trans *tr, sql_idx *i)
 {
+       (void) tr;
        if (i && i->key && hash_index(i->type)) {
                int ncols = list_length(i->columns);
                for (node *n = i->columns->h ; n ; n = n->next) {
@@ -5792,9 +5793,6 @@ create_sql_idx_done(sql_trans *tr, sql_i
                        kc->c->unique = (ncols == 1) ? 2 : MAX(kc->c->unique, 
1);
                }
        }
-       /* should we switch to oph_idx ? */
-       if (i->type == hash_idx && list_length(i->columns) == 1 && 
sql_trans_is_sorted(tr, ((sql_kc*)i->columns->h->data)->c))
-               i->type = no_idx;
        return i;
 }
 
diff --git a/sql/test/BugTracker-2022/Tests/All 
b/sql/test/BugTracker-2022/Tests/All
--- a/sql/test/BugTracker-2022/Tests/All
+++ b/sql/test/BugTracker-2022/Tests/All
@@ -4,3 +4,4 @@ insert-not-null.Bug-7232
 recreate-view.Bug-7241
 HAVE_LIBPY3?python-udf-inside-udf.Bug-7252
 empty-MAL.Bug-7259
+pkey-restart.Bug-7263
diff --git a/sql/test/BugTracker-2022/Tests/pkey-restart.Bug-7263.SQL.py 
b/sql/test/BugTracker-2022/Tests/pkey-restart.Bug-7263.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2022/Tests/pkey-restart.Bug-7263.SQL.py
@@ -0,0 +1,29 @@
+import os, tempfile
+
+try:
+    from MonetDBtesting import process
+except ImportError:
+    import process
+from MonetDBtesting.sqltest import SQLTestCase
+
+with tempfile.TemporaryDirectory() as farm_dir:
+    os.mkdir(os.path.join(farm_dir, 'db1'))
+
+    with process.server(mapiport='0', dbname='db1', 
dbfarm=os.path.join(farm_dir, 'db1'), stdin = process.PIPE, stdout = 
process.PIPE, stderr = process.PIPE) as s:
+        with SQLTestCase() as mdb:
+            mdb.connect(database='db1', port=s.dbport, username="monetdb", 
password="monetdb")
+            mdb.execute("CREATE TABLE x (k int PRIMARY KEY, v 
int);").assertSucceeded()
+            mdb.execute("INSERT INTO x VALUES(1, 1);").assertSucceeded()
+            mdb.execute("SELECT k, v FROM 
x;").assertSucceeded().assertDataResultMatch([(1,1)])
+            mdb.execute("INSERT INTO x VALUES(1, 
2);").assertFailed(err_code="40002", err_message="INSERT INTO: PRIMARY KEY 
constraint 'x.x_k_pkey' violated")
+            mdb.execute("SELECT k, v FROM 
x;").assertSucceeded().assertDataResultMatch([(1,1)])
+        s.communicate()
+
+    with process.server(mapiport='0', dbname='db1', 
dbfarm=os.path.join(farm_dir, 'db1'), stdin = process.PIPE, stdout = 
process.PIPE, stderr = process.PIPE) as s:
+        with SQLTestCase() as mdb:
+            mdb.connect(database='db1', port=s.dbport, username="monetdb", 
password="monetdb")
+            mdb.execute("SELECT k, v FROM 
x;").assertSucceeded().assertDataResultMatch([(1,1)])
+            mdb.execute("INSERT INTO x VALUES(1, 
2);").assertFailed(err_code="40002", err_message="INSERT INTO: PRIMARY KEY 
constraint 'x.x_k_pkey' violated")
+            mdb.execute("SELECT k, v FROM 
x;").assertSucceeded().assertDataResultMatch([(1,1)])
+            mdb.execute("DROP TABLE x;").assertSucceeded()
+        s.communicate()
diff --git a/sql/test/prepare/Tests/prepare-insert-into.sql 
b/sql/test/prepare/Tests/prepare-insert-into.sql
--- a/sql/test/prepare/Tests/prepare-insert-into.sql
+++ b/sql/test/prepare/Tests/prepare-insert-into.sql
@@ -1,3 +1,5 @@
+START TRANSACTION;
+
 CREATE TABLE "TestBulkDataInsert" (c1 BIGINT NOT NULL PRIMARY KEY, c2 
VARCHAR(50) NOT NULL, c3 CLOB);
 
 INSERT INTO "TestBulkDataInsert" SELECT * FROM 
(VALUES(1,'1a','1b'),(2,'2a','2b'),(3,'3a','3b')) vt3(c1,c2,c3);
@@ -26,3 +28,5 @@ exec **('16a', 17, '17b');
 SELECT * FROM "TestBulkDataInsert";
 
 DROP TABLE "TestBulkDataInsert";
+
+ROLLBACK;
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to