Search before asking
Paimon version
master @ a5e87eb (2.1-SNAPSHOT)
Compute Engine
Hive
Minimal reproduce step
- Create a Paimon table with
metastore.partitioned-table = true and a string partition column pt.
- Write
pt = '2026-01-01 00:00'. PartitionPathUtils.escapePathName() makes the directory pt=2026-01-01 00%3A00.
- From Hive:
SELECT * FROM t WHERE pt = '2026-01-01 00:00'.
HiveSplitGenerator.createPartitionPredicate() (.../hive/utils/HiveSplitGenerator.java line 131) splits the Hive input dir by / and = by hand and never unescapes, so the predicate uses 2026-01-01 00%3A00.
What doesn't meet your expectations?
Expected the committed rows. Actual: zero splits and zero rows, with no exception — a silent wrong result.
Anything else?
This is the only remaining production site that parses a partition path by hand. Every other site, including HiveUtils.extractTagName() in the same module, uses PartitionPathUtils.extractPartitionSpecFromPath(), which unescapes.
Are you willing to submit a PR?
Search before asking
Paimon version
master @ a5e87eb (2.1-SNAPSHOT)
Compute Engine
Hive
Minimal reproduce step
metastore.partitioned-table = trueand a string partition columnpt.pt = '2026-01-01 00:00'.PartitionPathUtils.escapePathName()makes the directorypt=2026-01-01 00%3A00.SELECT * FROM t WHERE pt = '2026-01-01 00:00'.HiveSplitGenerator.createPartitionPredicate()(.../hive/utils/HiveSplitGenerator.javaline 131) splits the Hive input dir by/and=by hand and never unescapes, so the predicate uses2026-01-01 00%3A00.What doesn't meet your expectations?
Expected the committed rows. Actual: zero splits and zero rows, with no exception — a silent wrong result.
Anything else?
This is the only remaining production site that parses a partition path by hand. Every other site, including
HiveUtils.extractTagName()in the same module, usesPartitionPathUtils.extractPartitionSpecFromPath(), which unescapes.Are you willing to submit a PR?