You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2015/12/08 14:28:16 UTC

sqoop git commit: SQOOP-2723: Oracle connector not working with lowercase columns

Repository: sqoop
Updated Branches:
  refs/heads/trunk 77021d2a6 -> 203d6b726


SQOOP-2723: Oracle connector not working with lowercase columns

(David Robson via Jarek Jarcec Cecho)


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

Branch: refs/heads/trunk
Commit: 203d6b7267e399c282ed9b645b77012879c987bc
Parents: 77021d2
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Tue Dec 8 14:27:39 2015 +0100
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Tue Dec 8 14:27:39 2015 +0100

----------------------------------------------------------------------
 src/docs/user/connectors.txt                    |  7 +++++++
 .../sqoop/manager/oracle/OraOopConnManager.java |  2 +-
 .../manager/oracle/OraOopOracleQueries.java     | 20 ++++++++++----------
 .../manager/oracle/OraOopOutputFormatBase.java  |  2 +-
 4 files changed, 19 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/203d6b72/src/docs/user/connectors.txt
----------------------------------------------------------------------
diff --git a/src/docs/user/connectors.txt b/src/docs/user/connectors.txt
index c5ce4d6..7c54071 100644
--- a/src/docs/user/connectors.txt
+++ b/src/docs/user/connectors.txt
@@ -1743,6 +1743,13 @@ $ +sqoop import ... --table customers --columns "\"\"first name\"\""+
 +
 This is the equivalent of: `select "first name" from customers`
 
+If multiple columns need to be quoted, use::
+$ +sqoop import ... --table customers --columns "\"\"first name\",\"last
+name\",\"region name\"\""+
++
+This is the equivalent of: `select "first name", "last name", "region name"
+from customers`
+
 Confirm The Data Connector for Oracle and Hadoop Can Initialize The Oracle Session
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/203d6b72/src/java/org/apache/sqoop/manager/oracle/OraOopConnManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/oracle/OraOopConnManager.java b/src/java/org/apache/sqoop/manager/oracle/OraOopConnManager.java
index 55a2b4c..9d74625 100644
--- a/src/java/org/apache/sqoop/manager/oracle/OraOopConnManager.java
+++ b/src/java/org/apache/sqoop/manager/oracle/OraOopConnManager.java
@@ -544,7 +544,7 @@ public class OraOopConnManager extends GenericJdbcManager {
   @Override
   public String escapeColName(String colName) {
 
-    return super.escapeColName(colName); // <- See notes at top about escaped
+    return escapeOracleColumnName(colName); // <- See notes at top about escaped
                                          // column names
   }
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/203d6b72/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
index ea64c6d..82e4266 100644
--- a/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
+++ b/src/java/org/apache/sqoop/manager/oracle/OraOopOracleQueries.java
@@ -680,7 +680,7 @@ public final class OraOopOracleQueries {
       if (idx > 0) {
         columnList.append(",");
       }
-      columnList.append(result.get(idx).getName());
+      columnList.append("\"").append(result.get(idx).getName()).append("\"");
     }
     sql =
         String.format("SELECT %s FROM %s WHERE 0=1", columnList.toString(),
@@ -1176,12 +1176,12 @@ public final class OraOopOracleQueries {
       if (insertClause.length() > 0) {
         insertClause.append(",");
       }
-      insertClause.append(String.format("target.%s", columnName));
+      insertClause.append(String.format("target.\"%s\"", columnName));
 
       if (valuesClause.length() > 0) {
         valuesClause.append(",");
       }
-      valuesClause.append(String.format("source.%s", columnName));
+      valuesClause.append(String.format("source.\"%s\"", columnName));
 
       if (!OraOopUtilities.stringArrayContains(mergeColumnNames, columnName,
           true)) {
@@ -1199,7 +1199,7 @@ public final class OraOopOracleQueries {
           if (updateClause.length() > 0) {
             updateClause.append(",");
           }
-          updateClause.append(String.format("target.%1$s = source.%1$s",
+          updateClause.append(String.format("target.\"%1$s\" = source.\"%1$s\"",
               columnName));
 
         }
@@ -1244,12 +1244,12 @@ public final class OraOopOracleQueries {
       if (targetColumnsClause.length() > 0) {
         targetColumnsClause.append(",");
       }
-      targetColumnsClause.append(String.format("a.%s", columnName));
+      targetColumnsClause.append(String.format("a.\"%s\"", columnName));
 
       if (sourceColumnsClause.length() > 0) {
         sourceColumnsClause.append(",");
       }
-      sourceColumnsClause.append(String.format("b.%s", columnName));
+      sourceColumnsClause.append(String.format("b.\"%s\"", columnName));
     }
 
     String sourceClause = sourceColumnsClause.toString();
@@ -1313,7 +1313,7 @@ public final class OraOopOracleQueries {
       if (idx > 0) {
         columnClause.append(",");
       }
-      columnClause.append("a." + columnNames.get(idx));
+      columnClause.append("a.\"" + columnNames.get(idx) + "\"");
     }
 
     StringBuilder rowEqualityClause = new StringBuilder();
@@ -1339,9 +1339,9 @@ public final class OraOopOracleQueries {
         rowEqualityClause.append("OR");
       }
 
-      rowEqualityClause.append(String.format("(a.%1$s <> b.%1$s "
-          + "OR (a.%1$s IS NULL AND b.%1$s IS NOT NULL) "
-          + "OR (a.%1$s IS NOT NULL AND b.%1$s IS NULL))", columnName));
+      rowEqualityClause.append(String.format("(a.\"%1$s\" <> b.\"%1$s\" "
+          + "OR (a.\"%1$s\" IS NULL AND b.\"%1$s\" IS NOT NULL) "
+          + "OR (a.\"%1$s\" IS NOT NULL AND b.\"%1$s\" IS NULL))", columnName));
     }
 
     String sqlJoin = null;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/203d6b72/src/java/org/apache/sqoop/manager/oracle/OraOopOutputFormatBase.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/oracle/OraOopOutputFormatBase.java b/src/java/org/apache/sqoop/manager/oracle/OraOopOutputFormatBase.java
index 7c4d1c5..8f7016a 100644
--- a/src/java/org/apache/sqoop/manager/oracle/OraOopOutputFormatBase.java
+++ b/src/java/org/apache/sqoop/manager/oracle/OraOopOutputFormatBase.java
@@ -354,7 +354,7 @@ abstract class OraOopOutputFormatBase<K extends SqoopRecord, V> extends
         if (colCount > 0) {
           sqlNames.append("\n,");
         }
-        sqlNames.append(columnName);
+        sqlNames.append("\"").append(columnName).append("\"");
 
         // column values...
         if (colCount > 0) {