This is an automated email from the ASF dual-hosted git repository.
XiaoHongbo-Hope pushed a change to branch release-2.1
in repository https://gitbox.apache.org/repos/asf/paimon.git
from a5f3dd4b99 [rest] Add semantic view definition management to REST
Catalog (#9848)
new f3862f6b4e [python] Cover native dynamic PK events and compacted
first-row scans (#9854)
new c1f92f1a41 [python] Speed up nested VARIANT reads by vectorizing
offsets (#9847)
new 8a429cfc36 [python] Expand native planning across resolved tables and
scan modes (#9873)
new 72e4a32b56 [core] Execute complete filters with unprojected fields
(#9872)
new 03d68bfec7 [python] Speed up LeRobot video window reads (#9852)
new 478a7201c4 [python] Support writing shared-shredding MAPs in Parquet
(#9837)
new b6d91b6fd8 [core] Add standalone manifest sidecar format and utilities
(#9845)
new 301713fe6c [core] Manage manifest extra file lifecycle (#9886)
new 32f0a9261e [python] Use conditional OSS puts for atomic metadata
writes (#9715)
new 9686b2a1c2 [core] Generate sidecars for newly written manifests (#9889)
new 3f0d716f97 [python] Reduce memory usage for Parquet row-id updates
(#9840)
new ce81e89b9d [spark][core] Support more expressions in V2 filter
pushdown (#9891)
new 084cde4772 [core] Prune manifest blocks with sidecars during scans
(#9897)
new a5fb087bde [spark][core] Support more scalar transforms in V2 filter
pushdown (#9905)
new 4151992545 [python] Resolve value stats columns using file schema
(#9906)
new d6644bbc97 [python] Make BLOB I/O merge parameters configurable (#9890)
new f951059590 [format] Support file.block-size for Avro (#9901)
new 394cbaaa11 Revert "[format] Support file.block-size for Avro (#9901)"
new 2e8803c498 [python] Honor snapshot.ignore-empty-commit for empty
appends (#9878)
new 1fc0f17ad2 [python] Extend ContiguousWindowDataset for frame-level
training (#9875)
The 20 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/ci-python.yml | 1 +
docs/docs/concepts/spec/manifest.md | 247 +++++
docs/docs/pypaimon/multimodal-reading.md | 119 ++-
docs/docs/pypaimon/pytorch.md | 55 +-
docs/generated/catalog_configuration.html | 6 +
docs/generated/core_configuration.html | 6 +
.../main/java/org/apache/paimon/CoreOptions.java | 11 +
.../org/apache/paimon/options/CatalogOptions.java | 10 +
.../benchmark/ManifestFileSorterBenchmark.java | 4 +-
.../apache/paimon/fileindex/FileIndexReader.java | 20 +
.../paimon/globalindex/GlobalIndexReader.java | 24 +
...FieldTransform.java => BitLengthTransform.java} | 57 +-
.../java/org/apache/paimon/predicate/Contains.java | 2 +-
.../{FieldTransform.java => DateAddTransform.java} | 58 +-
...{FieldTransform.java => DateDiffTransform.java} | 58 +-
.../paimon/predicate/DateExtractTransform.java | 147 +++
.../paimon/predicate/DateTruncTransform.java | 135 +++
...oncatTransform.java => DayOfWeekTransform.java} | 32 +-
...oncatTransform.java => DayOfYearTransform.java} | 32 +-
.../{ConcatTransform.java => DayTransform.java} | 31 +-
.../java/org/apache/paimon/predicate/EndsWith.java | 2 +-
.../apache/paimon/predicate/FunctionVisitor.java | 16 +
.../{ConcatTransform.java => HourTransform.java} | 31 +-
...atTransform.java => IsoDayOfWeekTransform.java} | 32 +-
.../org/apache/paimon/predicate/LeafFunction.java | 4 +
.../apache/paimon/predicate/LengthTransform.java | 129 +++
.../java/org/apache/paimon/predicate/Like.java | 2 +-
.../{ConcatTransform.java => MinuteTransform.java} | 31 +-
.../{ConcatTransform.java => MonthTransform.java} | 31 +-
.../predicate/{Contains.java => NotContains.java} | 20 +-
.../predicate/{Contains.java => NotEndsWith.java} | 20 +-
.../predicate/{LessThan.java => NotLike.java} | 22 +-
.../{Contains.java => NotStartsWith.java} | 20 +-
.../predicate/OnlyPartitionKeyEqualVisitor.java | 20 +
.../apache/paimon/predicate/OverlayTransform.java | 124 +++
.../org/apache/paimon/predicate/PadTransform.java | 145 +++
.../apache/paimon/predicate/PredicateBuilder.java | 8 +
.../apache/paimon/predicate/PredicateRemapper.java | 87 ++
...{ConcatTransform.java => QuarterTransform.java} | 31 +-
.../{ConcatTransform.java => SecondTransform.java} | 31 +-
.../org/apache/paimon/predicate/StartsWith.java | 2 +-
.../org/apache/paimon/predicate/Transform.java | 21 +
.../paimon/predicate/TransformInputUtils.java | 77 ++
.../paimon/predicate/TranslateTransform.java | 95 ++
.../{ConcatTransform.java => WeekTransform.java} | 32 +-
...{ConcatTransform.java => WeekdayTransform.java} | 31 +-
...ncatTransform.java => YearOfWeekTransform.java} | 33 +-
.../{ConcatTransform.java => YearTransform.java} | 31 +-
.../org/apache/paimon/utils/DeltaVarintCodec.java | 126 +++
.../java/org/apache/paimon/utils/TypeUtils.java | 19 +
.../org/apache/paimon/utils/VarLengthIntUtils.java | 29 +
.../paimon/predicate/DateExtractTransformTest.java | 150 +++
.../paimon/predicate/LengthTransformTest.java | 82 ++
.../paimon/predicate/PredicateJsonSerdeTest.java | 31 +-
.../paimon/predicate/PredicateRemapperTest.java | 144 +++
.../org/apache/paimon/predicate/PredicateTest.java | 60 ++
.../paimon/predicate/ScalarTransformTest.java | 171 +++
.../paimon/predicate/TransformJsonSerdeTest.java | 118 +-
.../apache/paimon/utils/DeltaVarintCodecTest.java | 225 ++++
.../apache/paimon/utils/VarLengthIntUtilsTest.java | 101 ++
.../java/org/apache/paimon/AbstractFileStore.java | 10 +-
.../src/main/java/org/apache/paimon/FileStore.java | 2 +
.../org/apache/paimon/catalog/CachingCatalog.java | 21 +
.../paimon/catalog/TableQueryAuthResult.java | 133 +--
.../org/apache/paimon/manifest/BucketFilter.java | 16 +
.../apache/paimon/manifest/ManifestAvroWriter.java | 52 +-
.../org/apache/paimon/manifest/ManifestFile.java | 113 +-
.../apache/paimon/manifest/ManifestSidecar.java | 942 ++++++++++++++++
.../paimon/operation/AbstractFileStoreScan.java | 17 +-
.../apache/paimon/operation/ChangelogDeletion.java | 13 +-
.../operation/DataEvolutionFileStoreScan.java | 17 +-
.../apache/paimon/operation/FileDeletionBase.java | 20 +-
.../paimon/operation/ManifestFileMerger.java | 2 +-
.../paimon/operation/commit/CommitCleaner.java | 6 +-
.../paimon/table/AbstractFileStoreTable.java | 16 +
.../paimon/table/DelegatedFileStoreTable.java | 11 +
.../paimon/table/FallbackReadFileStoreTable.java | 6 +
.../org/apache/paimon/table/FileStoreTable.java | 5 +
.../paimon/table/format/FormatReadBuilder.java | 18 +-
.../paimon/table/format/FormatTableRead.java | 40 +-
.../paimon/table/source/AbstractDataTableRead.java | 199 +---
.../paimon/table/source/AbstractDataTableScan.java | 56 +-
.../apache/paimon/table/source/ReadTransform.java | 178 ++++
.../org/apache/paimon/table/source/TableRead.java | 12 +
.../java/org/apache/paimon/utils/ObjectsCache.java | 6 +
.../java/org/apache/paimon/CoreOptionsTest.java | 18 +
.../test/java/org/apache/paimon/JavaPyE2ETest.java | 61 ++
.../apache/paimon/catalog/CachingCatalogTest.java | 142 +++
.../paimon/manifest/ManifestBlockIndexTest.java | 891 ++++++++++++++++
.../manifest/ManifestFileMetaSerializerTest.java | 3 +-
.../paimon/manifest/ManifestFileMetaTest.java | 8 +-
.../paimon/manifest/ManifestFileMetaTestBase.java | 4 +-
.../apache/paimon/manifest/ManifestFileTest.java | 688 +++++++++++-
.../paimon/manifest/ManifestIndexTestUtils.java | 100 ++
.../paimon/manifest/ManifestSidecarTest.java | 1123 ++++++++++++++++++++
.../paimon/manifest/ManifestSidecarWriteTest.java | 348 ++++++
.../paimon/operation/ExpireSnapshotsTest.java | 72 ++
.../operation/LocalOrphanFilesCleanTest.java | 35 +
.../operation/ManifestRewriteCleanupTest.java | 4 +-
.../operation/ManifestSidecarLifecycleTest.java | 106 ++
.../org/apache/paimon/rest/RESTCatalogTest.java | 87 ++
.../paimon/table/AppendOnlySimpleTableTest.java | 10 +-
.../paimon/table/DataEvolutionFileIndexTest.java | 44 +-
.../paimon/table/PrimaryKeySimpleTableTest.java | 26 +
.../paimon/table/format/FormatTableReadTest.java | 109 ++
.../table/source/AbstractDataTableReadTest.java | 369 ++++++-
.../resources/compatibility/manifest-sidecar-v1 | Bin 0 -> 2107 bytes
.../orc/filter/OrcPredicateFunctionVisitor.java | 22 +
.../format/orc/filter/OrcFilterConverterTest.java | 15 +
.../paimon/format/parquet/ParquetFiltersTest.java | 15 +
paimon-python/README.md | 128 ++-
paimon-python/dev/requirements-dev.txt | 1 +
paimon-python/dev/run_mixed_tests.sh | 15 +
paimon-python/pypaimon/benchmark/act/paimon.py | 11 +-
.../pypaimon/catalog/rest/rest_token_file_io.py | 47 +-
paimon-python/pypaimon/common/file_io.py | 30 +-
paimon-python/pypaimon/common/json_util.py | 2 +
paimon-python/pypaimon/common/options/config.py | 32 +
.../pypaimon/common/options/core_options.py | 57 +
.../pypaimon/data/map_shared_shredding.py | 51 +-
.../apply_deletion_vector_reader.py | 13 +-
paimon-python/pypaimon/filesystem/oss_file_io.py | 157 +++
.../pypaimon/filesystem/resolving_file_io.py | 3 +
.../pypaimon/manifest/manifest_file_manager.py | 3 +-
.../pypaimon/multimodal/lerobot/dataset.py | 144 ++-
paimon-python/pypaimon/multimodal/query.py | 51 +-
.../pypaimon/multimodal/window_dataset.py | 292 +++--
.../pypaimon/multimodal/window_transforms.py | 88 ++
paimon-python/pypaimon/read/native_plan.py | 84 +-
.../pypaimon/read/reader/format_pyarrow_reader.py | 19 +-
.../read/scanner/chunk_shuffle_split_generator.py | 13 +-
paimon-python/pypaimon/read/split_read.py | 18 +-
paimon-python/pypaimon/read/table_read.py | 6 +
paimon-python/pypaimon/read/table_scan.py | 150 ++-
.../rest_catalog_blob_as_descriptor_sample.py | 23 +-
paimon-python/pypaimon/table/file_store_table.py | 5 +-
paimon-python/pypaimon/tests/act_runner_test.py | 20 +-
paimon-python/pypaimon/tests/blob_test.py | 132 ++-
.../tests/contiguous_window_dataset_test.py | 236 ++++
.../pypaimon/tests/e2e/java_py_read_write_test.py | 46 +
paimon-python/pypaimon/tests/file_io_test.py | 7 +-
.../tests/format_pyarrow_variant_row_group_test.py | 32 +-
paimon-python/pypaimon/tests/lance_utils_test.py | 6 +-
.../tests/map_shared_shredding_write_test.py | 429 ++++++++
.../pypaimon/tests/multimodal_lerobot_test.py | 203 ++++
.../tests/native_plan_capabilities_test.py | 36 +
.../tests/native_plan_chunk_shuffle_test.py | 172 +++
.../tests/native_plan_dynamic_bucket_test.py | 33 +
.../pypaimon/tests/native_plan_integration_test.py | 13 +-
.../tests/native_plan_materialized_pk_test.py | 186 ++++
.../tests/native_plan_resolved_schema_test.py | 184 ++++
.../pypaimon/tests/native_plan_rest_test.py | 151 +++
paimon-python/pypaimon/tests/native_plan_test.py | 57 +-
.../pypaimon/tests/oss_atomic_write_test.py | 308 ++++++
paimon-python/pypaimon/tests/oss_file_io_test.py | 12 +-
.../pypaimon/tests/oss_legacy_mode_test.py | 19 +-
.../pypaimon/tests/py36/ao_simple_test.py | 8 +-
paimon-python/pypaimon/tests/reader_base_test.py | 23 +
.../pypaimon/tests/reader_predicate_test.py | 78 ++
.../pypaimon/tests/resolving_file_io_test.py | 21 +
.../pypaimon/tests/rest/rest_token_file_io_test.py | 3 +
.../pypaimon/tests/schema_evolution_read_test.py | 53 +-
.../pypaimon/tests/snapshot_manager_test.py | 24 +
paimon-python/pypaimon/tests/table_commit_test.py | 47 +
.../tests/table_update_by_row_id_chunked_test.py | 112 +-
.../pypaimon/tests/table_upsert_by_key_test.py | 250 +++++
.../pypaimon/tests/window_transforms_test.py | 111 ++
paimon-python/pypaimon/write/file_store_commit.py | 16 +-
.../pypaimon/write/map_shared_shredding_writer.py | 573 ++++++++++
paimon-python/pypaimon/write/table_commit.py | 3 +-
paimon-python/pypaimon/write/table_update.py | 1 +
.../pypaimon/write/table_update_by_row_id.py | 227 +++-
.../pypaimon/write/writer/data_vector_writer.py | 8 +-
paimon-python/pypaimon/write/writer/data_writer.py | 75 +-
.../write/writer/dedicated_format_writer.py | 8 +-
.../pypaimon/write/writer/single_file_writer.py | 106 ++
paimon-python/setup.py | 4 +
.../paimon/spark/SparkV2FilterConverter.scala | 9 +
.../spark/util/SparkExpressionConverter.scala | 121 ++-
.../paimon/spark/SparkFilterConverterTest.java | 17 +-
.../spark/procedure/PermissionProcedureTest.scala | 4 +-
.../spark/sql/SparkV2FilterConverterTestBase.scala | 284 ++++-
182 files changed, 14369 insertions(+), 1192 deletions(-)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{FieldTransform.java =>
BitLengthTransform.java} (55%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{FieldTransform.java =>
DateAddTransform.java} (53%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{FieldTransform.java =>
DateDiffTransform.java} (53%)
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/DateExtractTransform.java
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/DateTruncTransform.java
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> DayOfWeekTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> DayOfYearTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> DayTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> HourTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> IsoDayOfWeekTransform.java} (61%)
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/LengthTransform.java
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> MinuteTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> MonthTransform.java} (61%)
copy paimon-common/src/main/java/org/apache/paimon/predicate/{Contains.java =>
NotContains.java} (75%)
copy paimon-common/src/main/java/org/apache/paimon/predicate/{Contains.java =>
NotEndsWith.java} (75%)
copy paimon-common/src/main/java/org/apache/paimon/predicate/{LessThan.java =>
NotLike.java} (70%)
copy paimon-common/src/main/java/org/apache/paimon/predicate/{Contains.java =>
NotStartsWith.java} (74%)
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/OverlayTransform.java
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/PadTransform.java
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/PredicateRemapper.java
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> QuarterTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> SecondTransform.java} (61%)
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/TransformInputUtils.java
create mode 100644
paimon-common/src/main/java/org/apache/paimon/predicate/TranslateTransform.java
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> WeekTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> WeekdayTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> YearOfWeekTransform.java} (61%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{ConcatTransform.java
=> YearTransform.java} (61%)
create mode 100644
paimon-common/src/main/java/org/apache/paimon/utils/DeltaVarintCodec.java
create mode 100644
paimon-common/src/test/java/org/apache/paimon/predicate/DateExtractTransformTest.java
create mode 100644
paimon-common/src/test/java/org/apache/paimon/predicate/LengthTransformTest.java
create mode 100644
paimon-common/src/test/java/org/apache/paimon/predicate/PredicateRemapperTest.java
create mode 100644
paimon-common/src/test/java/org/apache/paimon/predicate/ScalarTransformTest.java
create mode 100644
paimon-common/src/test/java/org/apache/paimon/utils/DeltaVarintCodecTest.java
create mode 100644
paimon-common/src/test/java/org/apache/paimon/utils/VarLengthIntUtilsTest.java
create mode 100644
paimon-core/src/main/java/org/apache/paimon/manifest/ManifestSidecar.java
create mode 100644
paimon-core/src/main/java/org/apache/paimon/table/source/ReadTransform.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/manifest/ManifestBlockIndexTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/manifest/ManifestIndexTestUtils.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/manifest/ManifestSidecarTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/manifest/ManifestSidecarWriteTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/operation/ManifestSidecarLifecycleTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/table/format/FormatTableReadTest.java
create mode 100644
paimon-core/src/test/resources/compatibility/manifest-sidecar-v1
create mode 100644 paimon-python/pypaimon/filesystem/oss_file_io.py
create mode 100644 paimon-python/pypaimon/multimodal/window_transforms.py
create mode 100644
paimon-python/pypaimon/tests/map_shared_shredding_write_test.py
create mode 100644
paimon-python/pypaimon/tests/native_plan_chunk_shuffle_test.py
create mode 100644
paimon-python/pypaimon/tests/native_plan_materialized_pk_test.py
create mode 100644
paimon-python/pypaimon/tests/native_plan_resolved_schema_test.py
create mode 100644 paimon-python/pypaimon/tests/native_plan_rest_test.py
create mode 100644 paimon-python/pypaimon/tests/oss_atomic_write_test.py
create mode 100644 paimon-python/pypaimon/tests/window_transforms_test.py
create mode 100644 paimon-python/pypaimon/write/map_shared_shredding_writer.py
create mode 100644 paimon-python/pypaimon/write/writer/single_file_writer.py