Changeset: 0d132cd84f21 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0d132cd84f21 Modified Files: tools/embeddedpy/embeddedpy.c Branch: pyapi Log Message:
Support SQL types for monetdblite.insert. diffs (58 lines): diff --git a/tools/embeddedpy/embeddedpy.c b/tools/embeddedpy/embeddedpy.c --- a/tools/embeddedpy/embeddedpy.c +++ b/tools/embeddedpy/embeddedpy.c @@ -44,7 +44,7 @@ str monetdb_query(char* query, void** re str monetdb_create_table(char *schema, char *table_name, append_data *ad, int ncols); str monetdb_append(const char* schema, const char* table, append_data *ad, int ncols); void monetdb_cleanup_result(void* output); -static str monetdb_get_columns(const char* schema_name, const char *table_name, int *column_count, char ***column_names, int **column_types) ; +static str monetdb_get_columns(const char* schema_name, const char *table_name, int *column_count, char ***column_names, int **column_types, sql_subtype ***sql_subtypes); static bit monetdb_embedded_initialized = 0; static MT_Lock monetdb_embedded_lock; @@ -237,9 +237,10 @@ PyObject *monetdb_insert(PyObject *self, int i; char **column_names = NULL; int *column_types = NULL; + sql_subtype **sql_subtypes = NULL; int columns = 0; - msg = monetdb_get_columns(schema_name, table_name, &columns, &column_names, &column_types); + msg = monetdb_get_columns(schema_name, table_name, &columns, &column_names, &column_types, &sql_subtypes); pResult = PyObject_CheckForConversion(values, columns, NULL, &msg); if (pResult == NULL) goto cleanup; @@ -252,7 +253,7 @@ PyObject *monetdb_insert(PyObject *self, append_bats[i].colname = column_names[i]; } for(i = 0; i < columns; i++) { - BAT *b = PyObject_ConvertToBAT(&pyreturn_values[i], NULL, column_types[i], i, 0, &msg, true); + BAT *b = PyObject_ConvertToBAT(&pyreturn_values[i], sql_subtypes[i], column_types[i], i, 0, &msg, true); if (b == NULL) goto cleanup; append_bats[i].batid = b->batCacheid; @@ -485,7 +486,7 @@ void monetdb_cleanup_result(void* output (*res_table_destroy_ptr)((res_table*) output); } -static str monetdb_get_columns(const char* schema_name, const char *table_name, int *column_count, char ***column_names, int **column_types) +static str monetdb_get_columns(const char* schema_name, const char *table_name, int *column_count, char ***column_names, int **column_types, sql_subtype ***sql_subtypes) { Client c = &mal_clients[0]; mvc *m; @@ -511,6 +512,7 @@ static str monetdb_get_columns(const cha *column_count = columns; *column_names = GDKzalloc(sizeof(char*) * columns); *column_types = GDKzalloc(sizeof(int) * columns); + *sql_subtypes = GDKzalloc(sizeof(sql_subtype*) * columns); if (*column_names == NULL || *column_types == NULL) { return MAL_MALLOC_FAIL; @@ -520,6 +522,7 @@ static str monetdb_get_columns(const cha sql_column *c = n->data; (*column_names)[c->colnr] = c->base.name; (*column_types)[c->colnr] = c->type.type->localtype; + (*sql_subtypes)[c->colnr] = &c->type; } return msg; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list