Repository: sqoop
Updated Branches:
  refs/heads/sqoop2 a97d10cd7 -> 43160f72d


SQOOP-1879: Sqoop2: Convert the List in Schema Columns to Array for better 
lookup time

(Veena Basavaraj via Abraham Elmahrek)


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

Branch: refs/heads/sqoop2
Commit: 43160f72d4f07446a9c1a8050327e04b64b352bd
Parents: a97d10c
Author: Abraham Elmahrek <[email protected]>
Authored: Mon Dec 15 19:25:21 2014 -0800
Committer: Abraham Elmahrek <[email protected]>
Committed: Mon Dec 15 21:03:55 2014 -0800

----------------------------------------------------------------------
 .../java/org/apache/sqoop/json/util/SchemaSerialization.java | 2 +-
 common/src/main/java/org/apache/sqoop/schema/Schema.java     | 6 +++++-
 .../apache/sqoop/connector/jdbc/GenericJdbcExtractor.java    | 2 +-
 .../apache/sqoop/connector/kite/util/KiteDataTypeUtil.java   | 2 +-
 .../sqoop/connector/idf/CSVIntermediateDataFormat.java       | 8 ++++----
 .../org/apache/sqoop/connector/matcher/LocationMatcher.java  | 4 ++--
 .../java/org/apache/sqoop/connector/matcher/NameMatcher.java | 8 ++++----
 7 files changed, 18 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
----------------------------------------------------------------------
diff --git 
a/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java 
b/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
index fa9cd5c..6b9a7f9 100644
--- a/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
+++ b/common/src/main/java/org/apache/sqoop/json/util/SchemaSerialization.java
@@ -90,7 +90,7 @@ public class SchemaSerialization {
         object.put(NOTE, schema.getNote());
       }
       JSONArray columnArray = new JSONArray();
