IGNITE-2371: Schema and table name parsing fixed.

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

Branch: refs/heads/ignite-1786
Commit: d9314b3696400b48e5d5ae8fcd74586b11ddcaac
Parents: 0b8487f
Author: isapego <[email protected]>
Authored: Wed Jan 13 12:35:38 2016 +0300
Committer: isapego <[email protected]>
Committed: Wed Jan 13 12:35:38 2016 +0300

----------------------------------------------------------------------
 .../processors/odbc/GridOdbcColumnMeta.java     |  2 +-
 .../processors/odbc/GridOdbcCommandHandler.java | 38 ++++++++++++++++++--
 .../src/query/column_metadata_query.cpp         |  1 +
 .../odbc/odbc-driver/src/query/data_query.cpp   |  1 +
 4 files changed, 38 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d9314b36/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcColumnMeta.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcColumnMeta.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcColumnMeta.java
index 18df24b..0668366 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcColumnMeta.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcColumnMeta.java
@@ -61,7 +61,7 @@ public class GridOdbcColumnMeta {
         try {
             this.dataType = Class.forName(info.fieldTypeName());
         }
-        catch (Exception ignoreed) {
+        catch (Exception ignored) {
             this.dataType = Object.class;
         }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/d9314b36/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcCommandHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcCommandHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcCommandHandler.java
index 644b0aa..4287319 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcCommandHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/GridOdbcCommandHandler.java
@@ -143,6 +143,18 @@ public class GridOdbcCommandHandler {
     }
 
     /**
+     * Remove quotation marks at the beginning and end of the string if 
present.
+     * @param str Input string.
+     * @return String without leading and trailing quotation marks.
+     */
+    private String RemoveQuotationMarksIfNeeded(String str) {
+        if (str.startsWith("\"") && str.endsWith("\""))
+            return str.substring(1, str.length() - 1);
+
+        return str;
+    }
+
+    /**
      * @param req Execute query request.
      * @param qryCurs Queries cursors.
      * @return Response.
@@ -245,10 +257,28 @@ public class GridOdbcCommandHandler {
         try {
             List<GridOdbcColumnMeta> meta = new ArrayList<>();
 
-            Collection<GridQueryTypeDescriptor> tablesMeta = 
ctx.query().types(req.cacheName());
+            String cacheName;
+            String tableName;
+
+            if (req.tableName().contains("."))
+            {
+                // Parsing two-part table name.
+                String[] parts = req.tableName().split("\\.");
+
+                cacheName = RemoveQuotationMarksIfNeeded(parts[0]);
+
+                tableName = parts[1];
+            }
+            else {
+                cacheName = RemoveQuotationMarksIfNeeded(req.cacheName());
+
+                tableName = req.tableName();
+            }
+
+            Collection<GridQueryTypeDescriptor> tablesMeta = 
ctx.query().types(cacheName);
 
             for (GridQueryTypeDescriptor table : tablesMeta) {
-                if (!matches(table.name(), req.tableName()))
+                if (!matches(table.name(), tableName))
                     continue;
 
                 for (Map.Entry<String, Class<?>> field : 
table.fields().entrySet()) {
@@ -279,7 +309,9 @@ public class GridOdbcCommandHandler {
         try {
             List<GridOdbcTableMeta> meta = new ArrayList<>();
 
-            Collection<GridQueryTypeDescriptor> tablesMeta = 
ctx.query().types(req.schema());
+            String realSchema = RemoveQuotationMarksIfNeeded(req.schema());
+
+            Collection<GridQueryTypeDescriptor> tablesMeta = 
ctx.query().types(realSchema);
 
             for (GridQueryTypeDescriptor table : tablesMeta) {
                 if (!matches(table.name(), req.table()))

http://git-wip-us.apache.org/repos/asf/ignite/blob/d9314b36/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 458679a..a624fb5 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
@@ -290,6 +290,7 @@ namespace ignite
                     LOG_MSG("[%d] TableName:      %s\n", i, 
meta[i].GetTableName().c_str());
                     LOG_MSG("[%d] ColumnName:     %s\n", i, 
meta[i].GetColumnName().c_str());
                     LOG_MSG("[%d] ColumnTypeName: %s\n", i, 
meta[i].GetColumnTypeName().c_str());
+                    LOG_MSG("[%d] ColumnType:     %d\n", i, 
meta[i].GetDataType());
                     LOG_MSG("\n");
                 }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/d9314b36/modules/platforms/cpp/odbc/odbc-driver/src/query/data_query.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/query/data_query.cpp 
b/modules/platforms/cpp/odbc/odbc-driver/src/query/data_query.cpp
index ac3ed49..187ed65 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/src/query/data_query.cpp
+++ b/modules/platforms/cpp/odbc/odbc-driver/src/query/data_query.cpp
@@ -180,6 +180,7 @@ namespace ignite
                     LOG_MSG("[%d] TypeName:       %s\n", i, 
rsp.GetMeta()[i].GetTableName().c_str());
                     LOG_MSG("[%d] ColumnName:     %s\n", i, 
rsp.GetMeta()[i].GetColumnName().c_str());
                     LOG_MSG("[%d] ColumnTypeName: %s\n", i, 
rsp.GetMeta()[i].GetColumnTypeName().c_str());
+                    LOG_MSG("[%d] ColumnType:     %d\n", i, 
rsp.GetMeta()[i].GetDataType());
                     LOG_MSG("\n");
                 }
 

Reply via email to