IGNITE-2243: Implemented SQLSetEnvAttr.

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

Branch: refs/heads/ignite-1786
Commit: 6c18d64daeb82ceb62c2d1744dd4d2490657d922
Parents: 4b25500
Author: isapego <[email protected]>
Authored: Wed Jan 20 20:20:51 2016 +0300
Committer: isapego <[email protected]>
Committed: Wed Jan 20 20:20:51 2016 +0300

----------------------------------------------------------------------
 .../include/ignite/odbc/environment.h           | 19 ++++++++
 .../odbc-driver/include/ignite/odbc/utility.h   |  2 +-
 .../odbc-driver/project/vs/odbc-driver.vcxproj  |  8 ++--
 .../cpp/odbc/odbc-driver/src/environment.cpp    | 28 ++++++++----
 .../platforms/cpp/odbc/odbc-driver/src/odbc.cpp | 48 ++++++++++++--------
 5 files changed, 72 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/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 14d3613..4fff8d2 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
@@ -59,6 +59,15 @@ namespace ignite
              */
             void TransactionRollback();
 
+            /**
+             * Set attribute.
+             *
+             * @param attr Attribute to set.
+             * @param value Value.
+             * @param len Value length if the attribute is of string type.
+             */
+            void SetAttribute(int32_t attr, void* value, int32_t len);
+
         private:
             IGNITE_NO_COPY_ASSIGNMENT(Environment);
 
@@ -86,6 +95,16 @@ namespace ignite
              * @return Operation result.
              */
             SqlResult InternalTransactionRollback();
+            
+            /**
+             * Set attribute.
+             *
+             * @param attr Attribute to set.
+             * @param value Value.
+             * @param len Value length if the attribute is of string type.
+             * @return Operation result.
+             */
+            SqlResult InternalSetAttribute(int32_t attr, void* value, int32_t 
len);
         };
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h 
b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
index 922e5e2..4a2e928 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
+++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
@@ -41,7 +41,7 @@ void logInit(const char*);
 
 #   define LOG_MSG(fmt, ...)                                        \
     do {                                                            \
-        logInit(ODBC_LOG_PATH);                                    \
+        logInit(ODBC_LOG_PATH);                                     \
         fprintf(log_file, "%s: " fmt, __FUNCTION__, __VA_ARGS__);   \
         fflush(log_file);                                           \
     } while (false)

http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj
----------------------------------------------------------------------
diff --git 
a/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj 
b/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj
index 5f151e4..cff9f3f 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj
+++ b/modules/platforms/cpp/odbc/odbc-driver/project/vs/odbc-driver.vcxproj
@@ -90,7 +90,7 @@
       <Optimization>Disabled</Optimization>
       <SDLCheck>false</SDLCheck>
       
<AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -104,7 +104,7 @@
       <Optimization>Disabled</Optimization>
       <SDLCheck>false</SDLCheck>
       
<AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -120,7 +120,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>false</SDLCheck>
       
<AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -138,7 +138,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <SDLCheck>false</SDLCheck>
       
<AdditionalIncludeDirectories>$(ProjectDir)\..\..\..\..\common\include;$(ProjectDir)\..\..\..\..\common\os\win\include;$(ProjectDir)\..\..\src;$(ProjectDir)\..\..\os\win;$(ProjectDir)\..\..\..\..\binary\include;$(ProjectDir)\..\..\..\..\binary\os\win\include;$(ProjectDir)\..\..\include</AdditionalIncludeDirectories>
-      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;IGNITE_IMPL;IGNITE_FRIEND;ODBC_DEBUG;ODBC_LOG_PATH="D:\\odbc.log";%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
     <Link>
       <GenerateDebugInformation>true</GenerateDebugInformation>

http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/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 0063e87..58e018b 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp
+++ b/modules/platforms/cpp/odbc/odbc-driver/src/environment.cpp
@@ -41,6 +41,20 @@ namespace ignite
             return connection;
         }
 
