apache / apache/paimon

[Bug] TIMESTAMP(9) write to PostponeBucketTable fails with 'file.format.per.level' = '0:avro'

Open
#7,883 1 comment 0 reactions 0 assignees View on GitHub
bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.