void generateRelation(Relation<Tuple> & relation, unsigned length, unsigned largest_value, unsigned factor) {
	for(int i = 0; i < length ; i++) {
		Tuple t;
		t.id = rand() % largest_value;
		t.value = t.id * factor;
		relation.append(t);
	}
}
void NestedLoopJoin::process(Relation<Tuple> & relation1, Relation<Tuple> & relation2, Relation<Triple> & output_relation) {
	for( unsigned i1 = 0 ; i1 < relation1.length() ; i1++ ) {
		for( unsigned i2 = 0 ; i2 < relation2.length() ; i2++) {
			// append each found join tuple to the 
			// output relation
			if(relation1[ i1 ].id == relation2[ i2 ].id) {
				Triple t;
				t.id = relation1[ i1 ].id;
				t.value1 = relation1[ i1 ].value;
				t.value2 = relation2[ i2 ].value;
				output_relation.append(t);
			}
		}
	}
}