+        SqlResult Environment::InternalCreateConnection(Connection*& 
connection)
+        {
+            connection = new Connection;
+
+            if (!connection)
+            {
+                AddStatusRecord(SQL_STATE_HY001_MEMORY_ALLOCATION, "Not enough 
memory.");
+
+                return SQL_RESULT_ERROR;
+            }
+
+            return SQL_RESULT_SUCCESS;
+        }
+
         void Environment::TransactionCommit()
         {
             IGNITE_ODBC_API_CALL(InternalTransactionCommit());
@@ -64,17 +78,13 @@ namespace ignite
             return SQL_RESULT_ERROR;
         }
 
-        SqlResult Environment::InternalCreateConnection(Connection*& 
connection)
+        void Environment::SetAttribute(int32_t attr, void* value, int32_t len)
         {
-            connection = new Connection;
-
-            if (!connection)
-            {
-                AddStatusRecord(SQL_STATE_HY001_MEMORY_ALLOCATION, "Not enough 
memory.");
-
-                return SQL_RESULT_ERROR;
-            }
+            IGNITE_ODBC_API_CALL(InternalSetAttribute(attr, value, len));
+        }
 
+        SqlResult Environment::InternalSetAttribute(int32_t attr, void* value, 
int32_t len)
+        {
             return SQL_RESULT_SUCCESS;
         }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/6c18d64d/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp 
b/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp
index 97b1569..2f206b4 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp
+++ b/modules/platforms/cpp/odbc/odbc-driver/src/odbc.cpp
@@ -1290,6 +1290,35 @@ SQLRETURN SQL_API SQLGetData(SQLHSTMT       stmt,
     return statement->GetDiagnosticRecords().GetReturnCode();
 }
 
+SQLRETURN SQL_API SQLSetEnvAttr(SQLHENV     env,
+                                SQLINTEGER  attr,
+                                SQLPOINTER  value,
+                                SQLINTEGER  valueLen)
+{
+    using ignite::odbc::Environment;
+
+    LOG_MSG("SQLSetEnvAttr called\n");
+
+    Environment *environment = reinterpret_cast<Environment*>(env);
+
+    if (!environment)
+        return SQL_INVALID_HANDLE;
+
+    environment->SetAttribute(attr, value, valueLen);
+
+    return environment->GetDiagnosticRecords().GetReturnCode();
+}
+
+SQLRETURN SQL_API SQLGetEnvAttr(SQLHENV     env,
+                                SQLINTEGER  attr,
+                                SQLPOINTER  valueBuf,
+                                SQLINTEGER  valueBufLen,
+                                SQLINTEGER* valueResLen)
+{
+    LOG_MSG("SQLGetEnvAttr called\n");
+    return SQL_SUCCESS;
+}
+
 //
 // ==== Not implemented ====
 //
@@ -1479,16 +1508,6 @@ SQLRETURN SQL_API SQLGetConnectAttr(SQLHDBC     conn,
     return SQL_SUCCESS;
 }
 
-SQLRETURN SQL_API SQLGetEnvAttr(SQLHENV     env,
-                                SQLINTEGER  attr,
-                                SQLPOINTER  valueBuf,
-                                SQLINTEGER  valueBufLen,
-                                SQLINTEGER* valueResLen)
-{
-    LOG_MSG("SQLGetEnvAttr called\n");
-    return SQL_SUCCESS;
-}
-
 SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC     conn,
                                     SQLINTEGER  attr,
                                     SQLPOINTER  value,
@@ -1506,15 +1525,6 @@ SQLRETURN SQL_API SQLSetConnectAttr(SQLHDBC     conn,
     return SQL_SUCCESS;
 }
 
-SQLRETURN SQL_API SQLSetEnvAttr(SQLHENV     env,
-                                SQLINTEGER  attr,
-                                SQLPOINTER  value,
-                                SQLINTEGER  valueLen)
-{
-    LOG_MSG("SQLSetEnvAttr called\n");
-    return SQL_SUCCESS;
-}
-
 SQLRETURN SQL_API SQLBulkOperations(SQLHSTMT       stmt,
                                     SQLUSMALLINT   operation)
 {

Reply via email to