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

Reply via email to