From 200402bab2e3307e8f3a78a29fe87a1832608dd2 Mon Sep 17 00:00:00 2001 From: Pedro Date: Wed, 22 Oct 2014 17:18:43 +0200 Subject: [PATCH] now supporting * in select list --- src/bison/bison_parser.y | 8 ++++++-- src/sql_tests.cpp | 8 +++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/bison/bison_parser.y b/src/bison/bison_parser.y index 10ac20f..e746f11 100644 --- a/src/bison/bison_parser.y +++ b/src/bison/bison_parser.y @@ -93,7 +93,7 @@ typedef void* yyscan_t; %type expr column_name scalar_exp literal %type comparison_predicate predicate search_condition where_clause %type table_ref_commalist -%type expr_list group_clause +%type expr_list group_clause select_list @@ -125,7 +125,7 @@ statement: // TODO: limit // TODO: order by select_statement: - SELECT expr_list from_clause where_clause group_clause + SELECT select_list from_clause where_clause group_clause { SelectStatement* s = new SelectStatement(); s->select_list = $2; @@ -137,6 +137,10 @@ select_statement: ; +select_list: + '*' { $$ = new List(makeColumnRef("*")); } + | expr_list; + from_clause: FROM table_exp { $$ = $2; } diff --git a/src/sql_tests.cpp b/src/sql_tests.cpp index 241968a..85d25ea 100644 --- a/src/sql_tests.cpp +++ b/src/sql_tests.cpp @@ -50,17 +50,15 @@ void SelectTest2() { printf("Test: SelectTest2... "); fflush(stdout); - const char* sql = "SELECT age, name, address FROM (SELECT age FROM table, table2);"; + const char* sql = "SELECT * FROM (SELECT age FROM table, table2);"; Statement* stmt = SQLParser::parseSQL(sql); ASSERT(stmt != NULL); ASSERT(stmt->type == eSelect); SelectStatement* select = (SelectStatement*) stmt; - ASSERT(select->select_list->size() == 3); - ASSERT_STR(select->select_list->at(0)->name, "age"); - ASSERT_STR(select->select_list->at(1)->name, "name"); - ASSERT_STR(select->select_list->at(2)->name, "address"); + ASSERT(select->select_list->size() == 1); + ASSERT_STR(select->select_list->at(0)->name, "*"); ASSERT(select->from_table != NULL); ASSERT(select->from_table->type == eTableSelect);