Changeset: 76e225aaa920 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=76e225aaa920
Modified Files:
clients/Tests/exports.stable.out
monetdb5/modules/mal/tablet.c
monetdb5/modules/mal/tablet.h
sql/backends/monet5/sql_result.c
Branch: default
Log Message:
Merge with Apr2019 branch.
diffs (104 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1793,7 +1793,7 @@ str SERVERsetAlias(void *ret, int *mid,
str SERVERstop(void *ret);
str SERVERsuspend(void *ret);
str SERVERtrace(void *ret, int *mid, int *flag);
-BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char
*csep, const char *rsep, char quote, lng skip, lng maxrow, int best, bool
from_stdin);
+BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char
*csep, const char *rsep, char quote, lng skip, lng maxrow, int best, bool
from_stdin, const char *tabnam);
str STRBytes(int *res, const str *arg1);
str STRConcat(str *res, const str *val1, const str *val2);
str STRFromWChr(str *res, const int *at);
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
@@ -402,14 +402,16 @@ tablet_read_more(bstream *in, stream *ou
do {
/* query is not finished ask for more */
/* we need more query text */
- if (in->eof) {
- if (mnstr_write(out, PROMPT2, sizeof(PROMPT2) -
1, 1) < 0 ||
- mnstr_flush(out) < 0)
- return false;
- in->eof = false;
- }
if (bstream_next(in) < 0)
return false;
+ if (in->eof) {
+ if (mnstr_write(out, PROMPT2, sizeof(PROMPT2) -
1, 1) == 1)
+ mnstr_flush(out);
+ in->eof = false;
+ /* we need more query text */
+ if (bstream_next(in) <= 0)
+ return false;
+ }
} while (in->len <= in->pos);
} else if (bstream_read(in, n) <= 0) {
return false;
@@ -1580,7 +1582,7 @@ create_rejects_table(Client cntxt)
}
BUN
-SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char
*csep, const char *rsep, char quote, lng skip, lng maxrow, int best, bool
from_stdin)
+SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out, const char
*csep, const char *rsep, char quote, lng skip, lng maxrow, int best, bool
from_stdin, const char *tabnam)
{
BUN cnt = 0, cntstart = 0, leftover = 0;
int res = 0; /* < 0: error, > 0: success, == 0: continue
processing */
@@ -1591,6 +1593,7 @@ SQLload_file(Client cntxt, Tablet *as, b
READERtask ptask[MAXWORKERS];
int threads = (!maxrow || maxrow > (1 << 16)) ? (GDKnr_threads <
MAXWORKERS && GDKnr_threads > 1 ? GDKnr_threads - 1 : MAXWORKERS - 1) : 1;
lng lio = 0, tio, t1 = 0, total = 0, iototal = 0;
+ char name[16];
#ifdef _DEBUG_TABLET_
mnstr_printf(GDKout, "#Prepare copy work for %d threads col '%s' rec
'%s' quot '%c'\n",
@@ -1699,7 +1702,8 @@ SQLload_file(Client cntxt, Tablet *as, b
}
task.id = 0;
- if ((task.tid = THRcreate(SQLproducer, (void *) &task, MT_THR_JOINABLE,
"SQLproducer")) == 0) {
+ snprintf(name, sizeof(name), "prod-%s", tabnam);
+ if ((task.tid = THRcreate(SQLproducer, (void *) &task, MT_THR_JOINABLE,
name)) == 0) {
tablet_error(&task, lng_nil, int_nil, SQLSTATE(42000) "failed
to start producer thread", "SQLload_file");
goto bailout;
}
@@ -1722,12 +1726,12 @@ SQLload_file(Client cntxt, Tablet *as, b
#ifdef MLOCK_TST
mlock(ptask[j].cols, sizeof(char *) * task.limit);
#endif
- char name[16];
snprintf(name, sizeof(name), "ptask%d.sema", j);
MT_sema_init(&ptask[j].sema, 0, name);
snprintf(name, sizeof(name), "ptask%d.repl", j);
MT_sema_init(&ptask[j].reply, 0, name);
- if ((ptask[j].tid = THRcreate(SQLworker, (void *) &ptask[j],
MT_THR_JOINABLE, "SQLworker")) == 0) {
+ snprintf(name, sizeof(name), "wrkr%d-%s", j, tabnam);
+ if ((ptask[j].tid = THRcreate(SQLworker, (void *) &ptask[j],
MT_THR_JOINABLE, name)) == 0) {
tablet_error(&task, lng_nil, int_nil, SQLSTATE(42000)
"failed to start worker thread", "SQLload_file");
threads = j;
for (j = 0; j < threads; j++)
diff --git a/monetdb5/modules/mal/tablet.h b/monetdb5/modules/mal/tablet.h
--- a/monetdb5/modules/mal/tablet.h
+++ b/monetdb5/modules/mal/tablet.h
@@ -71,7 +71,7 @@ typedef struct Table_t {
BAT *complaints; /* lines that did not match the
required input */
} Tablet;
-mal_export BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out,
const char *csep, const char *rsep, char quote, lng skip, lng maxrow, int best,
bool from_stdin);
+mal_export BUN SQLload_file(Client cntxt, Tablet *as, bstream *b, stream *out,
const char *csep, const char *rsep, char quote, lng skip, lng maxrow, int best,
bool from_stdin, const char *tabnam);
mal_export str TABLETcreate_bats(Tablet *as, BUN est);
mal_export str TABLETcollect(BAT **bats, Tablet *as);
mal_export str TABLETcollect_parts(BAT **bats, Tablet *as, BUN offset);
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -993,7 +993,7 @@ mvc_import_table(Client cntxt, BAT ***ba
}
}
if ( (locked || (msg = TABLETcreate_bats(&as, (BUN) (sz < 0 ?
1000 : sz))) == MAL_SUCCEED) ){
- if (!sz || (SQLload_file(cntxt, &as, bs, out, sep,
rsep, ssep ? ssep[0] : 0, offset, sz, best, from_stdin) != BUN_NONE &&
+ if (!sz || (SQLload_file(cntxt, &as, bs, out, sep,
rsep, ssep ? ssep[0] : 0, offset, sz, best, from_stdin, t->base.name) !=
BUN_NONE &&
(best || !as.error))) {
*bats = (BAT**) GDKzalloc(sizeof(BAT *) *
as.nr_attrs);
if ( *bats == NULL){
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list