diff --git a/backends/mysql/src/mysql_connection.cpp b/backends/mysql/src/mysql_connection.cpp index a05102d..f2e4109 100644 --- a/backends/mysql/src/mysql_connection.cpp +++ b/backends/mysql/src/mysql_connection.cpp @@ -110,8 +110,41 @@ sql::null_option to_null_option(unsigned int flags) sql::data_type_t string2type(const std::string &type_string) { - // if (strcmp(type_string.c_str(), "int") - return sql::data_type_t::type_unknown; + if (strncmp(type_string.c_str(), "tinyint", 7) == 0) { + return sql::data_type_t::type_char; + } else if (strncmp(type_string.c_str(), "smallint", 8) == 0) { + if (strstr(type_string.c_str(), "unsigned") != nullptr) { + return sql::data_type_t::type_unsigned_short; + } else { + return sql::data_type_t::type_short; + } + } else if (strncmp(type_string.c_str(), "int", 3) == 0) { + if (strstr(type_string.c_str(), "unsigned") != nullptr) { + return sql::data_type_t::type_unsigned_int; + } else { + return sql::data_type_t::type_int; + } + } else if (strncmp(type_string.c_str(), "bigint", 6) == 0) { + if (strstr(type_string.c_str(), "unsigned") != nullptr) { + return sql::data_type_t::type_unsigned_long_long; + } else { + return sql::data_type_t::type_long_long; + } + } else if (strcmp(type_string.c_str(), "date") == 0) { + return sql::data_type_t::type_date; + } else if (strncmp(type_string.c_str(), "datetime", 8) == 0) { + return sql::data_type_t::type_time; + } else if (strcmp(type_string.c_str(), "float") == 0) { + return sql::data_type_t::type_float; + } else if (strcmp(type_string.c_str(), "double") == 0) { + return sql::data_type_t::type_double; + } else if (strncmp(type_string.c_str(), "varchar", 7) == 0) { + return sql::data_type_t::type_varchar; + } else if (strncmp(type_string.c_str(), "text", 4) == 0) { + return sql::data_type_t::type_text; + } else { + return sql::data_type_t::type_unknown; + } } struct type_info