You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by cw...@apache.org on 2011/08/18 23:39:10 UTC

svn commit: r1159423 - in /hive/trunk/jdbc/src: java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java test/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java

Author: cws
Date: Thu Aug 18 21:39:10 2011
New Revision: 1159423

URL: http://svn.apache.org/viewvc?rev=1159423&view=rev
Log:
HIVE-2315. DatabaseMetadata.getColumns() does not return partition column names for a table (Patrick Hunt via cws)

Modified:
    hive/trunk/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java
    hive/trunk/jdbc/src/test/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java

Modified: hive/trunk/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java
URL: http://svn.apache.org/viewvc/hive/trunk/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java?rev=1159423&r1=1159422&r2=1159423&view=diff
==============================================================================
--- hive/trunk/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java (original)
+++ hive/trunk/jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java Thu Aug 18 21:39:10 2011
@@ -195,7 +195,7 @@ public class HiveDatabaseMetaData implem
       List<String> tables = client.get_tables(catalog, "*");
       for (String table: tables) {
         if (table.matches(regtableNamePattern)) {
-          List<FieldSchema> fields = client.get_fields(catalog, table);
+          List<FieldSchema> fields = client.get_schema(catalog, table);
           int ordinalPos = 1;
           for (FieldSchema field: fields) {
             if (field.getName().matches(regcolumnNamePattern)) {

Modified: hive/trunk/jdbc/src/test/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java
URL: http://svn.apache.org/viewvc/hive/trunk/jdbc/src/test/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java?rev=1159423&r1=1159422&r2=1159423&view=diff
==============================================================================
--- hive/trunk/jdbc/src/test/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java (original)
+++ hive/trunk/jdbc/src/test/org/apache/hadoop/hive/jdbc/TestJdbcDriver.java Thu Aug 18 21:39:10 2011
@@ -50,6 +50,8 @@ public class TestJdbcDriver extends Test
   private static final String viewName = "testHiveJdbcDriverView";
   private static final String viewComment = "Simple view";
   private static final String partitionedTableName = "testHiveJdbcDriverPartitionedTable";
+  private static final String partitionedColumnName = "partcolabc";
+  private static final String partitionedColumnValue = "20090619";
   private static final String partitionedTableComment = "Partitioned table";
   private static final String dataTypeTableName = "testDataTypeTable";
   private static final String dataTypeTableComment = "Table with many column data types";
@@ -117,13 +119,14 @@ public class TestJdbcDriver extends Test
 
     res = stmt.executeQuery("create table " + partitionedTableName
         + " (under_col int, value string) comment '"+partitionedTableComment
-            +"' partitioned by (dt STRING)");
+            +"' partitioned by (" + partitionedColumnName + " STRING)");
     assertFalse(res.next());
 
     // load data
     res = stmt.executeQuery("load data local inpath '"
         + dataFilePath.toString() + "' into table " + partitionedTableName
-        + " PARTITION (dt='20090619')");
+        + " PARTITION (" + partitionedColumnName + "="
+        + partitionedColumnValue + ")");
     assertFalse(res.next());
 
     // drop table. ignore error.
@@ -383,6 +386,8 @@ public class TestJdbcDriver extends Test
   }
 
   private void doTestSelectAll(String tableName, int maxRows, int fetchSize) throws Exception {
+    boolean isPartitionTable = tableName.equals(partitionedTableName);
+
     Statement stmt = con.createStatement();
     if (maxRows >= 0) {
       stmt.setMaxRows(maxRows);
@@ -411,10 +416,7 @@ public class TestJdbcDriver extends Test
     int i = 0;
 
     ResultSetMetaData meta = res.getMetaData();
-    int expectedColCount = 2;
-    if (tableName.equals(partitionedTableName)) {
-      ++expectedColCount;
-    }
+    int expectedColCount = isPartitionTable ? 3 : 2;
     assertEquals(
       "Unexpected column count", expectedColCount, meta.getColumnCount());
 
@@ -425,6 +427,10 @@ public class TestJdbcDriver extends Test
         assertEquals(res.getInt(1), res.getInt("under_col"));
         assertEquals(res.getString(1), res.getString("under_col"));
         assertEquals(res.getString(2), res.getString("value"));
+        if (isPartitionTable) {
+          assertEquals(res.getString(3), partitionedColumnValue);
+          assertEquals(res.getString(3), res.getString(partitionedColumnName));
+        }
         assertFalse("Last result value was not null", res.wasNull());
         assertNull("No warnings should be found on ResultSet", res
             .getWarnings());
@@ -630,7 +636,7 @@ public class TestJdbcDriver extends Test
   public void testMetaDataGetColumns() throws SQLException {
     Map<String[], Integer> tests = new HashMap<String[], Integer>();
     tests.put(new String[]{"testhivejdbcdriver\\_table", null}, 2);
-    tests.put(new String[]{"testhivejdbc%", null}, 6);
+    tests.put(new String[]{"testhivejdbc%", null}, 7);
     tests.put(new String[]{"%jdbcdriver\\_table", null}, 2);
     tests.put(new String[]{"%jdbcdriver\\_table%", "under\\_col"}, 1);
     tests.put(new String[]{"%jdbcdriver\\_table%", "under\\_co_"}, 1);