Changeset: 6d72728f645e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/6d72728f645e Modified Files: sql/backends/monet5/sql_result.c tools/monetdbe/monetdbe.c Branch: monetdbe_prepare Log Message:
Minimize difference in PREPARE output. diffs (144 lines): diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c --- a/sql/backends/monet5/sql_result.c +++ b/sql/backends/monet5/sql_result.c @@ -861,7 +861,7 @@ static int create_prepare_result(backend *b, cq *q, int nrows) { int error = -1; - BAT* btype = COLnew(0, TYPE_int, nrows, TRANSIENT); + BAT* btype = COLnew(0, TYPE_str, nrows, TRANSIENT); BAT* bimpl = COLnew(0, TYPE_str, nrows, TRANSIENT); BAT* bdigits = COLnew(0, TYPE_int, nrows, TRANSIENT); BAT* bscale = COLnew(0, TYPE_int, nrows, TRANSIENT); @@ -927,7 +927,7 @@ create_prepare_result(backend *b, cq *q, if (!name) name = ""; - if ( BUNappend(btype, &t->type->localtype , false) != GDK_SUCCEED || + if ( BUNappend(btype, t->type->base.name , false) != GDK_SUCCEED || BUNappend(bimpl, t->type->impl , false) != GDK_SUCCEED || BUNappend(bdigits, &t->digits , false) != GDK_SUCCEED || BUNappend(bscale, &t->scale , false) != GDK_SUCCEED || @@ -949,7 +949,7 @@ create_prepare_result(backend *b, cq *q, a = n->data; t = &a->type; - if ( BUNappend(btype, &t->type->localtype , false) != GDK_SUCCEED || + if ( BUNappend(btype, t->type->base.name , false) != GDK_SUCCEED || BUNappend(bimpl, t->type->impl , false) != GDK_SUCCEED || BUNappend(bdigits, &t->digits , false) != GDK_SUCCEED || BUNappend(bscale, &t->scale , false) != GDK_SUCCEED || @@ -962,7 +962,7 @@ create_prepare_result(backend *b, cq *q, // A little hack to inform the result receiver of the name of the compiled mal program. if (b->client->protocol == PROTOCOL_COLUMNAR) { - if ( BUNappend(btype, &int_nil , false) != GDK_SUCCEED || + if ( BUNappend(btype, str_nil , false) != GDK_SUCCEED || BUNappend(bimpl, str_nil , false) != GDK_SUCCEED || BUNappend(bdigits, &int_nil , false) != GDK_SUCCEED || BUNappend(bscale, &int_nil , false) != GDK_SUCCEED || @@ -982,11 +982,11 @@ create_prepare_result(backend *b, cq *q, b->results, order); - if ( mvc_result_column(b, "prepare", "type" , "varchar", len1, 0, btype) || + if ( mvc_result_column(b, "prepare", "type" , "varchar", len1, 0, btype ) || mvc_result_column(b, "prepare", "digits" , "int", len2, 0, bdigits) || - mvc_result_column(b, "prepare", "scale" , "int", len3, 0, bscale) || + mvc_result_column(b, "prepare", "scale" , "int", len3, 0, bscale ) || mvc_result_column(b, "prepare", "schema" , "varchar", len4, 0, bschema) || - mvc_result_column(b, "prepare", "table" , "varchar", len5, 0, btable) || + mvc_result_column(b, "prepare", "table" , "varchar", len5, 0, btable ) || mvc_result_column(b, "prepare", "column" , "varchar", len6, 0, bcolumn)) goto wrapup; @@ -996,13 +996,13 @@ create_prepare_result(backend *b, cq *q, error = 0; wrapup: - BBPreclaim(btype); - BBPreclaim(bdigits); - BBPreclaim(bscale); - BBPreclaim(bschema); - BBPreclaim(btable); - BBPreclaim(bcolumn); - BBPreclaim(order); + BBPunfix(btype ->batCacheid); + BBPunfix(bdigits->batCacheid); + BBPunfix(bscale ->batCacheid); + BBPunfix(bschema->batCacheid); + BBPunfix(btable ->batCacheid); + BBPunfix(bcolumn->batCacheid); + BBPunfix(order ->batCacheid); return error; } diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c --- a/tools/monetdbe/monetdbe.c +++ b/tools/monetdbe/monetdbe.c @@ -1064,7 +1064,7 @@ monetdbe_set_remote_results(backend *be, } BAT* order = BATdense(0, 0, BATcount(b_0)); - if (mvc_result_table(be, 0, (int) nr_results, Q_TABLE, order)) { + if (mvc_result_table(be, 0, (int) nr_results, Q_TABLE, order) < 0) { BBPreclaim(order); BBPunfix(b_0->batCacheid); error = createException(MAL,"monetdbe.monetdbe_set_remote_results",SQLSTATE(HY005) "Cannot create result table"); @@ -1148,6 +1148,7 @@ monetdbe_prepare_cb(void* context, char* BAT* bimpl = NULL; size_t nparams = 0; + BATiter btype_iter = {0}; BATiter bcolumn_iter = {0}; BATiter btable_iter = {0}; BATiter bimpl_iter = {0}; @@ -1189,6 +1190,7 @@ monetdbe_prepare_cb(void* context, char* goto cleanup; } + btype_iter = bat_iterator(btype); bcolumn_iter = bat_iterator(bcolumn); btable_iter = bat_iterator(btable); bimpl_iter = bat_iterator(bimpl); @@ -1248,15 +1250,18 @@ monetdbe_prepare_cb(void* context, char* char* table = BUNtvar(btable_iter, i); + sql_type *t = SA_ZNEW(sa, sql_type); + char* name = BUNtvar(btype_iter, i); + t->base.name = GDKstrdup(name); + char* impl = BUNtvar(bimpl_iter, i); + t->impl = GDKstrdup(impl); + t->localtype = ATOMindex(t->impl); + + sql_subtype *st = SA_ZNEW(sa, sql_subtype); + sql_init_subtype(st, t, (unsigned) *(int*) Tloc(bdigits, i), (unsigned) *(int*) Tloc(bscale, i)); + if (strNil(table)) { // input argument - sql_type *t = SA_ZNEW(sa, sql_type); - t->localtype = *(int*) Tloc(btype, i); - char* impl = BUNtvar(bimpl_iter, i); - t->impl = GDKstrdup(impl); - - sql_subtype *st = SA_ZNEW(sa, sql_subtype); - sql_init_subtype(st, t, (unsigned) *(int*) Tloc(bdigits, i), (unsigned) *(int*) Tloc(bscale, i)); sql_arg *a = SA_ZNEW(sa, sql_arg); a->type = *st; @@ -1274,14 +1279,8 @@ monetdbe_prepare_cb(void* context, char* } else { // output argument - sql_type *t = SA_ZNEW(sa, sql_type); - int type = *(int*) Tloc(btype, i); - t->localtype = type; char* column = BUNtvar(bcolumn_iter, i); - sql_subtype *st = SA_ZNEW(sa, sql_subtype); - sql_init_subtype(st, t, (unsigned) *(int*) Tloc(bdigits, i), (unsigned) *(int*) Tloc(bscale, i)); - sql_exp * c = exp_column(sa, table, column, st, CARD_MULTI, true, false); append(rets, c); } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list