You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/12/06 08:39:59 UTC

[02/50] ignite git commit: IGNITE-4288: ODBC: Fixed DML interoperability. This closes #1272.

IGNITE-4288: ODBC: Fixed DML interoperability. This closes #1272.


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

Branch: refs/heads/ignite-comm-balance-master
Commit: 4a758d1a6285f9441af7c894e2a31e0df895cb03
Parents: d2b915e
Author: isapego <ig...@gmail.com>
Authored: Thu Nov 24 15:49:08 2016 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Thu Nov 24 15:49:08 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/odbc/OdbcNioListener.java     |  2 +-
 .../internal/processors/odbc/OdbcRequestHandler.java  | 14 +++++++-------
 .../ignite/internal/processors/odbc/OdbcUtils.java    |  4 ++--
 .../cpp/odbc/include/ignite/odbc/common_types.h       |  1 +
 .../platforms/cpp/odbc/include/ignite/odbc/message.h  |  9 +--------
 .../cpp/odbc/include/ignite/odbc/statement.h          |  4 ++--
 modules/platforms/cpp/odbc/src/connection.cpp         |  4 +++-
 modules/platforms/cpp/odbc/src/statement.cpp          |  4 ++--
 modules/platforms/cpp/odbc/src/utility.cpp            |  6 ------
 9 files changed, 19 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
index e7baaff..378e5f2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
@@ -137,7 +137,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> {
         catch (Exception e) {
             log.error("Failed to process ODBC request [id=" + reqId + ", err=" + e + ']');
 
-            ses.send(parser.encode(new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage())));
+            ses.send(parser.encode(new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString())));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java
index 588fc66..32fb9db 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcRequestHandler.java
@@ -164,7 +164,7 @@ public class OdbcRequestHandler {
         catch (Exception e) {
             U.error(log, "Failed to perform handshake [reqId=" + reqId + ", req=" + req + ']', e);
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString());
         }
     }
 
@@ -220,7 +220,7 @@ public class OdbcRequestHandler {
 
             U.error(log, "Failed to execute SQL query [reqId=" + reqId + ", req=" + req + ']', e);
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString());
         }
     }
 
@@ -255,7 +255,7 @@ public class OdbcRequestHandler {
 
             U.error(log, "Failed to close SQL query [reqId=" + reqId + ", req=" + req.queryId() + ']', e);
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString());
         }
     }
 
@@ -295,7 +295,7 @@ public class OdbcRequestHandler {
         catch (Exception e) {
             U.error(log, "Failed to fetch SQL query result [reqId=" + reqId + ", req=" + req + ']', e);
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString());
         }
     }
 
@@ -352,7 +352,7 @@ public class OdbcRequestHandler {
         catch (Exception e) {
             U.error(log, "Failed to get columns metadata [reqId=" + reqId + ", req=" + req + ']', e);
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString());
         }
     }
 
@@ -397,7 +397,7 @@ public class OdbcRequestHandler {
         catch (Exception e) {
             U.error(log, "Failed to get tables metadata [reqId=" + reqId + ", req=" + req + ']', e);
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString());
         }
     }
 
