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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list