Changeset: 6b736b43d759 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6b736b43d759
Modified Files:
sql/backends/monet5/sql_statement.h
sql/server/rel_basetable.c
Branch: nested
Log Message:
add some extra checks and small comment
diffs (54 lines):
diff --git a/sql/backends/monet5/sql_statement.h
b/sql/backends/monet5/sql_statement.h
--- a/sql/backends/monet5/sql_statement.h
+++ b/sql/backends/monet5/sql_statement.h
@@ -116,7 +116,7 @@ typedef struct stmt {
stmtdata op4; /* only op4 will hold other types */
unsigned int
- nrcols:2,
+ nrcols:2, /* NOT number of columns but (0 single value, 1 single
column, 2 multi columns, 3 multi values)*/
key:1, /* key (aka all values are unique) */ // TODO
make this thing a bool
aggr:1, /* aggregated */
partition:1, /* selected as mitosis candidate */
diff --git a/sql/server/rel_basetable.c b/sql/server/rel_basetable.c
--- a/sql/server/rel_basetable.c
+++ b/sql/server/rel_basetable.c
@@ -149,21 +149,24 @@ rel_base_use_all( mvc *sql, sql_rel *rel
static node *
-rel_nested_basetable_add_vector_cols(mvc *sql, rel_base_t *ba, sql_column *c,
node *cn, list *exps)
+rel_basetable_add_vector_cols(mvc *sql, sql_alias *pa, sql_column *c, node
*cn, list *exps)
{
- sql_alias *atname = a_create(sql->sa, c->base.name);
- atname->parent = ba->name;
+ assert(c);
+ if (!c)
+ return cn;
+ sql_alias *acname = a_create(sql->sa, c->base.name);
+ acname->parent = pa;
int i = sql->nid;
prop *p = NULL;
sql_exp *e = NULL;
unsigned int ncols = c->type.digits;
sql->nid += ncols;
- for (unsigned int k = 0; k < ncols; k++, i++) {
+ for (unsigned int k = 0; k < ncols && cn; k++, i++) {
sql_column *c = cn->data;
if (!column_privs(sql, c, PRIV_SELECT))
continue;
- e = exp_alias(sql, atname, c->base.name, atname, c->base.name,
&c->type, CARD_MULTI, c->null, is_column_unique(c), 1);
+ e = exp_alias(sql, acname, c->base.name, acname, c->base.name,
&c->type, CARD_MULTI, c->null, is_column_unique(c), 1);
if (e == NULL)
return NULL;
e->nid = -(i);
@@ -346,7 +349,7 @@ rel_nested_basetable(mvc *sql, sql_table
e->f = sa_list(sql->sa);
if (!e || !e->f)
return NULL;
- cn = rel_nested_basetable_add_vector_cols(sql, ba, c,
cn->next, e->f);
+ cn = rel_basetable_add_vector_cols(sql, atname, c,
cn->next, e->f);
} else if (c->type.multiset) {
e = exp_alias(sql, atname, c->base.name, atname,
c->base.name, &c->type, CARD_MULTI, c->null, is_column_unique(c), 0);
prop *p = p = prop_create(sql->sa, PROP_NESTED, e->p);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]