You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2011/10/26 06:51:47 UTC

svn commit: r1189026 - in /hive/trunk: metastore/src/java/org/apache/hadoop/hive/metastore/ ql/src/java/org/apache/hadoop/hive/ql/metadata/ ql/src/test/queries/clientnegative/ ql/src/test/results/clientnegative/

Author: namit
Date: Wed Oct 26 04:51:46 2011
New Revision: 1189026

URL: http://svn.apache.org/viewvc?rev=1189026&view=rev
Log:
HIVE-1850 alter table set serdeproperties bypasses regexps checks
(leaves table in a non-recoverable state?) (Amareshwari Sriramadasu via namit)


Added:
    hive/trunk/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q
    hive/trunk/ql/src/test/queries/clientnegative/create_table_wrong_regex.q
    hive/trunk/ql/src/test/results/clientnegative/alter_table_wrong_regex.q.out
    hive/trunk/ql/src/test/results/clientnegative/create_table_wrong_regex.q.out
Modified:
    hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java?rev=1189026&r1=1189025&r2=1189026&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java Wed Oct 26 04:51:46 2011
@@ -677,7 +677,10 @@ public class MetaStoreUtils {
 
     if (parameters != null) {
       for (Entry<String, String> e : parameters.entrySet()) {
-        schema.setProperty(e.getKey(), e.getValue());
+        // add non-null parameters to the schema
+        if ( e.getValue() != null) {
+          schema.setProperty(e.getKey(), e.getValue());
+        }
       }
     }
 

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java?rev=1189026&r1=1189025&r2=1189026&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/metadata/Table.java Wed Oct 26 04:51:46 2011
@@ -164,7 +164,7 @@ public class Table implements Serializab
           "at least one column must be specified for the table");
     }
     if (!isView()) {
-      if (null == getDeserializer()) {
+      if (null == getDeserializerFromMetaStore()) {
         throw new HiveException("must specify a non-null serDe");
       }
       if (null == getInputFormatClass()) {
@@ -250,17 +250,21 @@ public class Table implements Serializab
 
   final public Deserializer getDeserializer() {
     if (deserializer == null) {
-      try {
-        deserializer = MetaStoreUtils.getDeserializer(Hive.get().getConf(), tTable);
-      } catch (MetaException e) {
-        throw new RuntimeException(e);
-      } catch (HiveException e) {
-        throw new RuntimeException(e);
-      }
+      deserializer = getDeserializerFromMetaStore();
     }
     return deserializer;
   }
 
+  private Deserializer getDeserializerFromMetaStore() {
+    try {
+      return MetaStoreUtils.getDeserializer(Hive.get().getConf(), tTable);
+    } catch (MetaException e) {
+      throw new RuntimeException(e);
+    } catch (HiveException e) {
+      throw new RuntimeException(e);
+    }    
+  }
+
   public HiveStorageHandler getStorageHandler() {
     if (storageHandler != null) {
       return storageHandler;

Added: hive/trunk/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q?rev=1189026&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/alter_table_wrong_regex.q Wed Oct 26 04:51:46 2011
@@ -0,0 +1,7 @@
+drop table aa;
+create table aa ( test STRING )
+  ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
+  WITH SERDEPROPERTIES ("input.regex" = "(.*)", "output.format.string" = "$1s");
+  
+alter table aa set serdeproperties ("input.regex" = "[^\\](.*)", "output.format.string" = "$1s");
+

Added: hive/trunk/ql/src/test/queries/clientnegative/create_table_wrong_regex.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/create_table_wrong_regex.q?rev=1189026&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/create_table_wrong_regex.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/create_table_wrong_regex.q Wed Oct 26 04:51:46 2011
@@ -0,0 +1,4 @@
+drop table aa;
+create table aa ( test STRING )
+  ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
+  WITH SERDEPROPERTIES ("input.regex" = "[^\\](.*)", "output.format.string" = "$1s"); 

Added: hive/trunk/ql/src/test/results/clientnegative/alter_table_wrong_regex.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/alter_table_wrong_regex.q.out?rev=1189026&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/alter_table_wrong_regex.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/alter_table_wrong_regex.q.out Wed Oct 26 04:51:46 2011
@@ -0,0 +1,21 @@
+PREHOOK: query: drop table aa
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table aa
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: create table aa ( test STRING )
+  ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
+  WITH SERDEPROPERTIES ("input.regex" = "(.*)", "output.format.string" = "$1s")
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: create table aa ( test STRING )
+  ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
+  WITH SERDEPROPERTIES ("input.regex" = "(.*)", "output.format.string" = "$1s")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@aa
+PREHOOK: query: alter table aa set serdeproperties ("input.regex" = "[^\\](.*)", "output.format.string" = "$1s")
+PREHOOK: type: ALTERTABLE_SERDEPROPERTIES
+PREHOOK: Input: default@aa
+PREHOOK: Output: default@aa
+Failed with exception Unclosed character class near index 7
+[^\](.*)
+       ^
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

Added: hive/trunk/ql/src/test/results/clientnegative/create_table_wrong_regex.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/create_table_wrong_regex.q.out?rev=1189026&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/create_table_wrong_regex.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/create_table_wrong_regex.q.out Wed Oct 26 04:51:46 2011
@@ -0,0 +1,12 @@
+PREHOOK: query: drop table aa
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table aa
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: create table aa ( test STRING )
+  ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
+  WITH SERDEPROPERTIES ("input.regex" = "[^\\](.*)", "output.format.string" = "$1s")
+PREHOOK: type: CREATETABLE
+FAILED: Error in metadata: java.util.regex.PatternSyntaxException: Unclosed character class near index 7
+[^\](.*)
+       ^
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask