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

[38/50] ignite git commit: IGNITE-2243: Implemented setting of SQL_ATTR_ODBC_VERSION.

IGNITE-2243: Implemented setting of SQL_ATTR_ODBC_VERSION.


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

Branch: refs/heads/ignite-1786
Commit: c847f8eed7b5b31c13cc4d6cdb980e5ad3bec1e4
Parents: a172649
Author: isapego <is...@gridgain.com>
Authored: Wed Jan 20 21:08:41 2016 +0300
Committer: isapego <is...@gridgain.com>
Committed: Wed Jan 20 21:08:41 2016 +0300

----------------------------------------------------------------------
 .../include/ignite/odbc/common_types.h          |  6 ++++
 .../include/ignite/odbc/environment.h           |  3 ++
 .../cpp/odbc/odbc-driver/src/environment.cpp    | 30 +++++++++++++++++++-
 3 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/c847f8ee/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 2e64857..e79a572 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
@@ -63,6 +63,12 @@ namespace ignite
             /** Error in row. */
             SQL_STATE_01S01_ERROR_IN_ROW,
 
+            /**
+             * The driver did not support the specified value and
+             * substituted a similar value.
+             */
+            SQL_STATE_01S02_OPTION_VALUE_CHANGED,
+
             /** Invalid cursor state. */
             SQL_STATE_24000_INVALID_CURSOR_STATE,
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/c847f8ee/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h
index c88a7bf..a9c4889 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h
+++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/environment.h
@@ -124,6 +124,9 @@ namespace ignite
              * @return Operation result.
              */
             SqlResult InternalGetAttribute(int32_t attr, app::ApplicationDataBuffer& buffer);
+
+            /** ODBC version. */
+            int32_t odbcVersion;
         };
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/c847f8ee/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp
index 186fdc1..1629e91 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp
+++ b/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 
+#include "ignite/odbc/system/odbc_constants.h"
 #include "ignite/odbc/connection.h"
 #include "ignite/odbc/environment.h"
 
@@ -22,7 +23,8 @@ namespace ignite
 {
     namespace odbc
     {
-        Environment::Environment()
+        Environment::Environment() : 
+            odbcVersion(SQL_OV_ODBC3)
         {
             // No-op.
         }
@@ -85,6 +87,32 @@ namespace ignite
 
         SqlResult Environment::InternalSetAttribute(int32_t attr, void* value, int32_t len)
         {
+            EnvironmentAttribute attribute = EnvironmentAttributeToInternal(attr);
+
+            switch (attribute)
+            {
+                case IGNITE_SQL_ENV_ATTR_ODBC_VERSION:
+                {
+                    int32_t* version = reinterpret_cast<int32_t*>(value);
+
+                    if (*version != odbcVersion)
+                    {
+                        AddStatusRecord(SQL_STATE_01S02_OPTION_VALUE_CHANGED,
+                            "ODBC version is not supported.");
+
+                        *version = odbcVersion;
+
+                        return SQL_RESULT_SUCCESS_WITH_INFO;
+                    }
+
+                    break;
+                }
+
+                case IGNITE_SQL_ENV_ATTR_UNKNOWN:
+                default:
+                    break;
+            }
+
             AddStatusRecord(SQL_STATE_HYC00_OPTIONAL_FEATURE_NOT_IMPLEMENTED,
                 "Attribute is not supported.");