int Relation_add_constraint(Relation *r,...) {
va_list ap;
TupleSchema *ts = (TupleSchema *) r->content.type;
- Tuple *columns = (Tuple*) malloc(
- sizeof( Tuple ) + ts->arity * sizeof( void* ) );
+ Tuple *columns = Tuple_clone( ts->columns );
int i = 0;
va_start( ap, r );
- for ( ; i < ts->arity; i++ ) {
- if ( va_arg( ap, int ) ) {
- columns->elements[i] = ts->columns->elements[i];
+ for ( ; i < columns->size; i++ ) {
+ if ( va_arg( ap, int ) == 0 ) {
+ columns->elements[i] = 0;
}
}
va_end( ap );
- ts = TupleSchema_create( ts->arity, columns );
+ ts = TupleSchema_create( columns );
i = (int) r->constraints.size;
Vector_append(
&r->constraints,