select * added
This commit is contained in:
@@ -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...
|
||||||
|
|||||||
3
main.cpp
3
main.cpp
@@ -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",
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
2
parser.h
2
parser.h
@@ -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) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
8
usql.cpp
8
usql.cpp
@@ -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{};
|
||||||
|
|||||||
Reference in New Issue
Block a user