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