Changeset: 0085ba3508be for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0085ba3508be
Modified Files:
        tools/embedded/embedded.c
Branch: embedded
Log Message:

Actually adding BATs to tables!


diffs (87 lines):

diff --git a/tools/embedded/embedded.c b/tools/embedded/embedded.c
--- a/tools/embedded/embedded.c
+++ b/tools/embedded/embedded.c
@@ -37,6 +37,10 @@ typedef sql_schema* (*mvc_bind_schema_pt
 mvc_bind_schema_ptr_tpe mvc_bind_schema_ptr = NULL;
 typedef sql_table* (*mvc_bind_table_ptr_tpe)(mvc*, sql_schema*, const char*);
 mvc_bind_table_ptr_tpe mvc_bind_table_ptr = NULL;
+typedef int (*sqlcleanup_ptr_tpe)(mvc*, int);
+sqlcleanup_ptr_tpe sqlcleanup_ptr = NULL;
+typedef void (*mvc_trans_ptr_tpe)(mvc*);
+mvc_trans_ptr_tpe mvc_trans_ptr = NULL;
 
 static bit monetdb_embedded_initialized = 0;
 static MT_Lock monetdb_embedded_lock;
@@ -93,11 +97,14 @@ int monetdb_startup(char* dir, char sile
        mvc_append_wrap_ptr = (mvc_append_wrap_ptr_tpe)  
lookup_function("lib_sql", "mvc_append_wrap");
        mvc_bind_schema_ptr = (mvc_bind_schema_ptr_tpe)  
lookup_function("lib_sql", "mvc_bind_schema");
        mvc_bind_table_ptr = (mvc_bind_table_ptr_tpe)  
lookup_function("lib_sql", "mvc_bind_table");
+       sqlcleanup_ptr = (sqlcleanup_ptr_tpe)  lookup_function("lib_sql", 
"sqlcleanup");
+       mvc_trans_ptr = (mvc_trans_ptr_tpe) lookup_function("lib_sql", 
"mvc_trans");
 
        if (SQLstatementIntern_ptr == NULL || SQLautocommit_ptr == NULL ||
                        SQLinitClient_ptr == NULL || getSQLContext_ptr == NULL 
||
                        res_table_destroy_ptr == NULL || mvc_append_wrap_ptr == 
NULL ||
-                       mvc_bind_schema_ptr == NULL || mvc_bind_table_ptr == 
NULL) {
+                       mvc_bind_schema_ptr == NULL || mvc_bind_table_ptr == 
NULL ||
+                       sqlcleanup_ptr == NULL || mvc_trans_ptr == NULL) {
                retval = -4;
                goto cleanup;
        }
@@ -159,8 +166,10 @@ char* monetdb_append(const char* schema,
        InstrRecord*  pci = NULL;
        str res = MAL_SUCCEED;
        VarRecord bat_varrec;
+       mvc* m = ((backend *) mal_clients[0].sqlcontext)->mvc;
 
        assert(table != NULL && data != NULL && col_ct > 0);
+
        // very black MAL magic below
        mb.var = GDKmalloc(6 * sizeof(VarRecord*));
        stk = GDKmalloc(sizeof(MalStack) + nvar * sizeof(ValRecord));
@@ -178,7 +187,7 @@ char* monetdb_append(const char* schema,
        stk->stk[4].vtype = TYPE_str;
        stk->stk[5].vtype = TYPE_bat;
        mb.var[5] = &bat_varrec;
-
+       (*mvc_trans_ptr)(m);
        for (i=0; i < col_ct; i++) {
                append_data ad = data[i];
                stk->stk[4].val.sval = ad.colname;
@@ -189,6 +198,10 @@ char* monetdb_append(const char* schema,
                        break;
                }
        }
+       if (res == MAL_SUCCEED) {
+//             m->emod = 16;
+               (*sqlcleanup_ptr)(m, 0);
+       }
        GDKfree(mb.var);
        GDKfree(stk);
        GDKfree(pci);
@@ -341,7 +354,7 @@ static str monetdb_get_columns(const cha
        sql_table *t;
        char *msg = MAL_SUCCEED;
        int columns;
-       int i;
+       node *n;
 
        assert(column_count != NULL && column_names != NULL && column_types != 
NULL);
 
@@ -364,11 +377,12 @@ static str monetdb_get_columns(const cha
                return MAL_MALLOC_FAIL;
        }
 
-       for(i = 0; i < columns; i++) {
-               int acol = ((sql_column*)t->columns.set->h->data)[i].colnr;
-               *column_names[acol] = 
((sql_base*)t->columns.set->h->data)[i].name;
-               *column_types[acol] = 
((sql_column*)t->columns.set->h->data)[i].type.type->localtype;
+       for (n = t->columns.set->h; n; n = n->next) {
+               sql_column *c = n->data;
+               (*column_names)[c->colnr] = c->base.name;
+               (*column_types)[c->colnr] = c->type.type->localtype;
        }
+
        return msg;
 }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to