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

Reply via email to