Changeset: 6d456568bc95 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6d456568bc95
Modified Files:
        sql/server/rel_rel.c
Branch: antipush
Log Message:

Merged with default


diffs (169 lines):

diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -838,6 +838,7 @@ rel_project(sql_allocator *sa, sql_rel *
                else
                        rel->nrcols = l->nrcols;
                rel->single = is_single(l);
+               rel->grouped = l->grouped;
        }
        if (e && !list_empty(e)) {
                set_processed(rel);
@@ -1411,7 +1412,7 @@ static sql_rel *
                *exp = NULL;
                return rel;
        }
-       if (!is_simple_project(rel->op) || !list_empty(rel->r) || 
rel_is_ref(rel))
+       if (!is_simple_project(rel->op) || need_distinct(rel) || 
!list_empty(rel->r) || rel_is_ref(rel))
                rel = rel_project(sql->sa, rel, exps);
        e = rel->exps->h->data;
        e = exp_column(sql->sa, exp_relname(e), exp_name(e), exp_subtype(e), 
rel->card, has_nil(e), is_unique(e), is_intern(e));
@@ -1428,7 +1429,7 @@ static sql_rel *
 sql_rel *
 rel_add_identity(mvc *sql, sql_rel *rel, sql_exp **exp)
 {
-       if (rel && is_project(rel->op) && (*exp = exps_find_identity(rel->exps, 
rel->l)) != NULL)
+       if (rel && is_project(rel->op) && !need_distinct(rel) && (*exp = 
exps_find_identity(rel->exps, rel->l)) != NULL)
                return rel;
        return _rel_add_identity(sql, rel, exp);
 }
