diff options
Diffstat (limited to 'query.cpp')
-rw-r--r-- | query.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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); } |