This commit is contained in:
VaclavT 2021-09-02 21:36:26 +02:00
parent a1b3b0140f
commit 427a3a9f04
7 changed files with 12 additions and 25 deletions

View File

@ -4,6 +4,8 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)
# set(CMAKE_CXX_FLAGS "-O3 -Wall -Wextra")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
@ -20,4 +22,3 @@ add_executable(${PROJECT_NAME} ${SOURCE})
target_link_libraries(${PROJECT_NAME} stdc++ m) target_link_libraries(${PROJECT_NAME} stdc++ m)
target_compile_options(usql PRIVATE -g)

View File

@ -3,6 +3,7 @@
- is null | is not null - is null | is not null
- coalesce, date functions now, add_date; string functions rtrim, ltrim, rpad, lpad; math function round - coalesce, date functions now, add_date; string functions rtrim, ltrim, rpad, lpad; math function round
- add pipe | concatenation - add pipe | concatenation
- add support for 1_000_000 numbers
- support for order by, offset, limit (allow column name in order by, validate) - support for order by, offset, limit (allow column name in order by, validate)
- support for uniqueue indexes (primary key) - support for uniqueue indexes (primary key)
@ -13,5 +14,4 @@
- use string_to_double and string_to_long (from Table) everywhere - use string_to_double and string_to_long (from Table) everywhere
- add const wherever should be - add const wherever should be
- use static methods where posible - use static methods where posible
- PERF in Row::Row(const Row &other), could be more efficient (memory and cpu)
- use references where pointer cannot be nullptr - use references where pointer cannot be nullptr

View File

@ -2,11 +2,6 @@
namespace usql { namespace usql {
Exception::Exception(const std::string &msg) : std::runtime_error(msg) { Exception::Exception(const std::string msg) : std::runtime_error(msg) {}
cause = msg;
}
} // namespace
const char *Exception::what() const noexcept { return cause.c_str(); }
}

View File

@ -7,13 +7,8 @@
namespace usql { namespace usql {
class Exception : public std::runtime_error { class Exception : public std::runtime_error {
private:
std::string cause;
public: public:
Exception(const std::string &msg); Exception(const std::string msg);
const char *what() const noexcept;
}; };
} } // namespace

View File

@ -13,8 +13,8 @@ namespace usql {
Lexer::Lexer() { Lexer::Lexer() {
k_words_regex = k_words_regex =
"[-+]?[0-9]+\\.[0-9]+|[-+]?[0-9][0-9_]+[0-9]|[0-9]+|[A-Za-z]+[A-Za-z0-9_#]*|[\\(\\)\\[\\]\\{\\}]|[-\\+\\*/" "[-+]?[0-9]+\\.[0-9]+|[-+]?[0-9]+|[A-Za-z]+[A-Za-z0-9_#]*|[\\(\\)\\[\\]\\{\\}]|[-\\+\\*/"
",;:\?]|!=|<>|==|>=|<=|~=|>|<|=|;|~|\\||or|and|\n|\r|\r\n|'([^']|'')*'|\".*?\"|%.*?\n"; ",;:\?]|!=|<>|==|>=|<=|~=|>|<|=|;|~|\\||\n|\r|\r\n|'([^']|'')*'|\".*?\"|%.*?\n";
k_int_regex = "[-+]?[0-9]+"; k_int_regex = "[-+]?[0-9]+";
k_int_underscored_regex = "[-+]?[0-9][0-9_]+[0-9]"; k_int_underscored_regex = "[-+]?[0-9][0-9_]+[0-9]";
k_double_regex = "[-+]?[0-9]+\\.[0-9]+"; k_double_regex = "[-+]?[0-9]+\\.[0-9]+";

View File

@ -19,8 +19,8 @@ std::string date_to_string(const long datetime, const std::string format) {
std::string result = {mbstr}; std::string result = {mbstr};
return result; return result;
} }
// TODO exception here
return "invalid argument"; throw std::runtime_error("date_to_string, invalid date string or format");
} }
time_t time_to_epoch ( const struct tm *ltm, int utcdiff ) { time_t time_to_epoch ( const struct tm *ltm, int utcdiff ) {
@ -71,8 +71,7 @@ long string_to_date(const std::string &datestr, const std::string &format) {
return time_to_epoch(timeinfo, -1 * timeinfo->tm_gmtoff); return time_to_epoch(timeinfo, -1 * timeinfo->tm_gmtoff);
} }
// throw Exception("invalid date string or format"); throw std::runtime_error("string_to_date, invalid date string or format");
return -1;
} }

View File

@ -172,13 +172,10 @@ int Row::print_get_column_size(const ColDefNode &col_def) {
switch (col_def.type) { switch (col_def.type) {
case ColumnType::varchar_type: case ColumnType::varchar_type:
return col_def.length; return col_def.length;
break;
case ColumnType::date_type: case ColumnType::date_type:
return 19; return 19;
break;
case ColumnType::float_type: case ColumnType::float_type:
return 16; return 16;
break;
default: default:
return 10; return 10;
} }