diff --git a/src/test/org/apache/sqoop/hcat/HCatalogExportTest.java b/src/test/org/apache/sqoop/hcat/HCatalogExportTest.java
index 32add56..7ff046e 100644
--- a/src/test/org/apache/sqoop/hcat/HCatalogExportTest.java
+++ b/src/test/org/apache/sqoop/hcat/HCatalogExportTest.java
@@ -113,8 +113,8 @@
     Object expectedMin = generator.getDBValue(minId);
     Object expectedMax = generator.getDBValue(maxId);
 
-    utils.assertSqlColValForRowId(conn, table, minId, colName, true, expectedMin);
-    utils.assertSqlColValForRowId(conn, table, maxId, colName, true, expectedMax);
+    utils.assertSqlColValForRowId(conn, table, minId, colName, false, expectedMin);
+    utils.assertSqlColValForRowId(conn, table, maxId, colName, false, expectedMax);
   }
 
   protected void runHCatExport(List<String> addlArgsArray,
@@ -122,7 +122,7 @@
     ColumnGenerator[] cols) throws Exception {
     utils.createHCatTable(CreateMode.CREATE_AND_LOAD,
       totalRecords, table, cols);
-    utils.createSqlTable(getConnection(), true, totalRecords, table, true, cols);
+    utils.createSqlTable(getConnection(), true, totalRecords, table, false, cols);
     Map<String, String> addlArgsMap = utils.getAddlTestArgs();
     addlArgsArray.add("--verbose");
     addlArgsArray.add("-m");
@@ -338,7 +338,7 @@
     };
     List<String> addlArgsArray = new ArrayList<String>();
     addlArgsArray.add("--columns");
-    addlArgsArray.add("id,msg");
+    addlArgsArray.add("ID,MSG");
     runHCatExport(addlArgsArray, TOTAL_RECORDS, table, cols);
 
   }
diff --git a/src/test/org/apache/sqoop/hcat/HCatalogTestUtils.java b/src/test/org/apache/sqoop/hcat/HCatalogTestUtils.java
index 4301a33..6fb6486 100644
--- a/src/test/org/apache/sqoop/hcat/HCatalogTestUtils.java
+++ b/src/test/org/apache/sqoop/hcat/HCatalogTestUtils.java
@@ -577,7 +577,7 @@
     LOG.info("Verifying column " + colName + " has value " + expectedVal);
     String escapeStr = escapeId? "\"" : "";
     PreparedStatement statement = conn.prepareStatement(
-      "SELECT "+escapeStr + colName + escapeStr+" FROM " + table + " WHERE "+escapeStr+"id"+escapeStr+" = " + id,
+      "SELECT \"" + colName +"\" FROM " + table + " WHERE "+escapeStr+"id"+escapeStr+" = " + id,
       ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
     Object actualVal = null;
     try {
