Changeset: 00d8ff432fc4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=00d8ff432fc4
Modified Files:
monetdb5/modules/mal/tablet.c
sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.err
sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.out
Branch: Jul2015
Log Message:
always initialize rejects table
diffs (115 lines):
diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -1557,6 +1557,38 @@ SQLproducer(void *p)
}
}
+static void
+create_rejects_table(Client cntxt)
+{
+ MT_lock_set(&mal_contextLock, "copy.initialization");
+ if (cntxt->error_row == NULL) {
+ cntxt->error_row = BATnew(TYPE_void, TYPE_lng, 0, TRANSIENT);
+ BATseqbase(cntxt->error_row, 0);
+ cntxt->error_fld = BATnew(TYPE_void, TYPE_int, 0, TRANSIENT);
+ BATseqbase(cntxt->error_fld, 0);
+ cntxt->error_msg = BATnew(TYPE_void, TYPE_str, 0, TRANSIENT);
+ BATseqbase(cntxt->error_msg, 0);
+ cntxt->error_input = BATnew(TYPE_void, TYPE_str, 0, TRANSIENT);
+ BATseqbase(cntxt->error_input, 0);
+ if (cntxt->error_row == NULL || cntxt->error_fld == NULL ||
cntxt->error_msg == NULL || cntxt->error_input == NULL) {
+ if (cntxt->error_row)
+ BBPunfix(cntxt->error_row->batCacheid);
+ if (cntxt->error_fld)
+ BBPunfix(cntxt->error_fld->batCacheid);
+ if (cntxt->error_msg)
+ BBPunfix(cntxt->error_msg->batCacheid);
+ if (cntxt->error_input)
+ BBPunfix(cntxt->error_input->batCacheid);
+ } else {
+ BBPkeepref(cntxt->error_row->batCacheid);
+ BBPkeepref(cntxt->error_fld->batCacheid);
+ BBPkeepref(cntxt->error_msg->batCacheid);
+ BBPkeepref(cntxt->error_input->batCacheid);
+ }
+ }
+ MT_lock_unset(&mal_contextLock, "copy.initialization");
+}
+
BUN
SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, char *csep,
char *rsep, char quote, lng skip, lng maxrow, int best)
{
@@ -1583,33 +1615,7 @@ SQLload_file(Client cntxt, Tablet *as, b
task->cntxt = cntxt;
/* create the reject tables */
- MT_lock_set(&mal_contextLock, "copy.initialization");
- if (task->cntxt->error_row == NULL) {
- task->cntxt->error_row = BATnew(TYPE_void, TYPE_lng, 0,
TRANSIENT);
- BATseqbase(task->cntxt->error_row, 0);
- task->cntxt->error_fld = BATnew(TYPE_void, TYPE_int, 0,
TRANSIENT);
- BATseqbase(task->cntxt->error_fld, 0);
- task->cntxt->error_msg = BATnew(TYPE_void, TYPE_str, 0,
TRANSIENT);
- BATseqbase(task->cntxt->error_msg, 0);
- task->cntxt->error_input = BATnew(TYPE_void, TYPE_str, 0,
TRANSIENT);
- BATseqbase(task->cntxt->error_input, 0);
- if (task->cntxt->error_row == NULL || task->cntxt->error_fld ==
NULL || task->cntxt->error_msg == NULL || task->cntxt->error_input == NULL) {
- if (task->cntxt->error_row)
- BBPunfix(task->cntxt->error_row->batCacheid);
- if (task->cntxt->error_fld)
- BBPunfix(task->cntxt->error_fld->batCacheid);
- if (task->cntxt->error_msg)
- BBPunfix(task->cntxt->error_msg->batCacheid);
- if (task->cntxt->error_input)
- BBPunfix(task->cntxt->error_input->batCacheid);
- } else {
- BBPkeepref(task->cntxt->error_row->batCacheid);
- BBPkeepref(task->cntxt->error_fld->batCacheid);
- BBPkeepref(task->cntxt->error_msg->batCacheid);
- BBPkeepref(task->cntxt->error_input->batCacheid);
- }
- }
- MT_lock_unset(&mal_contextLock, "copy.initialization");
+ create_rejects_table(task->cntxt);
if (task->cntxt->error_row == NULL || task->cntxt->error_fld == NULL ||
task->cntxt->error_msg == NULL || task->cntxt->error_input == NULL) {
tablet_error(task, lng_nil, int_nil, NULL, "SQLload
initialization failed");
goto bailout;
@@ -1989,6 +1995,8 @@ COPYrejects(Client cntxt, MalBlkPtr mb,
bat *fld = getArgReference_bat(stk, pci, 1);
bat *msg = getArgReference_bat(stk, pci, 2);
bat *inp = getArgReference_bat(stk, pci, 3);
+
+ create_rejects_table(cntxt);
if (cntxt->error_row == NULL)
throw(MAL, "sql.rejects", "No reject table available");
BBPincref(*row = cntxt->error_row->batCacheid, TRUE);
diff --git a/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.err
b/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.err
--- a/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.err
+++ b/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.err
@@ -30,9 +30,6 @@ stderr of test 'sessions_crash.Bug-3759`
# 16:14:53 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-28078" "--port=38342"
# 16:14:53 >
-MAPI = (monetdb) /var/tmp/mtest-28078/.s.monetdb.38342
-QUERY = select COUNT(*) from "sys"."rejects";
-ERROR = !No reject table available
# 16:14:53 >
# 16:14:53 > "Done."
diff --git a/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.out
b/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.out
--- a/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.out
+++ b/sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.out
@@ -35,6 +35,12 @@ Ready.
% wrd # type
% 1 # length
[ 1 ]
+#select COUNT(*) from "sys"."rejects";
+% .L1 # table_name
+% L1 # name
+% wrd # type
+% 1 # length
+[ 0 ]
#select COUNT(*) from "sys"."sessions";
% .L1 # table_name
% L1 # name
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list