Changeset: e5c41c58c5f5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e5c41c58c5f5
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_gencode.c
Branch: resultset
Log Message:

re-introduce the eclass argument to the resultValue function. The
changes coming from the default branch require this.


diffs (125 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -3008,46 +3008,6 @@ mvc_export_operation_wrap(Client cntxt, 
        return NULL;
 }
 
-// collect the SQL type identifier associated with a string
-static int
-SQLname2eclass(const str *type)
-{
-       int ec = 0;
-       if ( strcmp(*type,"char") == 0)
-               ec = EC_CHAR;
-       else
-       if ( strncmp(*type,"int",3) == 0 || strcmp(*type,"tinyint") == 0 || 
strcmp(*type,"bigint") == 0 ||
-               strcmp(*type,"wrd") == 0 || strcmp(*type,"smallint") == 0 || 
strcmp(*type,"hugeint") == 0)
-               ec = EC_NUM;
-       else
-       if ( strcmp(*type,"wrd") == 0)
-               ec = EC_NUM;
-       else
-       if ( strcmp(*type,"boolean") == 0)
-               ec = EC_BIT;
-       else
-       if ( strcmp(*type,"varchar") == 0)
-               ec = EC_STRING;
-       else
-       if ( strcmp(*type,"real") == 0)
-               ec = EC_FLT;
-       else
-       if ( strcmp(*type,"double") == 0)
-               ec = EC_FLT;
-       else
-       if ( strcmp(*type,"time") == 0)
-               ec = EC_TIME;
-       else
-       if ( strcmp(*type,"timestamp") == 0 || strcmp(*type,"timestamptz") == 0)
-               ec = EC_TIMESTAMP;
-       else
-       if ( strcmp(*type,"date") == 0)
-               ec = EC_DATE;
-       else
-       if ( strcmp(*type,"decimal") == 0)
-               ec = EC_DEC;
-       return ec;
-}
 str
 /*mvc_scalar_value_wrap(int *ret, int *qtype, str tn, str name, str type, int 
*digits, int *scale, int *eclass, ptr p, int mtype)*/
 mvc_scalar_value_wrap(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
@@ -3057,9 +3017,9 @@ mvc_scalar_value_wrap(Client cntxt, MalB
        str *type = getArgReference_str(stk, pci, 3);
        int *digits = getArgReference_int(stk, pci, 4);
        int *scale = getArgReference_int(stk, pci, 5);
-       int ec  =0;
-       ptr p = getArgReference(stk, pci, 6);
-       int mtype = getArgType(mb, pci, 6);
+       int *eclass = getArgReference_int(stk, pci, 6);
+       ptr p = getArgReference(stk, pci, 7);
+       int mtype = getArgType(mb, pci, 7);
        str msg;
        backend *b = NULL;
 
@@ -3069,9 +3029,7 @@ mvc_scalar_value_wrap(Client cntxt, MalB
        b = cntxt->sqlcontext;
        if (ATOMextern(mtype))
                p = *(ptr *) p;
-
-       ec = SQLname2eclass(type);
-       if (b->out == NULL || mvc_export_value(b, b->out, 1, *tn, *cn, *type, 
*digits, *scale, ec, p, mtype, "", "NULL") != SQL_OK)
+       if (b->out == NULL || mvc_export_value(b, b->out, 1, *tn, *cn, *type, 
*digits, *scale, *eclass, p, mtype, "", "NULL") != SQL_OK)
                throw(SQL, "sql.exportValue", "failed");
        return MAL_SUCCEED;
 }
@@ -3483,8 +3441,8 @@ not_unique_oids(bat *ret, const bat *bid
                oid *rf, *rh, *rt;
                oid *h = (oid *) Hloc(b, 0), *vp, *ve;
 
-        if (BAThash(b, 0) == GDK_FAIL)
-             throw(SQL, "not_uniques", "hash creation failed");
+               if (BAThash(b, 0) == GDK_FAIL)
+                       throw(SQL, "not_uniques", "hash creation failed");
                bn = BATnew(TYPE_oid, TYPE_oid, BATcount(b), TRANSIENT);
                if (bn == NULL) {
                        BBPunfix(b->batCacheid);
@@ -4305,14 +4263,14 @@ SQLargRecord(Client cntxt, MalBlkPtr mb,
 
        (void) cntxt;
        ret = getArgReference_str(stk, pci, 0);
-       s = instruction2str(mb, stk, getInstrPtr(mb, 0), LIST_MAL_DEBUG);
+       s = instruction2str(mb, stk, getInstrPtr(mb, 0), LIST_MAL_ALL);
        t = strchr(s, ' ');
        *ret = GDKstrdup(t ? t + 1 : s);
        GDKfree(s);
        return MAL_SUCCEED;
 }
 
- /*
+/*
  * Vacuum cleaning tables
  * Shrinking and re-using space to vacuum clean the holes in the relations.
  */
diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal
--- a/sql/backends/monet5/sql.mal
+++ b/sql/backends/monet5/sql.mal
@@ -262,7 +262,7 @@ comment "delete from table";
 #pattern resultSet{unsafe}( nr_cols:int, qtype:int, order:bat[:oid,:any_1] ) 
:int 
 #address mvc_table_result_wrap
 #comment "Prepare a table result set";
-pattern resultSet{unsafe}(tbl:str, attr:str, tpe:str, len:int,scale:int, 
val:any) :int 
+pattern resultSet{unsafe}(tbl:str, attr:str, tpe:str, len:int, scale:int, 
eclass:int, val:any) :int 
 address mvc_scalar_value_wrap
 comment "Prepare a table result set";
 
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -2367,6 +2367,7 @@ static int
                                                q = pushStr(mb, q, 
t->type->localtype == TYPE_void ? "char" : t->type->sqlname);
                                                q = pushInt(mb, q, t->digits);
                                                q = pushInt(mb, q, t->scale);
+                                               q = pushInt(mb, q, 
t->type->eclass);
                                                q = pushArgument(mb, q, c->nr);
                                        }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to