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