union works

This commit is contained in:
Rebecca Schofield 2015-09-24 21:33:25 -05:00
parent db4396b952
commit d5ea5433e0
2 changed files with 32 additions and 18 deletions

View file

@ -87,26 +87,40 @@ void DBEngine::rename(Relation& r, vector<string> oldnames, vector<string> newna
Relation DBEngine::setUnion(Relation r1, Relation r2){ Relation DBEngine::setUnion(Relation r1, Relation r2){
if (r1.getAttributeNames() != r2.getAttributeNames()){ if (r1.getAttributeNames() != r2.getAttributeNames()){
vector<string> v1 = r1.getAttributeNames();
vector<string> v2 = r2.getAttributeNames();
for (int i = 0; i < v1.size(); ++i){
cout << v1[i] << " ";
}
cout << "\n";
for (int i = 0; i < v2.size(); ++i){
cout << v2[i] << " ";
}
cout << "\n";
cout << "Failure to union: the relations are not union-compatible.\nreturning the first relation.\n"; cout << "Failure to union: the relations are not union-compatible.\nreturning the first relation.\n";
return r1; return r1;
} }
else { else {
vector<Attribute> r1_atts = r1.getAttributes(); //currently all returned relations are called TEMP
Relation new_r = r1;
vector<string> temp;
bool duplicate = false;
for (int i = 0; i < r2.getAttributes()[0].getSize(); ++i) {
temp = r2.getTuple(i);
for (int j = 0; j < new_r.getAttributes()[0].getSize(); ++j){
if (temp == new_r.getTuple(j)){
duplicate = true;
break;
}
}
if (!duplicate) {
new_r.insertTuple(temp);
}
duplicate = false;
}
return new_r;
/*vector<Attribute> r1_atts = r1.getAttributes();
vector<Attribute> r2_atts = r2.getAttributes(); vector<Attribute> r2_atts = r2.getAttributes();
vector<Attribute> new_atts = r1_atts; vector<Attribute> new_atts = r1_atts;
@ -116,17 +130,17 @@ Relation DBEngine::setUnion(Relation r1, Relation r2){
} }
} }
/*for (int i = 0; i < new_atts.size(); ++i) { for (int i = 0; i < new_atts.size(); ++i) {
for (int j = 0; j < new_atts.size(); ++j){ for (int j = 0; j < new_atts.size(); ++j){
if (new_atts[i] == new_atts[j]){ if (new_atts[i] == new_atts[j]){
new_atts.erase(new_atts.begin() + i); new_atts.erase(new_atts.begin() + i);
continue; continue;
} }
} }
}*/ }
//currently all returned relations are called TEMP //currently all returned relations are called TEMP
Relation new_r("TEMP", new_atts); Relation new_r("TEMP", new_atts);
return new_r; return new_r;*/
} }
} }

BIN
a.out

Binary file not shown.