trino icon indicating copy to clipboard operation
trino copied to clipboard

Support ClickHouse DateTime(<timezone>) data type

Open amoskaliov opened this issue 2 years ago • 4 comments

Hello.

Trino 389.

Currently Trino doesn't support DateTime(<timezone>) type in Clickhouse, and, even worse, unsupported-type-handling=CONVERT_TO_VARCHAR also fails to handle it. When I turn it on, I get the following error:

Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}

Full stacktrace
2022-08-08T10:04:37.180Z       ERROR   SplitRunner-42-139      io.trino.execution.executor.TaskExecutor        Error processing Split 20220808_100436_00001_23krj.2.0.0-0 SystemSplit{addresses=[172.25.0.12:8080]} (start = 3.6987939359458916E10, wall = 99 ms, cpu = 0 ms, wait = 0 ms, calls = 1)
 com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
        at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4863)
        at io.trino.collect.cache.EvictableCache.get(EvictableCache.java:108)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.getTableMetadata(DefaultJdbcMetadata.java:629)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.lambda$listTableColumns$10(DefaultJdbcMetadata.java:672)
        at java.base/java.util.Optional.ifPresent(Optional.java:183)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.listTableColumns(DefaultJdbcMetadata.java:672)
        at io.trino.spi.connector.ConnectorMetadata.streamTableColumns(ConnectorMetadata.java:292)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:318)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:85)
        at io.trino.metadata.MetadataManager.listTableColumns(MetadataManager.java:547)
        at io.trino.metadata.MetadataListing.listTableColumns(MetadataListing.java:166)
        at io.trino.connector.system.jdbc.ColumnJdbcTable.cursor(ColumnJdbcTable.java:263)
        at io.trino.connector.system.SystemPageSourceProvider$1.cursor(SystemPageSourceProvider.java:129)
        at io.trino.split.MappedRecordSet.cursor(MappedRecordSet.java:53)
        at io.trino.spi.connector.RecordPageSource.<init>(RecordPageSource.java:37)
        at io.trino.connector.system.SystemPageSourceProvider.createPageSource(SystemPageSourceProvider.java:108)
        at io.trino.split.PageSourceManager.createPageSource(PageSourceManager.java:62)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:268)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:196)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:338)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$processStateMonitor$3(WorkProcessorUtils.java:219)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$finishWhen$4(WorkProcessorUtils.java:234)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorSourceOperatorAdapter.getOutput(WorkProcessorSourceOperatorAdapter.java:150)
        at io.trino.operator.Driver.processInternal(Driver.java:410)
        at io.trino.operator.Driver.lambda$process$10(Driver.java:313)
        at io.trino.operator.Driver.tryWithLock(Driver.java:698)
        at io.trino.operator.Driver.process(Driver.java:305)
        at io.trino.operator.Driver.processForDuration(Driver.java:276)
        at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:740)
        at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:163)
        at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:488)
        at io.trino.$gen.Trino_389____20220808_100410_2.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
 Caused by: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:72)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4868)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
        ... 47 more
 Caused by: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.base.Verify.verify(Verify.java:417)
        at io.trino.plugin.jdbc.BaseJdbcClient.getColumns(BaseJdbcClient.java:311)
        at io.trino.plugin.jdbc.ForwardingJdbcClient.getColumns(ForwardingJdbcClient.java:96)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.lambda$getColumns$5(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.jmx.JdbcApiStats.wrap(JdbcApiStats.java:35)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.getColumns(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:66)
        ... 55 more


 2022-08-08T10:04:37.197Z       ERROR   remote-task-callback-3  io.trino.execution.scheduler.PipelinedStageExecution    Pipelined stage execution for stage 20220808_100436_00001_23krj.2 failed
 com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
        at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4863)
        at io.trino.collect.cache.EvictableCache.get(EvictableCache.java:108)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.getTableMetadata(DefaultJdbcMetadata.java:629)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.lambda$listTableColumns$10(DefaultJdbcMetadata.java:672)
        at java.base/java.util.Optional.ifPresent(Optional.java:183)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.listTableColumns(DefaultJdbcMetadata.java:672)
        at io.trino.spi.connector.ConnectorMetadata.streamTableColumns(ConnectorMetadata.java:292)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:318)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:85)
        at io.trino.metadata.MetadataManager.listTableColumns(MetadataManager.java:547)
        at io.trino.metadata.MetadataListing.listTableColumns(MetadataListing.java:166)
        at io.trino.connector.system.jdbc.ColumnJdbcTable.cursor(ColumnJdbcTable.java:263)
        at io.trino.connector.system.SystemPageSourceProvider$1.cursor(SystemPageSourceProvider.java:129)
        at io.trino.split.MappedRecordSet.cursor(MappedRecordSet.java:53)
        at io.trino.spi.connector.RecordPageSource.<init>(RecordPageSource.java:37)
        at io.trino.connector.system.SystemPageSourceProvider.createPageSource(SystemPageSourceProvider.java:108)
        at io.trino.split.PageSourceManager.createPageSource(PageSourceManager.java:62)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:268)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:196)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:338)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$processStateMonitor$3(WorkProcessorUtils.java:219)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$finishWhen$4(WorkProcessorUtils.java:234)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorSourceOperatorAdapter.getOutput(WorkProcessorSourceOperatorAdapter.java:150)
        at io.trino.operator.Driver.processInternal(Driver.java:410)
        at io.trino.operator.Driver.lambda$process$10(Driver.java:313)
        at io.trino.operator.Driver.tryWithLock(Driver.java:698)
        at io.trino.operator.Driver.process(Driver.java:305)
        at io.trino.operator.Driver.processForDuration(Driver.java:276)
        at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:740)
        at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:163)
        at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:488)
        at io.trino.$gen.Trino_389____20220808_100410_2.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
 Caused by: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:72)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4868)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
        ... 47 more
 Caused by: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.base.Verify.verify(Verify.java:417)
        at io.trino.plugin.jdbc.BaseJdbcClient.getColumns(BaseJdbcClient.java:311)
        at io.trino.plugin.jdbc.ForwardingJdbcClient.getColumns(ForwardingJdbcClient.java:96)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.lambda$getColumns$5(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.jmx.JdbcApiStats.wrap(JdbcApiStats.java:35)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.getColumns(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:66)
        ... 55 more


 2022-08-08T10:04:37.201Z       ERROR   stage-scheduler io.trino.execution.scheduler.SqlQueryScheduler  Failure in distributed stage for query 20220808_100436_00001_23krj
 com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
        at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4863)
        at io.trino.collect.cache.EvictableCache.get(EvictableCache.java:108)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.getTableMetadata(DefaultJdbcMetadata.java:629)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.lambda$listTableColumns$10(DefaultJdbcMetadata.java:672)
        at java.base/java.util.Optional.ifPresent(Optional.java:183)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.listTableColumns(DefaultJdbcMetadata.java:672)
        at io.trino.spi.connector.ConnectorMetadata.streamTableColumns(ConnectorMetadata.java:292)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:318)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:85)
        at io.trino.metadata.MetadataManager.listTableColumns(MetadataManager.java:547)
        at io.trino.metadata.MetadataListing.listTableColumns(MetadataListing.java:166)
        at io.trino.connector.system.jdbc.ColumnJdbcTable.cursor(ColumnJdbcTable.java:263)
        at io.trino.connector.system.SystemPageSourceProvider$1.cursor(SystemPageSourceProvider.java:129)
        at io.trino.split.MappedRecordSet.cursor(MappedRecordSet.java:53)
        at io.trino.spi.connector.RecordPageSource.<init>(RecordPageSource.java:37)
        at io.trino.connector.system.SystemPageSourceProvider.createPageSource(SystemPageSourceProvider.java:108)
        at io.trino.split.PageSourceManager.createPageSource(PageSourceManager.java:62)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:268)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:196)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:338)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$processStateMonitor$3(WorkProcessorUtils.java:219)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$finishWhen$4(WorkProcessorUtils.java:234)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorSourceOperatorAdapter.getOutput(WorkProcessorSourceOperatorAdapter.java:150)
        at io.trino.operator.Driver.processInternal(Driver.java:410)
        at io.trino.operator.Driver.lambda$process$10(Driver.java:313)
        at io.trino.operator.Driver.tryWithLock(Driver.java:698)
        at io.trino.operator.Driver.process(Driver.java:305)
        at io.trino.operator.Driver.processForDuration(Driver.java:276)
        at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:740)
        at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:163)
        at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:488)
        at io.trino.$gen.Trino_389____20220808_100410_2.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
 Caused by: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:72)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4868)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
        ... 47 more
 Caused by: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.base.Verify.verify(Verify.java:417)
        at io.trino.plugin.jdbc.BaseJdbcClient.getColumns(BaseJdbcClient.java:311)
        at io.trino.plugin.jdbc.ForwardingJdbcClient.getColumns(ForwardingJdbcClient.java:96)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.lambda$getColumns$5(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.jmx.JdbcApiStats.wrap(JdbcApiStats.java:35)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.getColumns(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:66)
        ... 55 more


 2022-08-08T10:04:37.211Z       ERROR   stage-scheduler io.trino.execution.StageStateMachine    Stage 20220808_100436_00001_23krj.2 failed
 com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
        at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4863)
        at io.trino.collect.cache.EvictableCache.get(EvictableCache.java:108)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.getTableMetadata(DefaultJdbcMetadata.java:629)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.lambda$listTableColumns$10(DefaultJdbcMetadata.java:672)
        at java.base/java.util.Optional.ifPresent(Optional.java:183)
        at io.trino.plugin.jdbc.DefaultJdbcMetadata.listTableColumns(DefaultJdbcMetadata.java:672)
        at io.trino.spi.connector.ConnectorMetadata.streamTableColumns(ConnectorMetadata.java:292)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:318)
        at io.trino.plugin.base.classloader.ClassLoaderSafeConnectorMetadata.streamTableColumns(ClassLoaderSafeConnectorMetadata.java:85)
        at io.trino.metadata.MetadataManager.listTableColumns(MetadataManager.java:547)
        at io.trino.metadata.MetadataListing.listTableColumns(MetadataListing.java:166)
        at io.trino.connector.system.jdbc.ColumnJdbcTable.cursor(ColumnJdbcTable.java:263)
        at io.trino.connector.system.SystemPageSourceProvider$1.cursor(SystemPageSourceProvider.java:129)
        at io.trino.split.MappedRecordSet.cursor(MappedRecordSet.java:53)
        at io.trino.spi.connector.RecordPageSource.<init>(RecordPageSource.java:37)
        at io.trino.connector.system.SystemPageSourceProvider.createPageSource(SystemPageSourceProvider.java:108)
        at io.trino.split.PageSourceManager.createPageSource(PageSourceManager.java:62)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:268)
        at io.trino.operator.ScanFilterAndProjectOperator$SplitToPages.process(ScanFilterAndProjectOperator.java:196)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:338)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$processStateMonitor$3(WorkProcessorUtils.java:219)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
        at io.trino.operator.WorkProcessorUtils.lambda$finishWhen$4(WorkProcessorUtils.java:234)
        at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
        at io.trino.operator.WorkProcessorSourceOperatorAdapter.getOutput(WorkProcessorSourceOperatorAdapter.java:150)
        at io.trino.operator.Driver.processInternal(Driver.java:410)
        at io.trino.operator.Driver.lambda$process$10(Driver.java:313)
        at io.trino.operator.Driver.tryWithLock(Driver.java:698)
        at io.trino.operator.Driver.process(Driver.java:305)
        at io.trino.operator.Driver.processForDuration(Driver.java:276)
        at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:740)
        at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:163)
        at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:488)
        at io.trino.$gen.Trino_389____20220808_100410_2.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
 Caused by: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:72)
        at io.trino.plugin.jdbc.CachingJdbcClient.get(CachingJdbcClient.java:752)
        at io.trino.plugin.jdbc.CachingJdbcClient.getColumns(CachingJdbcClient.java:165)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4868)
        at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
        at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
        at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
        ... 47 more
 Caused by: com.google.common.base.VerifyException: Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}
        at com.google.common.base.Verify.verify(Verify.java:417)
        at io.trino.plugin.jdbc.BaseJdbcClient.getColumns(BaseJdbcClient.java:311)
        at io.trino.plugin.jdbc.ForwardingJdbcClient.getColumns(ForwardingJdbcClient.java:96)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.lambda$getColumns$5(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.jmx.JdbcApiStats.wrap(JdbcApiStats.java:35)
        at io.trino.plugin.jdbc.jmx.StatisticsAwareJdbcClient.getColumns(StatisticsAwareJdbcClient.java:116)
        at io.trino.plugin.jdbc.CachingJdbcClient.lambda$getColumns$3(CachingJdbcClient.java:165)
        at io.trino.collect.cache.EmptyCache.get(EmptyCache.java:66)
        ... 55 more

Actually it would be great to add support of the DateTime(<timezone>) type, but currently it would be nice to fix converting to varchar.

Thank you.

amoskaliov avatar Aug 08 '22 10:08 amoskaliov

Currently Trino doesn't support DateTime(<timezone>) type in Clickhouse, and, even worse, unsupported-type-handling=CONVERT_TO_VARCHAR also fails to handle it.

Those are two separate issues.

When I turn it on, I get the following error:

Unsupported type handling is set to CONVERT_TO_VARCHAR, but toColumnMapping() returned empty for JdbcTypeHandle{jdbcType=2014, jdbcTypeName=DateTime('Europe/Moscow'), columnSize=Optional[29], decimalDigits=Optional[0]}

https://github.com/trinodb/trino/pull/13542

Actually it would be great to add support of the DateTime() type,

Agreed!

findepi avatar Aug 08 '22 11:08 findepi

relates to https://github.com/trinodb/trino/issues/10537

findepi avatar Aug 08 '22 11:08 findepi

Actually it would be great to add support of the DateTime() type,

@amoskaliov #10537 will be tracked to support DateTime*(timezone), you can keep an eye on it or I can ping you after it is done.

tangjiangling avatar Aug 08 '22 11:08 tangjiangling

@findepi thank you for fast reaction. In less than 24 hours the fix is already merged, this is amazing work.

@tangjiangling thank you, I've subscribed. Looking forward to this issue being resolved.

amoskaliov avatar Aug 09 '22 06:08 amoskaliov