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/15 09:18:39 UTC

sqoop git commit: SQOOP-2725: Sqoop2: Integration Tests: Prefer using Timestamp types and PreparedStatements for inserting rows into test databases

Repository: sqoop
Updated Branches:
  refs/heads/sqoop2 a53e682f0 -> 16c2cdcab


SQOOP-2725: Sqoop2: Integration Tests: Prefer using Timestamp types and PreparedStatements for inserting rows into test databases

(Abraham Fine 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/16c2cdca
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/16c2cdca
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/16c2cdca

Branch: refs/heads/sqoop2
Commit: 16c2cdcab562d0e1929c0a1e8daad05d9ee0027a
Parents: a53e682
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Tue Dec 15 09:18:00 2015 +0100
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Tue Dec 15 09:18:00 2015 +0100

----------------------------------------------------------------------
 .../common/test/asserts/ProviderAsserts.java    |  21 +--
 .../sqoop/common/test/db/DatabaseProvider.java  | 146 +++++++++++--------
 .../jdbc/GenericJdbcFromInitializer.java        |  51 ++++++-
 .../java/org/apache/sqoop/test/data/Cities.java |  12 +-
 .../apache/sqoop/test/data/UbuntuReleases.java  |  46 +++---
 .../test/infrastructure/SqoopTestCase.java      |  10 --
 .../sqoop/test/testcases/ConnectorTestCase.java |  17 +--
 .../connector/hdfs/AppendModeTest.java          |  24 +--
 .../connector/hdfs/FromHDFSToHDFSTest.java      |   8 +-
 .../connector/hdfs/HdfsIncrementalReadTest.java |  26 ++--
 .../hdfs/InformalJobNameExecuteTest.java        |  10 +-
 .../connector/hdfs/OutputDirectoryTest.java     |   8 +-
 .../connector/jdbc/generic/AllTypesTest.java    |   5 +-
 .../jdbc/generic/FromHDFSToRDBMSTest.java       |  19 +--
 .../jdbc/generic/FromRDBMSToHDFSTest.java       |  16 +-
 .../jdbc/generic/IncrementalReadTest.java       |  52 +++----
 .../connector/jdbc/generic/PartitionerTest.java |  40 ++---
 .../jdbc/generic/TableStagedRDBMSTest.java      |  20 +--
 .../connector/kafka/FromRDBMSToKafkaTest.java   |   8 +-
 19 files changed, 291 insertions(+), 248 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java
----------------------------------------------------------------------
diff --git a/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java b/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java
index 0da7ea8..4e1ef6a 100644
--- a/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java
+++ b/common-test/src/main/java/org/apache/sqoop/common/test/asserts/ProviderAsserts.java
@@ -21,6 +21,7 @@ import org.apache.sqoop.common.test.db.DatabaseProvider;
 import org.apache.log4j.Logger;
 import org.apache.sqoop.common.test.db.TableName;
 
+import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
@@ -44,23 +45,9 @@ public class ProviderAsserts {
    * @param conditions Conditions for identifying the row
    * @param values Values that should be present in the table
    */
-  public static void assertRow(DatabaseProvider provider, TableName tableName,  Object []conditions, Object ...values) {
-    assertRow(provider, tableName, true, conditions, values);
-  }
-
-  /**
-   * Assert row in the table.
-   *
-   * @param provider Provider that should be used to query the database
-   * @param tableName Table name
-   * @param escapeValues Flag whether the values should be escaped based on their type when using in the generated queries or not
-   * @param conditions Conditions for identifying the row
-   * @param values Values that should be present in the table
-   */
-  public static void assertRow(DatabaseProvider provider, TableName tableName, boolean escapeValues, Object []conditions, Object ...values) {
-    try (Statement stmt = provider.getConnection().createStatement();
-         ResultSet rs = stmt.executeQuery(provider.getRowsSql(tableName, escapeValues, conditions))) {
-
+  public static void assertRow(DatabaseProvider provider, TableName tableName,  Object[] conditions, Object ...values) {
+    try (PreparedStatement preparedStatement = provider.getRowsPreparedStatement(tableName, conditions);
+         ResultSet rs = preparedStatement.executeQuery()) {
       if(! rs.next()) {
         fail("No rows found.");
       }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java
----------------------------------------------------------------------
diff --git a/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java b/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java
index f30d587..3b0b568 100644
--- a/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java
+++ b/common-test/src/main/java/org/apache/sqoop/common/test/db/DatabaseProvider.java
@@ -22,13 +22,16 @@ import org.apache.log4j.Logger;
 import org.apache.sqoop.common.test.db.types.DatabaseTypeList;
 import org.apache.sqoop.common.test.db.types.DefaultTypeList;
 
+import java.math.BigDecimal;
 import java.sql.Connection;
+import java.sql.Date;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.sql.Timestamp;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -40,7 +43,9 @@ import java.util.List;
  * supported database server have it's own concrete implementation that fills
  * the gaps in database differences.
  */
-@edu.umd.cs.findbugs.annotations.SuppressWarnings("SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE")
+@edu.umd.cs.findbugs.annotations.SuppressWarnings
+  ({"SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE",
+    "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING"})
 abstract public class DatabaseProvider {
 
   private static final Logger LOG = Logger.getLogger(DatabaseProvider.class);
@@ -266,86 +271,111 @@ abstract public class DatabaseProvider {
    * @param values List of objects that should be inserted
    */
   public void insertRow(TableName tableName, Object ...values) {
-    insertRow(tableName, true, values);
-  }
+    try {
+      StringBuilder sb = new StringBuilder("INSERT INTO ");
+      sb.append(getTableFragment(tableName));
+      sb.append(" VALUES (");
 
-  /**
-   * Insert new row into the table.
-   *
-   * @param tableName Table name
-   * @param escapeValues Should the values be escaped based on their type or not
-   * @param values List of objects that should be inserted
-   */
-  public void insertRow(TableName tableName, boolean escapeValues, Object ...values) {
-    StringBuilder sb = new StringBuilder("INSERT INTO ");
-    sb.append(getTableFragment(tableName));
-    sb.append(" VALUES (");
+      for (int i = 0; i < values.length - 1; i++) {
+        sb.append("?, ");
+      }
+      sb.append("?)");
 
-    List<String> valueList = new LinkedList<String>();
-    for(Object value : values) {
-      valueList.add(escapeValues ? convertObjectToQueryString(value) : value.toString());
-    }
+      PreparedStatement statement = null;
+      try {
+        statement = databaseConnection.prepareStatement(sb.toString());
+        for (int i = 0; i < values.length; i++) {
+          insertObjectIntoPreparedStatement(statement, i +1, values[i]);
+        }
 
-    sb.append(StringUtils.join(valueList, ", "));
-    sb.append(")");
+        statement.executeUpdate();
+      } finally {
+        if (statement != null) {
+          statement.close();
+        }
+      }
+    } catch (SQLException sqlException) {
+      throw new RuntimeException("can't insert row", sqlException);
+    }
 
-    executeUpdate(sb.toString());
   }
 
   /**
    * Return rows that match given conditions.
    *
    * @param tableName Table name
-   * @param escapeValues Should the values be escaped based on their type or not
    * @param conditions Conditions in form of double values - column name and value, for example: "id", 1 or "last_update_date", null
-   * @return ResultSet with given criteria
+   * @return PreparedStatement representing the requested query
    */
-  public String getRowsSql(TableName tableName, boolean escapeValues, Object []conditions) {
-    // Columns are in form of two strings - name and value
-    if(conditions.length % 2 != 0) {
-      throw new RuntimeException("Incorrect number of parameters.");
-    }
+  public PreparedStatement getRowsPreparedStatement(TableName tableName, Object[] conditions) {
+    try {
+      // Columns are in form of two strings - name and value
+      if(conditions.length % 2 != 0) {
+        throw new RuntimeException("Incorrect number of parameters.");
+      }
 
-    StringBuilder sb = new StringBuilder("SELECT * FROM ");
-    sb.append(getTableFragment(tableName));
+      StringBuilder sb = new StringBuilder("SELECT * FROM ");
+      sb.append(getTableFragment(tableName));
+
+      List<String> conditionList = new LinkedList<String>();
+      for(int i = 0; i < conditions.length; i += 2) {
+        Object columnName = conditions[i];
+        Object value = conditions[i + 1];
+
+        if( !(columnName instanceof String)) {
+          throw new RuntimeException("Each odd item should be a string with column name.");
+        }
 
-    List<String> conditionList = new LinkedList<String>();
-    for(int i = 0; i < conditions.length; i += 2) {
-      Object columnName = conditions[i];
-      Object value = conditions[i + 1];
+        if(value == null) {
+          conditionList.add(escapeColumnName((String) columnName) + " IS NULL");
+        } else {
+          conditionList.add(escapeColumnName((String) columnName) + " = ?");
+        }
+      }
 
-      if( !(columnName instanceof String)) {
-        throw new RuntimeException("Each odd item should be a string with column name.");
+      if(conditionList.size() != 0) {
+        sb.append(" WHERE ").append(StringUtils.join(conditionList, " AND "));
       }
 
-      if(value == null) {
-        conditionList.add(escapeColumnName((String) columnName) + " IS NULL");
-      } else {
-        conditionList.add(escapeColumnName((String) columnName) + " = " + (escapeValues ? convertObjectToQueryString(value) : value));
+      PreparedStatement preparedStatement = getConnection().prepareStatement(sb.toString());
+      for(int i = 1; i < conditions.length; i += 2) {
+        Object value = conditions[i];
+        if (value != null) {
+          insertObjectIntoPreparedStatement(preparedStatement, i, value);
+        }
       }
-    }
 
-    if(conditionList.size() != 0) {
-      sb.append(" WHERE ").append(StringUtils.join(conditionList, " AND "));
+      return preparedStatement;
+    } catch (SQLException sqlException) {
+      throw new RuntimeException("can't insert row", sqlException);
     }
-
-    return sb.toString();
   }
 
-  /**
-   * Convert given object to it's representation that can be safely used inside
-   * query.
-   *
-   * @param value Value to convert
-   * @return Query safe string representation
-   */
-  public String convertObjectToQueryString(Object value) {
-    if(value == null) {
-      return nullConstant();
-    } else if(value.getClass() == String.class) {
-      return escapeValueString((String)value);
+  private void insertObjectIntoPreparedStatement(PreparedStatement preparedStatement, int parameterIndex, Object value) throws SQLException {
+    if (value instanceof String) {
+      preparedStatement.setString(parameterIndex, (String) value);
+    } else if (value instanceof Short) {
+      preparedStatement.setShort(parameterIndex, ((Short) value).shortValue());
+    } else if (value instanceof Integer) {
+      preparedStatement.setInt(parameterIndex, ((Integer) value).intValue());
+    } else if (value instanceof Long) {
+      preparedStatement.setLong(parameterIndex, ((Long) value).longValue());
+    } else if (value instanceof Float) {
+      preparedStatement.setFloat(parameterIndex, ((Float) value).floatValue());
+    } else if (value instanceof Double) {
+      preparedStatement.setDouble(parameterIndex, ((Double) value).doubleValue());
+    } else if (value instanceof Boolean) {
+      preparedStatement.setBoolean(parameterIndex, ((Boolean) value).booleanValue());
+    } else if (value instanceof Byte) {
+      preparedStatement.setByte(parameterIndex, ((Byte) value).byteValue());
+    } else if (value instanceof Character) {
+      preparedStatement.setString(parameterIndex, value.toString());
+    } else if (value instanceof Timestamp) {
+      preparedStatement.setString(parameterIndex, value.toString());
+    } else if (value instanceof BigDecimal) {
+      preparedStatement.setString(parameterIndex, value.toString());
     } else {
-      return value.toString();
+      preparedStatement.setObject(parameterIndex, value);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java
----------------------------------------------------------------------
diff --git a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java
index fa26c14..41be8bb 100644
--- a/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java
+++ b/connector/connector-generic-jdbc/src/main/java/org/apache/sqoop/connector/jdbc/GenericJdbcFromInitializer.java
@@ -17,11 +17,15 @@
  */
 package org.apache.sqoop.connector.jdbc;
 
+import java.math.BigDecimal;
+import java.sql.Date;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.sql.Timestamp;
+import java.sql.Types;
 import java.util.List;
 import java.util.Set;
 
@@ -162,6 +166,10 @@ public class GenericJdbcFromInitializer extends Initializer<LinkConfiguration, F
 
     // If this is incremental, then we need to get new maximal value and persist is a constant
     String incrementalMaxValue = null;
+    // and the partition column metadata
+    int checkColumnScale = 0;
+    int checkColumnType = 0;
+
     if(incrementalImport) {
       sb.setLength(0);
       sb.append("SELECT ");
@@ -172,13 +180,38 @@ public class GenericJdbcFromInitializer extends Initializer<LinkConfiguration, F
       String incrementalNewMaxValueQuery = sb.toString();
       LOG.info("Incremental new max value query:  " + incrementalNewMaxValueQuery);
 
-      try (Statement statement = executor.createStatement();
-           ResultSet rs = statement.executeQuery(incrementalNewMaxValueQuery);) {
+      try (
+        PreparedStatement columnTypeStatement = executor.prepareStatement("SELECT " + executor.encloseIdentifier(jobConf.incrementalRead.checkColumn) + " FROM " + fromFragment + " WHERE 1 = 2");
+        ResultSet columnTypeResultSet = columnTypeStatement.executeQuery();
+        Statement statement = executor.createStatement();
+        ResultSet rs = statement.executeQuery(incrementalNewMaxValueQuery)
+      ) {
+        ResultSetMetaData checkColumnMetaData = columnTypeResultSet.getMetaData();
+        checkColumnScale = checkColumnMetaData.getScale(1);
+        checkColumnType = checkColumnMetaData.getColumnType(1);
+
         if (!rs.next()) {
           throw new SqoopException(GenericJdbcConnectorError.GENERIC_JDBC_CONNECTOR_0022);
         }
 
-        incrementalMaxValue = rs.getString(1);
+        switch (rs.getMetaData().getColumnType(1)) {
+          case Types.DATE:
+            incrementalMaxValue = rs.getDate(1).toString();
+            break;
+          case Types.TIMESTAMP:
+            incrementalMaxValue = rs.getTimestamp(1).toString();
+            break;
+          case Types.DECIMAL:
+          case Types.NUMERIC:
+          case Types.DOUBLE:
+          case Types.FLOAT:
+          case Types.REAL:
+            // Oracle drops precision data when using aggregate functions in the query
+            incrementalMaxValue = rs.getBigDecimal(1).setScale(checkColumnScale).toString();
+            break;
+          default:
+            incrementalMaxValue = rs.getString(1);
+        }
         context.setString(GenericJdbcConnectorConstants.CONNECTOR_JDBC_LAST_INCREMENTAL_VALUE, incrementalMaxValue);
         LOG.info("New maximal value for incremental import is " + incrementalMaxValue);
       }
@@ -209,8 +242,16 @@ public class GenericJdbcFromInitializer extends Initializer<LinkConfiguration, F
     try {
       ps = executor.prepareStatement(minMaxQuery);
       if (incrementalImport) {
-        ps.setString(1, jobConf.incrementalRead.lastValue);
-        ps.setString(2, incrementalMaxValue);
+        if (checkColumnType == Types.DATE) {
+          ps.setDate(1, Date.valueOf(jobConf.incrementalRead.lastValue));
+          ps.setDate(2, Date.valueOf(incrementalMaxValue));
+        } else if (checkColumnType == Types.TIMESTAMP) {
+          ps.setTimestamp(1, Timestamp.valueOf(jobConf.incrementalRead.lastValue));
+          ps.setTimestamp(2, Timestamp.valueOf(incrementalMaxValue));
+        } else {
+          ps.setBigDecimal(1, new BigDecimal(jobConf.incrementalRead.lastValue));
+          ps.setBigDecimal(2, new BigDecimal(incrementalMaxValue));
+        }
       }
 
       rs = ps.executeQuery();

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/data/Cities.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/sqoop/test/data/Cities.java b/test/src/main/java/org/apache/sqoop/test/data/Cities.java
index fbbd7ef..1703397 100644
--- a/test/src/main/java/org/apache/sqoop/test/data/Cities.java
+++ b/test/src/main/java/org/apache/sqoop/test/data/Cities.java
@@ -20,6 +20,8 @@ package org.apache.sqoop.test.data;
 import org.apache.sqoop.common.test.db.DatabaseProvider;
 import org.apache.sqoop.common.test.db.TableName;
 
+import java.sql.Timestamp;
+
 /**
  * Simple listing of few world's cities to do basic sanity tests.
  */
@@ -36,7 +38,7 @@ public class Cities extends DataSet {
       "id",
       "id", "int",
       "country", "varchar(50)",
-      "some_date", "date",
+      "some_date", "timestamp",
       "city", "varchar(50)"
     );
 
@@ -45,10 +47,10 @@ public class Cities extends DataSet {
 
   @Override
   public DataSet loadBasicData() {
-    provider.insertRow(tableBaseName, 1, "USA", "2004-10-23","San Francisco");
-    provider.insertRow(tableBaseName, 2, "USA", "2004-10-24", "Sunnyvale");
-    provider.insertRow(tableBaseName, 3, "Czech Republic", "2004-10-25", "Brno");
-    provider.insertRow(tableBaseName, 4, "USA", "2004-10-26", "Palo Alto");
+    provider.insertRow(tableBaseName, 1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"),"San Francisco");
+    provider.insertRow(tableBaseName, 2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale");
+    provider.insertRow(tableBaseName, 3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno");
+    provider.insertRow(tableBaseName, 4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto");
 
     return this;
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java b/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java
index 12bcad1..9b218e9 100644
--- a/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java
+++ b/test/src/main/java/org/apache/sqoop/test/data/UbuntuReleases.java
@@ -20,10 +20,12 @@ package org.apache.sqoop.test.data;
 import org.apache.sqoop.common.test.db.DatabaseProvider;
 import org.apache.sqoop.common.test.db.TableName;
 
+import java.sql.Timestamp;
+
 /**
  * Releases of Ubuntu Linux.
  *
- * Purpose of this set is to cover most common data types (varchar, int, decimal, date, boolean).
+ * Purpose of this set is to cover most common data types (varchar, int, decimal, timestamp).
  */
 public class UbuntuReleases extends DataSet {
 
@@ -38,8 +40,8 @@ public class UbuntuReleases extends DataSet {
       "id",
       "id", "int",
       "code_name", "varchar(64)",
-      "version", "decimal(4,2)",
-      "release_date", "date"
+      "version", "numeric(4,2)",
+      "release_date", "timestamp"
     );
 
     return this;
@@ -47,25 +49,25 @@ public class UbuntuReleases extends DataSet {
 
   @Override
   public DataSet loadBasicData() {
-    provider.insertRow(tableBaseName,  1, "Warty Warthog",    4.10,  "2004-10-20");
-    provider.insertRow(tableBaseName,  2, "Hoary Hedgehog",   5.04,  "2005-04-08");
-    provider.insertRow(tableBaseName,  3, "Breezy Badger",    5.10,  "2005-10-13");
-    provider.insertRow(tableBaseName,  4, "Dapper Drake",     6.06,  "2006-06-01");
-    provider.insertRow(tableBaseName,  5, "Edgy Eft",         6.10,  "2006-10-26");
-    provider.insertRow(tableBaseName,  6, "Feisty Fawn",      7.04,  "2007-04-19");
-    provider.insertRow(tableBaseName,  7, "Gutsy Gibbon",     7.10,  "2007-10-18");
-    provider.insertRow(tableBaseName,  8, "Hardy Heron",      8.04,  "2008-04-24");
-    provider.insertRow(tableBaseName,  9, "Intrepid Ibex",    8.10,  "2008-10-18");
-    provider.insertRow(tableBaseName, 10, "Jaunty Jackalope", 9.04,  "2009-04-23");
-    provider.insertRow(tableBaseName, 11, "Karmic Koala",     9.10,  "2009-10-29");
-    provider.insertRow(tableBaseName, 12, "Lucid Lynx",      10.04,  "2010-04-29");
-    provider.insertRow(tableBaseName, 13, "Maverick Meerkat",10.10,  "2010-10-10");
-    provider.insertRow(tableBaseName, 14, "Natty Narwhal",   11.04,  "2011-04-28");
-    provider.insertRow(tableBaseName, 15, "Oneiric Ocelot",  11.10,  "2011-10-10");
-    provider.insertRow(tableBaseName, 16, "Precise Pangolin",12.04,  "2012-04-26");
-    provider.insertRow(tableBaseName, 17, "Quantal Quetzal", 12.10,  "2012-10-18");
-    provider.insertRow(tableBaseName, 18, "Raring Ringtail", 13.04,  "2013-04-25");
-    provider.insertRow(tableBaseName, 19, "Saucy Salamander",13.10,  "2013-10-17");
+    provider.insertRow(tableBaseName,  1, "Warty Warthog",    4.10,  Timestamp.valueOf("2004-10-20 00:00:00"));
+    provider.insertRow(tableBaseName,  2, "Hoary Hedgehog",   5.04,  Timestamp.valueOf("2005-04-08 00:00:00"));
+    provider.insertRow(tableBaseName,  3, "Breezy Badger",    5.10,  Timestamp.valueOf("2005-10-13 00:00:00"));
+    provider.insertRow(tableBaseName,  4, "Dapper Drake",     6.06,  Timestamp.valueOf("2006-06-01 00:00:00"));
+    provider.insertRow(tableBaseName,  5, "Edgy Eft",         6.10,  Timestamp.valueOf("2006-10-26 00:00:00"));
+    provider.insertRow(tableBaseName,  6, "Feisty Fawn",      7.04,  Timestamp.valueOf("2007-04-19 00:00:00"));
+    provider.insertRow(tableBaseName,  7, "Gutsy Gibbon",     7.10,  Timestamp.valueOf("2007-10-18 00:00:00"));
+    provider.insertRow(tableBaseName,  8, "Hardy Heron",      8.04,  Timestamp.valueOf("2008-04-24 00:00:00"));
+    provider.insertRow(tableBaseName,  9, "Intrepid Ibex",    8.10,  Timestamp.valueOf("2008-10-18 00:00:00"));
+    provider.insertRow(tableBaseName, 10, "Jaunty Jackalope", 9.04,  Timestamp.valueOf("2009-04-23 00:00:00"));
+    provider.insertRow(tableBaseName, 11, "Karmic Koala",     9.10,  Timestamp.valueOf("2009-10-29 00:00:00"));
+    provider.insertRow(tableBaseName, 12, "Lucid Lynx",      10.04,  Timestamp.valueOf("2010-04-29 00:00:00"));
+    provider.insertRow(tableBaseName, 13, "Maverick Meerkat",10.10,  Timestamp.valueOf("2010-10-10 00:00:00"));
+    provider.insertRow(tableBaseName, 14, "Natty Narwhal",   11.04,  Timestamp.valueOf("2011-04-28 00:00:00"));
+    provider.insertRow(tableBaseName, 15, "Oneiric Ocelot",  11.10,  Timestamp.valueOf("2011-10-10 00:00:00"));
+    provider.insertRow(tableBaseName, 16, "Precise Pangolin",12.04,  Timestamp.valueOf("2012-04-26 00:00:00"));
+    provider.insertRow(tableBaseName, 17, "Quantal Quetzal", 12.10,  Timestamp.valueOf("2012-10-18 00:00:00"));
+    provider.insertRow(tableBaseName, 18, "Raring Ringtail", 13.04,  Timestamp.valueOf("2013-04-25 00:00:00"));
+    provider.insertRow(tableBaseName, 19, "Saucy Salamander",13.10,  Timestamp.valueOf("2013-10-17 00:00:00"));
 
     return this;
   }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java b/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java
index c1f355f..47f1e45 100644
--- a/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java
+++ b/test/src/main/java/org/apache/sqoop/test/infrastructure/SqoopTestCase.java
@@ -399,16 +399,6 @@ public class SqoopTestCase implements ITest {
   }
 
   /**
-   * Insert row into table for this test.
-   * @param escapeValues
-   * @param values
-   */
-  public void insertRow(Boolean escapeValues, Object ...values) {
-    getInfrastructureProvider(DatabaseInfrastructureProvider.class).getInstance()
-        .insertRow(getTableName(), escapeValues, values);
-  }
-
-  /**
    * Fetch row count of table for this test.
    * @return long count
    */

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java b/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java
index c843448..378c1f3 100644
--- a/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java
+++ b/test/src/main/java/org/apache/sqoop/test/testcases/ConnectorTestCase.java
@@ -48,7 +48,7 @@ import org.testng.annotations.BeforeSuite;
  * the database provider prior every test execution.
  */
 @edu.umd.cs.findbugs.annotations.SuppressWarnings({"MS_PKGPROTECT", "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"})
-abstract public class ConnectorTestCase extends JettyTestCase {
+abstract public class  ConnectorTestCase extends JettyTestCase {
 
   private static final Logger LOG = Logger.getLogger(ConnectorTestCase.class);
 
@@ -103,10 +103,6 @@ abstract public class ConnectorTestCase extends JettyTestCase {
     provider.insertRow(getTableName(), values);
   }
 
-  protected void insertRow(Boolean escapeValues, Object ...values) {
-    provider.insertRow(getTableName(), escapeValues, values);
-  }
-
   protected long rowCount() {
     return provider.rowCount(getTableName());
   }
@@ -228,17 +224,6 @@ abstract public class ConnectorTestCase extends JettyTestCase {
   }
 
   /**
-   * Assert row in testing table.
-   *
-   * @param conditions Conditions in config that are expected by the database provider
-   * @param escapeValues Flag whether the values should be escaped based on their type when using in the generated queries or not
-   * @param values Values that are expected in the table (with corresponding types)
-   */
-  protected void assertRow(Object []conditions, Boolean escapeValues, Object ...values) {
-    ProviderAsserts.assertRow(provider, getTableName(), escapeValues, conditions, values);
-  }
-
-  /**
    * Assert row in table "cities".
    *
    * @param values Values that are expected

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java
index 8c65898..fa660d5 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/AppendModeTest.java
@@ -60,23 +60,23 @@ public class AppendModeTest extends ConnectorTestCase {
     // First execution
     executeJob(job);
     assertTo(
-      "1,'USA','2004-10-23','San Francisco'",
-      "2,'USA','2004-10-24','Sunnyvale'",
-      "3,'Czech Republic','2004-10-25','Brno'",
-      "4,'USA','2004-10-26','Palo Alto'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     );
 
     // Second execution
     executeJob(job);
     assertTo(
-      "1,'USA','2004-10-23','San Francisco'",
-      "2,'USA','2004-10-24','Sunnyvale'",
-      "3,'Czech Republic','2004-10-25','Brno'",
-      "4,'USA','2004-10-26','Palo Alto'",
-      "1,'USA','2004-10-23','San Francisco'",
-      "2,'USA','2004-10-24','Sunnyvale'",
-      "3,'Czech Republic','2004-10-25','Brno'",
-      "4,'USA','2004-10-26','Palo Alto'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'",
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     );
 
     dropTable();

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java
index c39c8d6..c953131 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/FromHDFSToHDFSTest.java
@@ -35,10 +35,10 @@ public class FromHDFSToHDFSTest extends ConnectorTestCase {
   @Test
   public void test() throws Exception {
     String[] sampleData = new String[]{
-      "1,'USA','2004-10-23','San Francisco'",
-      "2,'USA','2004-10-24','Sunnyvale'",
-      "3,'Czech Republic','2004-10-25','Brno'",
-      "4,'USA','2004-10-26','Palo Alto'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     };
 
     createFromFile("input-0001", sampleData);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java
index e6f6e0d..d48c6d2 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/HdfsIncrementalReadTest.java
@@ -25,6 +25,8 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import java.sql.Timestamp;
+
 import static org.testng.Assert.assertEquals;
 
 public class HdfsIncrementalReadTest extends ConnectorTestCase {
@@ -42,7 +44,7 @@ public class HdfsIncrementalReadTest extends ConnectorTestCase {
   @Test
   public void testBasic() throws Exception {
     createFromFile("input-0001",
-        "1,'USA','2004-10-23','San Francisco'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'"
     );
 
     // RDBMS link
@@ -65,29 +67,29 @@ public class HdfsIncrementalReadTest extends ConnectorTestCase {
     // Execute for the first time
     executeJob(job);
     assertEquals(provider.rowCount(getTableName()), 1);
-    assertRowInCities(1, "USA", "2004-10-23", "San Francisco");
+    assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco");
 
     // Second execution
     createFromFile("input-0002",
-      "2,'USA','2004-10-24','Sunnyvale'",
-      "3,'Czech Republic','2004-10-25','Brno'"
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'"
     );
     executeJob(job);
     assertEquals(provider.rowCount(getTableName()), 3);
-    assertRowInCities(1, "USA", "2004-10-23", "San Francisco");
-    assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale");
-    assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno");
+    assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco");
+    assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale");
+    assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno");
 
     // And last execution
     createFromFile("input-0003",
-      "4,'USA','2004-10-26','Palo Alto'"
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     );
     executeJob(job);
     assertEquals(provider.rowCount(getTableName()), 4);
-    assertRowInCities(1, "USA", "2004-10-23", "San Francisco");
-    assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale");
-    assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno");
-    assertRowInCities(4, "USA", "2004-10-26", "Palo Alto");
+    assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco");
+    assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale");
+    assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno");
+    assertRowInCities(4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto");
   }
 
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java
index 411b07e..cd2ed6c 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/InformalJobNameExecuteTest.java
@@ -24,6 +24,8 @@ import org.apache.sqoop.model.MLink;
 import org.apache.sqoop.test.testcases.ConnectorTestCase;
 import org.testng.annotations.*;
 
+import java.sql.Timestamp;
+
 import static org.testng.Assert.assertEquals;
 
 public class InformalJobNameExecuteTest extends ConnectorTestCase {
@@ -54,8 +56,8 @@ public class InformalJobNameExecuteTest extends ConnectorTestCase {
   @Test
   public void test() throws Exception {
     createFromFile("input-0001",
-            "1,'USA','2004-10-23','San Francisco'",
-            "2,'USA','2004-10-24','Sunnyvale'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'"
     );
 
     // RDBMS link
@@ -86,7 +88,7 @@ public class InformalJobNameExecuteTest extends ConnectorTestCase {
     executeJob(job);
 
     assertEquals(2L, provider.rowCount(getTableName()));
-    assertRowInCities(1, "USA", "2004-10-23", "San Francisco");
-    assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale");
+    assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco");
+    assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale");
   }
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java
index 1790f96..2759b42 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/hdfs/OutputDirectoryTest.java
@@ -139,10 +139,10 @@ public class OutputDirectoryTest extends ConnectorTestCase {
 
     // Assert correct output
     assertTo(
-      "1,'USA','2004-10-23','San Francisco'",
-      "2,'USA','2004-10-24','Sunnyvale'",
-      "3,'Czech Republic','2004-10-25','Brno'",
-      "4,'USA','2004-10-26','Palo Alto'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     );
 
     dropTable();

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java
index 5053b56..ac5a61a 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/AllTypesTest.java
@@ -80,7 +80,7 @@ public class AllTypesTest extends ConnectorTestCase implements ITest {
 
     int i = 1;
     for(ExampleValue value: type.values) {
-      insertRow(false, Integer.toString(i++), value.getInsertStatement());
+      insertRow(i++, value.getObjectValue());
     }
 
     // RDBMS link
@@ -156,8 +156,7 @@ public class AllTypesTest extends ConnectorTestCase implements ITest {
     assertEquals(type.values.size(), rowCount());
     for(ExampleValue value : type.values) {
       assertRow(
-        new Object[] {"value", value.getInsertStatement()},
-        false,
+        new Object[] {"value", value.getObjectValue()},
         value.getObjectValue());
     }
 

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java
index 25cdb68..07eaba1 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromHDFSToRDBMSTest.java
@@ -28,6 +28,8 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import java.sql.Timestamp;
+
 import static org.testng.Assert.assertEquals;
 
 /**
@@ -47,12 +49,11 @@ public class FromHDFSToRDBMSTest extends ConnectorTestCase {
   @Test
   public void testBasic() throws Exception {
     createFromFile("input-0001",
-        "1,'USA','2004-10-23','San Francisco'",
-        "2,'USA','2004-10-24','Sunnyvale'",
-        "3,'Czech Republic','2004-10-25','Brno'",
-        "4,'USA','2004-10-26','Palo Alto'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     );
-
     // RDBMS link
     MLink rdbmsLink = getClient().createLink("generic-jdbc-connector");
     fillRdbmsLinkConfig(rdbmsLink);
@@ -80,9 +81,9 @@ public class FromHDFSToRDBMSTest extends ConnectorTestCase {
     executeJob(job);
 
     assertEquals(4L, provider.rowCount(getTableName()));
-    assertRowInCities(1, "USA", "2004-10-23", "San Francisco");
-    assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale");
-    assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno");
-    assertRowInCities(4, "USA", "2004-10-26", "Palo Alto");
+    assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco");
+    assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale");
+    assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno");
+    assertRowInCities(4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto");
   }
 }

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java
index 686572a..4cb0edc 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/FromRDBMSToHDFSTest.java
@@ -64,10 +64,10 @@ public class FromRDBMSToHDFSTest extends ConnectorTestCase {
 
     // Assert correct output
     assertTo(
-      "1,'USA','2004-10-23','San Francisco'",
-      "2,'USA','2004-10-24','Sunnyvale'",
-      "3,'Czech Republic','2004-10-25','Brno'",
-      "4,'USA','2004-10-26','Palo Alto'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     );
 
     // Clean up testing table
@@ -283,10 +283,10 @@ public class FromRDBMSToHDFSTest extends ConnectorTestCase {
 
     // Assert correct output
     assertTo(
-            "1,'USA','2004-10-23','San Francisco'",
-            "2,'USA','2004-10-24','Sunnyvale'",
-            "3,'Czech Republic','2004-10-25','Brno'",
-            "4,'USA','2004-10-26','Palo Alto'"
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
     );
 
     // Clean up testing table

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java
index f850768..0c04fd9 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/IncrementalReadTest.java
@@ -41,10 +41,10 @@ import static org.testng.Assert.assertEquals;
 public class IncrementalReadTest extends ConnectorTestCase implements ITest {
 
   public static Object[] COLUMNS = new Object [][] {
-    //       column -   last value - new max value
-    {          "id",          "9",         "19"},
-    {     "version",       "8.10",      "13.10"},
-    {"release_date", "2008-10-18", "2013-10-17"},
+    //       column -                last value -               new max value
+    {          "id",                         "9",                        "19"},
+    {     "version",                      "8.10",                     "13.10"},
+    {"release_date",     "2008-10-18 00:00:00.0",     "2013-10-17 00:00:00.0"},
   };
 
   private static String testName;
@@ -113,17 +113,17 @@ public class IncrementalReadTest extends ConnectorTestCase implements ITest {
 
     // Assert correct output
     assertTo(
-        "10,'Jaunty Jackalope',9.04,'2009-04-23'",
-        "11,'Karmic Koala',9.10,'2009-10-29'",
-        "12,'Lucid Lynx',10.04,'2010-04-29'",
-        "13,'Maverick Meerkat',10.10,'2010-10-10'",
-        "14,'Natty Narwhal',11.04,'2011-04-28'",
-        "15,'Oneiric Ocelot',11.10,'2011-10-10'",
-        "16,'Precise Pangolin',12.04,'2012-04-26'",
-        "17,'Quantal Quetzal',12.10,'2012-10-18'",
-        "18,'Raring Ringtail',13.04,'2013-04-25'",
-        "19,'Saucy Salamander',13.10,'2013-10-17'"
-      );
+      "10,'Jaunty Jackalope',9.04,'2009-04-23 00:00:00.000'",
+      "11,'Karmic Koala',9.10,'2009-10-29 00:00:00.000'",
+      "12,'Lucid Lynx',10.04,'2010-04-29 00:00:00.000'",
+      "13,'Maverick Meerkat',10.10,'2010-10-10 00:00:00.000'",
+      "14,'Natty Narwhal',11.04,'2011-04-28 00:00:00.000'",
+      "15,'Oneiric Ocelot',11.10,'2011-10-10 00:00:00.000'",
+      "16,'Precise Pangolin',12.04,'2012-04-26 00:00:00.000'",
+      "17,'Quantal Quetzal',12.10,'2012-10-18 00:00:00.000'",
+      "18,'Raring Ringtail',13.04,'2013-04-25 00:00:00.000'",
+      "19,'Saucy Salamander',13.10,'2013-10-17 00:00:00.000'"
+    );
 
     // Verify new last value
     MJob updatedJob = getClient().getJob(job.getName());
@@ -168,17 +168,17 @@ public class IncrementalReadTest extends ConnectorTestCase implements ITest {
 
     // Assert correct output
     assertTo(
-        "10,'Jaunty Jackalope',9.04,'2009-04-23'",
-        "11,'Karmic Koala',9.10,'2009-10-29'",
-        "12,'Lucid Lynx',10.04,'2010-04-29'",
-        "13,'Maverick Meerkat',10.10,'2010-10-10'",
-        "14,'Natty Narwhal',11.04,'2011-04-28'",
-        "15,'Oneiric Ocelot',11.10,'2011-10-10'",
-        "16,'Precise Pangolin',12.04,'2012-04-26'",
-        "17,'Quantal Quetzal',12.10,'2012-10-18'",
-        "18,'Raring Ringtail',13.04,'2013-04-25'",
-        "19,'Saucy Salamander',13.10,'2013-10-17'"
-      );
+      "10,'Jaunty Jackalope',9.04,'2009-04-23 00:00:00.000'",
+      "11,'Karmic Koala',9.10,'2009-10-29 00:00:00.000'",
+      "12,'Lucid Lynx',10.04,'2010-04-29 00:00:00.000'",
+      "13,'Maverick Meerkat',10.10,'2010-10-10 00:00:00.000'",
+      "14,'Natty Narwhal',11.04,'2011-04-28 00:00:00.000'",
+      "15,'Oneiric Ocelot',11.10,'2011-10-10 00:00:00.000'",
+      "16,'Precise Pangolin',12.04,'2012-04-26 00:00:00.000'",
+      "17,'Quantal Quetzal',12.10,'2012-10-18 00:00:00.000'",
+      "18,'Raring Ringtail',13.04,'2013-04-25 00:00:00.000'",
+      "19,'Saucy Salamander',13.10,'2013-10-17 00:00:00.000'"
+    );
 
     // Verify new last value
     MJob updatedJob = getClient().getJob(job.getName());

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java
index 42bff65..8129c6a 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/PartitionerTest.java
@@ -110,26 +110,26 @@ public class PartitionerTest extends ConnectorTestCase implements ITest {
     // Assert correct output
     assertToFiles((extractors > maxOutputFiles) ? maxOutputFiles : extractors);
     assertTo(
-        "1,'Warty Warthog',4.10,'2004-10-20'",
-        "2,'Hoary Hedgehog',5.04,'2005-04-08'",
-        "3,'Breezy Badger',5.10,'2005-10-13'",
-        "4,'Dapper Drake',6.06,'2006-06-01'",
-        "5,'Edgy Eft',6.10,'2006-10-26'",
-        "6,'Feisty Fawn',7.04,'2007-04-19'",
-        "7,'Gutsy Gibbon',7.10,'2007-10-18'",
-        "8,'Hardy Heron',8.04,'2008-04-24'",
-        "9,'Intrepid Ibex',8.10,'2008-10-18'",
-        "10,'Jaunty Jackalope',9.04,'2009-04-23'",
-        "11,'Karmic Koala',9.10,'2009-10-29'",
-        "12,'Lucid Lynx',10.04,'2010-04-29'",
-        "13,'Maverick Meerkat',10.10,'2010-10-10'",
-        "14,'Natty Narwhal',11.04,'2011-04-28'",
-        "15,'Oneiric Ocelot',11.10,'2011-10-10'",
-        "16,'Precise Pangolin',12.04,'2012-04-26'",
-        "17,'Quantal Quetzal',12.10,'2012-10-18'",
-        "18,'Raring Ringtail',13.04,'2013-04-25'",
-        "19,'Saucy Salamander',13.10,'2013-10-17'"
-      );
+      "1,'Warty Warthog',4.10,'2004-10-20 00:00:00.000'",
+      "2,'Hoary Hedgehog',5.04,'2005-04-08 00:00:00.000'",
+      "3,'Breezy Badger',5.10,'2005-10-13 00:00:00.000'",
+      "4,'Dapper Drake',6.06,'2006-06-01 00:00:00.000'",
+      "5,'Edgy Eft',6.10,'2006-10-26 00:00:00.000'",
+      "6,'Feisty Fawn',7.04,'2007-04-19 00:00:00.000'",
+      "7,'Gutsy Gibbon',7.10,'2007-10-18 00:00:00.000'",
+      "8,'Hardy Heron',8.04,'2008-04-24 00:00:00.000'",
+      "9,'Intrepid Ibex',8.10,'2008-10-18 00:00:00.000'",
+      "10,'Jaunty Jackalope',9.04,'2009-04-23 00:00:00.000'",
+      "11,'Karmic Koala',9.10,'2009-10-29 00:00:00.000'",
+      "12,'Lucid Lynx',10.04,'2010-04-29 00:00:00.000'",
+      "13,'Maverick Meerkat',10.10,'2010-10-10 00:00:00.000'",
+      "14,'Natty Narwhal',11.04,'2011-04-28 00:00:00.000'",
+      "15,'Oneiric Ocelot',11.10,'2011-10-10 00:00:00.000'",
+      "16,'Precise Pangolin',12.04,'2012-04-26 00:00:00.000'",
+      "17,'Quantal Quetzal',12.10,'2012-10-18 00:00:00.000'",
+      "18,'Raring Ringtail',13.04,'2013-04-25 00:00:00.000'",
+      "19,'Saucy Salamander',13.10,'2013-10-17 00:00:00.000'"
+    );
 
     // Clean up testing table
     dropTable();

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java
index 68dc65e..2565c3f 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/jdbc/generic/TableStagedRDBMSTest.java
@@ -28,6 +28,8 @@ import org.apache.sqoop.test.data.Cities;
 import org.apache.sqoop.test.testcases.ConnectorTestCase;
 import org.testng.annotations.Test;
 
+import java.sql.Timestamp;
+
 /**
  *
  */
@@ -38,11 +40,11 @@ public class TableStagedRDBMSTest extends ConnectorTestCase {
     final TableName stageTableName = new TableName("STAGE_" + getTableName());
     createTableCities();
     createFromFile("input-0001",
-        "1,'USA','2004-10-23','San Francisco'",
-        "2,'USA','2004-10-24','Sunnyvale'",
-        "3,'Czech Republic','2004-10-25','Brno'",
-        "4,'USA','2004-10-26','Palo Alto'"
-      );
+      "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+      "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+      "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+      "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
+    );
     new Cities(provider, stageTableName).createTables();
 
     // RDBMS link
@@ -77,10 +79,10 @@ public class TableStagedRDBMSTest extends ConnectorTestCase {
 
     assertEquals(0L, provider.rowCount(stageTableName));
     assertEquals(4L, provider.rowCount(getTableName()));
-    assertRowInCities(1, "USA", "2004-10-23", "San Francisco");
-    assertRowInCities(2, "USA", "2004-10-24", "Sunnyvale");
-    assertRowInCities(3, "Czech Republic", "2004-10-25", "Brno");
-    assertRowInCities(4, "USA", "2004-10-26", "Palo Alto");
+    assertRowInCities(1, "USA", Timestamp.valueOf("2004-10-23 00:00:00.000"), "San Francisco");
+    assertRowInCities(2, "USA", Timestamp.valueOf("2004-10-24 00:00:00.000"), "Sunnyvale");
+    assertRowInCities(3, "Czech Republic", Timestamp.valueOf("2004-10-25 00:00:00.000"), "Brno");
+    assertRowInCities(4, "USA", Timestamp.valueOf("2004-10-26 00:00:00.000"), "Palo Alto");
 
     // Clean up testing table
     provider.dropTable(stageTableName);

http://git-wip-us.apache.org/repos/asf/sqoop/blob/16c2cdca/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java b/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java
index 4ecb018..a34378a 100644
--- a/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java
+++ b/test/src/test/java/org/apache/sqoop/integration/connector/kafka/FromRDBMSToKafkaTest.java
@@ -29,10 +29,10 @@ import org.testng.annotations.Test;
 public class FromRDBMSToKafkaTest extends KafkaConnectorTestCase {
 
   private static final String[] input = {
-          "1,'USA','2004-10-23','San Francisco'",
-          "2,'USA','2004-10-24','Sunnyvale'",
-          "3,'Czech Republic','2004-10-25','Brno'",
-          "4,'USA','2004-10-26','Palo Alto'"
+    "1,'USA','2004-10-23 00:00:00.000','San Francisco'",
+    "2,'USA','2004-10-24 00:00:00.000','Sunnyvale'",
+    "3,'Czech Republic','2004-10-25 00:00:00.000','Brno'",
+    "4,'USA','2004-10-26 00:00:00.000','Palo Alto'"
   };
 
   @Test