Changeset: 1381bbed43ee for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1381bbed43ee
Modified Files:
sql/storage/store.c
Branch: Jun2020-mmt
Log Message:
Do less work
diffs (38 lines):
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -6326,29 +6326,24 @@ sql_trans_set_table_schema(sql_trans *tr
sql_table *
sql_trans_del_table(sql_trans *tr, sql_table *mt, sql_table *pt, int
drop_action)
{
+ node *n = members_find_child_id(mt->members, pt->base.id);
+ sql_part *p = n ? (sql_part*) n->data : NULL;
sql_schema *syss = find_sql_schema(tr, isGlobal(mt)?"sys":"tmp");
sql_table *sysobj = find_sql_table(syss, "objects");
- oid rid, partid, obj_oid = table_funcs.column_find_row(tr,
find_sql_column(sysobj, "nr"), &mt->base.id,
-
find_sql_column(sysobj, "sub"),
&pt->base.id, NULL);
+ oid obj_oid = p ? table_funcs.column_find_row(tr,
find_sql_column(sysobj, "id"), &p->base.id, NULL) : oid_nil;
if (is_oid_nil(obj_oid))
return NULL;
- void *v = table_funcs.column_find_value(tr, find_sql_column(sysobj,
"id"), obj_oid);
- partid = *(sqlid*)v; _DELETE(v);
- node *n = cs_find_id(&mt->s->parts, partid);
- sql_part *p = (sql_part*) n->data;
-
if (isRangePartitionTable(mt)) {
sql_table *ranges = find_sql_table(syss, "range_partitions");
- rid = table_funcs.column_find_row(tr, find_sql_column(ranges,
"table_id"), &pt->base.id, NULL);
+ oid rid = table_funcs.column_find_row(tr,
find_sql_column(ranges, "table_id"), &pt->base.id, NULL);
table_funcs.table_delete(tr, ranges, rid);
} else if (isListPartitionTable(mt)) {
sql_table *values = find_sql_table(syss, "value_partitions");
rids *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)) {
+ for (oid rid = table_funcs.rids_next(rs); !is_oid_nil(rid); rid
= table_funcs.rids_next(rs))
table_funcs.table_delete(tr, values, rid);
- }
table_funcs.rids_destroy(rs);
}
/* merge table depends on part table */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list