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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list