aboutsummaryrefslogtreecommitdiff
path: root/query.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'query.cpp')
-rw-r--r--query.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/query.cpp b/query.cpp
index 3226ab0..b88fbd8 100644
--- a/query.cpp
+++ b/query.cpp
@@ -120,6 +120,8 @@ QueryResult InsertQuery::execute(map <string,Table> &tables){
}
+UpdateQuery::UpdateQuery(void){};
+
QueryResult UpdateQuery::execute(map<string,Table> &tables){
const map<string,Table>::iterator tit=tables.find(tablename);
if(tit==tables.cend())return QueryResult(0,"non-existent table (UQ:ex)");
@@ -136,11 +138,12 @@ QueryResult UpdateQuery::execute(map<string,Table> &tables){
for(i=0;i<numupdates;i++){
const int col=updates[i].col;
if(col<0||col>=table.nc)return QueryResult(0,"invalid col (UQ:ex)");
+ if(col==0)return QueryResult(0,"update primary key (UQ:ex)");
}
for(i=0;i<(int)ret.first.size();i++){
for(j=0;j<numupdates;j++){
const int col=updates[j].col;
- it->second.items[col]=updates[j].value.copy(table.header[col]);
+ ret.first[i]->second.items[col]=updates[j].value.copy(table.header[col]);
}
}
return QueryResult(ret.first.size());
@@ -167,9 +170,11 @@ QueryResult DeleteQuery::execute(map<string,Table> &tables){
}
+DropQuery::DropQuery(void){};
+
QueryResult DropQuery::execute(map<string,Table> &tables){
const map<string,Table>::iterator tit=tables.find(tablename);
- if(tit==tables.cend())return QueryResult(0,"non-existent table (DQ:ex)");
+ if(tit==tables.cend())return QueryResult(0,"non-existent table (DrQ:ex)");
tables.erase(tit);
return QueryResult(1);
}