Changeset: af85cbb73bbb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=af85cbb73bbb
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql_execute.c
sql/server/rel_exp.c
Branch: properties
Log Message:
Merged with default
diffs (truncated from 731 to 300 lines):
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -786,11 +786,6 @@ fi
%setup -q
%build
-%if (0%{?fedora} >= 33)
-# on Fedora 33 we get a crash of the compiler when using -flto, so disable it
-CFLAGS="${CFLAGS:-%optflags} -fno-lto"
-export CFLAGS
-%endif
%cmake3 \
-DRELEASE_VERSION=ON \
-DASSERT=OFF \
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -3182,6 +3182,7 @@ bm_commit(logger *lg, lng save_id)
return GDK_FAIL;
}
BBPrelease(bid);
+ assert(BBP_lrefs(bid)<=0 && BBP_refs(bid)==0);
}
if (leftover) {
nfreed = logbat_new(TYPE_int, leftover, TRANSIENT);
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -764,9 +764,16 @@ str runMALsequence(Client cntxt, MalBlkP
}
if (ret == MAL_SUCCEED && ii == pci->argc) {
ret = runMALsequence(cntxt, pci->blk,
1, pci->blk->stop, nstk, stk, pci);
+ //garbageCollector(cntxt, pci->blk,
nstk, 0);
for (ii = 0; ii < nstk->stktop; ii++)
if
(ATOMextern(nstk->stk[ii].vtype))
GDKfree(nstk->stk[ii].val.pval);
+ arg = q->retc;
+ for (ii = pci->retc; ii < pci->argc;
ii++,arg++) {
+ lhs = &nstk->stk[q->argv[arg]];
+ if (lhs->vtype == TYPE_bat)
+
BBPrelease(lhs->val.bval);
+ }
GDKfree(nstk);
}
}
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -567,7 +567,6 @@ mvc_bind(mvc *m, const char *sname, cons
return NULL;
b = store_funcs.bind_col(tr, c, access);
- assert(b);
return b;
}
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -206,6 +206,7 @@ SQLrun(Client c, mvc *m)
*m->errstr=0;
return msg;
}
+ TRC_INFO(SQL_EXECUTION, "Executing: %s", c->query);
MT_thread_setworking(c->query);
// locate and inline the query template instruction
mb = copyMalBlk(c->curprg->def);
diff --git a/sql/backends/monet5/sql_subquery.c
b/sql/backends/monet5/sql_subquery.c
--- a/sql/backends/monet5/sql_subquery.c
+++ b/sql/backends/monet5/sql_subquery.c
@@ -16,7 +16,7 @@ zero_or_one_error(ptr ret, const bat *bi
BAT *b;
BUN c;
size_t _s;
- const void *p;
+ const void *p = NULL;
if ((b = BATdescriptor(*bid)) == NULL) {
throw(SQL, "sql.zero_or_one", SQLSTATE(HY005) "Cannot access
column descriptor");
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -1697,46 +1697,20 @@ rel_find_exp_and_corresponding_rel(sql_r
case op_right:
case op_full:
case op_join:
+ case op_semi:
+ case op_anti:
ne = rel_find_exp_and_corresponding_rel(rel->l, e, res,
under_join);
- if (!ne)
+ if (!ne && is_join(rel->op))
ne = rel_find_exp_and_corresponding_rel(rel->r,
e, res, under_join);
if (ne && under_join)
*under_join = true;
break;
case op_table:
- if (rel->exps && e->type == e_column && e->l &&
exps_bind_column2(rel->exps, e->l, e->r, NULL))
- ne = e;
- if (ne && res)
- *res = rel;
- break;
- case op_union:
- case op_except:
- case op_inter:
- {
- if (rel->l)
- ne = rel_find_exp_and_corresponding_rel(rel->l,
e, res, under_join);
- else if (rel->exps && e->l) {
- ne = exps_bind_column2(rel->exps, e->l, e->r,
NULL);
- if (ne && res)
- *res = rel;
- } else if (rel->exps) {
- ne = exps_bind_column(rel->exps, e->r, NULL,
NULL, 1);
- if (ne && res)
- *res = rel;
- }
- }
- break;
case op_basetable:
- if (rel->exps && e->type == e_column && e->l)
- ne = exps_bind_column2(rel->exps, e->l, e->r,
NULL);
- if (ne && res)
- *res = rel;
break;
default:
if (!is_project(rel->op) && rel->l)
ne = rel_find_exp_and_corresponding_rel(rel->l,
e, res, under_join);
- if (ne && (rel->op == op_semi || rel->op == op_anti) &&
under_join)
- *under_join = true;
}
}
return ne;
diff --git a/sql/test/BugTracker-2020/Tests/All
b/sql/test/BugTracker-2020/Tests/All
--- a/sql/test/BugTracker-2020/Tests/All
+++ b/sql/test/BugTracker-2020/Tests/All
@@ -34,3 +34,7 @@ drop-stream-table.Bug-7005
deallocate-id.Bug-7010
values-groupby.Bug-7013
txtsim-parallel.Bug-7016
+release_old_savepoint.Bug-7020
+savepoints_crash_mserver5_1.Bug-7021
+savepoints_crash_mserver5_2.Bug-7021
+transaction_with_unreleased_savepoint.Bug-7022
diff --git a/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.sql
b/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.sql
@@ -0,0 +1,18 @@
+start transaction;
+
+create table savepointtest (id int, primary key(id));
+savepoint name1;
+
+insert into savepointtest values(1), (2), (3);
+select * from savepointtest;
+savepoint name2;
+
+insert into savepointtest values(4), (5), (6);
+insert into savepointtest values(7), (8), (9);
+select * from savepointtest;
+savepoint name3;
+
+release savepoint name1;
+select * from savepointtest;
+commit;
+
diff --git
a/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.stable.err
b/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.stable.err
@@ -0,0 +1,12 @@
+stderr of test 'release_old_savepoint.Bug-7020` in directory
'sql/test/BugTracker-2020` itself:
+
+
+# 09:05:47 >
+# 09:05:47 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-141551" "--port=39186"
+# 09:05:47 >
+
+
+# 09:05:47 >
+# 09:05:47 > "Done."
+# 09:05:47 >
+
diff --git
a/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.stable.out
b/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2020/Tests/release_old_savepoint.Bug-7020.stable.out
@@ -0,0 +1,61 @@
+stdout of test 'release_old_savepoint.Bug-7020` in directory
'sql/test/BugTracker-2020` itself:
+
+
+# 09:05:47 >
+# 09:05:47 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-141551" "--port=39186"
+# 09:05:47 >
+
+#start transaction;
+#create table savepointtest (id int, primary key(id));
+#savepoint name1;
+#insert into savepointtest values(1), (2), (3);
+[ 3 ]
+#select * from savepointtest;
+% sys.savepointtest # table_name
+% id # name
+% int # type
+% 1 # length
+[ 1 ]
+[ 2 ]
+[ 3 ]
+#savepoint name2;
+#insert into savepointtest values(4), (5), (6);
+[ 3 ]
+#insert into savepointtest values(7), (8), (9);
+[ 3 ]
+#select * from savepointtest;
+% sys.savepointtest # table_name
+% id # name
+% int # type
+% 1 # length
+[ 1 ]
+[ 2 ]
+[ 3 ]
+[ 4 ]
+[ 5 ]
+[ 6 ]
+[ 7 ]
+[ 8 ]
+[ 9 ]
+#savepoint name3;
+#release savepoint name1;
+#select * from savepointtest;
+% sys.savepointtest # table_name
+% id # name
+% int # type
+% 1 # length
+[ 1 ]
+[ 2 ]
+[ 3 ]
+[ 4 ]
+[ 5 ]
+[ 6 ]
+[ 7 ]
+[ 8 ]
+[ 9 ]
+#commit;
+
+# 09:05:47 >
+# 09:05:47 > "Done."
+# 09:05:47 >
+
diff --git
a/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.sql
b/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.sql
@@ -0,0 +1,15 @@
+-- triggers a SIGSEGV in sql/storage/store.c:185: if (--(i->base.refcnt) > 0)
+start transaction;
+create table savepointtest (id int, primary key(id));
+savepoint name1;
+insert into savepointtest values(1), (2), (3);
+savepoint name2;
+insert into savepointtest values(4), (5), (6);
+insert into savepointtest values(7), (8), (9);
+--savepoint name3;
+select * from savepointtest;
+commit;
+
+select 42;
+select * from savepointtest;
+
diff --git
a/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.stable.err
b/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.stable.err
new file mode 100644
--- /dev/null
+++
b/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.stable.err
@@ -0,0 +1,12 @@
+stderr of test 'savepoints_crash_mserver5_1.Bug-7021` in directory
'sql/test/BugTracker-2020` itself:
+
+
+# 11:57:43 >
+# 11:57:43 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-153790" "--port=36420"
+# 11:57:43 >
+
+
+# 11:57:44 >
+# 11:57:44 > "Done."
+# 11:57:44 >
+
diff --git
a/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.stable.out
b/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.stable.out
new file mode 100644
--- /dev/null
+++
b/sql/test/BugTracker-2020/Tests/savepoints_crash_mserver5_1.Bug-7021.stable.out
@@ -0,0 +1,57 @@
+stdout of test 'savepoints_crash_mserver5_1.Bug-7021` in directory
'sql/test/BugTracker-2020` itself:
+
+
+# 11:57:43 >
+# 11:57:43 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-153790" "--port=36420"
+# 11:57:43 >
+
+#start transaction;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list