Changeset: 164eee74d3cf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=164eee74d3cf
Modified Files:
        sql/backends/monet5/sql_cat.c
        sql/storage/bat/bat_storage.c
        sql/storage/store.c
Branch: Apr2019
Log Message:

fixes for bug 6748
- incase of new tables the delta's bid isn't used yet, so also alters should 
not use it
- added error messages when delta structure creation fails


diffs (55 lines):

diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -889,7 +889,9 @@ alter_table(Client cntxt, mvc *sql, char
        for (; n; n = n->next) {
                /* propagate alter table .. add column */
                sql_column *c = n->data;
-               mvc_copy_column(sql, nt, c);
+
+               if (mvc_copy_column(sql, nt, c) == NULL)
+                       throw(SQL,"sql.alter_table", SQLSTATE(40002) "ALTER 
TABLE: Failed to create column %s.%s", c->t->base.name, c->base.name);
        }
        if (t->idxs.set) {
                /* alter drop index */
@@ -924,7 +926,8 @@ alter_table(Client cntxt, mvc *sql, char
                                if (r != GDK_SUCCEED)
                                        throw(SQL, "sql.alter_table", 
GDK_EXCEPTION);
                        }
-                       mvc_copy_idx(sql, nt, i);
+                       if (mvc_copy_idx(sql, nt, i) == NULL)
+                               throw(SQL,"sql.alter_table", SQLSTATE(40002) 
"ALTER TABLE: Failed to create index %s.%s", i->t->base.name, i->base.name);
                }
        }
        if (t->keys.set) {
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -1473,9 +1473,11 @@ create_col(sql_trans *tr, sql_column *c)
                if (cnt && fc != c) {
                        sql_delta *d = fc->data;
 
-                       bat->bid = copyBat(d->bid, type, 0);
-                       if(bat->bid == BID_NIL)
-                               ok = LOG_ERR;
+                       if (d->bid) {
+                               bat->bid = copyBat(d->bid, type, 0);
+                               if(bat->bid == BID_NIL)
+                                       ok = LOG_ERR;
+                       }
                        if (d->ibid) {
                                bat->ibid = copyBat(d->ibid, type, d->ibase);
                                if(bat->ibid == BID_NIL)
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2464,7 +2464,8 @@ sql_trans_copy_idx( sql_trans *tr, sql_t
 
        if (isDeclaredTable(i->t)) 
        if (!isDeclaredTable(t) && isTable(ni->t) && idx_has_column(ni->type))
-               store_funcs.create_idx(tr, ni);
+               if (store_funcs.create_idx(tr, ni) != LOG_OK)
+                       return NULL;
        if (!isDeclaredTable(t))
                table_funcs.table_insert(tr, sysidx, &ni->base.id, &t->base.id, 
&ni->type, ni->base.name);
        ni->base.wtime = t->base.wtime = t->s->base.wtime = tr->wtime = 
tr->wstime;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to