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 2013/01/06 11:31:41 UTC
git commit: SQOOP-808: SQLExceptions From Batched Exports Aren't Very
Helpful
Updated Branches:
refs/heads/trunk 8029ed0cf -> 7573450e1
SQOOP-808: SQLExceptions From Batched Exports Aren't Very Helpful
(Nick White 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/7573450e
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/7573450e
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/7573450e
Branch: refs/heads/trunk
Commit: 7573450e18a577a0c6c61b2eae40ff47aa17c572
Parents: 8029ed0
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Sun Jan 6 02:30:15 2013 -0800
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Sun Jan 6 02:30:15 2013 -0800
----------------------------------------------------------------------
.../sqoop/mapreduce/AsyncSqlOutputFormat.java | 17 +++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/7573450e/src/java/org/apache/sqoop/mapreduce/AsyncSqlOutputFormat.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/sqoop/mapreduce/AsyncSqlOutputFormat.java b/src/java/org/apache/sqoop/mapreduce/AsyncSqlOutputFormat.java
index bb29bc2..ce11f84 100644
--- a/src/java/org/apache/sqoop/mapreduce/AsyncSqlOutputFormat.java
+++ b/src/java/org/apache/sqoop/mapreduce/AsyncSqlOutputFormat.java
@@ -19,10 +19,12 @@
package org.apache.sqoop.mapreduce;
import java.io.IOException;
+import java.sql.BatchUpdateException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.SynchronousQueue;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.mapreduce.JobContext;
@@ -30,6 +32,7 @@ import org.apache.hadoop.mapreduce.OutputCommitter;
import org.apache.hadoop.mapreduce.OutputFormat;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.util.StringUtils;
+
import com.cloudera.sqoop.lib.SqoopRecord;
/**
@@ -241,6 +244,20 @@ public abstract class AsyncSqlOutputFormat<K extends SqoopRecord, V>
this.conn.commit();
this.curNumStatements = 0;
}
+ } catch (BatchUpdateException batchE) {
+ if (batchE.getNextException() != null) {
+ // if a statement in a batch causes an SQLException
+ // the database can either set it as the cause of
+ // the BatchUpdateException, or set it as the 'next'
+ // field of the BatchUpdateException (e.g. HSQLDB 1.8
+ // does the former and Postgres 8.4 does the latter).
+ // We'll check for this SQLException in both places,
+ // and use the 'next' one in preference.
+ setLastError(batchE.getNextException());
+ } else {
+ // same as SQLException block
+ setLastError(batchE);
+ }
} catch (SQLException sqlE) {
setLastError(sqlE);
} finally {