sql_idx * tr_find_idx( sql_trans *tr, sql_idx *i) { sql_idx *ni = NULL; while ((!ni || !ni->data) && tr) { sql_table *t = tr_find_table(tr, i->t); node *n = cs_find_id(&t->idxs, i->base.id); if (n) ni = n->data; tr = tr->parent; } return ni; }
sql_column * tr_find_column( sql_trans *tr, sql_column *c) { sql_column *nc = NULL; while ((!nc || !nc->data) && tr) { sql_table *t = tr_find_table(tr, c->t); node *n = cs_find_id(&t->columns, c->base.id); if (n) nc = n->data; tr = tr->parent; } return nc; }
static BAT * delta_cands(sql_trans *tr, sql_table *t) { sql_dbat *d; BAT *tids; if (!t->data) { sql_table *ot = tr_find_table(tr->parent, t); t->data = timestamp_dbat(ot->data, tr->stime); } d = t->data; if (!store_initialized && d->cached) return temp_descriptor(d->cached->batCacheid); tids = _delta_cands(tr, t); if (!store_initialized && !d->cached) /* only cache during catalog loading */ d->cached = temp_descriptor(tids->batCacheid); return tids; }