@@ -429,7 +429,7 @@ public class OdbcRequestHandler {
         catch (Exception e) {
             U.error(log, "Failed to get params metadata [reqId=" + reqId + ", req=" + req + ']', e);
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.getMessage());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, e.toString());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
index 300b079..3903562 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
@@ -28,7 +28,7 @@ public class OdbcUtils {
      * @return String surrounded with quotation marks.
      */
     public static String addQuotationMarksIfNeeded(String str) {
-        if (!str.startsWith("\"") && !str.isEmpty())
+        if (str != null && !str.isEmpty() && !(str.startsWith("\"") && str.endsWith("\"")))
             return "\"" + str + "\"";
 
         return str;
@@ -41,7 +41,7 @@ public class OdbcUtils {
      * @return String without leading and trailing quotation marks.
      */
     public static String removeQuotationMarksIfNeeded(String str) {
-        if (str.startsWith("\"") && str.endsWith("\""))
+        if (str != null && str.startsWith("\"") && str.endsWith("\""))
             return str.substring(1, str.length() - 1);
 
         return str;

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/platforms/cpp/odbc/include/ignite/odbc/common_types.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/include/ignite/odbc/common_types.h b/modules/platforms/cpp/odbc/include/ignite/odbc/common_types.h
index a61be53..517fe4e 100644
--- a/modules/platforms/cpp/odbc/include/ignite/odbc/common_types.h
+++ b/modules/platforms/cpp/odbc/include/ignite/odbc/common_types.h
@@ -30,6 +30,7 @@ namespace ignite
     namespace odbc
     {
         typedef SQLLEN SqlLen;
+        typedef SQLULEN SqlUlen;
 
         /**
          * SQL result.

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/platforms/cpp/odbc/include/ignite/odbc/message.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/include/ignite/odbc/message.h b/modules/platforms/cpp/odbc/include/ignite/odbc/message.h
index 5c6a933..a2bbd99 100644
--- a/modules/platforms/cpp/odbc/include/ignite/odbc/message.h
+++ b/modules/platforms/cpp/odbc/include/ignite/odbc/message.h
@@ -461,16 +461,9 @@ namespace ignite
                 status = reader.ReadInt8();
 
                 if (status == RESPONSE_STATUS_SUCCESS)
-                {
                     ReadOnSuccess(reader);
-                }
                 else
-                {
-                    int32_t errorLen = reader.ReadString(0, 0);
-                    error.resize(errorLen);
-
-                    reader.ReadString(&error[0], static_cast<int32_t>(error.size()));
-                }
+                    utility::ReadString(reader, error);;
             }
             
             /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/platforms/cpp/odbc/include/ignite/odbc/statement.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/include/ignite/odbc/statement.h b/modules/platforms/cpp/odbc/include/ignite/odbc/statement.h
index 8adcc60..db56660 100644
--- a/modules/platforms/cpp/odbc/include/ignite/odbc/statement.h
+++ b/modules/platforms/cpp/odbc/include/ignite/odbc/statement.h
@@ -357,7 +357,7 @@ namespace ignite
              * @param nullable - Nullability flag.
              */
             void DescribeParam(int16_t paramNum, int16_t* dataType,
-                size_t* paramSize, int16_t* decimalDigits, int16_t* nullable);
+                SqlUlen* paramSize, int16_t* decimalDigits, int16_t* nullable);
 
         private:
             IGNITE_NO_COPY_ASSIGNMENT(Statement);
@@ -583,7 +583,7 @@ namespace ignite
              * @return Operation result.
              */
             SqlResult InternalDescribeParam(int16_t paramNum, int16_t* dataType,
-                size_t* paramSize, int16_t* decimalDigits, int16_t* nullable);
+                SqlUlen* paramSize, int16_t* decimalDigits, int16_t* nullable);
 
             /**
              * Make request to data source to update parameters metadata.

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/platforms/cpp/odbc/src/connection.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/src/connection.cpp b/modules/platforms/cpp/odbc/src/connection.cpp
index e8db376..38f8cba 100644
--- a/modules/platforms/cpp/odbc/src/connection.cpp
+++ b/modules/platforms/cpp/odbc/src/connection.cpp
@@ -180,7 +180,9 @@ namespace ignite
             if (!connected)
                 IGNITE_ERROR_1(IgniteError::IGNITE_ERR_ILLEGAL_STATE, "Connection is not established");
 
-            common::FixedSizeArray<int8_t> msg(len + sizeof(OdbcProtocolHeader));
+            int32_t newLen = static_cast<int32_t>(len + sizeof(OdbcProtocolHeader));
+
+            common::FixedSizeArray<int8_t> msg(newLen);
 
             OdbcProtocolHeader *hdr = reinterpret_cast<OdbcProtocolHeader*>(msg.GetData());
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/platforms/cpp/odbc/src/statement.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/src/statement.cpp b/modules/platforms/cpp/odbc/src/statement.cpp
index a0b38d7..02c6dd9 100644
--- a/modules/platforms/cpp/odbc/src/statement.cpp
+++ b/modules/platforms/cpp/odbc/src/statement.cpp
@@ -821,14 +821,14 @@ namespace ignite
         }
 
         void Statement::DescribeParam(int16_t paramNum, int16_t* dataType,
-            size_t* paramSize, int16_t* decimalDigits, int16_t* nullable)
+            SqlUlen* paramSize, int16_t* decimalDigits, int16_t* nullable)
         {
             IGNITE_ODBC_API_CALL(InternalDescribeParam(paramNum,
                 dataType, paramSize, decimalDigits, nullable));
         }
 
         SqlResult Statement::InternalDescribeParam(int16_t paramNum, int16_t* dataType,
-            size_t* paramSize, int16_t* decimalDigits, int16_t* nullable)
+            SqlUlen* paramSize, int16_t* decimalDigits, int16_t* nullable)
         {
             query::Query *qry = currentQuery.get();
             if (!qry)

http://git-wip-us.apache.org/repos/asf/ignite/blob/4a758d1a/modules/platforms/cpp/odbc/src/utility.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/src/utility.cpp b/modules/platforms/cpp/odbc/src/utility.cpp
index 9763144..22191eb 100644
--- a/modules/platforms/cpp/odbc/src/utility.cpp
+++ b/modules/platforms/cpp/odbc/src/utility.cpp
@@ -63,13 +63,7 @@ namespace ignite
                 reader.ReadString(&str[0], static_cast<int32_t>(str.size()));
             }
             else
-            {
                 str.clear();
-
-                char dummy;
-
-                reader.ReadString(&dummy, sizeof(dummy));
-            }
         }
 
         void WriteString(ignite::impl::binary::BinaryWriterImpl& writer, const std::string & str)