diff --git a/sql/server/sql_query.c b/sql/server/sql_query.c
--- a/sql/server/sql_query.c
+++ b/sql/server/sql_query.c
@@ -19,7 +19,7 @@ sq_create( sql_allocator *sa, sql_rel *r
        *q = (stacked_query) {
                .rel = rel,
                .sql_state = sql_state,
-               .grouped = is_groupby(rel->op),
+               .grouped = is_groupby(rel->op)|rel->grouped,
                .groupby = 0, /* not used for groupby of inner */
        };
        return q;
diff --git a/sql/test/BugTracker-2021/Tests/copyinto-copyfrom.Bug-7186.SQL.py 
b/sql/test/BugTracker-2021/Tests/copyinto-copyfrom.Bug-7186.SQL.py
--- a/sql/test/BugTracker-2021/Tests/copyinto-copyfrom.Bug-7186.SQL.py
+++ b/sql/test/BugTracker-2021/Tests/copyinto-copyfrom.Bug-7186.SQL.py
@@ -2,20 +2,22 @@ import tempfile, os, shutil
 from MonetDBtesting.sqltest import SQLTestCase
 
 nexdir = tempfile.mkdtemp()
-temp_name = os.path.join(nexdir, 'myp.csv')
 
-with SQLTestCase() as cli:
-    cli.connect(username="monetdb", password="monetdb")
+try:
+    temp_name = os.path.join(nexdir, 'myfile.csv').replace("\\", "\\\\")
+    with SQLTestCase() as cli:
+        cli.connect(username="monetdb", password="monetdb")
 
-    cli.execute("START TRANSACTION;").assertSucceeded()
-    cli.execute("""
-    CREATE TABLE "t" ("id" INTEGER,"name" VARCHAR(1024),"schema_id" 
INTEGER,"query" VARCHAR(1048576),"type" SMALLINT,"system" 
BOOLEAN,"commit_action" SMALLINT,"access" SMALLINT,"temporary" TINYINT);
-    """).assertSucceeded()
-    cli.execute("""
-    COPY SELECT 
"id","name","schema_id","query","type","system","commit_action","access","temporary"
 FROM sys.tables LIMIT 100 INTO '%s' DELIMITERS '|';
-    """ % (temp_name)).assertSucceeded()
-    cli.execute("COPY INTO t FROM '%s' DELIMITERS '|';" % 
(temp_name)).assertSucceeded()
-    cli.execute("DROP TABLE t;").assertSucceeded()
-    cli.execute("ROLLBACK;").assertSucceeded()
-
-shutil.rmtree(nexdir)
+        cli.execute("START TRANSACTION;").assertSucceeded()
+        cli.execute("""
+        CREATE TABLE "t" ("id" INTEGER,"name" VARCHAR(1024),"schema_id" 
INTEGER,"query" VARCHAR(1048576),"type" SMALLINT,"system" 
BOOLEAN,"commit_action" SMALLINT,"access" SMALLINT,"temporary" TINYINT);
+        """).assertSucceeded()
+        cli.execute("""
+        COPY SELECT 
"id","name","schema_id","query","type","system","commit_action","access","temporary"
 FROM sys.tables LIMIT 100 INTO '%s' DELIMITERS '|';
+        """ % (temp_name)).assertSucceeded()
+        cli.execute("COPY INTO t FROM '%s' DELIMITERS '|';" % 
(temp_name)).assertSucceeded()
+        cli.execute("DROP TABLE t;").assertSucceeded()
+        cli.execute("ROLLBACK;").assertSucceeded()
+finally:
+    if os.path.exists(nexdir):
+        shutil.rmtree(nexdir)
diff --git a/sql/test/SQLancer/Tests/sqlancer18.test 
b/sql/test/SQLancer/Tests/sqlancer18.test
--- a/sql/test/SQLancer/Tests/sqlancer18.test
+++ b/sql/test/SQLancer/Tests/sqlancer18.test
@@ -305,8 +305,8 @@ NULL
 query T rowsort
 SELECT vx.vc0 <> ALL(SELECT vx.vc0 FROM vx WHERE vx.vc0 <> vx.vc0) FROM vx
 ----
-False
-NULL
+True
+True
 
 query T rowsort
 SELECT vx.vc0 FROM vx WHERE vx.vc0 <> ALL(SELECT vx.vc0 FROM vx WHERE vx.vc0 
<> vx.vc0)
@@ -314,7 +314,7 @@ SELECT vx.vc0 FROM vx WHERE vx.vc0 <> AL
 1970-01-01
 NULL
 
-statement error GDK reported error: BATsubcross: more than one match
+statement error GDK reported error: mergejoin: more than one match
 SELECT max((SELECT (SELECT rt2.c1 FROM t2) FROM t2 as rt2))
 
 statement ok
diff --git a/sql/test/bugs/Tests/All b/sql/test/bugs/Tests/All
--- a/sql/test/bugs/Tests/All
+++ b/sql/test/bugs/Tests/All
@@ -113,3 +113,4 @@ HAVE_GEOM?filter_error
 in
 rtrim_bug
 savepoint-release
+procedure-recompile
diff --git a/sql/test/bugs/Tests/procedure-recompile.test 
b/sql/test/bugs/Tests/procedure-recompile.test
new file mode 100644
--- /dev/null
+++ b/sql/test/bugs/Tests/procedure-recompile.test
@@ -0,0 +1,51 @@
+statement ok
+create table x (a int)
+
+statement ok rowcount 2
+insert into x values (1),(2)
+
+statement ok
+create procedure myproc() begin insert into x values (3); end
+
+query I rowsort
+select a from x
+----
+1
+2
+
+statement ok
+call myproc()
+
+query I rowsort
+select a from x
+----
+1
+2
+3
+
+statement ok
+alter table x add constraint mycon primary key(a)
+
+query I rowsort
+select a from x
+----
+1
+2
+3
+
+statement error primary key violation
+call myproc()
+
+query I rowsort
+select a from x
+----
+1
+2
+3
+
+statement ok
+drop procedure myproc
+
+statement ok
+drop table x
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to