-      for (Column column : schema.getColumns()) {
+      for (Column column : schema.getColumnsArray()) {
         columnArray.add(extractColumn(column));
       }
       object.put(COLUMNS, columnArray);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/common/src/main/java/org/apache/sqoop/schema/Schema.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/schema/Schema.java 
b/common/src/main/java/org/apache/sqoop/schema/Schema.java
index 496f6e3..9eef72b 100644
--- a/common/src/main/java/org/apache/sqoop/schema/Schema.java
+++ b/common/src/main/java/org/apache/sqoop/schema/Schema.java
@@ -117,7 +117,11 @@ public class Schema {
     return this;
   }
 
-  public List<Column> getColumns() {
+  public Column[] getColumnsArray() {
+    return columns.toArray(new Column[columns.size()]);
+  }
+
+  public List<Column> getColumnsList() {
     return columns;
   }
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java
----------------------------------------------------------------------
diff --git 
a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java
 
b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java
index ab1c64a..03a2930 100644
--- 
a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java
+++ 
b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcExtractor.java
@@ -58,7 +58,7 @@ public class GenericJdbcExtractor extends 
Extractor<LinkConfiguration, FromJobCo
     ResultSet resultSet = executor.executeQuery(query);
 
     Schema schema = context.getSchema();
-    Column[] schemaColumns = schema.getColumns().toArray(new 
Column[schema.getColumns().size()]);
+    Column[] schemaColumns = schema.getColumnsArray();
     try {
       ResultSetMetaData metaData = resultSet.getMetaData();
       int columnCount = metaData.getColumnCount();

http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java
----------------------------------------------------------------------
diff --git 
a/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java
 
b/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java
index 23a715f..d3a7847 100644
--- 
a/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java
+++ 
b/connector/connector-kite/src/main/java/org/apache/sqoop/connector/kite/util/KiteDataTypeUtil.java
@@ -59,7 +59,7 @@ public class KiteDataTypeUtil {
     Schema schema = Schema.createRecord(name, doc, namespace, false);
 
     List<Schema.Field> fields = new ArrayList<Schema.Field>();
-    for (Column column : sqoopSchema.getColumns()) {
+    for (Column column : sqoopSchema.getColumnsArray()) {
       Schema.Field field = new Schema.Field(column.getName(),
           createAvroFieldSchema(column), null, null);
       field.addProp(SQOOP_TYPE, column.getType().toString());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java
----------------------------------------------------------------------
diff --git 
a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java
 
b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java
index 7529676..846aefd 100644
--- 
a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java
+++ 
b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/idf/CSVIntermediateDataFormat.java
@@ -100,7 +100,7 @@ public class CSVIntermediateDataFormat extends 
IntermediateDataFormat<String> {
       return;
     }
     this.schema = schema;
-    List<Column> columns = schema.getColumns();
+    Column[] columns = schema.getColumnsArray();
     int i = 0;
     for (Column col : columns) {
       if (isColumnStringType(col)) {
@@ -192,13 +192,13 @@ public class CSVIntermediateDataFormat extends 
IntermediateDataFormat<String> {
       return null;
     }
 
-    if (fieldStringArray.length != schema.getColumns().size()) {
+    if (fieldStringArray.length != schema.getColumnsArray().length) {
       throw new 
SqoopException(CSVIntermediateDataFormatError.CSV_INTERMEDIATE_DATA_FORMAT_0005,
           "The data " + getCSVTextData() + " has the wrong number of fields.");
     }
 
     Object[] objectArray = new Object[fieldStringArray.length];
-    Column[] columnArray = schema.getColumns().toArray(new 
Column[fieldStringArray.length]);
+    Column[] columnArray = schema.getColumnsArray();
     for (int i = 0; i < fieldStringArray.length; i++) {
       // check for NULL field and bail out immediately
       if (fieldStringArray[i].equals(NULL_VALUE)) {
@@ -266,7 +266,7 @@ public class CSVIntermediateDataFormat extends 
IntermediateDataFormat<String> {
   @Override
   public void setObjectData(Object[] data) {
    Set<Integer> nullValueIndices = new HashSet<Integer>();
-    Column[] columnArray = schema.getColumns().toArray(new 
Column[data.length]);
+    Column[] columnArray = schema.getColumnsArray();
     // check for null
     for (int i = 0; i < data.length; i++) {
       if (data[i] == null) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java
----------------------------------------------------------------------
diff --git 
a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java
 
b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java
index 58b709e..879684c 100644
--- 
a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java
+++ 
b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/LocationMatcher.java
@@ -42,7 +42,7 @@ public class LocationMatcher extends Matcher {
   @Override
   public Object[] getMatchingData(Object[] fields) {
 
-    Object[] out = new Object[getToSchema().getColumns().size()];
+    Object[] out = new Object[getToSchema().getColumnsArray().length];
 
     int i = 0;
 
@@ -52,7 +52,7 @@ public class LocationMatcher extends Matcher {
       return fields;
     }
 
-    for (Column col: getToSchema().getColumns()) {
+    for (Column col: getToSchema().getColumnsArray()) {
       if (i < fields.length) {
         if (isNull(fields[i])) {
           out[i] = null;

http://git-wip-us.apache.org/repos/asf/sqoop/blob/43160f72/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java
----------------------------------------------------------------------
diff --git 
a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java
 
b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java
index 69d5ebd..9c2f7d5 100644
--- 
a/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java
+++ 
b/connector/connector-sdk/src/main/java/org/apache/sqoop/connector/matcher/NameMatcher.java
@@ -35,21 +35,21 @@ public class NameMatcher extends Matcher {
 
   @Override
   public Object[] getMatchingData(Object[] fields) {
-    Object[] out = new Object[getToSchema().getColumns().size()];
+    Object[] out = new Object[getToSchema().getColumnsArray().length];
 
     HashMap<String,Column> colNames = new HashMap<String, Column>();
 
-    for (Column fromCol: getFromSchema().getColumns()) {
+    for (Column fromCol: getFromSchema().getColumnsArray()) {
       colNames.put(fromCol.getName(), fromCol);
     }
 
     int toIndex = 0;
 
-    for (Column toCol: getToSchema().getColumns()) {
+    for (Column toCol: getToSchema().getColumnsArray()) {
       Column fromCol = colNames.get(toCol.getName());
 
       if (fromCol != null) {
-        int fromIndex = getFromSchema().getColumns().indexOf(fromCol);
+        int fromIndex = getFromSchema().getColumnsList().indexOf(fromCol);
         if (isNull(fields[fromIndex])) {
           out[toIndex] = null;
         } else {

Reply via email to