Changeset: 7c035001fe10 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7c035001fe10
Modified Files:
        sql/backends/monet5/UDF/pyapi3/conversion3.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statistics.c
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/vaults/fits/fits.c
        sql/common/sql_types.c
        sql/include/sql_catalog.h
        sql/server/rel_exp.c
        sql/server/rel_select.c
        sql/server/rel_sequence.c
        sql/server/rel_unnest.c
        sql/server/rel_updates.c
        sql/server/sql_mvc.c
        sql/server/sql_semantic.c
        sql/storage/sql_catalog.c
        sql/storage/store.c
Branch: Jul2021
Log Message:

Use sql name instead of backend name as the type's base name.

This simplifies transaction conflict detection on types.

Also fixed a bug on the supertype detection with clob and (var)char types. The 
upgrade tests need to be re-approved.


diffs (truncated from 971 to 300 lines):

diff --git a/sql/backends/monet5/UDF/pyapi3/conversion3.c 
b/sql/backends/monet5/UDF/pyapi3/conversion3.c
--- a/sql/backends/monet5/UDF/pyapi3/conversion3.c
+++ b/sql/backends/monet5/UDF/pyapi3/conversion3.c
@@ -395,7 +395,7 @@ PyObject *PyArrayObject_FromBAT(PyInput 
                                } else {
                                        msg = createException(MAL, 
"pyapi3.eval",
                                                                                
  SQLSTATE(PY000) "Unsupported SQL Type: %s",
-                                                                               
  inp->sql_subtype->type->sqlname);
+                                                                               
  inp->sql_subtype->type->base.name);
                                }
                                goto wrapup;
                }
