[ https://issues.apache.org/jira/browse/HIVE-29054?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17987860#comment-17987860 ]
Butao Zhang commented on HIVE-29054: ------------------------------------ https://github.com/apache/hive/blob/aeabe39368633a7f06c038c97b590e1ea9094968/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/misc/truncate/TruncateTableAnalyzer.java#L138-L142 Check this code block: {code:java} if (!isForce && table.getTableType() != TableType.MANAGED_TABLE && table.getParameters().getOrDefault(MetaStoreUtils.EXTERNAL_TABLE_PURGE, "FALSE").equalsIgnoreCase("FALSE")) { throw new SemanticException(ErrorMsg.TRUNCATE_FOR_NON_MANAGED_TABLE.format(tableName)); } {code} If the external table has parameter* external.table.purge=true*, it still can be truncated. I see your test external table t1 has this parameter, so this behavior is expected. > Truncate table should not work for EXTERNAL tables > -------------------------------------------------- > > Key: HIVE-29054 > URL: https://issues.apache.org/jira/browse/HIVE-29054 > Project: Hive > Issue Type: Bug > Components: Hive > Affects Versions: 4.1.0 > Reporter: Vlad Rozov > Priority: Major > > {code:java} > 0: jdbc:hive2://> create table t1 (i int); > No rows affected (3.784 seconds) > 0: jdbc:hive2://> insert into t1 values (1); > 25/06/29 12:22:08 [HiveServer2-Background-Pool: Thread-686]: WARN ql.Driver: > Hive-on-MR is deprecated in Hive 2 and may not be available in the future > versions. Consider using a different execution engine (i.e. tez) or using > Hive 1.X releases. > Query ID = vrozov_20250629122207_ba777397-52d7-4c3b-b60c-6372ab854bfe > Total jobs = 3 > Launching Job 1 out of 3 > Number of reduce tasks determined at compile time: 1 > In order to change the average load for a reducer (in bytes): > set hive.exec.reducers.bytes.per.reducer=<number> > In order to limit the maximum number of reducers: > set hive.exec.reducers.max=<number> > In order to set a constant number of reducers: > set mapreduce.job.reduces=<number> > 25/06/29 12:22:08 [HiveServer2-Background-Pool: Thread-686]: WARN > impl.MetricsSystemImpl: JobTracker metrics system already initialized! > 25/06/29 12:22:08 [HiveServer2-Background-Pool: Thread-686]: WARN > impl.MetricsSystemImpl: JobTracker metrics system already initialized! > 25/06/29 12:22:08 [HiveServer2-Background-Pool: Thread-686]: WARN > mapreduce.JobResourceUploader: Hadoop command-line option parsing not > performed. Implement the Tool interface and execute your application with > ToolRunner to remedy this. > Job running in-process (local Hadoop) > 25/06/29 12:22:08 [pool-26-thread-1]: WARN impl.MetricsSystemImpl: JobTracker > metrics system already initialized! > WARN : Hive-on-MR is deprecated in Hive 2 and may not be available in the > future versions. Consider using a different execution engine (i.e. tez) or > using Hive 1.X releases. > 2025-06-29 12:22:09,442 Stage-1 map = 100%, reduce = 100%, Cumulative CPU > 1.3 sec > MapReduce Total cumulative CPU time: 1 seconds 300 msec > Ended Job = job_local1375981122_0003 > Stage-4 is selected by condition resolver. > Stage-3 is filtered out by condition resolver. > Stage-5 is filtered out by condition resolver. > Moving data to directory > file:/user/hive/warehouse/t1/.hive-staging_hive_2025-06-29_12-22-07_950_7384495465674809150-1/-ext-10000 > Time taken to move files: 1 ms > Loading data to table default.t1 > 25/06/29 12:22:09 [HiveServer2-Background-Pool: Thread-686]: WARN > metadata.Hive: Cannot get a table snapshot for t1 > Time taken to move files: 1 ms > 25/06/29 12:22:09 [HiveServer2-Background-Pool: Thread-686]: WARN > metadata.Hive: Cannot get a table snapshot for t1 > StatsTask took 90 > MapReduce Jobs Launched: > Stage-Stage-1: Cumulative CPU: 1.3 sec HDFS Read: 0 HDFS Write: 0 SUCCESS > Total MapReduce CPU Time Spent: 1 seconds 300 msec > 1 row affected (1.66 seconds) > 0: jdbc:hive2://> describe formatted t1; > +-------------------------------+----------------------------------------------------+----------------------------------------------------+ > | col_name | data_type > | comment | > +-------------------------------+----------------------------------------------------+----------------------------------------------------+ > | i | int > | | > | | NULL > | NULL | > | # Detailed Table Information | NULL > | NULL | > | Database: | default > | NULL | > | OwnerType: | USER > | NULL | > | Owner: | vrozov > | NULL | > | CreateTime: | Sun Jun 29 12:21:52 PDT 2025 > | NULL | > | LastAccessTime: | UNKNOWN > | NULL | > | Retention: | 0 > | NULL | > | Location: | file:/user/hive/warehouse/t1 > | NULL | > | Table Type: | EXTERNAL_TABLE > | NULL | > | Table Parameters: | NULL > | NULL | > | | COLUMN_STATS_ACCURATE > | {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"i\":\"true\"}} | > | | EXTERNAL > | TRUE | > | | TRANSLATED_TO_EXTERNAL > | TRUE | > | | bucketing_version > | 2 | > | | external.table.purge > | TRUE | > | | numFiles > | 1 | > | | numRows > | 1 | > | | rawDataSize > | 1 | > | | totalSize > | 2 | > | | transient_lastDdlTime > | 1751224929 | > | | NULL > | NULL | > | # Storage Information | NULL > | NULL | > | SerDe Library: | > org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe | NULL > | > | InputFormat: | org.apache.hadoop.mapred.TextInputFormat > | NULL | > | OutputFormat: | > org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | NULL > | > | Compressed: | No > | NULL | > | Num Buckets: | -1 > | NULL | > | Bucket Columns: | [] > | NULL | > | Sort Columns: | [] > | NULL | > | Storage Desc Params: | NULL > | NULL | > | | serialization.format > | 1 | > +-------------------------------+----------------------------------------------------+----------------------------------------------------+ > 33 rows selected (0.05 seconds) > 0: jdbc:hive2://> truncate t1; > No rows affected (2.573 seconds) > 0: jdbc:hive2://> select * from t1; > 25/06/29 12:22:55 [f8b4b566-f7a5-432b-a49a-80211623cf4f main]: WARN > optimizer.SimpleFetchOptimizer: Cannot determine basic stats for table: > default@t1 from metastore. Falling back. > +-------+ > | t1.i | > +-------+ > +-------+ > No rows selected (0.077 seconds) > 0: jdbc:hive2://> {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)