refactoring
[rrq/rrqmisc.git] / vector / Relation.c
index 0f671abce2d09c475f8092e22ff760825211250c..868a47776f0f495e476618bdc7927a5148d98107 100644 (file)
@@ -30,17 +30,16 @@ Relation *Relation_create(TupleSchema *schema) {
 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,