@@ -1176,7 +1176,7 @@ str ConvertToSQLType(Client cntxt, BAT *
                        return createException(
                                MAL, "pyapi3.eval",
                                "Convert To SQL Type: Unrecognized SQL type %s 
(%d).",
-                               sql_subtype->type->sqlname, (int) 
sql_subtype->type->eclass);
+                               sql_subtype->type->base.name, (int) 
sql_subtype->type->eclass);
        }
        if (res == MAL_SUCCEED) {
                *ret_bat = BATdescriptor(result_bat);
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -91,7 +91,7 @@ sql_unop_(backend *be, const char *fname
                */
                return stmt_unop(be, rs, NULL, f);
        } else if (rs) {
-               char *type = tail_type(rs)->type->sqlname;
+               char *type = tail_type(rs)->type->base.name;
 
                return sql_error(sql, ERR_NOTFOUND, SQLSTATE(42000) "SELECT: no 
such unary operator '%s(%s)'", fname, type);
        }
@@ -1644,14 +1644,14 @@ check_types(backend *be, sql_subtype *t,
        }
        if (err) {
                stmt *res = sql_error(sql, 03, SQLSTATE(42000) "types %s(%u,%u) 
(%s) and %s(%u,%u) (%s) are not equal",
-                       fromtype->type->sqlname,
+                       fromtype->type->base.name,
                        fromtype->digits,
                        fromtype->scale,
-                       fromtype->type->base.name,
-                       t->type->sqlname,
+                       fromtype->type->impl,
+                       t->type->base.name,
                        t->digits,
                        t->scale,
-                       t->type->base.name
+                       t->type->impl
                );
                return res;
        }
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
@@ -802,7 +802,7 @@ sql_variables(Client cntxt, MalBlkPtr mb
                                msg = createException(SQL, "sql.variables", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
                                goto bailout;
                        }
-                       if (BUNappend(types, value.tpe.type->sqlname, false) != 
GDK_SUCCEED) {
+                       if (BUNappend(types, value.tpe.type->base.name, false) 
!= GDK_SUCCEED) {
                                msg = createException(SQL, "sql.variables", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
                                goto bailout;
                        }
@@ -3879,7 +3879,7 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
                                                                        if 
(BUNappend(mode, str_nil, false) != GDK_SUCCEED)
                                                                                
goto bailout;
                                                                }
-                                                               if 
(BUNappend(type, c->type.type->sqlname, false) != GDK_SUCCEED)
+                                                               if 
(BUNappend(type, c->type.type->base.name, false) != GDK_SUCCEED)
                                                                        goto 
bailout;
 
                                                                /*printf(" cnt 
"BUNFMT, BATcount(bs)); */
@@ -4653,7 +4653,7 @@ SQLsession_prepared_statements_args(Clie
                                        rname = ATOMnilptr(TYPE_str);
 
                                if (BUNappend(statementid, &(q->id), false) != 
GDK_SUCCEED ||
-                                       BUNappend(type, t->type->sqlname, 
false) != GDK_SUCCEED ||
+                                       BUNappend(type, t->type->base.name, 
false) != GDK_SUCCEED ||
                                        BUNappend(digits, &t->digits, false) != 
GDK_SUCCEED ||
                                        BUNappend(scale, &t->scale, false) != 
GDK_SUCCEED ||
                                        BUNappend(isinout, &inout, false) != 
GDK_SUCCEED ||
@@ -4674,7 +4674,7 @@ SQLsession_prepared_statements_args(Clie
                                sql_subtype *t = &a->type;
 
                                if (BUNappend(statementid, &(q->id), false) != 
GDK_SUCCEED ||
-                                       BUNappend(type, t->type->sqlname, 
false) != GDK_SUCCEED ||
+                                       BUNappend(type, t->type->base.name, 
false) != GDK_SUCCEED ||
                                        BUNappend(digits, &(t->digits), false) 
!= GDK_SUCCEED ||
                                        BUNappend(scale, &(t->scale), false) != 
GDK_SUCCEED ||
                                        BUNappend(isinout, &inout, false) != 
GDK_SUCCEED ||
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
@@ -492,7 +492,7 @@ static int
                                buf = tmp;
                        }
 
-                       nr += snprintf(buf+nr, len-nr, "%s %s(%u,%u)%c", nme, 
t->type->sqlname, t->digits, t->scale, n->next?',':' ');
+                       nr += snprintf(buf+nr, len-nr, "%s %s(%u,%u)%c", nme, 
t->type->base.name, t->digits, t->scale, n->next?',':' ');
                }
                s = buf;
        }
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
@@ -743,7 +743,7 @@ mvc_import_table(Client cntxt, BAT ***ba
                        fmt[i].rsep = rsep;
                        fmt[i].seplen = _strlen(fmt[i].sep);
                        fmt[i].type = sql_subtype_string(m->ta, &col->type);
-                       fmt[i].adt = ATOMindex(col->type.type->base.name);
+                       fmt[i].adt = ATOMindex(col->type.type->impl);
                        fmt[i].tostr = &_ASCIIadt_toStr;
                        fmt[i].frstr = &_ASCIIadt_frStr;
                        fmt[i].extra = col;
@@ -974,7 +974,7 @@ mvc_export_prepare(backend *b, stream *o
                        size_t slen;
 
                        t = exp_subtype(e);
-                       slen = strlen(t->type->sqlname);
+                       slen = strlen(t->type->base.name);
                        if (slen > len1)
                                len1 = slen;
                        while (t->digits >= max2) {
@@ -1009,7 +1009,7 @@ mvc_export_prepare(backend *b, stream *o
 
                        a = n->data;
                        t = &a->type;
-                       slen = strlen(t->type->sqlname);
+                       slen = strlen(t->type->base.name);
                        if (slen > len1)
                                len1 = slen;
                        while (t->digits >= max2) {
@@ -1050,7 +1050,7 @@ mvc_export_prepare(backend *b, stream *o
                                if (!rname && e->type == e_column && e->l)
                                        rname = e->l;
 
-                               if (mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\t\"%s\",\t\"%s\",\t\"%s\"\t]\n", t->type->sqlname, t->digits, 
t->scale, schema ? schema : "", rname ? rname : "", name ? name : "") < 0) {
+                               if (mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\t\"%s\",\t\"%s\",\t\"%s\"\t]\n", t->type->base.name, 
t->digits, t->scale, schema ? schema : "", rname ? rname : "", name ? name : 
"") < 0) {
                                        return -1;
                                }
                        }
@@ -1063,7 +1063,7 @@ mvc_export_prepare(backend *b, stream *o
                                a = n->data;
                                t = &a->type;
 
-                               if (!t || mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\tNULL,\tNULL,\tNULL\t]\n", t->type->sqlname, t->digits, 
t->scale) < 0)
+                               if (!t || mnstr_printf(out, "[ 
\"%s\",\t%u,\t%u,\tNULL,\tNULL,\tNULL\t]\n", t->type->base.name, t->digits, 
t->scale) < 0)
                                        return -1;
                        }
                }
@@ -1311,7 +1311,7 @@ mvc_export_row(backend *b, stream *s, re
                        mnstr_write(s, c->name, strlen(c->name), 1);
                        mnstr_write(s, ": ", 2, 1);
                }
-               ok = export_value(m, s, c->type.type->eclass, 
c->type.type->sqlname, c->type.digits, c->type.scale, c->p, c->mtype, &buf, 
&len, ns);
+               ok = export_value(m, s, c->type.type->eclass, 
c->type.type->base.name, c->type.digits, c->type.scale, c->p, c->mtype, &buf, 
&len, ns);
        }
        _DELETE(buf);
        if (ok)
@@ -1457,7 +1457,7 @@ mvc_export_table(backend *b, stream *s, 
                        fmt[i].extra = ts_res;
                } else if (c->type.type->eclass == EC_TIME || 
c->type.type->eclass == EC_TIME_TZ) {
                        struct time_res *ts_res = tres + (i - 1);
-                       ts_res->has_tz = (strcmp(c->type.type->sqlname, 
"timetz") == 0);
+                       ts_res->has_tz = (strcmp(c->type.type->base.name, 
"timetz") == 0);
                        ts_res->fraction = c->type.digits ? c->type.digits - 1 
: 0;
                        ts_res->timezone = m->timezone;
 
@@ -1829,7 +1829,7 @@ mvc_export_head(backend *b, stream *s, i
        for (i = 0; i < t->nr_cols; i++) {
                res_col *c = t->cols + i;
 
-               if (mnstr_write(s, c->type.type->sqlname, 
strlen(c->type.type->sqlname), 1) != 1)
+               if (mnstr_write(s, c->type.type->base.name, 
strlen(c->type.type->base.name), 1) != 1)
                        return -1;
                if (i + 1 < t->nr_cols && mnstr_write(s, ",\t", 2, 1) != 1)
                        return -1;
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -1270,7 +1270,7 @@ stmt *
 stmt_atom(backend *be, atom *a)
 {
        MalBlkPtr mb = be->mb;
-       InstrPtr q = EC_TEMP_FRAC(atom_type(a)->type->eclass) ? newStmt(mb, 
calcRef, atom_type(a)->type->base.name) : newAssignment(mb);
+       InstrPtr q = EC_TEMP_FRAC(atom_type(a)->type->eclass) ? newStmt(mb, 
calcRef, atom_type(a)->type->impl) : newAssignment(mb);
 
        if (!q)
                return NULL;
@@ -2447,7 +2447,7 @@ dump_export_header(mvc *sql, MalBlkPtr m
                                snprintf(fqtn, fqtnl, "%s.%s", nsn, ntn);
                                metaInfo(tblPtr, Str, fqtn);
                                metaInfo(nmePtr, Str, cn);
-                               metaInfo(tpePtr, Str, (t->type->localtype == 
TYPE_void ? "char" : t->type->sqlname));
+                               metaInfo(tpePtr, Str, (t->type->localtype == 
TYPE_void ? "char" : t->type->base.name));
                                metaInfo(lenPtr, Int, t->digits);
                                metaInfo(scalePtr, Int, t->scale);
                                list = pushArgument(mb, list, c->nr);
@@ -2714,7 +2714,7 @@ dump_header(mvc *sql, MalBlkPtr mb, list
                                snprintf(fqtn, fqtnl, "%s.%s", nsn, ntn);
                                metaInfo(tblPtr,Str,fqtn);
                                metaInfo(nmePtr,Str,cn);
-                               metaInfo(tpePtr,Str,(t->type->localtype == 
TYPE_void ? "char" : t->type->sqlname));
+                               metaInfo(tpePtr,Str,(t->type->localtype == 
TYPE_void ? "char" : t->type->base.name));
                                metaInfo(lenPtr,Int,t->digits);
                                metaInfo(scalePtr,Int,t->scale);
                                list = pushArgument(mb,list,c->nr);
@@ -2767,7 +2767,7 @@ stmt_output(backend *be, stmt *lst)
                                if (q) {
                                        q = pushStr(mb, q, fqtn);
                                        q = pushStr(mb, q, cn);
-                                       q = pushStr(mb, q, t->type->localtype 
== TYPE_void ? "char" : t->type->sqlname);
+                                       q = pushStr(mb, q, t->type->localtype 
== TYPE_void ? "char" : t->type->base.name);
                                        q = pushInt(mb, q, t->digits);
                                        q = pushInt(mb, q, t->scale);
                                        q = pushInt(mb, q, t->type->eclass);
@@ -3067,7 +3067,7 @@ stmt_convert(backend *be, stmt *v, stmt 
 {
        MalBlkPtr mb = be->mb;
        InstrPtr q = NULL;
-       const char *convert = t->type->base.name;
+       const char *convert = t->type->impl;
        int pushed = (v->cand && v->cand == sel), no_candidates = 0;
        /* convert types and make sure they are rounded up correctly */
 
@@ -3090,7 +3090,7 @@ stmt_convert(backend *be, stmt *v, stmt 
        /* external types have sqlname convert functions,
           these can generate errors (fromstr cannot) */
        if (t->type->eclass == EC_EXTERNAL)
-               convert = t->type->sqlname;
+               convert = t->type->base.name;
        else if (t->type->eclass == EC_MONTH)
                convert = "month_interval";
        else if (t->type->eclass == EC_SEC)
diff --git a/sql/backends/monet5/sql_statistics.c 
b/sql/backends/monet5/sql_statistics.c
--- a/sql/backends/monet5/sql_statistics.c
+++ b/sql/backends/monet5/sql_statistics.c
@@ -307,7 +307,7 @@ sql_analyze(Client cntxt, MalBlkPtr mb, 
                                                GDKfree(minval);
                                                throw(SQL, "analyze", 
SQLSTATE(42000) "ANALYZE: failed%s", log_res == LOG_CONFLICT ? " due to 
conflict with another transaction" : "");
                                        }
-                                       if ((log_res = 
store->table_api.table_insert(tr, sysstats, &c->base.id, 
&c->type.type->sqlname, &width, &ts, samplesize ? &samplesize : &sz, &sz, 
&uniq, &nils, &minval, &maxval, &sorted, &revsorted)) != LOG_OK) {
+                                       if ((log_res = 
store->table_api.table_insert(tr, sysstats, &c->base.id, 
&c->type.type->base.name, &width, &ts, samplesize ? &samplesize : &sz, &sz, 
&uniq, &nils, &minval, &maxval, &sorted, &revsorted)) != LOG_OK) {
                                                GDKfree(maxval);
                                                GDKfree(minval);
                                                throw(SQL, "analyze", 
SQLSTATE(42000) "ANALYZE: failed%s", log_res == LOG_CONFLICT ? " due to 
conflict with another transaction" : "");
diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -57,7 +57,7 @@ sql_fix_system_tables(Client c, mvc *sql
                pos += snprintf(buf + pos, bufsize - pos,
                                "insert into sys.types values"
                                " (%d, '%s', '%s', %u, %u, %d, %d, %d);\n",
-                               t->base.id, t->base.name, t->sqlname, t->digits,
+                               t->base.id, t->impl, t->base.name, t->digits,
                                t->scale, t->radix, (int) t->eclass,
                                t->s ? t->s->base.id : s->base.id);
        }
@@ -102,7 +102,7 @@ sql_fix_system_tables(Client c, mvc *sql
                                                store_next_oid(store),
                                                func->base.id,
                                                number,
-                                               arg->type.type->sqlname,
+                                               arg->type.type->base.name,
                                                arg->type.digits,
                                                arg->type.scale,
                                                arg->inout, number);
@@ -119,7 +119,7 @@ sql_fix_system_tables(Client c, mvc *sql
                                                store_next_oid(store),
                                                func->base.id,
                                                arg->name,
-                                               arg->type.type->sqlname,
+                                               arg->type.type->base.name,
                                                arg->type.digits,
                                                arg->type.scale,
                                                arg->inout, number);
@@ -133,7 +133,7 @@ sql_fix_system_tables(Client c, mvc *sql
                                                store_next_oid(store),
                                                func->base.id,
                                                number,
-                                               arg->type.type->sqlname,
+                                               arg->type.type->base.name,
                                                arg->type.digits,
                                                arg->type.scale,
                                                arg->inout, number);
diff --git a/sql/backends/monet5/vaults/fits/fits.c 
b/sql/backends/monet5/vaults/fits/fits.c
--- a/sql/backends/monet5/vaults/fits/fits.c
+++ b/sql/backends/monet5/vaults/fits/fits.c
@@ -294,7 +294,7 @@ str FITSexportTable(Client cntxt, MalBlk
        {
                char * columntype;
                col = mvc_bind_column(m, tbl, colname[cc]);
-               columntype = col -> type.type->sqlname;
+               columntype = col -> type.type->base.name;
 
                if (strcmp(columntype,"boolean")==0)
                {
@@ -964,7 +964,7 @@ str FITSloadTable(Client cntxt, MalBlkPt
                fits_get_coltype(fptr, j, &tpcode[j - 1], &rep[j - 1], &wid[j - 
1], &status);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to