Changeset: d086c0e6d032 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d086c0e6d032
Modified Files:
gdk/gdk_bbp.c
sql/server/rel_unnest.c
sql/storage/store.c
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.out
Branch: default
Log Message:
Merged with linear-hashing
diffs (181 lines):
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1415,6 +1415,15 @@ BBPinit(void)
unsigned bbpversion = 0;
int i;
+ /* the maximum number of BATs allowed in the system and the
+ * size of the "physical" array are linked in a complicated
+ * manner. The expression below shows the relationship */
+ static_assert((uint64_t) N_BBPINIT * BBPINIT < (UINT64_C(1) << (3 *
((sizeof(BBP[0][0].physical) + 2) * 2 / 5))), "\"physical\" array in BBPrec is
too small");
+ /* similarly, the maximum number of BATs allowed also has a
+ * (somewhat simpler) relation with the size of the "bak"
+ * array */
+ static_assert((uint64_t) N_BBPINIT * BBPINIT < (UINT64_C(1) << (3 *
(sizeof(BBP[0][0].bak) - 5))), "\"bak\" array in BBPrec is too small");
+
if (!GDKinmemory()) {
str bbpdirstr, backupbbpdirstr;
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -1640,7 +1640,7 @@ rewrite_simplify(mvc *sql, sql_rel *rel)
if (!rel)
return rel;
- if ((is_select(rel->op) || is_join(rel->op)) && !list_empty(rel->exps))
+ if ((is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) &&
!list_empty(rel->exps))
rel->exps = exps_simplify_exp(sql, rel->exps);
return rel;
}
@@ -1773,7 +1773,7 @@ rewrite_aggregates(mvc *sql, sql_rel *re
static sql_rel *
rewrite_or_exp(mvc *sql, sql_rel *rel)
{
- if ((is_select(rel->op) || is_join(rel->op)) && !list_empty(rel->exps))
{
+ if ((is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) &&
!list_empty(rel->exps)) {
for(node *n=rel->exps->h; n; n=n->next) {
sql_exp *e = n->data;
@@ -2561,7 +2561,7 @@ rewrite_compare_exps(mvc *sql, list *exp
static sql_rel *
rewrite_compare_exp(mvc *sql, sql_rel *rel)
{
- if ((is_select(rel->op) || is_join(rel->op)) && !list_empty(rel->exps))
+ if ((is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) &&
!list_empty(rel->exps))
rel->exps = rewrite_compare_exps(sql, rel->exps);
return rel;
}
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5613,7 +5613,7 @@ sql_trans_add_table(sql_trans *tr, sql_t
p->t = mt;
base_init(tr->sa, &p->base, pt->base.id, TR_NEW, pt->base.name);
cs_add(&mt->members, p, TR_NEW);
- mt->s->base.wtime = mt->base.wtime = pt->s->base.wtime = pt->base.wtime
= tr->wtime = tr->wstime;
+ mt->s->base.wtime = mt->base.wtime = pt->s->base.wtime = pt->base.wtime
= p->base.wtime = tr->wtime = tr->wstime;
table_funcs.table_insert(tr, sysobj, &mt->base.id, p->base.name,
&p->base.id);
return mt;
}
@@ -5917,7 +5917,7 @@ sql_trans_del_table(sql_trans *tr, sql_t
pt->p = NULL;
table_funcs.table_delete(tr, sysobj, obj_oid);
- mt->s->base.wtime = mt->base.wtime = pt->s->base.wtime = pt->base.wtime
= tr->wtime = tr->wstime;
+ mt->s->base.wtime = mt->base.wtime = pt->s->base.wtime = pt->base.wtime
= p->base.wtime = tr->wtime = tr->wstime;
if (drop_action == DROP_CASCADE)
sql_trans_drop_table(tr, mt->s, pt->base.id, drop_action);
diff --git a/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.sql
b/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.sql
--- a/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.sql
+++ b/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.sql
@@ -1,25 +1,30 @@
delete from statistics;
select count(*) from statistics;
-CREATE STREAM TABLE "sys"."strt" (
+CREATE SCHEMA "ttt";
+
+CREATE TABLE "ttt"."a"("id" INTEGER);
+
+CREATE STREAM TABLE "ttt"."strt" (
"id" INTEGER NOT NULL,
"nm" VARCHAR(123) NOT NULL,
CONSTRAINT "strt_id_pkey" PRIMARY KEY ("id")
);
-select * from "sys"."strt";
+select * from "ttt"."strt";
-analyze "sys"."strt";
+analyze "ttt"."strt";
-- Error: Table 'strt' is not persistent SQLState: 42S02
select (count(*) > 0) as has_rows from statistics;
-analyze sys; --not an error, skip stream table "strt"
+analyze ttt; --not an error, skip stream table "strt"
select (count(*) > 0) as has_rows from statistics;
-drop table "sys"."strt";
+drop table "ttt"."strt";
-- now run analyze without the stream table
-analyze sys;
+analyze ttt;
select (count(*) > 0) as has_rows from statistics;
--- true (181)
+-- true
delete from statistics;
+drop schema "ttt" cascade;
diff --git
a/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.err
b/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.err
--- a/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.err
+++ b/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.err
@@ -25,8 +25,8 @@ stderr of test 'analyze-stream-table.Bug
# 13:50:18 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-891865" "--port=35996"
# 13:50:18 >
-MAPI = (monetdb) /var/tmp/mtest-161340/.s.monetdb.34379
-QUERY = analyze "sys"."strt";
+MAPI = (monetdb) /var/tmp/mtest-4325/.s.monetdb.33720
+QUERY = analyze "ttt"."strt";
ERROR = !STREAM TABLE 'strt' is not persistent
CODE = 42S02
diff --git
a/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.out
b/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.out
--- a/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.out
+++ b/sql/test/BugTracker-2020/Tests/analyze-stream-table.Bug-6817.stable.out
@@ -35,8 +35,8 @@ stdout of test 'analyze-stream-table.Bug
# "nm" VARCHAR(123) NOT NULL,
# CONSTRAINT "strt_id_pkey" PRIMARY KEY ("id")
#);
-#select * from "sys"."strt";
-% sys.strt, sys.strt # table_name
+#select * from "ttt"."strt";
+% ttt.strt, ttt.strt # table_name
% id, nm # name
% int, varchar # type
% 1, 0 # length
@@ -63,7 +63,8 @@ stdout of test 'analyze-stream-table.Bug
% 5 # length
[ true ]
#delete from statistics;
-[ 181 ]
+[ 1 ]
+#drop schema "ttt" cascade;
# 13:50:18 >
# 13:50:18 > "Done."
diff --git
a/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.sql
b/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.sql
--- a/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.sql
+++ b/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.sql
@@ -11,6 +11,11 @@ select "TABEL", "VELD"
select "TABEL", "VELD"
from dd_field f
+ where (rtrim("TABEL")) in (select "TABEL" from dd_field);
+-- no problemo
+
+select "TABEL", "VELD"
+ from dd_field f
where (rtrim("TABEL"), rtrim("VELD")) in (select "TABEL", "VELD" from
dd_field);
-- sql/backends/monet5/rel_bin.c:920: exp_bin: Assertion `0' failed.
diff --git
a/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.stable.out
b/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.stable.out
---
a/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.stable.out
+++
b/sql/test/BugTracker-2020/Tests/select-where-in-rtrim-crash.Bug-6818.stable.out
@@ -36,6 +36,13 @@ stdout of test 'select-where-in-rtrim-cr
% 0, 0 # length
#select "TABEL", "VELD"
# from dd_field f
+# where (rtrim("TABEL")) in (select "TABEL" from dd_field);
+% sys.f, sys.f # table_name
+% TABEL, VELD # name
+% varchar, varchar # type
+% 0, 0 # length
+#select "TABEL", "VELD"
+# from dd_field f
# where (rtrim("TABEL"), rtrim("VELD")) in (select "TABEL", "VELD" from
dd_field);
% sys.f, sys.f # table_name
% TABEL, VELD # name
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list