IGNITE-2241: Moved to type_traits.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/77ba349b Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/77ba349b Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/77ba349b Branch: refs/heads/ignite-1786 Commit: 77ba349b7cf69253e69c94ccb9b691e76e972106 Parents: 34834c6 Author: isapego <[email protected]> Authored: Wed Jan 13 18:11:38 2016 +0300 Committer: isapego <[email protected]> Committed: Wed Jan 13 18:11:38 2016 +0300 ---------------------------------------------------------------------- .../include/ignite/odbc/common_types.h | 53 ------------ .../include/ignite/odbc/type_traits.h | 53 ++++++++++++ .../cpp/odbc/odbc-driver/src/common_types.cpp | 88 ------------------- .../odbc/odbc-driver/src/meta/column_meta.cpp | 3 +- .../src/query/column_metadata_query.cpp | 2 + .../src/query/foreign_keys_query.cpp | 2 + .../src/query/primary_keys_query.cpp | 2 + .../src/query/table_metadata_query.cpp | 2 + .../cpp/odbc/odbc-driver/src/type_traits.cpp | 89 ++++++++++++++++++++ 9 files changed, 152 insertions(+), 142 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h index 187568f..80562c5 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h +++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/common_types.h @@ -20,56 +20,11 @@ #include <stdint.h> -#include <string> - namespace ignite { namespace odbc { /** - * SQL type name constants. - */ - class SqlTypeName - { - public: - /** VARCHAR SQL type name constant. */ - static const std::string VARCHAR; - - /** SMALLINT SQL type name constant. */ - static const std::string SMALLINT; - - /** INTEGER SQL type name constant. */ - static const std::string INTEGER; - - /** DECIMAL SQL type name constant. */ - static const std::string DECIMAL; - - /** FLOAT SQL type name constant. */ - static const std::string FLOAT; - - /** DOUBLE SQL type name constant. */ - static const std::string DOUBLE; - - /** BIT SQL type name constant. */ - static const std::string BIT; - - /** TINYINT SQL type name constant. */ - static const std::string TINYINT; - - /** BIGINT SQL type name constant. */ - static const std::string BIGINT; - - /** BINARY SQL type name constant. */ - static const std::string BINARY; - - /** DATE SQL type name constant. */ - static const std::string DATE; - - /** GUID SQL type name constant. */ - static const std::string GUID; - }; - - /** * SQL result. */ enum SqlResult @@ -211,14 +166,6 @@ namespace ignite }; /** - * Get SQL type name for the binary type. - * - * @param binaryType Binary type. - * @return Corresponding SQL type name. - */ - const std::string& BinaryTypeToSqlTypeName(int8_t binaryType); - - /** * Convert internal Ignite type into ODBC SQL return code. * * @param result Internal result type. http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/type_traits.h ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/type_traits.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/type_traits.h index 7dac73f..094e189 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/type_traits.h +++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/type_traits.h @@ -20,6 +20,8 @@ #include <stdint.h> +#include <string> + namespace ignite { namespace odbc @@ -108,6 +110,57 @@ namespace ignite }; /** + * SQL type name constants. + */ + class SqlTypeName + { + public: + /** VARCHAR SQL type name constant. */ + static const std::string VARCHAR; + + /** SMALLINT SQL type name constant. */ + static const std::string SMALLINT; + + /** INTEGER SQL type name constant. */ + static const std::string INTEGER; + + /** DECIMAL SQL type name constant. */ + static const std::string DECIMAL; + + /** FLOAT SQL type name constant. */ + static const std::string FLOAT; + + /** DOUBLE SQL type name constant. */ + static const std::string DOUBLE; + + /** BIT SQL type name constant. */ + static const std::string BIT; + + /** TINYINT SQL type name constant. */ + static const std::string TINYINT; + + /** BIGINT SQL type name constant. */ + static const std::string BIGINT; + + /** BINARY SQL type name constant. */ + static const std::string BINARY; + + /** DATE SQL type name constant. */ + static const std::string DATE; + + /** GUID SQL type name constant. */ + static const std::string GUID; + }; + + /** + * Get SQL type name for the binary type. + * + * @param binaryType Binary type. + * @return Corresponding SQL type name. + */ + const std::string& BinaryTypeToSqlTypeName(int8_t binaryType); + + /** * Check if the C type supported by the current implementation. * * @param type Application type. http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp index f438717..9086321 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp @@ -24,94 +24,6 @@ namespace ignite { namespace odbc { - const std::string SqlTypeName::VARCHAR("LONG VARCHAR"); - - const std::string SqlTypeName::SMALLINT("SMALLINT"); - - const std::string SqlTypeName::INTEGER("INTEGER"); - - const std::string SqlTypeName::DECIMAL("DECIMAL"); - - const std::string SqlTypeName::FLOAT("FLOAT"); - - const std::string SqlTypeName::DOUBLE("DOUBLE"); - - const std::string SqlTypeName::BIT("BIT"); - - const std::string SqlTypeName::TINYINT("TINYINT"); - - const std::string SqlTypeName::BIGINT("BIGINT"); - - const std::string SqlTypeName::BINARY("LONG VARBINARY"); - - const std::string SqlTypeName::DATE("DATE"); - - const std::string SqlTypeName::GUID("GUID"); - - const std::string& BinaryTypeToSqlTypeName(int8_t binaryType) - { - using namespace ignite::impl::binary; - - switch (binaryType) - { - case IGNITE_TYPE_STRING: - return SqlTypeName::VARCHAR; - - case IGNITE_TYPE_SHORT: - return SqlTypeName::SMALLINT; - - case IGNITE_TYPE_INT: - return SqlTypeName::INTEGER; - - case IGNITE_TYPE_DECIMAL: - return SqlTypeName::DECIMAL; - - case IGNITE_TYPE_FLOAT: - return SqlTypeName::FLOAT; - - case IGNITE_TYPE_DOUBLE: - return SqlTypeName::DOUBLE; - - case IGNITE_TYPE_BOOL: - return SqlTypeName::BIT; - - case IGNITE_TYPE_BYTE: - case IGNITE_TYPE_CHAR: - return SqlTypeName::TINYINT; - - case IGNITE_TYPE_LONG: - return SqlTypeName::BIGINT; - - case IGNITE_TYPE_UUID: - return SqlTypeName::GUID; - - case IGNITE_TYPE_DATE: - return SqlTypeName::DATE; - - case IGNITE_TYPE_OBJECT: - case IGNITE_TYPE_ARRAY_BYTE: - case IGNITE_TYPE_ARRAY_SHORT: - case IGNITE_TYPE_ARRAY_INT: - case IGNITE_TYPE_ARRAY_LONG: - case IGNITE_TYPE_ARRAY_FLOAT: - case IGNITE_TYPE_ARRAY_DOUBLE: - case IGNITE_TYPE_ARRAY_CHAR: - case IGNITE_TYPE_ARRAY_BOOL: - case IGNITE_TYPE_ARRAY_DECIMAL: - case IGNITE_TYPE_ARRAY_STRING: - case IGNITE_TYPE_ARRAY_UUID: - case IGNITE_TYPE_ARRAY_DATE: - case IGNITE_TYPE_ARRAY: - case IGNITE_TYPE_COLLECTION: - case IGNITE_TYPE_MAP: - case IGNITE_TYPE_MAP_ENTRY: - case IGNITE_TYPE_BINARY: - default: - return SqlTypeName::BINARY; - } - - return SqlTypeName::BINARY; - } int SqlResultToReturnCode(SqlResult result) { http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/src/meta/column_meta.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/meta/column_meta.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/meta/column_meta.cpp index b2eff6a..b0d5015 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/meta/column_meta.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/meta/column_meta.cpp @@ -69,6 +69,7 @@ namespace ignite } #undef DBG_STR_CASE + #endif void ColumnMeta::Read(ignite::impl::binary::BinaryReaderImpl& reader) @@ -132,7 +133,7 @@ namespace ignite case SQL_DESC_TYPE_NAME: case SQL_DESC_LOCAL_TYPE_NAME: { - value = BinaryTypeToSqlTypeName(dataType); + value = type_traits::BinaryTypeToSqlTypeName(dataType); return true; } http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/src/query/column_metadata_query.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/query/column_metadata_query.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/query/column_metadata_query.cpp index a17fd36..a4db450 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/query/column_metadata_query.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/query/column_metadata_query.cpp @@ -83,6 +83,8 @@ namespace ignite columnsMeta() { using namespace ignite::impl::binary; + using namespace ignite::odbc::type_traits; + using meta::ColumnMeta; columnsMeta.reserve(12); http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/src/query/foreign_keys_query.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/query/foreign_keys_query.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/query/foreign_keys_query.cpp index 7fb16ce..83aba0c 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/query/foreign_keys_query.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/query/foreign_keys_query.cpp @@ -44,6 +44,8 @@ namespace ignite columnsMeta() { using namespace ignite::impl::binary; + using namespace ignite::odbc::type_traits; + using meta::ColumnMeta; columnsMeta.reserve(14); http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/src/query/primary_keys_query.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/query/primary_keys_query.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/query/primary_keys_query.cpp index 0b7ad9d..b1a508e 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/query/primary_keys_query.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/query/primary_keys_query.cpp @@ -64,6 +64,8 @@ namespace ignite columnsMeta() { using namespace ignite::impl::binary; + using namespace ignite::odbc::type_traits; + using meta::ColumnMeta; columnsMeta.reserve(6); http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/src/query/table_metadata_query.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/query/table_metadata_query.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/query/table_metadata_query.cpp index 779eb22..d381ee4 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/query/table_metadata_query.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/query/table_metadata_query.cpp @@ -63,6 +63,8 @@ namespace ignite columnsMeta() { using namespace ignite::impl::binary; + using namespace ignite::odbc::type_traits; + using meta::ColumnMeta; columnsMeta.reserve(5); http://git-wip-us.apache.org/repos/asf/ignite/blob/77ba349b/modules/platforms/cpp/odbc/odbc-driver/src/type_traits.cpp ---------------------------------------------------------------------- diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/type_traits.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/type_traits.cpp index 2986077..813d606 100644 --- a/modules/platforms/cpp/odbc/odbc-driver/src/type_traits.cpp +++ b/modules/platforms/cpp/odbc/odbc-driver/src/type_traits.cpp @@ -35,6 +35,29 @@ namespace ignite { namespace type_traits { + const std::string SqlTypeName::VARCHAR("LONG VARCHAR"); + + const std::string SqlTypeName::SMALLINT("SMALLINT"); + + const std::string SqlTypeName::INTEGER("INTEGER"); + + const std::string SqlTypeName::DECIMAL("DECIMAL"); + + const std::string SqlTypeName::FLOAT("FLOAT"); + + const std::string SqlTypeName::DOUBLE("DOUBLE"); + + const std::string SqlTypeName::BIT("BIT"); + + const std::string SqlTypeName::TINYINT("TINYINT"); + + const std::string SqlTypeName::BIGINT("BIGINT"); + + const std::string SqlTypeName::BINARY("LONG VARBINARY"); + + const std::string SqlTypeName::DATE("DATE"); + + const std::string SqlTypeName::GUID("GUID"); #ifdef _DEBUG @@ -86,6 +109,72 @@ namespace ignite #undef DBG_STR_CASE #endif + const std::string& BinaryTypeToSqlTypeName(int8_t binaryType) + { + using namespace ignite::impl::binary; + + switch (binaryType) + { + case IGNITE_TYPE_STRING: + return SqlTypeName::VARCHAR; + + case IGNITE_TYPE_SHORT: + return SqlTypeName::SMALLINT; + + case IGNITE_TYPE_INT: + return SqlTypeName::INTEGER; + + case IGNITE_TYPE_DECIMAL: + return SqlTypeName::DECIMAL; + + case IGNITE_TYPE_FLOAT: + return SqlTypeName::FLOAT; + + case IGNITE_TYPE_DOUBLE: + return SqlTypeName::DOUBLE; + + case IGNITE_TYPE_BOOL: + return SqlTypeName::BIT; + + case IGNITE_TYPE_BYTE: + case IGNITE_TYPE_CHAR: + return SqlTypeName::TINYINT; + + case IGNITE_TYPE_LONG: + return SqlTypeName::BIGINT; + + case IGNITE_TYPE_UUID: + return SqlTypeName::GUID; + + case IGNITE_TYPE_DATE: + return SqlTypeName::DATE; + + case IGNITE_TYPE_OBJECT: + case IGNITE_TYPE_ARRAY_BYTE: + case IGNITE_TYPE_ARRAY_SHORT: + case IGNITE_TYPE_ARRAY_INT: + case IGNITE_TYPE_ARRAY_LONG: + case IGNITE_TYPE_ARRAY_FLOAT: + case IGNITE_TYPE_ARRAY_DOUBLE: + case IGNITE_TYPE_ARRAY_CHAR: + case IGNITE_TYPE_ARRAY_BOOL: + case IGNITE_TYPE_ARRAY_DECIMAL: + case IGNITE_TYPE_ARRAY_STRING: + case IGNITE_TYPE_ARRAY_UUID: + case IGNITE_TYPE_ARRAY_DATE: + case IGNITE_TYPE_ARRAY: + case IGNITE_TYPE_COLLECTION: + case IGNITE_TYPE_MAP: + case IGNITE_TYPE_MAP_ENTRY: + case IGNITE_TYPE_BINARY: + default: + return SqlTypeName::BINARY; + } + + return SqlTypeName::BINARY; + } + + bool IsApplicationTypeSupported(int16_t type) { return ToDriverType(type) != IGNITE_ODBC_C_TYPE_UNSUPPORTED;
