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);