X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=tests%2Fexample-relation.c;h=a70714c12f420285a523f9233c088a0d8f89b153;hb=HEAD;hp=f4cf08c1b2d58af4de25d693988fe7731ac17baf;hpb=32be2db49c33155b221566a0ad3cb641db6c832e;p=rrq%2Frrqmisc.git diff --git a/tests/example-relation.c b/tests/example-relation.c index f4cf08c..a70714c 100644 --- a/tests/example-relation.c +++ b/tests/example-relation.c @@ -1,6 +1,6 @@ #include #include -#include +#include #include char *val(void* t) { @@ -16,78 +16,80 @@ char *val(void* t) { return "(null)"; } -void prtuple(char *pre, tuple *t) { +void prtuple(char *pre, Tuple *t) { if ( t ) { - fprintf( stderr, "%s<%s, %s>\n", pre, val((*t)[0]), val((*t)[1]) ); + fprintf( stderr, "%s<%s, %s>\n", pre, + val(t->elements[0]), val(t->elements[1]) ); } else { // fprintf( stderr, "%s< >\n", pre ); } } -void prdropout(const vector_index index,const void *t) { - prtuple( ".. ", (tuple*)t ); +void prdropout(const VectorIndex index,const void *t) { + prtuple( ".. ", (Tuple*)t ); } -void add_relation(relation *r,char *p,char *c) { - tuple *t = tuple_create( 2, p, c); +void add_Relation(Relation *r,char *p,char *c) { + Tuple *t = Tuple_create( 2, p, c); prtuple( "Adding: ", t ); - vector *dropped = relation_add( r, t ); + Vector *dropped = Relation_add( r, t ); if ( dropped ) { fprintf( stderr, "Knockout %ld tuples\n", dropped->size ); - vector_dump( dropped, prdropout ); - vector_resize( dropped, 0, 0, 0 ); + Vector_dump( dropped, prdropout ); + Vector_resize( dropped, 0, 0, 0 ); free( dropped ); } } typedef union { + Tuple tup; struct { + void *type; void *c1; void *c2; } cols; - void *tup[2]; -} tuple2; +} Tuple2; int main(int argc,char **argv) { - relation *rltn2 = relation_create( - tupleschema_create( - 2, tuple_create( 2, (void*) &stringitem, (void*) &stringitem ) ) ); - relation_add_constraint( rltn2, 0, 1 ); - add_relation( rltn2, "benton", "holly" ); - add_relation( rltn2, "benton", "molly"); - add_relation( rltn2, "gully", "holly"); - add_relation( rltn2, "gully", "vanitha"); - vector_index index = 0; - tuple2 q1 = {{ "benton", 0 }}; - tuple *t; + Relation *rltn2 = Relation_create( + TupleSchema_create( + Tuple_create( 2, (void*) &stringitem, (void*) &stringitem ) ) ); + Relation_add_constraint( rltn2, 0, 1 ); + add_Relation( rltn2, "benton", "holly" ); + add_Relation( rltn2, "benton", "molly"); + add_Relation( rltn2, "gully", "holly"); + add_Relation( rltn2, "gully", "vanitha"); + VectorIndex index = 0; + Tuple2 q1 = (Tuple2) { .cols = { 0, "benton", 0 }}; + Tuple *t; prtuple( "Simple query: ", &q1.tup ); for ( ; index < rltn2->content.table.size; index++ ) { - t = relation_next( rltn2, &index, &q1.tup ); + t = Relation_next( rltn2, &index, &q1.tup ); prtuple( ".. ", t ); } // Test null query fprintf( stderr, "Null query: (null)\n" ); for ( index = 0 ; index < rltn2->content.table.size; index++ ) { - t = relation_next( rltn2, &index, 0 ); + t = Relation_next( rltn2, &index, 0 ); prtuple( ".. ", t ); } // Test Generic query - q1 = (tuple2) {{ 0, 0 }}; + q1 = (Tuple2) { .cols = { 0, 0, 0 }}; prtuple( "Generic query: ", &q1.tup ); for ( index = 0 ; index < rltn2->content.table.size; index++ ) { - t = relation_next( rltn2, &index, &q1.tup ); + t = Relation_next( rltn2, &index, &q1.tup ); prtuple( ".. ", t ); } // Test deletion - q1 = (tuple2) {{ "gully", 0 }}; + q1 = (Tuple2) { .cols = { 0, "gully", 0 }}; prtuple( "Deletion query: ", &q1.tup ); - vector *deleted = relation_delete( rltn2, &q1.tup ); + Vector *deleted = Relation_delete( rltn2, &q1.tup ); for ( index = 0 ; index < rltn2->content.table.size; index++ ) { - t = relation_next( rltn2, &index, 0 ); + t = Relation_next( rltn2, &index, 0 ); prtuple( ".. ", t ); } for ( index = 0 ; index < deleted->size; index++ ) { - tuple **p = (tuple**) vector_next_used( deleted, &index ); + Tuple **p = (Tuple**) Vector_next_used( deleted, &index ); prtuple( "** ", p? *p : 0 ); } return 0;