[Bug] TIMESTAMP(9) write to PostponeBucketTable fails with 'file.format.per.level' = '0:avro'
- Dominant language
- Java
- Stars
- 3.4k
- Forks
- 1.4k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 396
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/paimon/issues) and found nothing similar.
### Paimon version
1.4
### Compute Engine
Flink
### Minimal reproduce step
CREATE TABLE T (k INT, v TIMESTAMP(9), PRIMARY KEY (k) NOT ENFORCED)
WITH ('bucket' = '-2',
'file.format.per.level' = '0:avro',
'postpone.batch-write-fixed-bucket' = 'false');
INSERT INTO T VALUES (1, TIMESTAMP '2025-06-11 16:35:45.123456789'), (2, CAST(NULL AS TIMESTAMP(9)));
### What doesn't meet your expectations?
Exception happened.
### Anything else?
Error message:
```
Caused by: java.lang.IllegalArgumentException: Avro does not support TIMESTAMP type with precision: 9, it only supports precision less than 6.
at org.apache.paimon.format.avro.AvroSchemaConverter.convertToSchema(AvroSchemaConverter.java:121)
at org.apache.paimon.format.avro.AvroSchemaConverter.convertToSchema(AvroSchemaConverter.java:190)
at org.apache.paimon.format.avro.AvroSchemaConverter.convertToSchema(AvroSchemaConverter.java:63)
at org.apache.paimon.format.avro.AvroFileFormat$RowAvroWriterFactory.lambda$new$433a2ff1$1(AvroFileFormat.java:123)
at org.apache.paimon.format.avro.AvroWriterFactory.create(AvroWriterFactory.java:46)
at org.apache.paimon.format.avro.AvroFileFormat$RowAvroWriterFactory.create(AvroFileFormat.java:138)
at org.apache.paimon.io.SingleFileWriter.(SingleFileWriter.java:87)
at org.apache.paimon.io.StatsCollectingSingleFileWriter.(StatsCollectingSingleFileWriter.java:52)
at org.apache.paimon.io.KeyValueDataFileWriter.(KeyValueDataFileWriter.java:91)
at org.apache.paimon.io.KeyValueDataFileWriterImpl.(KeyValueDataFileWriterImpl.java:51)
at org.apache.paimon.io.KeyValueFileWriterFactory.createDataFileWriter(KeyValueFileWriterFactory.java:176)
at org.apache.paimon.io.KeyValueFileWriterFactory.lambda$createRollingMergeTreeFileWriter$0(KeyValueFileWriterFactory.java:103)
at org.apache.paimon.io.RollingFileWriterImpl.openCurrentWriter(RollingFileWriterImpl.java:120)
at org.apache.paimon.io.RollingFileWriterImpl.write(RollingFileWriterImpl.java:74)
at org.apache.paimon.utils.SinkWriter$DirectSinkWriter.write(SinkWriter.java:75)
at org.apache.paimon.postpone.PostponeBucketWriter.write(PostponeBucketWriter.java:108)
at org.apache.paimon.postpone.PostponeBucketWriter.write(PostponeBucketWriter.java:55)
at org.apache.paimon.operation.AbstractFileStoreWrite.write(AbstractFileStoreWrite.java:171)
at org.apache.paimon.table.sink.TableWriteImpl.writeAndReturn(TableWriteImpl.java:191)
at org.apache.paimon.table.sink.TableWriteImpl.writeAndReturn(TableWriteImpl.java:179)
at org.apache.paimon.flink.sink.StoreSinkWriteImpl.write(StoreSinkWriteImpl.java:108)
at org.apache.paimon.flink.sink.RowDataStoreWriteOperator.write(RowDataStoreWriteOperator.java:61)
```
### Are you willing to submit a PR?
- [x] I'm willing to submit a PR!
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the minimal Flink SQL reproduction and inspect AvroSchemaConverter.java at line 121, then trace the writer creation through AvroFileFormat.java and the PostponeBucketWriter path shown in the stack trace. Done means the TIMESTAMP(9) INSERT using file.format.per.level = 0:avro completes without the reported exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- data-engineering
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100