Changeset: 0aeed274e6a5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0aeed274e6a5
Modified Files:
        sql/backends/monet5/sql_wlcr.c
Branch: wlcr
Log Message:

Framework for update propagation


diffs (70 lines):

diff --git a/sql/backends/monet5/sql_wlcr.c b/sql/backends/monet5/sql_wlcr.c
--- a/sql/backends/monet5/sql_wlcr.c
+++ b/sql/backends/monet5/sql_wlcr.c
@@ -275,6 +275,7 @@ CLONEquery(Client cntxt, MalBlkPtr mb, M
 str
 CLONEgeneric(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
+       // currently they are informative only
        (void) cntxt;
        (void) mb;
        (void) stk;
@@ -284,13 +285,53 @@ CLONEgeneric(Client cntxt, MalBlkPtr mb,
 
 str
 CLONEappend(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
-       (void) cntxt;
-       (void) mb;
-       (void) stk;
-       (void) pci;
+{      str sname, tname, cname;
+    int tpe,i;
+       mvc *m=NULL;
+       sql_schema *s;
+       sql_table *t;
+       sql_column *c;
+       BAT *ins = 0;
+       str msg;
+
+       sname = *getArgReference_str(stk,pci,2);
+       tname = *getArgReference_str(stk,pci,3);
+       cname = *getArgReference_str(stk,pci,4);
+
+       if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
+               return msg;
+       if ((msg = checkSQLContext(cntxt)) != NULL)
+               return msg;
+
+       s = mvc_bind_schema(m, sname);
+       if (s == NULL)
+               throw(SQL, "sql.append", "Schema missing");
+       t = mvc_bind_table(m, s, tname);
+       if (t == NULL)
+               throw(SQL, "sql.append", "Table missing");
+       // get the data into local BAT
+
+       tpe= getArgType(mb,pci,5);
+       ins = COLnew(0, tpe, 0, TRANSIENT);
+       if( ins == NULL){
+               throw(SQL,"CLONEappend",MAL_MALLOC_FAIL);
+       }
+
+       for( i = 5; i < pci->argc; i++)
+               BATappend(ins, NULL, (void*) getArgReference(stk,pci,i), FALSE);
+
+       if (cname[0] != '%' && (c = mvc_bind_column(m, t, cname)) != NULL) {
+               store_funcs.append_col(m->session->tr, c, ins, tpe);
+       } else if (cname[0] == '%') {
+               sql_idx *i = mvc_bind_idx(m, s, cname + 1);
+               if (i)
+                       store_funcs.append_idx(m->session->tr, i, ins, tpe);
+       }
+       BBPunfix(((BAT *) ins)->batCacheid);
+
        return MAL_SUCCEED;
 }
+
 str
 CLONEdelete(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