Repository: sqoop
Updated Branches:
  refs/heads/trunk 4e0149b3e -> b84ebf1e8


SQOOP-2787: MySql import and export fails with 5.1 server and 5.1.17+ drivers
    (Sowmya Ramesh via Venkat Ranganathan)


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

Branch: refs/heads/trunk
Commit: b84ebf1e8475946dad2e9e2a83d58280d715ef1c
Parents: 4e0149b
Author: Venkat Ranganathan <[email protected]>
Authored: Fri Feb 19 22:38:34 2016 -0800
Committer: Venkat Ranganathan <[email protected]>
Committed: Fri Feb 19 22:38:34 2016 -0800

----------------------------------------------------------------------
 src/java/org/apache/sqoop/SqoopOptions.java         |  9 +++++++++
 src/java/org/apache/sqoop/manager/MySQLManager.java | 11 ++++++++++-
 src/java/org/apache/sqoop/tool/BaseSqoopTool.java   |  2 ++
 3 files changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/b84ebf1e/src/java/org/apache/sqoop/SqoopOptions.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/SqoopOptions.java 
b/src/java/org/apache/sqoop/SqoopOptions.java
index db92b30..4d30007 100644
--- a/src/java/org/apache/sqoop/SqoopOptions.java
+++ b/src/java/org/apache/sqoop/SqoopOptions.java
@@ -231,6 +231,7 @@ public class SqoopOptions implements Cloneable {
   private boolean areInputDelimsManuallySet;
 
   private Configuration conf;
+  private String toolName;
 
   public static final int DEFAULT_NUM_MAPPERS = 4;
 
@@ -2595,4 +2596,12 @@ public class SqoopOptions implements Cloneable {
   public void setCustomToolOptions(Map<String, String> customToolOptions) {
     this.customToolOptions = customToolOptions;
   }
+
+    public String getToolName() {
+        return this.toolName;
+    }
+
+    public void setToolName(String toolName) {
+        this.toolName = toolName;
+    }
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/b84ebf1e/src/java/org/apache/sqoop/manager/MySQLManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/manager/MySQLManager.java 
b/src/java/org/apache/sqoop/manager/MySQLManager.java
index e1d5a36..3c2276f 100644
--- a/src/java/org/apache/sqoop/manager/MySQLManager.java
+++ b/src/java/org/apache/sqoop/manager/MySQLManager.java
@@ -59,6 +59,8 @@ public class MySQLManager
   // set to true after we warn the user that we can use direct fastpath.
   private static boolean warningPrinted = false;
 
+  private static final String EXPORT_OPERATION = "export";
+
   public MySQLManager(final SqoopOptions opts) {
     super(DRIVER_CLASS, opts);
   }
@@ -67,7 +69,14 @@ public class MySQLManager
   protected void initOptionDefaults() {
     if (options.getFetchSize() == null) {
       LOG.info("Preparing to use a MySQL streaming resultset.");
-      options.setFetchSize(Integer.MIN_VALUE);
+        String operation = options.getToolName();
+      if (StringUtils.isNotBlank(operation) && 
operation.equalsIgnoreCase(EXPORT_OPERATION)) {
+          // Set fetch size to zero for export operation, see SQOOP-2787 for 
more details. Setting fetchsize to 0
+          // would not overwhelm the JVM as the queries during export are 
primarily metadata queries
+          options.setFetchSize(0);
+      } else {
+          options.setFetchSize(Integer.MIN_VALUE);
+      }
     } else if (
         !options.getFetchSize().equals(Integer.MIN_VALUE)
         && !options.getFetchSize().equals(0)) {

http://git-wip-us.apache.org/repos/asf/sqoop/blob/b84ebf1e/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java 
b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
index a7f6aec..9c810a9 100644
--- a/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
+++ b/src/java/org/apache/sqoop/tool/BaseSqoopTool.java
@@ -253,6 +253,8 @@ public abstract class BaseSqoopTool extends 
com.cloudera.sqoop.tool.SqoopTool {
    */
   protected boolean init(SqoopOptions sqoopOpts) {
     // Get the connection to the database.
+      // Set the tool name in sqoop options
+      sqoopOpts.setToolName(getToolName());
     try {
       JobData data = new JobData(sqoopOpts, this);
       this.manager = new ConnFactory(sqoopOpts.getConf()).getManager(data);

Reply via email to