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:46 UTC

[44/50] ignite git commit: IGNITE-2248: Implmented Statement::InternalExecuteSpecialColumnsQuery.

IGNITE-2248: Implmented Statement::InternalExecuteSpecialColumnsQuery.


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

Branch: refs/heads/ignite-1786
Commit: 8b1db4ef54f83a70e5a92aa7c7c8d15ad51fb368
Parents: d86a82c
Author: isapego <is...@gridgain.com>
Authored: Thu Jan 21 17:27:27 2016 +0300
Committer: isapego <is...@gridgain.com>
Committed: Thu Jan 21 17:27:27 2016 +0300

----------------------------------------------------------------------
 .../include/ignite/odbc/common_types.h          | 47 +++++++++++---------
 .../ignite/odbc/query/special_columns_query.h   |  2 +-
 .../cpp/odbc/odbc-driver/src/statement.cpp      | 17 ++++++-
 3 files changed, 42 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8b1db4ef/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 c065872..8e1dbf2 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
@@ -73,48 +73,49 @@ 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,
 
+            /** Column type out of range. */
+            SQL_STATE_HY097_COLUMN_TYPE_OUT_OF_RANGE,
+
             /**
-            * 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
         };
 
@@ -216,6 +217,8 @@ namespace ignite
          * @return Internal EnvironmentAttribute type value.
          */
         EnvironmentAttribute EnvironmentAttributeToInternal(int32_t attr);
+
+
     }
 }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/8b1db4ef/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/query/special_columns_query.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/query/special_columns_query.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/query/special_columns_query.h
index ad45791..f5affad 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/query/special_columns_query.h
+++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/query/special_columns_query.h
@@ -29,7 +29,7 @@ namespace ignite
             /**
              * Special columns query.
              */
-            class SpecialColumnsQuery : Query
+            class SpecialColumnsQuery : public Query
             {
             public:
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/8b1db4ef/modules/platforms/cpp/odbc/odbc-driver/src/statement.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/statement.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/statement.cpp
index d7ea288..4bf0db9 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/src/statement.cpp
+++ b/modules/platforms/cpp/odbc/odbc-driver/src/statement.cpp
@@ -22,6 +22,7 @@
 #include "ignite/odbc/query/foreign_keys_query.h"
 #include "ignite/odbc/query/primary_keys_query.h"
 #include "ignite/odbc/query/type_info_query.h"
+#include "ignite/odbc/query/special_columns_query.h"
 #include "ignite/odbc/connection.h"
 #include "ignite/odbc/utility.h"
 #include "ignite/odbc/message.h"
@@ -317,7 +318,21 @@ namespace ignite
             const std::string& catalog, const std::string& schema,
             const std::string& table, int16_t scope, int16_t nullable)
         {
-            return SQL_RESULT_ERROR;
+            if (type != SQL_BEST_ROWID && type != SQL_ROWVER)
+            {
+                AddStatusRecord(SQL_STATE_HY097_COLUMN_TYPE_OUT_OF_RANGE,
+                    "An invalid IdentifierType value was specified.");
+
+                return SQL_RESULT_ERROR;
+            }
+
+            if (currentQuery.get())
+                currentQuery->Close();
+
+            currentQuery.reset(new query::SpecialColumnsQuery(*this, type,
+                catalog, schema, table, scope, nullable));
+
+            return currentQuery->Execute();
         }
 
         void Statement::ExecuteGetTypeInfoQuery(int16_t sqlType)