Changeset: d50de7ef6238 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d50de7ef6238
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/common/sql_types.c
        sql/server/rel_updates.c
        sql/test/utf8/run.all
Branch: resultset
Log Message:

removed need for seperate stdin copy from.


diffs (273 lines):

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
@@ -3075,24 +3075,6 @@ mvc_import_table_wrap(Client cntxt, MalB
                GDKstrFromStr(ssep, *S, len);
                len = 0;
        }
-
-       /* convert UTF-8 encoded file name to the character set of our
-        * own locale before passing it on to the system call */
-       if ((msg = STRcodeset(&cs)) != MAL_SUCCEED) {
-               GDKfree(tsep);
-               GDKfree(rsep);
-               GDKfree(ssep);
-               return msg;
-       }
-       msg = STRIconv(&filename, fname, &utf8, &cs);
-       GDKfree(cs);
-       if (msg != MAL_SUCCEED) {
-               GDKfree(tsep);
-               GDKfree(rsep);
-               GDKfree(ssep);
-               return msg;
-       }
-
        len = strlen((char *) (*N));
        if ((ns = GDKmalloc(len + 1)) == NULL) {
                GDKfree(tsep);
@@ -3103,111 +3085,69 @@ mvc_import_table_wrap(Client cntxt, MalB
        }
        GDKstrFromStr(ns, *N, len);
        len = 0;
-       ss = open_rastream(filename);
-       if (!ss || mnstr_errnr(ss)) {
-               int errnr = mnstr_errnr(ss);
-               if (ss)
-                       mnstr_destroy(ss);
-               GDKfree(tsep);
-               GDKfree(rsep);
-               GDKfree(ssep);
-               GDKfree(ns);
-               msg = createException(IO, "sql.copy_from", "could not open file 
'%s': %s", filename, strerror(errnr));
-               GDKfree(filename);
-               return msg;
-       }
+
+       if (!*fname || strcmp(str_nil, *(char **) fname) == 0) 
+               fname = NULL;
+       if (!fname) {
+               b = mvc_import_table(cntxt, be->mvc, be->mvc->scanner.rs, 
*sname, *tname, (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 */
+               if ((msg = STRcodeset(&cs)) != MAL_SUCCEED) {
+                       GDKfree(tsep);
+                       GDKfree(rsep);
+                       GDKfree(ssep);
+                       GDKfree(ns);
+                       return msg;
+               }
+               msg = STRIconv(&filename, fname, &utf8, &cs);
+               GDKfree(cs);
+               if (msg != MAL_SUCCEED) {
+                       GDKfree(tsep);
+                       GDKfree(rsep);
+                       GDKfree(ssep);
+                       GDKfree(ns);
+                       return msg;
+               }
+
+               ss = open_rastream(filename);
+               if (!ss || mnstr_errnr(ss)) {
+                       int errnr = mnstr_errnr(ss);
+                       if (ss)
+                               mnstr_destroy(ss);
+                       GDKfree(tsep);
+                       GDKfree(rsep);
+                       GDKfree(ssep);
+                       GDKfree(ns);
+                       msg = createException(IO, "sql.copy_from", "could not 
open file '%s': %s", filename, strerror(errnr));
+                       GDKfree(filename);
+                       return msg;
+               }
 #if SIZEOF_VOID_P == 4
-       s = bstream_create(ss, 0x20000);
+               s = bstream_create(ss, 0x20000);
 #else
-       s = bstream_create(ss, 0x2000000);
+               s = bstream_create(ss, 0x2000000);
 #endif
 #ifdef WIN32
-       fix_windows_newline(tsep);
-       fix_windows_newline(rsep);
-       fix_windows_newline(ssep);
+               fix_windows_newline(tsep);
+               fix_windows_newline(rsep);
+               fix_windows_newline(ssep);
 #endif
-       if (s != NULL) {
-               b = mvc_import_table(cntxt, be->mvc, s, *sname, *tname, (char 
*) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked, 
*besteffort);
-               bstream_destroy(s);
+               if (s != NULL) {
+                       b = mvc_import_table(cntxt, be->mvc, s, *sname, *tname, 
(char *) tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, 
*locked, *besteffort);
+                       bstream_destroy(s);
+               }
+               GDKfree(filename);
        }
-       GDKfree(filename);
        GDKfree(tsep);
        GDKfree(rsep);
        if (ssep)
                GDKfree(ssep);
        GDKfree(ns);
-       if (s == NULL)
+       if (fname && s == NULL)
                throw(IO, "bstreams.create", "Failed to create block stream");
        if (b == NULL)
-               throw(SQL, "importTable", "%s Failed to import table", 
be->mvc->errstr);
-       bat2return(stk, pci, b);
-       GDKfree(b);
-       return MAL_SUCCEED;
-}
-
-/* str mvc_import_table_stdin(int *res, str *sname, str *tname, unsigned char* 
*T, unsigned char* *R, unsigned char* *S, unsigned char* *N, lng *sz, lng 
*offset); */
-str
-mvc_import_table_stdin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
-       BAT **b = NULL;
-       mvc *m = NULL;
-       str msg;
-       unsigned char *tsep = NULL, *rsep = NULL, *ssep = NULL, *ns = NULL;
-       ssize_t len = 0;
-       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);
-       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 *best = getArgReference_int(stk, pci, pci->retc + 9);
-
-       if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
-               return msg;
-       if ((msg = checkSQLContext(cntxt)) != NULL)
-               return msg;
-       len = strlen((char *) (*T));
-       if ((tsep = GDKmalloc(len + 1)) == NULL)
-               throw(MAL, "sql.copyfrom", MAL_MALLOC_FAIL);
-       GDKstrFromStr(tsep, *T, len);
-       len = 0;
-       len = strlen((char *) (*R));
-       if ((rsep = GDKmalloc(len + 1)) == NULL) {
-               GDKfree(tsep);
-               throw(MAL, "sql.copyfrom", MAL_MALLOC_FAIL);
-       }
-       GDKstrFromStr(rsep, *R, len);
-       len = 0;
-       if (*S && strcmp(str_nil, *(char **) S)) {
-               len = strlen((char *) (*S));
-               if ((ssep = GDKmalloc(len + 1)) == NULL) {
-                       GDKfree(tsep);
-                       GDKfree(rsep);
-                       throw(MAL, "sql.copyfrom", MAL_MALLOC_FAIL);
-               }
-               GDKstrFromStr(ssep, *S, len);
-               len = 0;
-       }
-       len = strlen((char *) (*N));
-       if ((ns = GDKmalloc(len + 1)) == NULL) {
-               GDKfree(tsep);
-               GDKfree(rsep);
-               GDKfree(ssep);
-               throw(MAL, "sql.copyfrom", MAL_MALLOC_FAIL);
-       }
-       GDKstrFromStr(ns, *N, len);
-       len = 0;
-       b = mvc_import_table(cntxt, m, m->scanner.rs, *sname, *tname, (char *) 
tsep, (char *) rsep, (char *) ssep, (char *) ns, *sz, *offset, *locked, *best);
-       GDKfree(tsep);
-       GDKfree(rsep);
-       if (ssep)
-               GDKfree(ssep);
-       GDKfree(ns);
-       if (!b)
-               throw(SQL, "importTable", "%s. Failed to import table", 
m->errstr);
+               throw(SQL, "importTable", "%s. Failed to import table", 
be->mvc->errstr);
        bat2return(stk, pci, b);
        GDKfree(b);
        return MAL_SUCCEED;
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -121,7 +121,6 @@ sql5_export str mvc_scalar_value_wrap(Cl
 sql5_export str mvc_row_result_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str mvc_export_row_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str mvc_import_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
-sql5_export str mvc_import_table_stdin(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 sql5_export str mvc_bin_import_table_wrap(Client cntxt, MalBlkPtr mb, 
MalStkPtr stk, InstrPtr pci);
 sql5_export str setVariable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 sql5_export str getVariable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
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
@@ -353,12 +353,6 @@ address mvc_import_table_wrap
 comment "Import a table from bstream s with the 
        given tuple and seperators (sep/rsep)";
 
-pattern copyfrom{unsafe}( sname:str, tname:str, 
-       sep:str, rsep:str, ssep:str, ns:str, nr:lng, offset:lng, locked:int, 
best:int)(:bat[:oid,:any]...)
-address mvc_import_table_stdin
-comment "Import a table from bstream s with the 
-       given tuple and seperators (sep/rsep)";
-
 #command copy_errors() (efile:bat[:oid,:str], erow:bat[:oid,:int], 
efld:bat[:oid,:int], emsg:bat[:oid,:str], einp:bat[:oid,:str])
 #address mvc_import_errors
 #comment "Summary of the failed tuple imports";
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
@@ -1573,18 +1573,6 @@ sqltypeinit( sql_allocator *sa)
                        create_arg(sa, NULL, sql_create_subtype(sa, LNG, 0, 0), 
ARG_IN)), sres, FALSE, F_UNION, SCALE_FIX);
        f->varres = 1;
 
-       /* copyfrom stdin */
-       f = sql_create_func_(sa, "copyfrom", "sql", "copyfrom",
-               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)), 
-                       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);
-       f->varres = 1;
-
        /* bincopyfrom */
        f = sql_create_func_(sa, "copyfrom", "sql", "importTable",
                list_append(list_append(sa_list(sa), 
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
@@ -1056,7 +1056,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 = 7 + (filename != NULL);
+       int len = 8;
        sql_subfunc *f = sql_find_func(sql->sa, sys, "copyfrom", len, F_UNION); 
        
        if (!f) /* we do expect copyfrom to be there */
@@ -1071,8 +1071,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(
diff --git a/sql/test/utf8/run.all b/sql/test/utf8/run.all
--- a/sql/test/utf8/run.all
+++ b/sql/test/utf8/run.all
@@ -18,7 +18,7 @@
 # All Rights Reserved.
 
 PWD=`pwd`
-SQL="mclient -lsql -u monetdb -P monetdb"
+SQL="mclient -lsql -u monetdb"
 if [ $# -eq 1 ]; then
        SQL=$1
 fi
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to