Changeset: f3df7e46c1c6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f3df7e46c1c6
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
Branch: directappend
Log Message:

Creaet MAL function sql.append_from


diffs (68 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
@@ -3141,6 +3141,45 @@ mvc_import_table_wrap(Client cntxt, MalB
        return msg;
 }
 
+
+str
+mvc_append_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+       str msg = MAL_SUCCEED;
+
+       if ((msg = checkSQLContext(cntxt)) != NULL)
+               return msg;
+       (void)mb;
+       backend *be = cntxt->sqlcontext;
+
+       sql_table *t = *(sql_table **) getArgReference(stk, pci, pci->retc + 0);
+       struct csv_parameters csv_parms = {
+               .tsep = *getArgReference_str(stk, pci, pci->retc + 1),
+               .rsep = *getArgReference_str(stk, pci, pci->retc + 2),
+               .ssep = *getArgReference_str(stk, pci, pci->retc + 3),
+               .ns = *getArgReference_str(stk, pci, pci->retc + 4),
+               .filename = *getArgReference_str(stk, pci, pci->retc + 5),
+               .nr = *getArgReference_lng(stk, pci, pci->retc + 6),
+               .offset = *getArgReference_lng(stk, pci, pci->retc + 7),
+               .best = *getArgReference_int(stk, pci, pci->retc + 8),
+               .fixed_widths = *getArgReference_str(stk, pci, pci->retc + 9),
+               .onclient = *getArgReference_int(stk, pci, pci->retc + 10),
+               .escape = *getArgReference_int(stk, pci, pci->retc + 11),
+       };
+
+       bstream *bs;
+       bool from_stdin;
+       BAT **b = NULL;
+       msg = setup_import_table_stream(cntxt, &csv_parms, &bs, &from_stdin);
+       msg = mvc_import_table(cntxt, &b, be->mvc, bs, from_stdin, t, 
&csv_parms, true);
+       teardown_import_table_stream(cntxt, &csv_parms, bs);
+
+       if (b && !msg)
+               bat2return(stk, pci, b);
+       GDKfree(b);
+       return msg;
+}
+
 str
 not_unique(bit *ret, const bat *bid)
 {
@@ -5285,6 +5324,7 @@ static mel_func sql_init_funcs[] = {
  pattern("sql", "exportOperation", mvc_export_operation_wrap, true, "Export 
result of schema/transaction queries", args(1,1, arg("",void))),
  pattern("sql", "affectedRows", mvc_affected_rows_wrap, true, "export the 
number of affected rows by the current query", args(1,3, 
arg("",int),arg("mvc",int),arg("nr",lng))),
  pattern("sql", "copy_from", mvc_import_table_wrap, true, "Import a table from 
bstream s with the \ngiven tuple and seperators (sep/rsep)", args(1,13, 
batvarargany("",0),arg("t",ptr),arg("sep",str),arg("rsep",str),arg("ssep",str),arg("ns",str),arg("fname",str),arg("nr",lng),arg("offset",lng),arg("best",int),arg("fwf",str),arg("onclient",int),arg("escape",int))),
+ pattern("sql", "append_from", mvc_append_table_wrap, true, "Import a table 
from bstream s with the \ngiven tuple and separators (sep/rsep)", args(1,13, 
batarg("",oid),arg("t",ptr),arg("sep",str),arg("rsep",str),arg("ssep",str),arg("ns",str),arg("fname",str),arg("nr",lng),arg("offset",lng),arg("best",int),arg("fwf",str),arg("onclient",int),arg("escape",int))),
  //we use bat.single now
  //pattern("sql", "single", CMDBATsingle, false, "", args(1,2, 
batargany("",2),argany("x",2))),
  pattern("sql", "importTable", mvc_bin_import_table_wrap, true, "Import a 
table from the files (fname)", args(1,6, 
batvarargany("",0),arg("sname",str),arg("tname",str),arg("onclient",int),arg("bswap",bit),vararg("fname",str))),
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
@@ -89,6 +89,7 @@ extern str mvc_scalar_value_wrap(Client 
 extern str mvc_row_result_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 extern str mvc_export_row_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 extern str mvc_import_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+extern str mvc_append_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 extern str mvc_bin_import_table_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 extern str mvc_bin_import_column_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
 extern str setVariable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to