Changeset: 424e39d077fd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=424e39d077fd
Modified Files:
        sql/include/sql_catalog.h
        sql/server/rel_propagate.c
        sql/storage/sql_catalog.c
        sql/storage/store.c
Branch: Jun2020
Log Message:

Find children tables by id in the parent


diffs (71 lines):

diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -727,7 +727,7 @@ extern sql_idx *sql_trans_find_idx(sql_t
 
 extern sql_column *find_sql_column(sql_table *t, const char *cname);
 
-extern sql_part *find_sql_part(sql_table *t, const char *tname);
+extern sql_part *find_sql_part_id(sql_table *t, sqlid id);
 
 extern sql_table *find_sql_table(sql_schema *s, const char *tname);
 extern sql_table *find_sql_table_id(sql_schema *s, sqlid id);
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -275,7 +275,7 @@ propagate_validation_to_upper_tables(sql
        mvc *sql = query->sql;
        sql->caching = 0;
        for (sql_table *prev = mt, *it = prev->p ; it && prev ; prev = it, it = 
it->p) {
-               sql_part *spt = find_sql_part(it, prev->base.name);
+               sql_part *spt = find_sql_part_id(it, prev->base.id);
                if (spt) {
                        if (isRangePartitionTable(it)) {
                                int tpe = spt->tpe.type->localtype;
@@ -922,7 +922,7 @@ rel_subtable_insert(sql_query *query, sq
 {
        mvc *sql = query->sql;
        sql_table *upper = t->p; //is part of a partition table and not been 
used yet
-       sql_part *pt = find_sql_part(upper, t->base.name);
+       sql_part *pt = find_sql_part_id(upper, t->base.id);
        sql_rel *anti_dup = rel_create_common_relation(sql, rel, upper), *left 
= rel->l;
        sql_exp *anti_exp = NULL, *anti_le = 
rel_generate_anti_insert_expression(sql, &anti_dup, upper), *aggr = NULL,
                        *exception = NULL, *anti_nils = NULL;
diff --git a/sql/storage/sql_catalog.c b/sql/storage/sql_catalog.c
--- a/sql/storage/sql_catalog.c
+++ b/sql/storage/sql_catalog.c
@@ -221,9 +221,11 @@ find_sql_column(sql_table *t, const char
 }
 
 sql_part *
-find_sql_part(sql_table *t, const char *tname)
+find_sql_part_id(sql_table *t, sqlid id)
 {
-       return _cs_find_name(&t->members, tname);
+       node *n = cs_find_id(&t->members, id);
+
+       return n ? n->data : NULL;
 }
 
 sql_table *
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5983,7 +5983,7 @@ sql_trans_add_range_partition(sql_trans 
                p->t = mt;
                dup_sql_type(tr, mt->s, &tpe, &(p->tpe));
        } else {
-               p = find_sql_part(mt, pt->base.name);
+               p = find_sql_part_id(mt, pt->base.id);
        }
 
        /* add range partition values */
@@ -6059,7 +6059,7 @@ sql_trans_add_value_partition(sql_trans 
                dup_sql_type(tr, mt->s, &tpe, &(p->tpe));
        } else {
                rids *rs;
-               p = find_sql_part(mt, pt->base.name);
+               p = find_sql_part_id(mt, pt->base.id);
 
                rs = table_funcs.rids_select(tr, find_sql_column(values, 
"table_id"), &pt->base.id, &pt->base.id, NULL);
                for (rid = table_funcs.rids_next(rs); !is_oid_nil(rid); rid = 
table_funcs.rids_next(rs)) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to