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

Reply via email to