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 2012/08/15 07:34:45 UTC

svn commit: r1373218 - in /hive/trunk: common/src/java/org/apache/hadoop/hive/conf/ conf/ ql/src/java/org/apache/hadoop/hive/ql/exec/ ql/src/test/queries/clientpositive/ ql/src/test/results/clientpositive/

Author: cws
Date: Wed Aug 15 05:34:45 2012
New Revision: 1373218

URL: http://svn.apache.org/viewvc?rev=1373218&view=rev
Log:
HIVE-3337. Create Table Like should copy configured Table Parameters (Bhushan Mandhani via cws)

Added:
    hive/trunk/ql/src/test/queries/clientpositive/create_like2.q
    hive/trunk/ql/src/test/results/clientpositive/create_like2.q.out
Modified:
    hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
    hive/trunk/conf/hive-default.xml.template
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java

Modified: hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
URL: http://svn.apache.org/viewvc/hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java?rev=1373218&r1=1373217&r2=1373218&view=diff
==============================================================================
--- hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (original)
+++ hive/trunk/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java Wed Aug 15 05:34:45 2012
@@ -311,6 +311,8 @@ public class HiveConf extends Configurat
 
     // Default parameters for creating tables
     NEWTABLEDEFAULTPARA("hive.table.parameters.default", ""),
+    // Parameters to copy over when creating a table with Create Table Like.
+    DDL_CTL_PARAMETERS_WHITELIST("hive.ddl.createtablelike.properties.whitelist", ""),
     METASTORE_RAW_STORE_IMPL("hive.metastore.rawstore.impl",
         "org.apache.hadoop.hive.metastore.ObjectStore"),
     METASTORE_CONNECTION_DRIVER("javax.jdo.option.ConnectionDriverName",

Modified: hive/trunk/conf/hive-default.xml.template
URL: http://svn.apache.org/viewvc/hive/trunk/conf/hive-default.xml.template?rev=1373218&r1=1373217&r2=1373218&view=diff
==============================================================================
--- hive/trunk/conf/hive-default.xml.template (original)
+++ hive/trunk/conf/hive-default.xml.template Wed Aug 15 05:34:45 2012
@@ -1104,6 +1104,12 @@
 </property>
 
 <property>
+  <name>hive.ddl.createtablelike.properties.whitelist</name>
+  <value></value>
+  <description>Table Properties to copy over when executing a Create Table Like.</description>
+</property>
+
+<property>
   <name>hive.variable.substitute</name>
   <value>true</value>
   <description>This enables substitution using syntax like ${var} ${system:var} and ${env:var}.</description>

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java?rev=1373218&r1=1373217&r2=1373218&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java Wed Aug 15 05:34:45 2012
@@ -32,6 +32,7 @@ import java.io.Writer;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
@@ -3453,9 +3454,15 @@ public class DDLTask extends Task<DDLWor
         tbl.unsetDataLocation();
       }
 
-      // we should reset table specific parameters including (stats, lastDDLTime etc.)
       Map<String, String> params = tbl.getParameters();
-      params.clear();
+      // We should copy only those table parameters that are specified in the config.
+      String paramsStr = HiveConf.getVar(conf, HiveConf.ConfVars.DDL_CTL_PARAMETERS_WHITELIST);
+      if (paramsStr != null) {
+        List<String> paramsList = Arrays.asList(paramsStr.split(","));
+        params.keySet().retainAll(paramsList);
+      } else {
+        params.clear();
+      }
 
       if (crtTbl.isExternal()) {
         tbl.setProperty("EXTERNAL", "TRUE");

Added: hive/trunk/ql/src/test/queries/clientpositive/create_like2.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/create_like2.q?rev=1373218&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/create_like2.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/create_like2.q Wed Aug 15 05:34:45 2012
@@ -0,0 +1,9 @@
+-- Tests the copying over of Table Parameters according to a HiveConf setting
+-- when doing a CREATE TABLE LIKE.
+
+CREATE TABLE table1(a INT, b STRING);
+ALTER TABLE table1 SET TBLPROPERTIES ('a'='1', 'b'='2', 'c'='3', 'd' = '4');
+
+SET hive.ddl.createtablelike.properties.whitelist=a,c,D;
+CREATE TABLE table2 LIKE table1;
+DESC FORMATTED table2;

Added: hive/trunk/ql/src/test/results/clientpositive/create_like2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/create_like2.q.out?rev=1373218&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/create_like2.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/create_like2.q.out Wed Aug 15 05:34:45 2012
@@ -0,0 +1,55 @@
+PREHOOK: query: -- Tests the copying over of Table Parameters according to a HiveConf setting
+-- when doing a CREATE TABLE LIKE.
+
+CREATE TABLE table1(a INT, b STRING)
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Tests the copying over of Table Parameters according to a HiveConf setting
+-- when doing a CREATE TABLE LIKE.
+
+CREATE TABLE table1(a INT, b STRING)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@table1
+PREHOOK: query: ALTER TABLE table1 SET TBLPROPERTIES ('a'='1', 'b'='2', 'c'='3', 'd' = '4')
+PREHOOK: type: ALTERTABLE_PROPERTIES
+PREHOOK: Input: default@table1
+PREHOOK: Output: default@table1
+POSTHOOK: query: ALTER TABLE table1 SET TBLPROPERTIES ('a'='1', 'b'='2', 'c'='3', 'd' = '4')
+POSTHOOK: type: ALTERTABLE_PROPERTIES
+POSTHOOK: Input: default@table1
+POSTHOOK: Output: default@table1
+PREHOOK: query: CREATE TABLE table2 LIKE table1
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE table2 LIKE table1
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@table2
+PREHOOK: query: DESC FORMATTED table2
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: DESC FORMATTED table2
+POSTHOOK: type: DESCTABLE
+# col_name            	data_type           	comment             
+	 	 
+a                   	int                 	None                
+b                   	string              	None                
+	 	 
+# Detailed Table Information	 	 
+Database:           	default             	 
+#### A masked pattern was here ####
+Protect Mode:       	None                	 
+Retention:          	0                   	 
+#### A masked pattern was here ####
+Table Type:         	MANAGED_TABLE       	 
+Table Parameters:	 	 
+	a                   	1                   
+	c                   	3                   
+#### A masked pattern was here ####
+	 	 
+# Storage Information	 	 
+SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
+InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
+OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
+Compressed:         	No                  	 
+Num Buckets:        	-1                  	 
+Bucket Columns:     	[]                  	 
+Sort Columns:       	[]                  	 
+Storage Desc Params:	 	 
+	serialization.format	1