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