Changeset: 0c8fdd94e5c8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0c8fdd94e5c8
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.mal
        sql/common/sql_types.c
        sql/server/rel_updates.c
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
Branch: default
Log Message:

Changing copyfrom MAL function signature to accept a schema and table name 
instead of a pointer. This allows clearer ouput from explain plans


diffs (truncated from 381 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -11679,7 +11679,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ",     
  "mvc_bind_idxbat_wrap;",        "Bind the 'schema.table.index' BAT with 
access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates"   ]
 [ "sql",       "clear_table",  "unsafe pattern sql.clear_table(sname:str, 
tname:str):lng ",    "mvc_clear_table_wrap;",        "Clear the table 
sname.tname."  ]
 [ "sql",       "commit",       "pattern sql.commit():void ",   "SQLcommit;",   
"Trigger the commit operation for a MAL block"  ]
-[ "sql",       "copy_from",    "unsafe pattern sql.copy_from(t:ptr, sep:str, 
rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, 
best:int, fwf:str, onclient:int):bat[:any]... ",   "mvc_import_table_wrap;",    
   "Import a table from bstream s with the \n\tgiven tuple and seperators 
(sep/rsep)"      ]
+[ "sql",       "copy_from",    "unsafe pattern sql.copy_from(sname:str, 
tname:str, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, 
locked:int, best:int, fwf:str, onclient:int):bat[:any]... ",    
"mvc_import_table_wrap;",       "Import a table from bstream s with the 
\n\tgiven tuple and seperators (sep/rsep)"      ]
 [ "sql",       "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], 
fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", ""      ]
 [ "sql",       "copy_rejects_clear",   "pattern sql.copy_rejects_clear():void 
",       "COPYrejects_clear;",   ""      ]
 [ "sql",       "count",        "pattern sql.count(b:any_1, ignils:bit, s:lng, 
e:lng):lng ",    "SQLcount;",    "return count of groups"        ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -16084,7 +16084,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "bind_idxbat",  "pattern sql.bind_idxbat(mvc:int, schema:str, 
table:str, index:str, access:int, part_nr:int, nr_parts:int):bat[:any_1] ",     
  "mvc_bind_idxbat_wrap;",        "Bind the 'schema.table.index' BAT with 
access kind:\n\t0 - base table\n\t1 - inserts\n\t2 - updates"   ]
 [ "sql",       "clear_table",  "unsafe pattern sql.clear_table(sname:str, 
tname:str):lng ",    "mvc_clear_table_wrap;",        "Clear the table 
sname.tname."  ]
 [ "sql",       "commit",       "pattern sql.commit():void ",   "SQLcommit;",   
"Trigger the commit operation for a MAL block"  ]
-[ "sql",       "copy_from",    "unsafe pattern sql.copy_from(t:ptr, sep:str, 
rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, locked:int, 
best:int, fwf:str, onclient:int):bat[:any]... ",   "mvc_import_table_wrap;",    
   "Import a table from bstream s with the \n\tgiven tuple and seperators 
(sep/rsep)"      ]
+[ "sql",       "copy_from",    "unsafe pattern sql.copy_from(sname:str, 
tname:str, sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, 
locked:int, best:int, fwf:str, onclient:int):bat[:any]... ",    
"mvc_import_table_wrap;",       "Import a table from bstream s with the 
\n\tgiven tuple and seperators (sep/rsep)"      ]
 [ "sql",       "copy_rejects", "pattern sql.copy_rejects() (rowid:bat[:lng], 
fldid:bat[:int], msg:bat[:str], inp:bat[:str]) ", "COPYrejects;", ""      ]
 [ "sql",       "copy_rejects_clear",   "pattern sql.copy_rejects_clear():void 
",       "COPYrejects_clear;",   ""      ]
 [ "sql",       "count",        "pattern sql.count(b:any_1, ignils:bit, s:lng, 
e:lng):lng ",    "SQLcount;",    "return count of groups"        ]
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
--- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
+++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
@@ -59,15 +59,15 @@ stdout of test 'opt_sql_append` in direc
 % .explain # table_name
 % mal # name
 % clob # type
-% 186 # length
+% 193 # length
 function user.s10_0():void;
-    X_1:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';":str, "sequential_pipe":str, 22:int);
+    X_1:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';":str, "sequential_pipe":str, 23:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x2e73790:ptr, "|":str, "\n":str, nil:str, "null":str, 
"/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from("sys":str, "ttt":str, "|":str, "\n":str, nil:str, "null":str, 
"/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_28:bat[:int]);
+    X_35:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
+    X_40:lng := aggr.count(X_30:bat[:int]);
     sql.affectedRows(X_38:int, X_40:lng);
 end user.s10_0;
 #inline               actions= 0 time=1 usec 
@@ -118,15 +118,15 @@ end user.s10_0;
 % .explain # table_name
 % mal # name
 % clob # type
-% 186 # length
+% 193 # length
 function user.s26_0():void;
-    X_1:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';":str, "user_0":str, 22:int);
+    X_1:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';":str, "user_0":str, 23:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x2e73790:ptr, "|":str, "\n":str, nil:str, "null":str, 
"/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from("sys":str, "ttt":str, "|":str, "\n":str, nil:str, "null":str, 
"/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_28:bat[:int]);
+    X_35:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_40:lng := aggr.count(X_30:bat[:int]);
+    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
     sql.affectedRows(X_38:int, X_40:lng);
 end user.s26_0;
 #inline               actions= 0 time=1 usec 
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
--- 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
+++ 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
@@ -70,15 +70,15 @@ stdout of test 'opt_sql_append` in direc
 % .explain # table_name
 % mal # name
 % clob # type
-% 183 # length
+% 190 # length
 function user.s10_0():void;
-    X_1:void := querylog.define("explain copy into ttt from 
E\\'a:\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 22:int);
+    X_1:void := querylog.define("explain copy into ttt from 
E\\'a:\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 23:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x2e73790:ptr, "|":str, "\n":str, nil:str, "null":str, 
"a:\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from("sys":str, "ttt":str, "|":str, "\n":str, nil:str, "null":str, 
"a:\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_28:bat[:int]);
+    X_35:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
+    X_40:lng := aggr.count(X_30:bat[:int]);
     sql.affectedRows(X_38:int, X_40:lng);
 end user.s10_0;
 #inline               actions= 0 time=1 usec 
@@ -125,15 +125,15 @@ end user.s10_0;
 % .explain # table_name
 % mal # name
 % clob # type
-% 182 # length
+% 189 # length
 function user.s26_0():void;
-    X_1:void := querylog.define("explain copy into ttt from 
\\'Z:/tmp/xyz\\';":str, "user_0":str, 22:int);
+    X_1:void := querylog.define("explain copy into ttt from 
\\'Z:/tmp/xyz\\';":str, "user_0":str, 23:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x2e73790:ptr,, "|":str, "\n":str, nil:str, "null":str, 
"Z:/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from("sys":str, "ttt":str, "|":str, "\n":str, nil:str, "null":str, 
"Z:/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_28:bat[:int]);
+    X_35:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_40:lng := aggr.count(X_30:bat[:int]);
+    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
     sql.affectedRows(X_38:int, X_40:lng);
 end user.s26_0;
 #inline               actions= 0 time=0 usec 
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
@@ -3027,20 +3027,24 @@ str
 mvc_import_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        backend *be;
+       mvc *sql;
        BAT **b = NULL;
        ssize_t len = 0;
-       sql_table *t = *(sql_table **) getArgReference(stk, pci, pci->retc + 0);
-       const char *tsep = *getArgReference_str(stk, pci, pci->retc + 1);
-       const char *rsep = *getArgReference_str(stk, pci, pci->retc + 2);
-       const char *ssep = *getArgReference_str(stk, pci, pci->retc + 3);
-       const char *ns = *getArgReference_str(stk, pci, pci->retc + 4);
-       const char *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);
-       char *fixed_widths = *getArgReference_str(stk, pci, pci->retc + 10);
-       int onclient = *getArgReference_int(stk, pci, pci->retc + 11);
+       sql_schema *sch = NULL;
+       sql_table *t = NULL;
+       const char *sname = *getArgReference_str(stk, pci, pci->retc + 0);
+       const char *tname = *getArgReference_str(stk, pci, pci->retc + 1);
+       const char *tsep = *getArgReference_str(stk, pci, pci->retc + 2);
+       const char *rsep = *getArgReference_str(stk, pci, pci->retc + 3);
+       const char *ssep = *getArgReference_str(stk, pci, pci->retc + 4);
+       const char *ns = *getArgReference_str(stk, pci, pci->retc + 5);
+       const char *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);
+       char *fixed_widths = *getArgReference_str(stk, pci, pci->retc + 11);
+       int onclient = *getArgReference_int(stk, pci, pci->retc + 12);
        str msg = MAL_SUCCEED;
        bstream *s = NULL;
        stream *ss;
@@ -3048,11 +3052,17 @@ mvc_import_table_wrap(Client cntxt, MalB
        (void) mb;              /* NOT USED */
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
-       if (onclient && !cntxt->filetrans) {
-               throw(MAL, "sql.copy_from", "cannot transfer files from 
client");
-       }
+       if (onclient && !cntxt->filetrans)
+               throw(SQL, "sql.copy_from", SQLSTATE(42000) "Cannot transfer 
files from client");
 
        be = cntxt->sqlcontext;
+       sql = be->mvc;
+
+       if (!(sch = mvc_bind_schema(sql, sname)))
+               throw(SQL, "sql.copy_from", SQLSTATE(3F000) "Schema missing 
%s", sname);
+       if (!(t = mvc_bind_table(sql, sch, tname)))
+               throw(SQL, "sql.copy_from", SQLSTATE(42S02) "Table missing %s", 
tname);
+
        /* The CSV parser expects ssep to have the value 0 if the user does not
         * specify a quotation character
         */
@@ -3280,19 +3290,17 @@ mvc_bin_import_table_wrap(Client cntxt, 
        if ((msg = checkSQLContext(cntxt)) != NULL)
                return msg;
 
-       if ((s = mvc_bind_schema(m, sname)) == NULL)
-               throw(SQL, "sql.import_table", SQLSTATE(3F000) "Schema missing 
%s",sname);
-       t = mvc_bind_table(m, s, tname);
-       if (!t)
-               throw(SQL, "sql", SQLSTATE(42S02) "Table missing %s", tname);
+       if (!(s = mvc_bind_schema(m, sname)))
+               throw(SQL, "sql.import_table", SQLSTATE(3F000) "Schema missing 
%s", sname);
+       if (!(t = mvc_bind_table(m, s, tname)))
+               throw(SQL, "sql.import_table", SQLSTATE(42S02) "Table missing 
%s", tname);
        if (list_length(t->columns.set) != (pci->argc - (3 + pci->retc)))
-               throw(SQL, "sql", SQLSTATE(42000) "Not enough columns found in 
input file");
+               throw(SQL, "sql.import_table", SQLSTATE(42000) "Not enough 
columns found in input file");
        if (2 * pci->retc + 3 != pci->argc)
-               throw(SQL, "sql", SQLSTATE(42000) "Not enough output values");
-
-       if (onclient && !cntxt->filetrans) {
-               throw(MAL, "sql.copy_from", "cannot transfer files from 
client");
-       }
+               throw(SQL, "sql.import_table", SQLSTATE(42000) "Not enough 
output values");
+
+       if (onclient && !cntxt->filetrans)
+               throw(SQL, "sql.copy_from", SQLSTATE(42000) "Cannot transfer 
files from client");
 
        backend *be = cntxt->sqlcontext;
 
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
@@ -347,7 +347,7 @@ unsafe pattern affectedRows(mvc:int, nr:
 address mvc_affected_rows_wrap
 comment "export the number of affected rows by the current query";
 
-unsafe pattern copy_from( t:ptr, 
+unsafe pattern copy_from( sname:str, tname:str, 
        sep:str, rsep:str, ssep:str, ns:str, fname:str, nr:lng, offset:lng, 
locked:int, best:int, fwf:str, onclient:int) (:bat[:any]...)
 address mvc_import_table_wrap
 comment "Import a table from bstream s with the 
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
@@ -1462,7 +1462,7 @@ sqltypeinit( sql_allocator *sa)
        sql_type *SECINT, *MONINT, *DTE;
        sql_type *TME, *TMETZ, *TMESTAMP, *TMESTAMPTZ;
        sql_type *BLOB;
-       sql_type *ANY, *TABLE, *PTR;
+       sql_type *ANY, *TABLE;
        sql_type *GEOM, *MBR;
        sql_func *f;
        sql_arg *sres;
@@ -1472,7 +1472,7 @@ sqltypeinit( sql_allocator *sa)
 
        t = ts;
        TABLE = *t++ = sql_create_type(sa, "TABLE", 0, 0, 0, EC_TABLE, "bat");
-       PTR = *t++ = sql_create_type(sa, "PTR", 0, 0, 0, EC_TABLE, "ptr");
+       *t++ = sql_create_type(sa, "PTR", 0, 0, 0, EC_TABLE, "ptr");
 
        BIT = *t++ = sql_create_type(sa, "BOOLEAN", 1, 0, 2, EC_BIT, "bit");
        sql_create_alias(sa, BIT->sqlname, "BOOL");
@@ -2219,8 +2219,9 @@ sqltypeinit( sql_allocator *sa)
        sres = create_arg(sa, NULL, sql_create_subtype(sa, TABLE, 0, 0), 
ARG_OUT); 
        /* copyfrom fname (arg 12) */
        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 
(list_append(list_append(list_append(list_append(sa_list(sa),
-                       create_arg(sa, NULL, sql_create_subtype(sa, PTR, 0, 0), 
ARG_IN)), 
+               list_append( list_append( list_append( list_append( 
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)), 
                        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)), 
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
@@ -1578,15 +1578,16 @@ rel_import(mvc *sql, sql_table *t, const
        sql_subtype tpe;
        sql_exp *import;
        sql_schema *sys = mvc_bind_schema(sql, "sys");
-       sql_subfunc *f = sql_find_func(sql->sa, sys, "copyfrom", 12, F_UNION, 
NULL);
+       sql_subfunc *f = sql_find_func(sql->sa, sys, "copyfrom", 13, F_UNION, 
NULL);
        char *fwf_string = NULL;
        
        if (!f) /* we do expect copyfrom to be there */
                return NULL;
        f->res = table_column_types(sql->sa, t);
        sql_find_subtype(&tpe, "varchar", 0, 0);
-       args = append( append( append( append( append( new_exp_list(sql->sa), 
-               exp_atom_ptr(sql->sa, t)), 
+       args = append( append( append( append( append( append( 
new_exp_list(sql->sa), 
+               exp_atom_str(sql->sa, t->s->base.name, &tpe)), 
+               exp_atom_str(sql->sa, t->base.name, &tpe)), 
                exp_atom_str(sql->sa, tsep, &tpe)), 
                exp_atom_str(sql->sa, rsep, &tpe)), 
                exp_atom_str(sql->sa, ssep, &tpe)), 
diff --git a/sql/test/emptydb/Tests/check.stable.out 
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -2379,7 +2379,7 @@ drop function pcre_replace(string, strin
 [ "sys",       "concat",       "SYSTEM",       "+",    "calc", "Internal C",   
"Scalar function",      false,  false,  false,  "res_0",        "clob", 0,      
0,      "out",  "arg_1",        "clob", 0,      0,      "in",   "arg_2",        
"clob", 0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys",       "concat",       "SYSTEM",       "+",    "calc", "Internal C",   
"Scalar function",      false,  false,  false,  "res_0",        "varchar",      
0,      0,      "out",  "arg_1",        "varchar",      0,      0,      "in",   
"arg_2",        "varchar",      0,      0,      "in",   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL    ]
 [ "sys",       "contains",     "SYSTEM",       "create function contains(a 
geometry, x double, y double) returns boolean external name 
geom.\"Contains\";",    "geom", "MAL",  "Scalar function",      false,  false,  
false,  "result",       "boolean",      1,      0,      "out",  "a",    
"geometry",     0,      0,      "in",   "x",    "double",       53,     0,      
"in",   "y",    "double",       53,     0,      "in",   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
-[ "sys",       "copyfrom",     "SYSTEM",       "copy_from",    "sql",  
"Internal C",   "Function returning a table",   false,  true,   false,  
"res_0",        "table",        0,      0,      "out",  "arg_1",        "ptr",  
0,      0,      "in",   "arg_2",        "varchar",      0,      0,      "in",   
"arg_3",        "varchar",      0,      0,      "in",   "arg_4",        
"varchar",      0,      0,      "in",   "arg_5",        "varchar",      0,      
0,      "in",   "arg_6",        "varchar",      0,      0,      "in",   
"arg_7",        "bigint",       64,     0,      "in",   "arg_8",        
"bigint",       64,     0,      "in",   "arg_9",        "int",  32,     0,      
"in",   "arg_10",       "int",  32,     0,      "in",   "arg_11",       
"varchar",      0,      0,      "in",   "arg_12",       "int",  32,     0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
+[ "sys",       "copyfrom",     "SYSTEM",       "copy_from",    "sql",  
"Internal C",   "Function returning a table",   false,  true,   false,  
"res_0",        "table",        0,      0,      "out",  "arg_1",        
"varchar",      0,      0,      "in",   "arg_2",        "varchar",      0,      
0,      "in",   "arg_3",        "varchar",      0,      0,      "in",   
"arg_4",        "varchar",      0,      0,      "in",   "arg_5",        
"varchar",      0,      0,      "in",   "arg_6",        "varchar",      0,      
0,      "in",   "arg_7",        "varchar",      0,      0,      "in",   
"arg_8",        "bigint",       64,     0,      "in",   "arg_9",        
"bigint",       64,     0,      "in",   "arg_10",       "int",  32,     0,      
"in",   "arg_11",       "int",  32,     0,      "in",   "arg_12",       
"varchar",      0,      0,      "in",   "arg_13",       "int",  32,     0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL    ]
 [ "sys",       "copyfrom",     "SYSTEM",       "importTable",  "sql",  
"Internal C",   "Function returning a table",   false,  true,   false,  
"res_0",        "table",        0,      0,      "out",  "arg_1",        
"varchar",      0,      0,      "in",   "arg_2",        "varchar",      0,      
0,      "in",   "arg_3",        "int",  32,     0,      "in",   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys",       "corr", "SYSTEM",       "create aggregate corr(e1 bigint, e2 
bigint) returns double external name \"aggr\".\"corr\";",  "aggr", "MAL",  
"Aggregate function",   false,  false,  false,  "result",       "double",       
53,     0,      "out",  "e1",   "bigint",       64,     0,      "in",   "e2",   
"bigint",       64,     0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    
]
 [ "sys",       "corr", "SYSTEM",       "create aggregate corr(e1 double, e2 
double) returns double external name \"aggr\".\"corr\";",  "aggr", "MAL",  
"Aggregate function",   false,  false,  false,  "result",       "double",       
53,     0,      "out",  "e1",   "double",       53,     0,      "in",   "e2",   
"double",       53,     0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    
]
diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit 
b/sql/test/emptydb/Tests/check.stable.out.32bit
--- a/sql/test/emptydb/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb/Tests/check.stable.out.32bit
@@ -2371,7 +2371,7 @@ drop function pcre_replace(string, strin
 [ "sys",       "concat",       "SYSTEM",       "+",    "calc", "Internal C",   
"Scalar function",      false,  false,  false,  "res_0",        "clob", 0,      
0,      "out",  "arg_1",        "clob", 0,      0,      "in",   "arg_2",        
"clob", 0,      0,      "in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
 [ "sys",       "concat",       "SYSTEM",       "+",    "calc", "Internal C",   
"Scalar function",      false,  false,  false,  "res_0",        "varchar",      
0,      0,      "out",  "arg_1",        "varchar",      0,      0,      "in",   
"arg_2",        "varchar",      0,      0,      "in",   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL    ]
 [ "sys",       "contains",     "SYSTEM",       "create function contains(a 
geometry, x double, y double) returns boolean external name 
geom.\"Contains\";",    "geom", "MAL",  "Scalar function",      false,  false,  
false,  "result",       "boolean",      1,      0,      "out",  "a",    
"geometry",     0,      0,      "in",   "x",    "double",       53,     0,      
"in",   "y",    "double",       53,     0,      "in",   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
-[ "sys",       "copyfrom",     "SYSTEM",       "copy_from",    "sql",  
"Internal C",   "Function returning a table",   false,  true,   false,  
"res_0",        "table",        0,      0,      "out",  "arg_1",        "ptr",  
0,      0,      "in",   "arg_2",        "varchar",      0,      0,      "in",   
"arg_3",        "varchar",      0,      0,      "in",   "arg_4",        
"varchar",      0,      0,      "in",   "arg_5",        "varchar",      0,      
0,      "in",   "arg_6",        "varchar",      0,      0,      "in",   
"arg_7",        "bigint",       64,     0,      "in",   "arg_8",        
"bigint",       64,     0,      "in",   "arg_9",        "int",  32,     0,      
"in",   "arg_10",       "int",  32,     0,      "in",   "arg_11",       
"varchar",      0,      0,      "in",   "arg_12",       "int",  32,     0,      
"in",   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
NULL,   NULL,   NULL,   NULL,   NULL,   NULL    ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to