Changeset: c4d20378bfc1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c4d20378bfc1
Modified Files:
        sql/storage/store.c
Branch: Apr2019
Log Message:

small fixes/cleanup of sql_part mergetable/membertables.


diffs (153 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1041,6 +1041,7 @@ set_members(changeset *ts)
                                sql_part *p = m->data;
                                sql_table *pt = find_sql_table(t->s, 
p->base.name);
 
+                               p->t = pt;
                                pt->p = t;
                        }
                }
@@ -1564,36 +1565,34 @@ dup_sql_column(sql_allocator *sa, sql_ta
 }
 
 static sql_part *
-dup_sql_part(sql_allocator *sa, sql_table *t, sql_part *opt)
-{
-       sql_part *pt = SA_ZNEW(sa, sql_part);
-
-       base_init(sa, &pt->base, opt->base.id, opt->base.flags, opt->base.name);
-       pt->tpe = opt->tpe;
-       pt->t = t;
-       pt->with_nills = opt->with_nills;
-
-       if(isRangePartitionTable(t)) {
-               pt->part.range.minvalue = sa_alloc(sa, 
opt->part.range.minlength);
-               pt->part.range.maxvalue = sa_alloc(sa, 
opt->part.range.maxlength);
-               memcpy(pt->part.range.minvalue, opt->part.range.minvalue, 
opt->part.range.minlength);
-               memcpy(pt->part.range.maxvalue, opt->part.range.maxvalue, 
opt->part.range.maxlength);
-               pt->part.range.minlength = opt->part.range.minlength;
-               pt->part.range.maxlength = opt->part.range.maxlength;
-       } else if(isListPartitionTable(t)) {
-               pt->part.values = list_new(sa, (fdestroy) NULL);
-               for(node *n = opt->part.values->h ; n ; n = n->next) {
+dup_sql_part(sql_allocator *sa, sql_table *mt, sql_part *op)
+{
+       sql_part *p = SA_ZNEW(sa, sql_part);
+
+       base_init(sa, &p->base, op->base.id, op->base.flags, op->base.name);
+       p->tpe = op->tpe;
+       p->with_nills = op->with_nills;
+
+       if(isRangePartitionTable(mt)) {
+               p->part.range.minvalue = sa_alloc(sa, op->part.range.minlength);
+               p->part.range.maxvalue = sa_alloc(sa, op->part.range.maxlength);
+               memcpy(p->part.range.minvalue, op->part.range.minvalue, 
op->part.range.minlength);
+               memcpy(p->part.range.maxvalue, op->part.range.maxvalue, 
op->part.range.maxlength);
+               p->part.range.minlength = op->part.range.minlength;
+               p->part.range.maxlength = op->part.range.maxlength;
+       } else if(isListPartitionTable(mt)) {
+               p->part.values = list_new(sa, (fdestroy) NULL);
+               for(node *n = op->part.values->h ; n ; n = n->next) {
                        sql_part_value *prev = (sql_part_value*) n->data, 
*nextv = SA_ZNEW(sa, sql_part_value);
                        nextv->tpe = prev->tpe;
                        nextv->value = sa_alloc(sa, prev->length);
                        memcpy(nextv->value, prev->value, prev->length);
                        nextv->length = prev->length;
-                       list_append(pt->part.values, nextv);
+                       list_append(p->part.values, nextv);
                }
        }
-
-       cs_add(&t->members, pt, TR_NEW);
-       return pt;
+       cs_add(&mt->members, p, TR_NEW);
+       return p;
 }
 
 sql_table *
@@ -2640,37 +2639,40 @@ column_dup(sql_trans *tr, int flags, sql
 }
 
 static sql_part *
-part_dup(sql_trans *tr, int flags, sql_part *opt, sql_table *ot)
+part_dup(sql_trans *tr, int flags, sql_part *op, sql_table *mt)
 {
        sql_allocator *sa = (newFlagSet(flags))?tr->parent->sa:tr->sa;
-       sql_part *pt = SA_ZNEW(sa, sql_part);
-
-       base_init(sa, &pt->base, opt->base.id, tr_flag(&opt->base, flags), 
opt->base.name);
-       pt->tpe = opt->tpe;
-       pt->with_nills = opt->with_nills;
+       sql_part *p = SA_ZNEW(sa, sql_part);
+       sql_table *pt = find_sql_table(mt->s, op->base.name);
+
+       base_init(sa, &p->base, op->base.id, tr_flag(&op->base, flags), 
op->base.name);
+       p->tpe = op->tpe;
+       p->with_nills = op->with_nills;
+       p->t = pt;
+       if (pt) /* during loading we use set_members */
+               pt->p = mt;
        if (newFlagSet(flags) && tr->parent == gtrans)
-               removeNewFlag(opt);
-
-       if(isRangePartitionTable(ot)) {
-               pt->part.range.minvalue = sa_alloc(sa, 
opt->part.range.minlength);
-               pt->part.range.maxvalue = sa_alloc(sa, 
opt->part.range.maxlength);
-               memcpy(pt->part.range.minvalue, opt->part.range.minvalue, 
opt->part.range.minlength);
-               memcpy(pt->part.range.maxvalue, opt->part.range.maxvalue, 
opt->part.range.maxlength);
-               pt->part.range.minlength = opt->part.range.minlength;
-               pt->part.range.maxlength = opt->part.range.maxlength;
-       } else if(isListPartitionTable(ot)) {
-               pt->part.values = list_new(sa, (fdestroy) NULL);
-               for(node *n = opt->part.values->h ; n ; n = n->next) {
+               removeNewFlag(op);
+
+       if(isRangePartitionTable(mt)) {
+               p->part.range.minvalue = sa_alloc(sa, op->part.range.minlength);
+               p->part.range.maxvalue = sa_alloc(sa, op->part.range.maxlength);
+               memcpy(p->part.range.minvalue, op->part.range.minvalue, 
op->part.range.minlength);
+               memcpy(p->part.range.maxvalue, op->part.range.maxvalue, 
op->part.range.maxlength);
+               p->part.range.minlength = op->part.range.minlength;
+               p->part.range.maxlength = op->part.range.maxlength;
+       } else if(isListPartitionTable(mt)) {
+               p->part.values = list_new(sa, (fdestroy) NULL);
+               for(node *n = op->part.values->h ; n ; n = n->next) {
                        sql_part_value *prev = (sql_part_value*) n->data, 
*nextv = SA_ZNEW(sa, sql_part_value);
                        nextv->tpe = prev->tpe;
                        nextv->value = sa_alloc(sa, prev->length);
                        memcpy(nextv->value, prev->value, prev->length);
                        nextv->length = prev->length;
-                       list_append(pt->part.values, nextv);
+                       list_append(p->part.values, nextv);
                }
        }
-
-       return pt;
+       return p;
 }
 
 static int
@@ -2848,9 +2850,9 @@ table_dup(sql_trans *tr, int flags, sql_
        if (ot->columns.set) {
                for (n = ot->columns.set->h; n; n = n->next) {
                        sql_column *c = n->data, *copy = column_dup(tr, flags, 
c, t);
+
                        if(isPartitionedByColumnTable(ot) && 
ot->part.pcol->base.id == c->base.id)
                                t->part.pcol = copy;
-
                        cs_add(&t->columns, copy, tr_flag(&c->base, flags));
                }
                if (tr->parent == gtrans)
@@ -2858,8 +2860,8 @@ table_dup(sql_trans *tr, int flags, sql_
        }
        if (ot->members.set) {
                for (n = ot->members.set->h; n; n = n->next) {
-                       sql_part *pt = n->data, *dupped = part_dup(tr, flags, 
pt, ot);
-                       dupped->t = t;
+                       sql_part *pt = n->data, *dupped = part_dup(tr, flags, 
pt, t);
+
                        cs_add(&t->members, dupped, tr_flag(&pt->base, flags));
                }
                if (tr->parent == gtrans)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to