Esempio n. 1
0
sql_table *
tr_find_table( sql_trans *tr, sql_table *t)
{
	sql_table *nt = NULL;

	while ((!nt || !nt->data) && tr) {
		sql_schema *s = tr_find_schema( tr, t->s);

		nt = find_sql_table_id(s, t->base.id);
		tr = tr->parent;
	}
	return nt;
}
Esempio n. 2
0
sql_idx *
tr_find_idx( sql_trans *tr, sql_idx *i)
{
	sql_idx *ni = NULL;

	while ((!ni || !ni->data) && tr) {
		sql_schema *s = tr_find_schema( tr, i->t->s);
		sql_table *t =  find_sql_table_id(s, i->t->base.id);
		node *n = cs_find_id(&t->idxs, i->base.id);
		if (n)
			ni = n->data;
		tr = tr->parent;
	}
	return ni;
}
Esempio n. 3
0
sql_column *
tr_find_column( sql_trans *tr, sql_column *c)
{
	sql_column *nc = NULL;

	while ((!nc || !nc->data) && tr) {
		sql_schema *s = tr_find_schema( tr, c->t->s);
		sql_table *t =  find_sql_table_id(s, c->t->base.id);
		node *n = cs_find_id(&t->columns, c->base.id);
		if (n)
			nc = n->data;
		tr = tr->parent;
	}
	return nc;
}
Esempio n. 4
0
sql_table *
tr_find_table( sql_trans *tr, sql_table *t)
{
	sql_table *nt = NULL;

	while ((!nt || !nt->data) && tr) {
		sql_schema *s = tr_find_schema( tr, t->s);

		if (list_length(s->tables.set) < HASH_MIN_SIZE)
			nt = find_sql_table_id(s, t->base.id);
		else
			nt = find_sql_table(s, t->base.name);
		assert(nt->base.id == t->base.id);
		tr = tr->parent;
	}
	return nt;
}