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