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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list