[
https://issues.apache.org/jira/browse/HIVE-25813?focusedWorklogId=813094&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-813094
]
ASF GitHub Bot logged work on HIVE-25813:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 28/Sep/22 19:00
Start Date: 28/Sep/22 19:00
Worklog Time Spent: 10m
Work Description: saihemanth-cloudera commented on code in PR #3627:
URL: https://github.com/apache/hive/pull/3627#discussion_r982764300
##########
ql/src/java/org/apache/hadoop/hive/ql/ddl/table/create/like/CreateTableLikeOperation.java:
##########
@@ -157,27 +158,12 @@ private void setTableParameters(Table tbl) throws
HiveException {
}
// We should copy only those table parameters that are specified in the
config.
SerDeSpec spec = AnnotationUtils.getAnnotation(serdeClass,
SerDeSpec.class);
-
- // for non-native table, property storage_handler should be retained
- retainer.add(META_TABLE_STORAGE);
- if (spec != null && spec.schemaProps() != null) {
- retainer.addAll(Arrays.asList(spec.schemaProps()));
- }
-
- String paramsStr = HiveConf.getVar(context.getConf(),
HiveConf.ConfVars.DDL_CTL_PARAMETERS_WHITELIST);
- if (paramsStr != null) {
- retainer.addAll(Arrays.asList(paramsStr.split(",")));
- }
-
- Map<String, String> params = tbl.getParameters();
- if (!retainer.isEmpty()) {
- params.keySet().retainAll(retainer);
- } else {
- params.clear();
- }
+ //With Hive-25813, we'll not copy over table properties from the source.
+ //CTLT should should copy column schema but not table properties. It is
also consistent with other query engines like mysql, redshift.
+ tbl.getParameters().clear();
Review Comment:
Yeah, that is true. Going forward we don't want to copy over the physical
properties like table parameters in CTLT command. This implementation is inline
with other SQL engines like Mysql, Redshift e.t.c.
Given that user can still have same tbl properties as that of source table
by explicitly specifiying the TBL PROPERTIES(). Eg:
https://github.com/apache/hive/pull/3627/files#diff-fac39ae652bb8a3e42e189a4efec47b5184ebbb4b7db52ce489dfc343844fd91R11
Issue Time Tracking
-------------------
Worklog Id: (was: 813094)
Time Spent: 1h 50m (was: 1h 40m)
> CREATE TABLE x LIKE storagehandler-based-source fails
> ------------------------------------------------------
>
> Key: HIVE-25813
> URL: https://issues.apache.org/jira/browse/HIVE-25813
> Project: Hive
> Issue Type: Bug
> Reporter: Sai Hemanth Gantasala
> Assignee: Sai Hemanth Gantasala
> Priority: Major
> Labels: pull-request-available
> Time Spent: 1h 50m
> Remaining Estimate: 0h
>
> {code:java}
> CREATE EXTERNAL TABLE default.dbs (
> DB_ID bigint,
> DB_LOCATION_URI string,
> NAME string,
> OWNER_NAME string,
> OWNER_TYPE string )
> STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler'
> TBLPROPERTIES (
> 'hive.sql.database.type' = 'MYSQL',
> 'hive.sql.jdbc.driver' = 'com.mysql.jdbc.Driver',
> 'hive.sql.jdbc.url' = 'jdbc:mysql://localhost:3306/hive1',
> 'hive.sql.dbcp.username' = 'hive1',
> 'hive.sql.dbcp.password' = 'cloudera',
> 'hive.sql.query' = 'SELECT DB_ID, DB_LOCATION_URI, NAME, OWNER_NAME,
> OWNER_TYPE FROM DBS'
> );
> CREATE TABLE default.dbscopy LIKE default.dbs;
> Caused by: java.lang.NullPointerException
> at
> org.apache.hadoop.hive.metastore.HiveMetaStoreUtils.getFieldsFromDeserializer(HiveMetaStoreUtils.java:186)
> {code}
> With this patch, we don't want to copy over the table properties or any other
> physical properties (storage handler e.t.c) of the source table when CREATE
> TABLE LIKE TABLE command is executed. Only table schema (logical properties)
> should be copied. This implementation is consistent with other SQL engines
> like Mysql, Redshift etc.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)