Changeset: c5460cc0b66b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c5460cc0b66b Modified Files: monetdb5/modules/mal/tablet.c sql/test/BugTracker-2010/Tests/incomplete-utf8-sequence.Bug-2575.stable.err Branch: Jul2015 Log Message:
Do not insert non-UTF-8 sequences into a string BAT. diffs (41 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 @@ -894,14 +894,19 @@ SQLinsert_val(READERtask *task, int col, snprintf(buf, BUFSIZ, "'%s' expected", fmt->type); err = SQLload_error(task, idx, task->as->nr_attrs); if (task->rowerror) { + size_t slen = mystrlen(s); + char *scpy = GDKmalloc(slen + 1); + if (scpy) + mycpstr(scpy, s); MT_lock_set(&errorlock, "insert_val"); col++; BUNappend(task->cntxt->error_row, &row, FALSE); BUNappend(task->cntxt->error_fld, &col, FALSE); BUNappend(task->cntxt->error_msg, buf, FALSE); BUNappend(task->cntxt->error_input, err, FALSE); - snprintf(buf, BUFSIZ, "line " LLFMT " field %d '%s' expected in '%s'", row, col, fmt->type, s); buf[BUFSIZ-1]=0; + snprintf(buf, sizeof(buf), "line " LLFMT " field %d '%s' expected in '%s'", row, col, fmt->type, scpy ? scpy : buf); + GDKfree(scpy); if (task->as->error == NULL && (task->as->error = GDKstrdup(buf)) == NULL) task->as->error = M5OutOfMemory; task->rowerror[idx]++; diff --git a/sql/test/BugTracker-2010/Tests/incomplete-utf8-sequence.Bug-2575.stable.err b/sql/test/BugTracker-2010/Tests/incomplete-utf8-sequence.Bug-2575.stable.err --- a/sql/test/BugTracker-2010/Tests/incomplete-utf8-sequence.Bug-2575.stable.err +++ b/sql/test/BugTracker-2010/Tests/incomplete-utf8-sequence.Bug-2575.stable.err @@ -67,11 +67,11 @@ stderr of test 'incomplete-utf8-sequence # 14:47:29 > mclient -lsql -ftest -i -e --host=ottar --port=36476 # 14:47:29 > -MAPI = (monetdb) /var/tmp/mtest-7656/.s.monetdb.37934 +MAPI = (monetdb) /var/tmp/mtest-20213/.s.monetdb.30730 QUERY = copy 2 records into tbl_bug2575 from stdin using delimiters '\t','\n',''; 10001160000 29 .v. 10001690001 0 coà -ERROR = !Failed to import table line 2 field 3 'char(3)' expected in 'coÃ' +ERROR = !Failed to import table line 2 field 3 'char(3)' expected in 'co<C3>' # 14:47:29 > # 14:47:29 > Done. _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list