Changeset: 6d7ad4b2da0c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6d7ad4b2da0c Modified Files: monetdb5/modules/mal/tablet.c sql/backends/monet5/LSST/Tests/lsst_htmxmatch.stable.out sql/backends/monet5/sql.c sql/backends/monet5/sql.mal sql/backends/monet5/sql_result.c sql/backends/monet5/sql_result.h sql/benchmarks/ATIS/Tests/select_group.stable.out sql/common/sql_types.c sql/server/rel_updates.c Branch: resultset Log Message:
fixes to make resultset work with the merges from default (ie copy from with header info) diffs (276 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 @@ -240,6 +240,7 @@ TABLETcollect(BAT **bats, Tablet *as) if (cnt != BATcount(fmt[i].c)) throw(SQL,"copy", "Count " BUNFMT " differs from " BUNFMT "\n", BATcount(fmt[i].c), cnt); + j++; } return MAL_SUCCEED; } @@ -254,7 +255,6 @@ TABLETcollect_parts(BAT **bats, Tablet * for (i = 0; i < as->nr_attrs && !cnt; i++) if (!fmt[i].skip) cnt = BATcount(fmt[i].c); - for (i = 0, j = 0; i < as->nr_attrs; i++) { BAT *b, *bv = NULL; if (fmt[i].skip) @@ -280,9 +280,9 @@ TABLETcollect_parts(BAT **bats, Tablet * BBPunfix(bv->batCacheid); bats[j] = BATslice(b, offset, BATcount(b)); } - j++; if (cnt != BATcount(b)) throw(SQL,"copy", "Count " BUNFMT " differs from " BUNFMT "\n", BATcount(b), cnt); + j++; } return MAL_SUCCEED; } @@ -292,21 +292,21 @@ TABLETcollect_parts(BAT **bats, Tablet * static char * tablet_skip_string(char *s, char quote) { - while (*s) { - if (*s == '\\' && s[1] != '\0') - s++; - else if (*s == quote) { - if (s[1] == quote) - *s++ = '\\'; /* sneakily replace "" with \" */ - else - break; - } - s++; - } - assert(*s == quote || *s == '\0'); - if (*s == 0) - return NULL; - return s; + while (*s) { + if (*s == '\\' && s[1] != '\0') + s++; + else if (*s == quote) { + if (s[1] == quote) + *s++ = '\\'; /* sneakily replace "" with \" */ + else + break; + } + s++; + } + assert(*s == quote || *s == '\0'); + if (*s == 0) + return NULL; + return s; } static int diff --git a/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.stable.out b/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.stable.out --- a/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.stable.out +++ b/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.stable.out @@ -62,18 +62,18 @@ Ready. % 3, 3 # length [ 100, 100 ] [ 100, 101 ] +[ 100, 102 ] +[ 100, 103 ] [ 101, 100 ] [ 101, 101 ] -[ 100, 102 ] -[ 100, 103 ] [ 101, 102 ] [ 101, 103 ] [ 102, 100 ] [ 102, 101 ] +[ 102, 102 ] +[ 102, 103 ] [ 103, 100 ] [ 103, 101 ] -[ 102, 102 ] -[ 102, 103 ] [ 103, 102 ] [ 103, 103 ] [ 110, 110 ] @@ -86,18 +86,18 @@ Ready. [ 113, 113 ] [ 120, 120 ] [ 120, 121 ] +[ 120, 122 ] +[ 120, 123 ] [ 121, 120 ] [ 121, 121 ] -[ 120, 122 ] -[ 120, 123 ] [ 121, 122 ] [ 121, 123 ] [ 122, 120 ] [ 122, 121 ] +[ 122, 122 ] +[ 122, 123 ] [ 123, 120 ] [ 123, 121 ] -[ 122, 122 ] -[ 122, 123 ] [ 123, 122 ] [ 123, 123 ] [ 130, 130 ] 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 @@ -3111,17 +3111,16 @@ mvc_import_table_wrap(Client cntxt, MalB unsigned char *tsep = NULL, *rsep = NULL, *ssep = NULL, *ns = NULL; ssize_t len = 0; str filename = NULL, cs; - str *sname = getArgReference_str(stk, pci, pci->retc + 0); - str *tname = getArgReference_str(stk, pci, pci->retc + 1); - unsigned char **T = (unsigned char **) getArgReference(stk, pci, pci->retc + 2); - unsigned char **R = (unsigned char **) getArgReference(stk, pci, pci->retc + 3); - unsigned char **S = (unsigned char **) getArgReference(stk, pci, pci->retc + 4); - unsigned char **N = (unsigned char **) getArgReference(stk, pci, pci->retc + 5); - str *fname = getArgReference_str(stk, pci, pci->retc + 6); - lng *sz = getArgReference_lng(stk, pci, pci->retc + 7); - lng *offset = getArgReference_lng(stk, pci, pci->retc + 8); - int *locked = getArgReference_int(stk, pci, pci->retc + 9); - int *besteffort = getArgReference_int(stk, pci, pci->retc + 10); + sql_table *t = *(sql_table **) getArgReference(stk, pci, pci->retc + 0); + unsigned char **T = (unsigned char **) getArgReference_str(stk, pci, pci->retc + 1); + unsigned char **R = (unsigned char **) getArgReference_str(stk, pci, pci->retc + 2); + unsigned char **S = (unsigned char **) getArgReference_str(stk, pci, pci->retc + 3); + unsigned char **N = (unsigned char **) getArgReference_str(stk, pci, pci->retc + 4); + str *fname = getArgReference_str(stk, pci, pci->retc + 5); + lng *sz = getArgReference_lng(stk, pci, pci->retc + 6); + lng *offset = getArgReference_lng(stk, pci, pci->retc + 7); + int *locked = getArgReference_int(stk, pci, pci->retc + 8); + int *besteffort = getArgReference_int(stk, pci, pci->retc + 9); str msg = MAL_SUCCEED; bstream *s = NULL; stream *ss; @@ -3166,7 +3165,7 @@ mvc_import_table_wrap(Client cntxt, MalB if (!*fname || strcmp(str_nil, *(char **) fname) == 0) fname = NULL; if (!fname) { - msg = mvc_import_table(cntxt, &b, be->mvc, be->mvc->scanner.rs, *sname, *tname, (char *) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked, *besteffort); + msg = mvc_import_table(cntxt, &b, be->mvc, be->mvc->scanner.rs, t, (char *) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked, *besteffort); } else { /* convert UTF-8 encoded file name to the character set of our * own locale before passing it on to the system call */ @@ -3211,7 +3210,7 @@ mvc_import_table_wrap(Client cntxt, MalB fix_windows_newline(ssep); #endif if (s != NULL) { - msg = mvc_import_table(cntxt, &b, be->mvc, s, *sname, *tname, (char *) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked, *besteffort); + msg = mvc_import_table(cntxt, &b, be->mvc, s, t, (char *) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked, *besteffort); bstream_destroy(s); } GDKfree(filename); diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal --- a/sql/backends/monet5/sql.mal +++ b/sql/backends/monet5/sql.mal @@ -340,7 +340,7 @@ comment "export the number of affected r #address mvc_export_value_wrap #comment "export a single value onto the stream s"; -pattern copy_from{unsafe}( sname:str, tname:str, +pattern copy_from{unsafe}( t:ptr, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, best:int) (:bat[:oid,:any]...) address mvc_import_table_wrap comment "Import a table from bstream s with the 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 @@ -674,22 +674,15 @@ has_whitespace(const char *s) } str -mvc_import_table(Client cntxt, BAT ***bats, mvc *m, bstream *bs, char *sname, char *tname, char *sep, char *rsep, char *ssep, char *ns, lng sz, lng offset, int locked, int best) +mvc_import_table(Client cntxt, BAT ***bats, mvc *m, bstream *bs, sql_table *t, char *sep, char *rsep, char *ssep, char *ns, lng sz, lng offset, int locked, int best) { int i = 0; - sql_schema *s = mvc_bind_schema(m, sname); - sql_table *t = mvc_bind_table(m, s, tname); node *n; Tablet as; Column *fmt; BUN cnt = 0; str msg = MAL_SUCCEED; - if (!t) { - sql_error(m, 500, "table %s not found", tname); - m->type = -1; - return NULL; - } if (!bs) { sql_error(m, 500, "no stream (pointer) provided"); m->type = -1; diff --git a/sql/backends/monet5/sql_result.h b/sql/backends/monet5/sql_result.h --- a/sql/backends/monet5/sql_result.h +++ b/sql/backends/monet5/sql_result.h @@ -26,7 +26,7 @@ extern int mvc_export_chunk(backend *b, extern int mvc_export_prepare(mvc *c, stream *s, cq *q, str w); -extern str mvc_import_table(Client cntxt, BAT ***bats, mvc *c, bstream *s, char *sname, char *tname, char *sep, char *rsep, char *ssep, char *ns, lng nr, lng offset, int locked, int best); +extern str mvc_import_table(Client cntxt, BAT ***bats, mvc *c, bstream *s, sql_table *t, char *sep, char *rsep, char *ssep, char *ns, lng nr, lng offset, int locked, int best); extern int mvc_result_table(mvc *m, int nr_cols, int type, BAT *order); extern int mvc_result_column(mvc *m, char *tn, char *name, char *typename, int digits, int scale, BAT *b); diff --git a/sql/benchmarks/ATIS/Tests/select_group.stable.out b/sql/benchmarks/ATIS/Tests/select_group.stable.out --- a/sql/benchmarks/ATIS/Tests/select_group.stable.out +++ b/sql/benchmarks/ATIS/Tests/select_group.stable.out @@ -67,7 +67,7 @@ Ready. % sys.L1 # table_name % L1 # name % decimal # type -% 20 # length +% 40 # length [ 278 ] #select avg(engines) from aircraft; % sys.L1 # table_name diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c --- a/sql/common/sql_types.c +++ b/sql/common/sql_types.c @@ -1618,9 +1618,9 @@ sqltypeinit( sql_allocator *sa) sres, FALSE, F_FUNC, SCALE_FIX); } sres = create_arg(sa, NULL, sql_create_subtype(sa, TABLE, 0, 0), ARG_OUT); - /* copyfrom fname (arg 6) */ + /* copyfrom fname (arg 9) */ f=sql_create_func_(sa, "copyfrom", "sql", "copy_from", - list_append( list_append( list_append( list_append(list_append (list_append (list_append(list_append(sa_list(sa), + list_append( list_append( list_append( list_append( list_append(list_append (list_append (list_append(list_append(sa_list(sa), create_arg(sa, NULL, sql_create_subtype(sa, STR, 0, 0), ARG_IN)), create_arg(sa, NULL, sql_create_subtype(sa, STR, 0, 0), ARG_IN)), create_arg(sa, NULL, sql_create_subtype(sa, STR, 0, 0), ARG_IN)), @@ -1628,7 +1628,8 @@ sqltypeinit( sql_allocator *sa) create_arg(sa, NULL, sql_create_subtype(sa, STR, 0, 0), ARG_IN)), create_arg(sa, NULL, sql_create_subtype(sa, STR, 0, 0), ARG_IN)), create_arg(sa, NULL, sql_create_subtype(sa, LNG, 0, 0), ARG_IN)), - create_arg(sa, NULL, sql_create_subtype(sa, LNG, 0, 0), ARG_IN)), sres, FALSE, F_UNION, SCALE_FIX); + create_arg(sa, NULL, sql_create_subtype(sa, LNG, 0, 0), ARG_IN)), + create_arg(sa, NULL, sql_create_subtype(sa, INT, 0, 0), ARG_IN)), sres, FALSE, F_UNION, SCALE_FIX); f->varres = 1; /* bincopyfrom */ diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c --- a/sql/server/rel_updates.c +++ b/sql/server/rel_updates.c @@ -1069,8 +1069,7 @@ rel_import(mvc *sql, sql_table *t, char sql_subtype tpe; sql_exp *import; sql_schema *sys = mvc_bind_schema(sql, "sys"); - int len = 8 + (filename != NULL); - sql_subfunc *f = sql_find_func(sql->sa, sys, "copyfrom", len, F_UNION, NULL); + sql_subfunc *f = sql_find_func(sql->sa, sys, "copyfrom", 9, F_UNION, NULL); if (!f) /* we do expect copyfrom to be there */ return NULL; @@ -1083,8 +1082,7 @@ rel_import(mvc *sql, sql_table *t, char exp_atom_str(sql->sa, ssep, &tpe)), exp_atom_str(sql->sa, ns, &tpe)); - if (filename) - append( args, exp_atom_str(sql->sa, filename, &tpe)); + append( args, exp_atom_str(sql->sa, filename, &tpe)); import = exp_op(sql->sa, append( append( _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list