Skip to content

Insert timestamp column failed with invalid column statistics data #24988

Open
@willshen99

Description

@willshen99

Issue

I'm running below query on a hive catalog with Trino 467.

create table hive.hive_test.t1 (visit_end_datetime TIMESTAMP);
insert into hive.hive_test.t1 values (TIMESTAMP '2021-01-01 11:00'); --succeed
insert into hive.hive_test.t1 values (TIMESTAMP '2021-01-02 11:00'); -- fail

The first insert is successful, but the second insert failed with error message SQL Error [16777228]: Query failed (#20250211_144549_00253_vqc7q): Invalid column statistics data: ColumnStatisticsObj(colName:visit_end_datetime, colType:timestamp, statsData:<ColumnStatisticsData >). Checking the stats for table, all stats are null.

If running drop stats right after the empty table is created, I am able to run the insert commands then:

CREATE TABLE hive.hive_test.t1 (visit_end_datetime TIMESTAMP);
call system.drop_stats('hive_test', 't1'); -- drop stats right after table creation
insert into hive.hive_test.t1 values (TIMESTAMP '2021-01-01 11:00'); -- succeed
insert into hive.hive_test.t1 values (TIMESTAMP '2021-01-02 11:00'); -- succeed

Version

Trino: 467
HMS: I tried both 4.0.1 and 3.1.3

Full traceback:

org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error [16777228]: Query failed (#20250211_150435_00293_vqc7q): Invalid column statistics data: ColumnStatisticsObj(colName:visit_end_datetime, colType:timestamp, statsData:<ColumnStatisticsData >)
	at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:600)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$2(SQLQueryJob.java:503)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:513)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:962)
	at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:4123)
	at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:123)
	at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:190)
	at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:121)
	at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$ResultSetDataPumpJob.run(ResultSetViewer.java:5148)
	at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.sql.SQLException: Query failed (#20250211_150435_00293_vqc7q): Invalid column statistics data: ColumnStatisticsObj(colName:visit_end_datetime, colType:timestamp, statsData:<ColumnStatisticsData >)
	at io.trino.jdbc.ResultUtils.resultsException(ResultUtils.java:33)
	at io.trino.jdbc.AsyncResultIterator.lambda$new$1(AsyncResultIterator.java:88)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: io.trino.spi.TrinoException: Invalid column statistics data: ColumnStatisticsObj(colName:visit_end_datetime, colType:timestamp, statsData:<ColumnStatisticsData >)
	at io.trino.plugin.hive.metastore.thrift.ThriftMetastoreUtil.fromMetastoreApiColumnStatistics(ThriftMetastoreUtil.java:590)
	at io.trino.plugin.hive.metastore.thrift.ThriftHiveMetastore.groupStatisticsByColumn(ThriftHiveMetastore.java:386)
	at io.trino.plugin.hive.metastore.thrift.ThriftHiveMetastore.lambda$getTableColumnStatistics$4(ThriftHiveMetastore.java:304)
	at io.trino.plugin.hive.metastore.thrift.ThriftMetastoreApiStats.lambda$wrap$0(ThriftMetastoreApiStats.java:41)
	at io.trino.plugin.hive.util.RetryDriver.run(RetryDriver.java:117)
	at io.trino.plugin.hive.metastore.thrift.ThriftHiveMetastore.getTableColumnStatistics(ThriftHiveMetastore.java:302)
	at io.trino.plugin.hive.metastore.thrift.BridgingHiveMetastore.getTableColumnStatistics(BridgingHiveMetastore.java:116)
	at io.trino.metastore.tracing.TracingHiveMetastore.lambda$getTableColumnStatistics$3(TracingHiveMetastore.java:109)
	at io.trino.metastore.tracing.Tracing.withTracing(Tracing.java:39)
	at io.trino.metastore.tracing.TracingHiveMetastore.getTableColumnStatistics(TracingHiveMetastore.java:109)
	at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.lambda$getTableColumnStatistics$9(CachingHiveMetastore.java:447)
	at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.getIncrementally(CachingHiveMetastore.java:322)
	at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.getTableColumnStatistics(CachingHiveMetastore.java:443)
	at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.lambda$getTableColumnStatistics$9(CachingHiveMetastore.java:447)
	at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.getIncrementally(CachingHiveMetastore.java:322)
	at io.trino.plugin.hive.metastore.cache.CachingHiveMetastore.getTableColumnStatistics(CachingHiveMetastore.java:443)
	at io.trino.plugin.hive.metastore.SemiTransactionalHiveMetastore.getTableStatistics(SemiTransactionalHiveMetastore.java:326)
	at io.trino.plugin.hive.metastore.SemiTransactionalHiveMetastore.finishChangingExistingTable(SemiTransactionalHiveMetastore.java:666)
	at io.trino.plugin.hive.HiveMetadata.finishChangingTable(HiveMetadata.java:2299)
	at io.trino.plugin.hive.HiveMetadata.finishInsert(HiveMetadata.java:2205)
	at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.finishInsert(ClassLoaderSafeConnectorMetadata.java:611)
	at io.trino.tracing.TracingConnectorMetadata.finishInsert(TracingConnectorMetadata.java:690)
	at io.trino.metadata.MetadataManager.finishInsert(MetadataManager.java:1216)
	at io.trino.tracing.TracingMetadata.finishInsert(TracingMetadata.java:708)
	at io.trino.sql.planner.LocalExecutionPlanner.lambda$createTableFinisher$4(LocalExecutionPlanner.java:4246)
	at io.trino.operator.TableFinishOperator.getOutput(TableFinishOperator.java:316)
	at io.trino.operator.Driver.processInternal(Driver.java:403)
	at io.trino.operator.Driver.lambda$process$8(Driver.java:306)
	at io.trino.operator.Driver.tryWithLock(Driver.java:709)
	at io.trino.operator.Driver.process(Driver.java:298)
	at io.trino.operator.Driver.processForDuration(Driver.java:269)
	at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:890)
	at io.trino.execution.executor.dedicated.SplitProcessor.run(SplitProcessor.java:77)
	at io.trino.execution.executor.dedicated.TaskEntry$VersionEmbedderBridge.lambda$run$0(TaskEntry.java:201)
	at io.trino.$gen.Trino_467____20250210_195237_2.run(Unknown Source)
	at io.trino.execution.executor.dedicated.TaskEntry$VersionEmbedderBridge.run(TaskEntry.java:202)
	at io.trino.execution.executor.scheduler.FairScheduler.runTask(FairScheduler.java:177)
	at io.trino.execution.executor.scheduler.FairScheduler.lambda$submit$0(FairScheduler.java:164)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
	at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
	at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:76)
	at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1575)

Metadata

Metadata

Assignees

No one assigned

    Labels

    hiveHive connector

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions