You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/01/25 12:55:19 UTC

[17/50] ignite git commit: IGNITE-2241: Get from Binary types SQL type name.

IGNITE-2241: Get from Binary types SQL type name.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/34834c6c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/34834c6c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/34834c6c

Branch: refs/heads/ignite-1786
Commit: 34834c6c1706f3a58f85e51e5a1b7cb7e7560a5a
Parents: dd0ccaf
Author: isapego <is...@gridgain.com>
Authored: Wed Jan 13 16:46:37 2016 +0300
Committer: isapego <is...@gridgain.com>
Committed: Wed Jan 13 16:46:37 2016 +0300

----------------------------------------------------------------------
 .../include/ignite/odbc/common_types.h          | 119 ++++++++++++-------
 .../cpp/odbc/odbc-driver/src/common_types.cpp   |  91 +++++++++++++-
 .../odbc/odbc-driver/src/meta/column_meta.cpp   |   3 +-
 .../src/query/column_metadata_query.cpp         |  24 ++--
 .../src/query/foreign_keys_query.cpp            |  28 ++---
 .../src/query/primary_keys_query.cpp            |  12 +-
 .../src/query/table_metadata_query.cpp          |  10 +-
 7 files changed, 204 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/34834c6c/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 a364791..187568f 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
@@ -33,13 +33,40 @@ namespace ignite
         {
         public:
             /** VARCHAR SQL type name constant. */
-            static const std::string varcharType;
+            static const std::string VARCHAR;
 
             /** SMALLINT SQL type name constant. */
-            static const std::string smallintType;
+            static const std::string SMALLINT;
 
             /** INTEGER SQL type name constant. */
-            static const std::string integerType;
+            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;
         };
 
         /**
@@ -61,16 +88,8 @@ namespace ignite
         };
 
         /**
-         * Convert internal Ignite type into ODBC SQL return code.
-         *
-         * @param result Internal result type.
-         * @return ODBC result type.
-         */
-        int SqlResultToReturnCode(SqlResult result);
-
-        /**
-         * Provides detailed information about the cause of a warning or error.
-         */
+        * Provides detailed information about the cause of a warning or error.
+        */
         enum SqlState
         {
             /** Undefined state. Internal, should never be exposed to user. */
@@ -86,69 +105,69 @@ namespace ignite
             SQL_STATE_24000_INVALID_CURSOR_STATE,
 
             /**
-             * The driver was unable to establish a connection with the data
-             * source.
-             */
+            * The driver was unable to establish a connection with the data
+            * source.
+            */
             SQL_STATE_08001_CANNOT_CONNECT,
 
             /**
-             * The specified ConnectionHandle had already been used
-             * to establish a connection with a data source, and the connection
-             * was still open.
-             */
+            * The specified ConnectionHandle had already been used
+            * to establish a connection with a data source, and the connection
+            * was still open.
+            */
             SQL_STATE_08002_ALREADY_CONNECTED,
 
             /** The connection specified was not open. */
             SQL_STATE_08003_NOT_CONNECTED,
 
             /**
-             * An error occurred for which there was no specific SQLSTATE
-             * and for which no implementation-specific SQLSTATE was defined.
-             */
+            * An error occurred for which there was no specific SQLSTATE
+            * and for which no implementation-specific SQLSTATE was defined.
+            */
             SQL_STATE_HY000_GENERAL_ERROR,
 
             /**
-             * The driver was unable to allocate memory for the specified
-             * handle.
-             */
+            * The driver was unable to allocate memory for the specified
+            * handle.
+            */
             SQL_STATE_HY001_MEMORY_ALLOCATION,
 
             /**
-             * Function sequence error.
-             */
+            * Function sequence error.
+            */
             SQL_STATE_HY010_SEQUENCE_ERROR,
 
             /**
-             * The driver does not support the feature of ODBC behavior that
-             * the application requested.
-             */
+            * The driver does not support the feature of ODBC behavior that
+            * the application requested.
+            */
             SQL_STATE_HYC00_OPTIONAL_FEATURE_NOT_IMPLEMENTED,
 
             /**
-             * The connection timeout period expired before the data source
-             * responded to the request.
-             */
+            * The connection timeout period expired before the data source
+            * responded to the request.
+            */
             SQL_STATE_HYT01_CONNECTIOIN_TIMEOUT
         };
 
         /**
-         * Diagnostic field type.
-         */
+        * Diagnostic field type.
+        */
         enum DiagnosticField
         {
             /** Header record field: Count of rows in the cursor. */
             IGNITE_SQL_DIAG_HEADER_CURSOR_ROW_COUNT,
 
             /**
-             * Header record field: String that describes the SQL statement
-             * that the underlying function executed.
-             */
+            * Header record field: String that describes the SQL statement
+            * that the underlying function executed.
+            */
             IGNITE_SQL_DIAG_HEADER_DYNAMIC_FUNCTION,
 
             /**
-             * Header record field: Numeric code that describes the SQL
-             * statement that was executed by the underlying function.
-             */
+            * Header record field: Numeric code that describes the SQL
+            * statement that was executed by the underlying function.
+            */
             IGNITE_SQL_DIAG_HEADER_DYNAMIC_FUNCTION_CODE,
 
             /** Header record field: Number of status records. */
@@ -192,6 +211,22 @@ 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.
+         * @return ODBC result type.
+         */
+        int SqlResultToReturnCode(SqlResult result);
+
+        /**
          * Convert ODBC field type to internal DiagnosticField type value.
          *
          * @param field ODBC field type.

http://git-wip-us.apache.org/repos/asf/ignite/blob/34834c6c/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 db2353d..f438717 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp
+++ b/modules/platforms/cpp/odbc/odbc-driver/src/common_types.cpp
@@ -15,6 +15,8 @@
  * limitations under the License.
  */
 
+#include <ignite/impl/binary/binary_common.h>
+
 #include "ignite/odbc/system/odbc_constants.h"
 #include "ignite/odbc/common_types.h"
 
@@ -22,11 +24,94 @@ namespace ignite
 {
     namespace odbc
     {
-        const std::string SqlTypeName::varcharType("VARCHAR");
+        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::smallintType("SMALLINT");
+        const std::string SqlTypeName::BINARY("LONG VARBINARY");
 
-        const std::string SqlTypeName::integerType("INTEGER");
+        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/34834c6c/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 bea764e..b2eff6a 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
@@ -18,6 +18,7 @@
 #include "ignite/odbc/system/odbc_constants.h"
 #include "ignite/odbc/meta/column_meta.h"
 #include "ignite/odbc/type_traits.h"
+#include "ignite/odbc/common_types.h"
 
 namespace ignite
 {
@@ -131,7 +132,7 @@ namespace ignite
                     case SQL_DESC_TYPE_NAME:
                     case SQL_DESC_LOCAL_TYPE_NAME:
                     {
-                        value = typeName;
+                        value = BinaryTypeToSqlTypeName(dataType);
 
                         return true;
                     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34834c6c/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 a624fb5..a17fd36 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
@@ -90,18 +90,18 @@ namespace ignite
                 const std::string sch("");
                 const std::string tbl("");
 
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_CAT",      SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_SCHEM",    SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_NAME",     SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "COLUMN_NAME",    SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "DATA_TYPE",      SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TYPE_NAME",      SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "COLUMN_SIZE",    SqlTypeName::integerType,  IGNITE_TYPE_INT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "BUFFER_LENGTH",  SqlTypeName::integerType,  IGNITE_TYPE_INT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "DECIMAL_DIGITS", SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "NUM_PREC_RADIX", SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "NULLABLE",       SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "REMARKS",        SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_CAT",      SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_SCHEM",    SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_NAME",     SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "COLUMN_NAME",    SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "DATA_TYPE",      SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TYPE_NAME",      SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "COLUMN_SIZE",    SqlTypeName::INTEGER,  IGNITE_TYPE_INT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "BUFFER_LENGTH",  SqlTypeName::INTEGER,  IGNITE_TYPE_INT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "DECIMAL_DIGITS", SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "NUM_PREC_RADIX", SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "NULLABLE",       SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "REMARKS",        SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
             }
 
             ColumnMetadataQuery::~ColumnMetadataQuery()

http://git-wip-us.apache.org/repos/asf/ignite/blob/34834c6c/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 33cc440..7fb16ce 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
@@ -51,20 +51,20 @@ namespace ignite
                 const std::string sch("");
                 const std::string tbl("");
 
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKTABLE_CAT",   SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKTABLE_SCHEM", SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKTABLE_NAME",  SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKCOLUMN_NAME", SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKTABLE_CAT",   SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKTABLE_SCHEM", SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKTABLE_NAME",  SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKCOLUMN_NAME", SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "KEY_SEQ",       SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "UPDATE_RULE",   SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "DELETE_RULE",   SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "FK_NAME",       SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "PK_NAME",       SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "DEFERRABILITY", SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKTABLE_CAT",   SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKTABLE_SCHEM", SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKTABLE_NAME",  SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "PKCOLUMN_NAME", SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKTABLE_CAT",   SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKTABLE_SCHEM", SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKTABLE_NAME",  SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "FKCOLUMN_NAME", SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "KEY_SEQ",       SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "UPDATE_RULE",   SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "DELETE_RULE",   SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "FK_NAME",       SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "PK_NAME",       SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "DEFERRABILITY", SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
             }
 
             ForeignKeysQuery::~ForeignKeysQuery()

http://git-wip-us.apache.org/repos/asf/ignite/blob/34834c6c/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 27e76ac..0b7ad9d 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
@@ -71,12 +71,12 @@ namespace ignite
                 const std::string sch("");
                 const std::string tbl("");
 
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_CAT",   SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_SCHEM", SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_NAME",  SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "COLUMN_NAME", SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "KEY_SEQ",     SqlTypeName::smallintType, IGNITE_TYPE_SHORT));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "PK_NAME",     SqlTypeName::varcharType,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_CAT",   SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_SCHEM", SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_NAME",  SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "COLUMN_NAME", SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "KEY_SEQ",     SqlTypeName::SMALLINT, IGNITE_TYPE_SHORT));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "PK_NAME",     SqlTypeName::VARCHAR,  IGNITE_TYPE_STRING));
             }
 
             PrimaryKeysQuery::~PrimaryKeysQuery()

http://git-wip-us.apache.org/repos/asf/ignite/blob/34834c6c/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 e07da2e..779eb22 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
@@ -70,11 +70,11 @@ namespace ignite
                 const std::string sch("");
                 const std::string tbl("");
 
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_CAT",   SqlTypeName::varcharType, IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_SCHEM", SqlTypeName::varcharType, IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_NAME",  SqlTypeName::varcharType, IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_TYPE",  SqlTypeName::varcharType, IGNITE_TYPE_STRING));
-                columnsMeta.push_back(ColumnMeta(sch, tbl, "REMARKS",     SqlTypeName::varcharType, IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_CAT",   SqlTypeName::VARCHAR, IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_SCHEM", SqlTypeName::VARCHAR, IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_NAME",  SqlTypeName::VARCHAR, IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "TABLE_TYPE",  SqlTypeName::VARCHAR, IGNITE_TYPE_STRING));
+                columnsMeta.push_back(ColumnMeta(sch, tbl, "REMARKS",     SqlTypeName::VARCHAR, IGNITE_TYPE_STRING));
             }
 
             TableMetadataQuery::~TableMetadataQuery()