select * added

This commit is contained in:
2021-08-08 01:29:10 +02:00
parent 15a065c2aa
commit 19585dda8c
5 changed files with 24 additions and 11 deletions

View File

@@ -1,6 +1,5 @@
### TODO ### TODO
- support for *
- add support for set setting value - add support for set setting value
- command line interface - command line interface
- date functions - now, add_date... - date functions - now, add_date...

View File

@@ -129,8 +129,7 @@ int main(int argc, char *argv[]) {
// boolean datatype "create table ticker ( tablee varchar(3) not null, permaticker integer, ticker varchar(8) not null, name varchar(256) not null, exchange varchar(32), isdelisted boolean, category varchar(32), cusips varchar(256), siccode integer, sicsector varchar(256), sicindustry varchar(256), famasector varchar(256), famaindustry varchar(256), sector varchar(128), industry varchar(128), scalemarketcap varchar(64), scalerevenue varchar(64), relatedtickers varchar(128), currency varchar(3), location varchar(64), lastupdated date, firstadded date, firstpricedate date, lastpricedate date, firstquarter date, lastquarter date, secfilings varchar(256), companysite varchar(256))" // boolean datatype "create table ticker ( tablee varchar(3) not null, permaticker integer, ticker varchar(8) not null, name varchar(256) not null, exchange varchar(32), isdelisted boolean, category varchar(32), cusips varchar(256), siccode integer, sicsector varchar(256), sicindustry varchar(256), famasector varchar(256), famaindustry varchar(256), sector varchar(128), industry varchar(128), scalemarketcap varchar(64), scalerevenue varchar(64), relatedtickers varchar(128), currency varchar(3), location varchar(64), lastupdated date, firstadded date, firstpricedate date, lastpricedate date, firstquarter date, lastquarter date, secfilings varchar(256), companysite varchar(256))"
"create table ticker ( tablee varchar(5) not null, permaticker integer, ticker varchar(10) not null, name varchar(256) not null, exchange varchar(32), isdelisted boolean, category varchar(32), cusips varchar(256), siccode integer, sicsector varchar(256), sicindustry varchar(256), famasector varchar(256), famaindustry varchar(256), sector varchar(128), industry varchar(128), scalemarketcap varchar(64), scalerevenue varchar(64), relatedtickers varchar(128), currency varchar(3), location varchar(64), lastupdated date, firstadded date, firstpricedate date, lastpricedate date, firstquarter date, lastquarter date, secfilings varchar(256), companysite varchar(256))", "create table ticker ( tablee varchar(5) not null, permaticker integer, ticker varchar(10) not null, name varchar(256) not null, exchange varchar(32), isdelisted boolean, category varchar(32), cusips varchar(256), siccode integer, sicsector varchar(256), sicindustry varchar(256), famasector varchar(256), famaindustry varchar(256), sector varchar(128), industry varchar(128), scalemarketcap varchar(64), scalerevenue varchar(64), relatedtickers varchar(128), currency varchar(3), location varchar(64), lastupdated date, firstadded date, firstpricedate date, lastpricedate date, firstquarter date, lastquarter date, secfilings varchar(256), companysite varchar(256))",
"load ticker from '/Users/vaclavt/Library/Mobile Documents/com~apple~CloudDocs/Development/usql/tickers.csv')", "load ticker from '/Users/vaclavt/Library/Mobile Documents/com~apple~CloudDocs/Development/usql/tickers.csv')",
"select permaticker, ticker, name from ticker where ticker = 'WFC'" "select * from ticker where ticker = 'WFC' and tablee = 'SF1'"
// "select * from ticker limit 5"
// "create table a (i integer not null, s varchar(64), f float null, d date null, b boolean)", // "create table a (i integer not null, s varchar(64), f float null, d date null, b boolean)",
// "insert into a (i, s, b) values(1, upper('one'), 'Y')", // "insert into a (i, s, b) values(1, upper('one'), 'Y')",
// "select i, s, b from a where i >=1 order by 1 desc offset 0 limit 1", // "select i, s, b from a where i >=1 order by 1 desc offset 0 limit 1",

View File

@@ -226,6 +226,12 @@ namespace usql {
int i = 1; int i = 1;
while (m_lexer.tokenType() != TokenType::keyword_from) { while (m_lexer.tokenType() != TokenType::keyword_from) {
if (m_lexer.tokenType()==TokenType::multiply) {
std::string name = m_lexer.consumeCurrentToken().token_string;
auto multiply_char = std::make_unique<ColNameNode>(name);
cols->push_back(SelectColNode{std::move(multiply_char), "*"});
} else {
auto column_value = parse_value(); auto column_value = parse_value();
std::string column_alias; std::string column_alias;
@@ -235,8 +241,9 @@ namespace usql {
column_alias = "c" + std::to_string(i); column_alias = "c" + std::to_string(i);
i++; i++;
} }
cols->push_back(SelectColNode{std::move(column_value), column_alias}); cols->push_back(SelectColNode{std::move(column_value), column_alias});
}
m_lexer.skipTokenOptional(TokenType::comma); m_lexer.skipTokenOptional(TokenType::comma);
} }

View File

@@ -82,7 +82,7 @@ namespace usql {
std::unique_ptr<Node> value; std::unique_ptr<Node> value;
std::string name; std::string name;
SelectColNode(std::unique_ptr<Node> column, const std::string& alias) : SelectColNode(std::unique_ptr<Node> column, std::string alias) :
Node(NodeType::column_name), value(std::move(column)), name(alias) {} Node(NodeType::column_name), value(std::move(column)), name(alias) {}
}; };

View File

@@ -149,6 +149,14 @@ std::unique_ptr<Table> USql::execute_select(SelectFromTableNode &node) {
// find source table // find source table
Table *table = find_table(node.table_name); Table *table = find_table(node.table_name);
// expand *
if (node.cols_names->size()==1 && node.cols_names->operator[](0).name == "*") {
node.cols_names->clear();
for(auto col : table->m_col_defs) {
node.cols_names->push_back(SelectColNode{std::move(std::make_unique<ColNameNode>(col.name)), col.name});
}
}
// create result table // create result table
std::vector<ColDefNode> result_tbl_col_defs{}; std::vector<ColDefNode> result_tbl_col_defs{};