Advertisement
Guest User

Select Query

a guest
Apr 30th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. QueryResult *SQLExec::select(const hsql::SelectStatement *statement) {
  2.  
  3.     ColumnNames *cn = new ColumnNames();
  4.     ColumnAttributes *cas = new ColumnAttributes();
  5.     DbRelation& table = tables->get_table(statement->fromTable->name);
  6.  
  7.     EvalPlan *plan = new EvalPlan(table);
  8.  
  9.     if(statement->whereClause != nullptr)
  10.     {
  11.         plan = new EvalPlan(get_where_conjunction(statement->whereClause),plan);
  12.     }
  13.  
  14.     exprnList* select_list = statement->selectList; //TYPEDEF defined at the top
  15.  
  16.     if(select_list->at(0)->type == hsql::kExprStar)
  17.     {   //for SELECT * queries
  18.         *cn = table.get_column_names();
  19.         plan = new EvalPlan(EvalPlan::ProjectAll, plan); //ProjectAll
  20.     }
  21.  
  22.     else{ //for SELECT specific cols
  23.             for(auto const element : *select_list)
  24.                 cn->push_back(element->name);
  25.  
  26.             plan = new EvalPlan(cn, plan); //Project specific cols
  27.     }
  28.  
  29.     EvalPlan *optimized = plan->optimize();
  30.     ValueDicts *rows = optimized->evaluate();
  31.  
  32.     cas = table.get_column_attributes(*cn);
  33.  
  34.     std::string message = "successfully returned " + std::to_string(rows->size()) + " rows";
  35.  
  36.     return new QueryResult(cn,cas,rows,message);
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement