├── .clang-format ├── .editorconfig ├── .github ├── CODEOWNERS └── workflows │ └── build-n-test.yml ├── .gitignore ├── CMakeLists.txt ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── CPPLINT.cfg ├── LICENSE ├── README.md ├── gen ├── CMakeLists.txt ├── src │ ├── CMakeLists.txt │ ├── batch.h │ ├── compression.h │ ├── equality_delete.h │ ├── fields.h │ ├── generators.cpp │ ├── generators.h │ ├── list.h │ ├── log.h │ ├── positional_delete.h │ ├── processor.h │ ├── program.h │ ├── table.h │ └── writer.h └── tpch │ ├── CMakeLists.txt │ ├── dataset.cpp │ ├── dataset.h │ ├── generators.h │ ├── list.cpp │ ├── list.h │ ├── main.cpp │ ├── tables.cpp │ ├── tables.h │ ├── text.cpp │ └── text.h ├── iceberg ├── CMakeLists.txt ├── CPPLINT.cfg ├── catalog.h ├── common │ ├── CMakeLists.txt │ ├── batch.h │ ├── defer.h │ ├── fs │ │ ├── CMakeLists.txt │ │ ├── file_reader_provider.h │ │ ├── file_reader_provider_impl.h │ │ ├── filesystem_provider.h │ │ ├── filesystem_provider_impl.h │ │ ├── filesystem_wrapper.h │ │ ├── s3.cpp │ │ ├── s3.h │ │ ├── url.cpp │ │ ├── url.h │ │ └── ut │ │ │ └── url_test.cpp │ ├── logger.h │ ├── rg_metadata.cpp │ ├── rg_metadata.h │ └── selection_vector.h ├── deletion_vector.cpp ├── deletion_vector.h ├── equality_delete │ ├── CMakeLists.txt │ ├── common.cpp │ ├── common.h │ ├── delete.cpp │ ├── delete.h │ ├── generic_delete.cpp │ ├── generic_delete.h │ ├── handler.cpp │ ├── handler.h │ ├── specialized_multiple_column_delete.h │ ├── specialized_one_column_delete.h │ ├── stats.h │ ├── ut │ │ ├── allocator_test.cpp │ │ ├── equality_delete_test.cpp │ │ ├── generic_delete_test.cpp │ │ └── specialized_delete_test.cpp │ └── utils.h ├── experimental_representations.cpp ├── experimental_representations.h ├── filter │ ├── CMakeLists.txt │ ├── representation │ │ ├── CMakeLists.txt │ │ ├── column_extractor.h │ │ ├── function.h │ │ ├── node.h │ │ ├── serializer.cpp │ │ ├── serializer.h │ │ ├── tree_rewriter.cpp │ │ ├── tree_rewriter.h │ │ ├── ut │ │ │ ├── node_test.cpp │ │ │ ├── serializer_test.cpp │ │ │ ├── tree_rewriter_test.cpp │ │ │ └── visitor_test.cpp │ │ ├── value.cpp │ │ ├── value.h │ │ └── visitor.h │ └── stats_filter │ │ ├── CMakeLists.txt │ │ ├── registry.cpp │ │ ├── registry.h │ │ ├── stats.h │ │ ├── stats_filter.cpp │ │ ├── stats_filter.h │ │ └── ut │ │ └── stats_filter_test.cpp ├── generated │ ├── manifest_file.hh │ ├── manifest_file_schema.h │ └── manifest_file_schema.json ├── hash_utils.h ├── manifest_entry.cpp ├── manifest_entry.h ├── manifest_file.h ├── nested_field.h ├── parquet │ ├── io.cpp │ └── io.h ├── positional_delete │ ├── CMakeLists.txt │ ├── positional_delete.cpp │ ├── positional_delete.h │ ├── stats.h │ └── ut │ │ └── positional_delete_test.cpp ├── puffin.cpp ├── puffin.h ├── result.h ├── schema.cpp ├── schema.h ├── snapshot.h ├── sql_catalog.cpp ├── sql_catalog.h ├── streams │ ├── CMakeLists.txt │ ├── arrow │ │ ├── batch_with_row_number.h │ │ ├── error.h │ │ ├── file_reader.h │ │ ├── projection_stream.h │ │ ├── row_group_reader.h │ │ └── stream.h │ ├── iceberg │ │ ├── builder.h │ │ ├── data_entries_meta_stream.h │ │ ├── data_scan.h │ │ ├── equality_delete_applier.h │ │ ├── file_reader_builder.h │ │ ├── iceberg_batch.h │ │ ├── mapper.h │ │ ├── plan.h │ │ ├── positional_delete_applier.h │ │ ├── projection_stream.h │ │ └── row_group_filter.h │ ├── main.cpp │ └── ut │ │ ├── batch_maker.h │ │ ├── data_scan_test.cpp │ │ ├── equality_delete_applier_test.cpp │ │ ├── file_reader_builder_test.cpp │ │ ├── file_reader_test.cpp │ │ ├── local_file_reader_provider.h │ │ ├── mapper_test.cpp │ │ ├── mock_stream.h │ │ ├── positional_delete_applier_test.cpp │ │ ├── projection_stream_test.cpp │ │ └── row_group_reader_test.cpp ├── table.h ├── table_metadata.cpp ├── table_metadata.h ├── tea_column_stats.h ├── tea_hive_catalog.cpp ├── tea_hive_catalog.h ├── tea_manifest_metadata.cpp ├── tea_remote_catalog.cpp ├── tea_remote_catalog.h ├── tea_rest_catalog.cpp ├── tea_rest_catalog.h ├── tea_scan.cpp ├── tea_scan.h ├── tea_scan_hashers.cpp ├── tea_scan_hashers.h ├── test_utils │ ├── CMakeLists.txt │ ├── arrow_array.cpp │ ├── arrow_array.h │ ├── assertions.h │ ├── column.cpp │ ├── column.h │ ├── common.h │ ├── optional_vector.h │ ├── scoped_temp_dir.cpp │ ├── scoped_temp_dir.h │ ├── write.cpp │ └── write.h ├── transaction.cpp ├── transaction.h ├── transforms.cpp ├── transforms.h ├── type.cpp ├── type.h ├── ut │ └── puffin_test.cpp ├── uuid.cpp ├── uuid.h ├── write.cpp └── write.h ├── stats ├── CMakeLists.txt ├── analyzer.cpp ├── analyzer.h ├── data.h ├── datasketch │ ├── dictionary_serializer.h │ ├── distinct.h │ ├── distinct_hll.h │ ├── distinct_naive.h │ ├── distinct_theta.h │ ├── frequent_items.h │ ├── quantiles.h │ └── string_view_serializer.h ├── main.cpp ├── measure.h ├── parquet │ ├── sketch_updater.h │ └── values_provider.h ├── puffin.cpp ├── puffin.h ├── tests │ ├── prepare.sh │ └── run.sh ├── types.h └── ut │ ├── analyzer_test.cpp │ └── sketch_test.cpp ├── test-validator.sh ├── tests ├── CMakeLists.txt ├── compat │ ├── partitions_test.cpp │ └── transforms_test.cpp ├── data │ ├── 00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet │ └── 00000-7-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00002.parquet ├── deletion_vector_test.cpp ├── manifest_entry_test.cpp ├── manifest_metadata_test.cpp ├── meta_perf │ ├── CMakeLists.txt │ ├── README.md │ ├── docker-compose.yml │ ├── gen_manifest_files.cpp │ ├── gen_performance.sh │ ├── run_performance_tests.cpp │ ├── s3.env │ ├── scripts │ │ ├── manifest_entries.py │ │ ├── manifest_entries_wide.py │ │ ├── schemas.py │ │ └── snapshots.py │ └── warehouse │ │ └── performance │ │ ├── manifest_entries │ │ └── metadata │ │ │ ├── 00001-3e9c137d-3f3a-4d9f-ad3c-abd4911f4c9f.metadata.json │ │ │ ├── 850b6bca-3496-42ce-9ec0-753e8c496baf-m0.avro │ │ │ └── snap-2349672351566884055-1-850b6bca-3496-42ce-9ec0-753e8c496baf.avro │ │ ├── manifest_entries_wide │ │ └── metadata │ │ │ ├── 00000-007d73f8-2044-4e9d-92b8-a6146bbbd08c.metadata.json │ │ │ ├── 00001-95d2fd1a-501a-4db4-a6b2-49c2d1a87e71.metadata.json │ │ │ ├── 07ee5ccb-cf4a-4411-a8cc-bc8daeb96c55-m0.avro │ │ │ └── snap-6799354693338723293-1-07ee5ccb-cf4a-4411-a8cc-bc8daeb96c55.avro │ │ ├── manifest_files │ │ └── metadata │ │ │ ├── 00002-37c508a5-8a06-4823-845e-889dff066f72.metadata.json │ │ │ ├── 7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro │ │ │ └── snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro │ │ ├── schemas │ │ └── metadata │ │ │ ├── 00868-7a2e9a74-46be-4dd4-a81a-771445e15034.metadata.json │ │ │ ├── 53bc87de-6fcc-4115-baa5-74da0dfd9641-m0.avro │ │ │ └── snap-6742135830728029642-1-53bc87de-6fcc-4115-baa5-74da0dfd9641.avro │ │ └── snapshots │ │ └── metadata │ │ ├── 01999-084000f2-7dd9-4e7c-adfd-24ec13d717c0.metadata.json │ │ ├── 1eb8deb9-1ab5-4d56-8d1e-727779d4f1f0-m0.avro │ │ ├── 334252e9-a797-4fab-ba7e-23f319398888-m0.avro │ │ ├── 48a01163-355f-490b-96a9-0d851f5ef11d-m0.avro │ │ ├── 4dd7c847-2504-41a9-abfb-d181836d6686-m0.avro │ │ ├── 569d979d-9a8f-4142-8f14-3aa744d371f8-m1.avro │ │ ├── 5db8f3d2-9617-476a-8970-60c73823afc5-m0.avro │ │ ├── 662fc099-55bd-4cb0-9749-0658b9535624-m0.avro │ │ ├── a868eb67-3850-4aea-834e-7ed3b2b04df1-m0.avro │ │ ├── b112172a-2ee1-499e-bcf4-01cae6f78b78-m0.avro │ │ ├── b648f4bc-c4d1-42fc-8e39-9fb0951fd690-m0.avro │ │ └── snap-7784024162103807679-1-5db8f3d2-9617-476a-8970-60c73823afc5.avro ├── metadata │ ├── 00000-800cc6aa-5051-47d5-9579-46aafcba1de6.metadata.json │ ├── 00001-6d216ef0-8d58-4f27-a1d9-1cb22c1f3415.metadata.json │ ├── 00002-37c508a5-8a06-4823-845e-889dff066f72.metadata.json │ ├── 00003-ca406d8e-6c7b-4672-87ff-bfd76f84f949.metadata.json │ ├── 00004-f28a5f22-3e23-4bab-b753-6c96553ea45d.metadata.json │ ├── 00005-176a8e24-c5e2-48a8-884b-b0186a1c86fe.metadata.json │ ├── 00006-8caf3988-3dcc-4ca2-a472-0d96a273eaeb.metadata.json │ ├── 00007-2ed28880-9928-4670-934a-bda11c8130c9.metadata.json │ ├── 02ce7cec-31fd-4de7-8811-02ce7cec44a9-m0.avro │ ├── 3ccdc97b-a744-4930-98c7-4abc66c26625-m0.avro │ ├── 41f34bc8-eedf-4573-96b0-10c04e7c84c4-m0.avro │ ├── 66ee5e5e-f6c6-47a5-a609-1a439232d1ea-m0.avro │ ├── 7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro │ ├── broken1.avro │ ├── broken1.metadata.json │ ├── broken2.avro │ ├── broken2.metadata.json │ ├── empty.avro │ ├── empty.metadata.json │ ├── snap-154324552338474173-1-66ee5e5e-f6c6-47a5-a609-1a439232d1ea.avro │ ├── snap-1638951453256129678-1-eea762e4-1b7a-4717-b361-eae34da54fd4.avro │ ├── snap-293191470325800019-1-3ccdc97b-a744-4930-98c7-4abc66c26625.avro │ ├── snap-2dfe8bdb-200b-1006-9bb5-0242ac110002.avro │ ├── snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro │ └── snap-7558608030923099867-1-41f34bc8-eedf-4573-96b0-10c04e7c84c4.avro ├── referenced_data_file_test.cpp ├── rest │ ├── setup │ │ ├── init_nessie.sh │ │ └── upload_table.py │ └── test_rest_catalog.cpp ├── run_tests.cpp ├── schema_validation_test.cpp ├── snapshot_test.cpp ├── snapshots │ └── data │ │ └── 00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet ├── table_metadata_test.cpp ├── tables │ ├── bucket_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ └── col_int_bucket=0 │ │ │ │ └── col_long_bucket=0 │ │ │ │ └── col_decimal_bucket=3 │ │ │ │ └── col_date_bucket=2 │ │ │ │ └── col_time_bucket=2 │ │ │ │ └── col_timestamp_bucket=99 │ │ │ │ └── col_timestamptz_bucket=75 │ │ │ │ └── col_string_bucket=13 │ │ │ │ └── col_uuid_bucket=5 │ │ │ │ └── col_varbinary_bucket=724 │ │ │ │ └── 20250307_163052_00008_sdejt-d3a59669-ce58-4006-b445-2f83ff3e0398.parquet │ │ └── metadata │ │ │ ├── 00000-41778adf-517f-4c23-92a2-b9e347eba1a0.metadata.json │ │ │ ├── 00001-ad5f73df-4561-499b-b8c4-261ad5f40a4f.metadata.json │ │ │ ├── 00002-53948f10-cced-409f-8dd9-6dea096895e8.metadata.json │ │ │ ├── 0ffce867-cc54-49f8-ac74-c89fc147015d-m0.avro │ │ │ ├── 20250307_163052_00008_sdejt-7eed864b-4a77-4ab0-b8a5-712146bcd8ac.stats │ │ │ ├── snap-8499397478161915471-1-0ffce867-cc54-49f8-ac74-c89fc147015d.avro │ │ │ └── snap-8928121299234260333-1-c5e0a865-4a76-41b8-a80c-ba21dbea7714.avro │ ├── day_timestamptz_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ ├── c2_day=2024-03-03 │ │ │ │ └── 20250313_203214_00002_z8hj2-4bfdd683-3541-4dfe-a172-0cbfcd4ca917.parquet │ │ │ ├── c2_day=2025-03-03 │ │ │ │ └── 20250313_203214_00002_z8hj2-7c70e9f3-28ad-48b4-9c6a-199c07392c87.parquet │ │ │ └── c2_day=null │ │ │ │ └── 20250313_203214_00002_z8hj2-d9b28a80-295f-4f3b-b609-3a509dc2bc88.parquet │ │ └── metadata │ │ │ ├── 00000-eac0424d-aa3b-41fb-ba89-91e2a9c8fc90.metadata.json │ │ │ ├── 00001-8fe610e1-fc28-41b9-a671-1cd37f8147ed.metadata.json │ │ │ ├── 00002-bf5ed300-c344-41fe-87ad-0d1190705bf9.metadata.json │ │ │ ├── 20250313_203214_00002_z8hj2-a974b6cb-63a2-4082-941e-8e3590c5f3aa.stats │ │ │ ├── 50c451b7-68a3-45d5-924a-8d655175c051-m0.avro │ │ │ ├── snap-1944506328799061399-1-1ee79e78-b927-4b2c-9a07-8f8dc0c8d691.avro │ │ │ └── snap-8652648222487599862-1-50c451b7-68a3-45d5-924a-8d655175c051.avro │ ├── decimal_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ └── col_decimal_9_2=3.00 │ │ │ │ └── col_decimal_18_2=-5.00 │ │ │ │ └── col_decimal_19_2=0.00 │ │ │ │ └── col_decimal_38_2=0.00 │ │ │ │ └── 20250308_001617_00002_sdejt-955cdfa3-7763-48fc-87a2-ce832628f641.parquet │ │ └── metadata │ │ │ ├── 00000-2b8b8c2d-f5ae-4282-873c-55b10e6fa520.metadata.json │ │ │ ├── 00001-92d326f4-dda9-44fe-99b5-2bfe301b892a.metadata.json │ │ │ ├── 00002-1f7414b4-70da-433f-8a71-40192d2942fc.metadata.json │ │ │ ├── 20250308_001617_00002_sdejt-806e1097-34de-4022-b75d-08ce69cb34c6.stats │ │ │ ├── 20d87eae-b5a0-4f44-b543-9abfbd448b70-m0.avro │ │ │ ├── snap-1870322215060526703-1-20d87eae-b5a0-4f44-b543-9abfbd448b70.avro │ │ │ └── snap-7513916147151367933-1-c00344c3-11f1-4a5b-aa43-f84d53b48b8f.avro │ ├── deletion_vector │ │ └── deletion_vector_sample │ │ │ ├── create.sql │ │ │ ├── data │ │ │ ├── 00000-0-93fc73ad-0331-4e55-bf0b-dfb27906f0bd-0-00001.parquet │ │ │ └── 00000-2-766d0c1d-4652-4a59-9721-58fb02898559-00001-deletes.puffin │ │ │ └── metadata │ │ │ ├── 8dd06abb-849d-4422-9515-8e68f1bafea1-m0.avro │ │ │ ├── a2b5890a-4c9d-427f-9434-b7100abddc2f-m0.avro │ │ │ ├── snap-4657151992128388721-1-8dd06abb-849d-4422-9515-8e68f1bafea1.avro │ │ │ ├── snap-8122216072706851001-1-a2b5890a-4c9d-427f-9434-b7100abddc2f.avro │ │ │ ├── v1.metadata.json │ │ │ ├── v2.metadata.json │ │ │ ├── v3.metadata.json │ │ │ └── version-hint.text │ ├── hour_timestamptz_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ ├── c2_hour=2024-03-03-23 │ │ │ │ └── 20250313_204716_00010_z8hj2-390c9791-2ac1-4f16-80fd-ff7e4c7ef3ec.parquet │ │ │ ├── c2_hour=2025-03-03-23 │ │ │ │ └── 20250313_204716_00010_z8hj2-8f33ea30-2e2f-4bf0-9d18-293f3c162123.parquet │ │ │ └── c2_hour=null │ │ │ │ └── 20250313_204716_00010_z8hj2-a609ed24-aae4-4954-8587-b2ef0c09c60c.parquet │ │ └── metadata │ │ │ ├── 00000-d1e6abc2-90b1-4849-b3ce-cafe187b670e.metadata.json │ │ │ ├── 00001-7fb1d4ce-da4a-46f5-b2e1-dc39db73e235.metadata.json │ │ │ ├── 00002-aa3a65d9-0e43-452c-a96f-2ec0194f0104.metadata.json │ │ │ ├── 20250313_204716_00010_z8hj2-1d4d4968-a121-4f78-8a72-ca3efd6b1541.stats │ │ │ ├── dd2a408a-3d27-4ab0-b560-839ff3265ac8-m0.avro │ │ │ ├── snap-2609880227259799936-1-dd2a408a-3d27-4ab0-b560-839ff3265ac8.avro │ │ │ └── snap-4359693665907534249-1-cd736996-684a-42d8-8052-edf22a4315ba.avro │ ├── identity_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ └── col_bool=false │ │ │ │ └── col_int=1 │ │ │ │ └── col_long=2 │ │ │ │ └── col_float=2.25 │ │ │ │ └── col_double=2.375 │ │ │ │ └── col_decimal=3.00 │ │ │ │ └── col_date=2025-03-03 │ │ │ │ └── col_time=17%3A00 │ │ │ │ └── col_timestamp=2025-03-03T00%3A00%3A00 │ │ │ │ └── col_timestamptz=2025-03-03T00%3A00%3A00%2B00%3A00 │ │ │ │ └── col_string=some-string │ │ │ │ └── col_uuid=12151fd2-7586-11e9-8f9e-2a86e4085a59 │ │ │ │ └── col_varbinary=c29tZS12YXJiaW5hcnk%3D │ │ │ │ └── 20250307_151431_00004_sdejt-0508d88f-3117-466e-b115-7a9ebc4313b9.parquet │ │ └── metadata │ │ │ ├── 00000-26043d34-b24c-4441-84dd-22ef817b8e18.metadata.json │ │ │ ├── 00001-4cae65b1-50a8-4b9a-a79c-4eeb9f73d9f6.metadata.json │ │ │ ├── 00002-30bff4d8-0c4f-46a9-8e7a-ebea458dbb1d.metadata.json │ │ │ ├── 20250307_151431_00004_sdejt-6b8b03ca-5975-4f1c-a74d-374d52fe4aac.stats │ │ │ ├── bfd02a62-ed9d-4ab0-83a0-992b76310fe4-m0.avro │ │ │ ├── snap-1348041121627674336-1-bfd02a62-ed9d-4ab0-83a0-992b76310fe4.avro │ │ │ └── snap-2926447781240171674-1-f2c698f3-c7ae-4819-8e4e-ab332b315de1.avro │ ├── month_timestamptz_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ ├── c2_month=2024-03 │ │ │ │ └── 20250313_211747_00013_z8hj2-d767dfcd-16a7-45d1-ab2c-2d89c4497e2b.parquet │ │ │ ├── c2_month=2025-03 │ │ │ │ └── 20250313_211747_00013_z8hj2-4067e971-5448-4141-ab05-6b1c69837da3.parquet │ │ │ └── c2_month=null │ │ │ │ └── 20250313_211747_00013_z8hj2-d36eef20-67f4-4cab-af25-3f0c924e2d25.parquet │ │ └── metadata │ │ │ ├── 00000-460db0e6-3f78-456e-a417-6582017304af.metadata.json │ │ │ ├── 00001-858965b3-97b4-4cb5-930e-aee298a0ca15.metadata.json │ │ │ ├── 00002-f44ed222-470e-4e33-b813-6646d434b185.metadata.json │ │ │ ├── 1fcf77ef-6cf3-4bdb-94a7-e06502b15dc0-m0.avro │ │ │ ├── 20250313_211747_00013_z8hj2-9e461345-a57f-4f81-a642-8bdac8855323.stats │ │ │ ├── snap-2311346262833015500-1-889b631f-d6ef-4c9b-9f44-4119d724cf02.avro │ │ │ └── snap-7681461458663170398-1-1fcf77ef-6cf3-4bdb-94a7-e06502b15dc0.avro │ ├── no_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ └── 20250310_161728_00004_i9wr4-40df733f-a909-4d83-8516-ac48ad8965c0.parquet │ │ └── metadata │ │ │ ├── 00000-4d9e1bd1-e2bf-4f26-8f9b-b8771a05a3e1.metadata.json │ │ │ ├── 00001-cb947880-9746-4628-844e-e2e7d6f9a326.metadata.json │ │ │ ├── 00002-f7dd062a-ad44-4948-ba0c-4cd9f585ba04.metadata.json │ │ │ ├── 20250310_161728_00004_i9wr4-b7251c28-d52e-4826-8ca6-7dead651c5a1.stats │ │ │ ├── bb0c25c8-adcf-4b05-8d6d-142300e83cc8-m0.avro │ │ │ ├── snap-4752200045239310452-1-115f159d-0e8c-4af2-8d7e-9fd6540236e5.avro │ │ │ └── snap-6247215453669530946-1-bb0c25c8-adcf-4b05-8d6d-142300e83cc8.avro │ ├── partition_evolution │ │ ├── create.sql │ │ ├── data │ │ │ ├── c1=1 │ │ │ │ ├── c2=2025-03-02 │ │ │ │ │ └── 20250311_095424_00001_jx9gc-5ee68e7a-8194-4bed-ab99-76751223b13d.parquet │ │ │ │ ├── c2=2025-03-03 │ │ │ │ │ └── 20250311_095424_00001_jx9gc-96ef0a9a-8769-4932-b6dd-4d4f287b887d.parquet │ │ │ │ ├── c2=2025-03-04 │ │ │ │ │ └── 20250311_095424_00001_jx9gc-bd980f5f-8829-4479-9ffb-6e932e8bd749.parquet │ │ │ │ └── c2=2025-03-05 │ │ │ │ │ └── 20250311_095424_00001_jx9gc-b69d185a-acfb-47ca-af4c-326129ce9c4a.parquet │ │ │ ├── c1=2 │ │ │ │ ├── c2=2025-03-03 │ │ │ │ │ └── 20250311_095424_00001_jx9gc-779adb6b-fa28-4505-ac6e-5b1e4ba6372d.parquet │ │ │ │ └── c2=2025-03-04 │ │ │ │ │ └── 20250311_095424_00001_jx9gc-0028c817-71c7-441e-94ce-388913690ea1.parquet │ │ │ └── c3=2.0 │ │ │ │ └── 20250311_095902_00004_jx9gc-8917792a-57e7-46eb-9a6a-204323cc05f0.parquet │ │ └── metadata │ │ │ ├── 00000-ade8bef8-1822-43ee-b47e-e05dbf949003.metadata.json │ │ │ ├── 00001-4410355f-ede1-4692-8f36-929362a2aa4c.metadata.json │ │ │ ├── 00002-aa815be1-c0f2-4025-9d82-c68628826e6e.metadata.json │ │ │ ├── 00003-cbad3764-260e-48b4-80ab-10baa4ee7a26.metadata.json │ │ │ ├── 00004-501fedff-6ab5-4c8a-8027-31aef9bb6d40.metadata.json │ │ │ ├── 00005-218c3743-5886-48b9-88d6-86c202862e0f.metadata.json │ │ │ ├── 20250311_095424_00001_jx9gc-fc9df7eb-f780-48ba-93ec-c32bdcc1b2fa.stats │ │ │ ├── 20250311_095902_00004_jx9gc-ba26b6f6-7cb7-4cbd-b4f9-7f0acde121f6.stats │ │ │ ├── 4d7915f9-6916-46a6-8d60-15f71252c17e-m0.avro │ │ │ ├── 8a56b416-7620-4255-938a-a003682bc394-m0.avro │ │ │ ├── snap-240252726469419150-1-8a56b416-7620-4255-938a-a003682bc394.avro │ │ │ ├── snap-5032402648663831776-1-c9f2cb47-0a40-4a82-8e40-4a7432dceaf0.avro │ │ │ └── snap-6593870062034330780-1-4d7915f9-6916-46a6-8d60-15f71252c17e.avro │ ├── partitioned_table │ │ ├── create.sql │ │ ├── data │ │ │ ├── c1=1 │ │ │ │ ├── c2=2025-03-02 │ │ │ │ │ └── 20250303_133349_00017_es78y-f3faefe9-3633-4957-b4b0-de27ebaba18f.parquet │ │ │ │ ├── c2=2025-03-03 │ │ │ │ │ └── 20250303_133349_00017_es78y-6dbfa92b-ac02-436c-9931-ed6ac0b42834.parquet │ │ │ │ ├── c2=2025-03-04 │ │ │ │ │ └── 20250303_133349_00017_es78y-1c514831-ecee-48f8-9c10-a525bb28dcd9.parquet │ │ │ │ └── c2=2025-03-05 │ │ │ │ │ └── 20250303_133349_00017_es78y-6c0269c5-388d-42eb-a43b-c0deab035d2c.parquet │ │ │ └── c1=2 │ │ │ │ ├── c2=2025-03-03 │ │ │ │ └── 20250303_133349_00017_es78y-d11eae4b-7152-4f09-a044-0920a934ec62.parquet │ │ │ │ └── c2=2025-03-04 │ │ │ │ └── 20250303_133349_00017_es78y-ab06c0f6-2a0b-46c9-b42e-dd27880eb385.parquet │ │ └── metadata │ │ │ ├── 00000-62040f5c-7e95-4387-9205-7fce314f838b.metadata.json │ │ │ ├── 00001-3ac0dc8d-0a8e-44c2-b786-fff45a265023.metadata.json │ │ │ ├── 8968fbb0-57cf-40b0-a725-7d147f07b4b8-m0.avro │ │ │ ├── snap-3829439561253574382-1-8968fbb0-57cf-40b0-a725-7d147f07b4b8.avro │ │ │ └── snap-8956261480252155444-1-d60b441c-d72c-4c7b-9050-c0af13eb3e2f.avro │ ├── partitioned_table_with_missing_spec │ │ ├── create.md │ │ └── metadata │ │ │ └── 00001-3ac0dc8d-0a8e-44c2-b786-fff45a265023.metadata.json │ ├── partitioned_table_with_multiple_spec │ │ ├── create.md │ │ └── metadata │ │ │ └── 00001-3ac0dc8d-0a8e-44c2-b786-fff45a265023.metadata.json │ ├── partitioned_table_with_void_transform │ │ ├── create.md │ │ └── metadata │ │ │ └── 00001-3ac0dc8d-0a8e-44c2-b786-fff45a265023.metadata.json │ ├── partitioning_with_null_value │ │ ├── create.sql │ │ ├── data │ │ │ ├── c1=1 │ │ │ │ └── c2=null │ │ │ │ │ └── 20250307_214706_00010_sdejt-ef49cc20-5cc5-4dac-ab60-8e4ed22773f4.parquet │ │ │ ├── c1=2 │ │ │ │ └── c2=2025-03-03 │ │ │ │ │ └── 20250307_214706_00010_sdejt-61343ed1-8a19-4193-9ca5-2f0bee74ef33.parquet │ │ │ └── c1=null │ │ │ │ ├── c2=2025-03-03 │ │ │ │ └── 20250307_214706_00010_sdejt-01cc7c76-20aa-45fb-9ae4-e2354a02ec43.parquet │ │ │ │ └── c2=null │ │ │ │ └── 20250307_214706_00010_sdejt-1493f722-3cbd-4f10-b15f-a7a7ae35c60b.parquet │ │ └── metadata │ │ │ ├── 00000-c58a3e47-e275-41c4-acf5-1ff3cb819c0f.metadata.json │ │ │ ├── 00001-dc33f9ae-a7b9-4a09-9903-fbbfe0d0a11c.metadata.json │ │ │ ├── 00002-39819572-24a4-4c4f-bfe1-63693ece734f.metadata.json │ │ │ ├── 20250307_214706_00010_sdejt-4d3f4bbf-9710-4935-891a-95fad325f283.stats │ │ │ ├── 5fdf7a4a-b0c5-465e-84a3-bed9a79cca3b-m0.avro │ │ │ ├── snap-322244654253441419-1-5fdf7a4a-b0c5-465e-84a3-bed9a79cca3b.avro │ │ │ └── snap-90806248637524814-1-0515af81-651e-42e0-92f8-e8f55839a5ce.avro │ ├── prod │ │ └── db │ │ │ └── refdeletes3 │ │ │ ├── create.sql │ │ │ ├── data │ │ │ ├── 00000-18-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet │ │ │ ├── 00000-26-3221b69e-b966-4966-b438-81696899d868-00001-deletes.parquet │ │ │ ├── 00000-26-3221b69e-b966-4966-b438-81696899d868-00002-deletes.parquet │ │ │ ├── 00000-26-3221b69e-b966-4966-b438-81696899d868-00003-deletes.parquet │ │ │ ├── 00000-26-3221b69e-b966-4966-b438-81696899d868-00004-deletes.parquet │ │ │ ├── 00000-26-3221b69e-b966-4966-b438-81696899d868-00005-deletes.parquet │ │ │ ├── 00000-26-3221b69e-b966-4966-b438-81696899d868-00006-deletes.parquet │ │ │ ├── 00001-19-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet │ │ │ ├── 00002-20-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet │ │ │ ├── 00003-21-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet │ │ │ ├── 00004-22-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet │ │ │ └── 00005-23-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet │ │ │ └── metadata │ │ │ ├── 00000-010abc61-a2d0-4532-9550-98cbf2ba4a0c.metadata.json │ │ │ ├── 00001-e2cd836c-4513-4808-af44-c6423c631c0f.metadata.json │ │ │ ├── 00002-8dbf0bf0-882a-4822-ae9c-ec1c0f34ef6d.metadata.json │ │ │ ├── 06d9558e-cca7-431c-80b5-d0b72456a01b-m0.avro │ │ │ ├── 7aed75a9-17aa-45dd-a68a-89831549816e-m0.avro │ │ │ ├── snap-1699098461694364756-1-7aed75a9-17aa-45dd-a68a-89831549816e.avro │ │ │ └── snap-6838570461092714410-1-06d9558e-cca7-431c-80b5-d0b72456a01b.avro │ ├── types │ │ ├── all_spark_types │ │ │ ├── data │ │ │ │ └── 00007-7-08e6240e-b5f7-48ad-b7f0-039dc52bc563-0-00001.parquet │ │ │ └── metadata │ │ │ │ ├── 00000-4f9d7c78-62f9-48c6-b869-f25172b45b32.metadata.json │ │ │ │ ├── 8a27d569-2236-4eec-adbb-e4bf66ccba3c-m0.avro │ │ │ │ └── snap-2340548317493693275-1-8a27d569-2236-4eec-adbb-e4bf66ccba3c.avro │ │ ├── all_trino_types │ │ │ ├── create.sql │ │ │ ├── data │ │ │ │ └── 20250601_201751_00003_935ws-92e43a1f-75de-42b6-87bf-85642c280237.parquet │ │ │ └── metadata │ │ │ │ ├── 00000-71fc5b30-7d2a-4780-9de3-75eb58671eb3.metadata.json │ │ │ │ ├── 00001-d474be6e-df76-4775-a53f-c0711f676513.metadata.json │ │ │ │ ├── 00002-6105d5eb-ce39-470c-af78-50b744662ef2.metadata.json │ │ │ │ ├── 02c4d068-8896-4f9d-a2b6-7d74182b8a31-m0.avro │ │ │ │ ├── 20250601_201751_00003_935ws-c92f657f-1523-444c-b0ff-9813e5b23535.stats │ │ │ │ ├── snap-253637412106018159-1-7df818ce-0b9d-4fd2-b42d-ac6c2d1b28b5.avro │ │ │ │ └── snap-997544649215353036-1-02c4d068-8896-4f9d-a2b6-7d74182b8a31.avro │ │ ├── decimals │ │ │ ├── data │ │ │ │ └── 00007-7-7b64d752-fbdc-48ca-b1a2-b88f692557ff-0-00001.parquet │ │ │ └── metadata │ │ │ │ ├── 00000-93fb1a3e-cf50-4083-af65-68d07b84c5ad.metadata.json │ │ │ │ ├── 26d9b3c8-c8e7-4a35-ae5f-0bf7bec65734-m0.avro │ │ │ │ └── snap-7566918053174708835-1-26d9b3c8-c8e7-4a35-ae5f-0bf7bec65734.avro │ │ └── unsupported_types │ │ │ ├── data │ │ │ └── 00007-7-40e35baf-8f61-4545-972a-8ef5acb5bd9c-0-00001.parquet │ │ │ └── metadata │ │ │ ├── 00000-27b520d0-8020-43cb-b051-4eef7c1636af.metadata.json │ │ │ ├── 816676f1-56be-4ecd-9da8-f5ba250e6ad3-m0.avro │ │ │ └── snap-5887253152739225772-1-816676f1-56be-4ecd-9da8-f5ba250e6ad3.avro │ ├── v_20240913 │ │ ├── iceberg │ │ │ └── metadata │ │ │ │ ├── 00000-82ef308d-c11e-43bc-9e37-9827790db4cf.metadata.json │ │ │ │ ├── 00001-dcd3b13f-b249-4256-9156-0f653f7da773.metadata.json │ │ │ │ ├── b69dcb96-2926-47ff-95b0-14cb64f65c65-m0.avro │ │ │ │ └── snap-2144761731165004944-1-b69dcb96-2926-47ff-95b0-14cb64f65c65.avro │ │ ├── timestamptzcol_day=2024-09-13 │ │ │ └── out_sds-erebor01tdsdatalakehouse-testlocal9201_0.parquet │ │ └── timestamptzcol_day=null │ │ │ ├── out_sds-erebor01tdsdatalakehouse-testlocal9201_0.parquet │ │ │ └── out_sds-erebor01tdsdatalakehouse-testlocal9301_0.parquet │ ├── year_date_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ ├── c2_year=2024 │ │ │ │ └── 20250306_111518_00004_x2kme-db21dbbd-333a-4d38-af81-0feb3d4588e5.parquet │ │ │ └── c2_year=2025 │ │ │ │ └── 20250306_111518_00004_x2kme-bc6c0ad0-b670-4fb0-994b-2e3e3637a1a2.parquet │ │ └── metadata │ │ │ ├── 00000-6495a31d-92d0-49ff-add4-d8ebfd666d80.metadata.json │ │ │ ├── 00001-4469fb4c-b3ca-472a-9c03-556a53e89851.metadata.json │ │ │ ├── 00002-b30c996e-fb0e-4ebc-a987-3536ceb792ea.metadata.json │ │ │ ├── 20250306_111518_00004_x2kme-d61e59c4-6f13-4be8-8d3c-bd2fa0fc81fc.stats │ │ │ ├── 48510c7c-7855-4273-9170-5de3130502f6-m0.avro │ │ │ ├── snap-4795903818150143955-1-5f08f1b0-2333-494d-9cb0-280b76e6544c.avro │ │ │ └── snap-7253010310290501549-1-48510c7c-7855-4273-9170-5de3130502f6.avro │ ├── year_timestamp_partitioning │ │ ├── create.sql │ │ ├── data │ │ │ ├── c2_year=2024 │ │ │ │ └── 20250306_124856_00011_x2kme-1a4e36e5-45f1-423d-916d-8f0135d42f9f.parquet │ │ │ └── c2_year=2025 │ │ │ │ └── 20250306_124856_00011_x2kme-4fcd2542-d56b-48a3-a169-61ddd2144294.parquet │ │ └── metadata │ │ │ ├── 00000-a3a99b8f-2738-48d8-87ff-1fff800eb11e.metadata.json │ │ │ ├── 00001-20dac75c-38f3-4b55-ba8e-604cc76dbc50.metadata.json │ │ │ ├── 00002-ac56aa65-6214-44b3-bb0f-86728eb58d8b.metadata.json │ │ │ ├── 20250306_124856_00011_x2kme-dd7c2ed5-cba7-4825-9b27-f9757917a9b4.stats │ │ │ ├── f6bc700c-2909-411e-b32c-6c3c74a447ae-m0.avro │ │ │ ├── snap-52383582558834656-1-741fe349-b3c8-47ba-a874-2cd48b0b655a.avro │ │ │ └── snap-8204664518222632581-1-f6bc700c-2909-411e-b32c-6c3c74a447ae.avro │ └── year_timestamptz_partitioning │ │ ├── create.sql │ │ ├── data │ │ ├── c2_year=2024 │ │ │ └── 20250306_130057_00013_x2kme-f7a7dfc5-6cfd-4bb8-8b3d-9f1846a19f3e.parquet │ │ └── c2_year=2025 │ │ │ └── 20250306_130057_00013_x2kme-71e7f253-9d99-409f-a473-173c935bf6bc.parquet │ │ └── metadata │ │ ├── 00000-6bdcdd0d-45c3-482f-a35d-07adcd10c53c.metadata.json │ │ ├── 00001-eed361ac-4754-476d-b98a-dedd6ad81a4e.metadata.json │ │ ├── 00002-d52e2c04-065b-4d14-98bb-ec47abcd1597.metadata.json │ │ ├── 20250306_130057_00013_x2kme-cc7adc60-ff99-439e-b8cd-f4d16745d3cc.stats │ │ ├── 26969caf-f1a0-41ee-8ec9-8b442ed19ecc-m0.avro │ │ ├── snap-267584900874813174-1-862659b5-df97-4ee6-ba72-aa49ab61d161.avro │ │ └── snap-4099093144421395716-1-26969caf-f1a0-41ee-8ec9-8b442ed19ecc.avro ├── tea_scan_test.cpp ├── validation_test.cpp └── warehouse │ ├── empty │ └── empty │ │ └── metadata │ │ └── 00000-80089c7c-cfe3-4279-a864-ef65495ba43b.metadata.json │ ├── gperov │ └── test │ │ ├── data │ │ ├── 00000-13-85b2f39e-780b-4214-912b-df665f506333-00001-deletes.parquet │ │ ├── 00000-14-ca493fad-f1d8-4554-8c76-7ce3b52aa5ba-0-00001.parquet │ │ ├── 00000-15-70eba51c-bc41-42b7-881e-c68c0d86888c-0-00001.parquet │ │ ├── 00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet │ │ ├── 00001-7-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet │ │ ├── 00002-8-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet │ │ ├── 00003-9-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet │ │ ├── 00004-10-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet │ │ └── 00005-11-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet │ │ └── metadata │ │ ├── 00000-800cc6aa-5051-47d5-9579-46aafcba1de6.metadata.json │ │ ├── 00001-6d216ef0-8d58-4f27-a1d9-1cb22c1f3415.metadata.json │ │ ├── 00002-37c508a5-8a06-4823-845e-889dff066f72.metadata.json │ │ ├── 00003-ca406d8e-6c7b-4672-87ff-bfd76f84f949.metadata.json │ │ ├── 00004-f28a5f22-3e23-4bab-b753-6c96553ea45d.metadata.json │ │ ├── 00005-176a8e24-c5e2-48a8-884b-b0186a1c86fe.metadata.json │ │ ├── 00006-8caf3988-3dcc-4ca2-a472-0d96a273eaeb.metadata.json │ │ ├── 00007-2ed28880-9928-4670-934a-bda11c8130c9.metadata.json │ │ ├── 3ccdc97b-a744-4930-98c7-4abc66c26625-m0.avro │ │ ├── 41f34bc8-eedf-4573-96b0-10c04e7c84c4-m0.avro │ │ ├── 66ee5e5e-f6c6-47a5-a609-1a439232d1ea-m0.avro │ │ ├── 7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro │ │ ├── snap-154324552338474173-1-66ee5e5e-f6c6-47a5-a609-1a439232d1ea.avro │ │ ├── snap-1638951453256129678-1-eea762e4-1b7a-4717-b361-eae34da54fd4.avro │ │ ├── snap-293191470325800019-1-3ccdc97b-a744-4930-98c7-4abc66c26625.avro │ │ ├── snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro │ │ └── snap-7558608030923099867-1-41f34bc8-eedf-4573-96b0-10c04e7c84c4.avro │ ├── restrictions.json │ ├── restrictionsBad.json │ └── restrictionsNotFull.json ├── tools ├── CMakeLists.txt ├── common.cpp ├── common.h ├── explorer.cpp ├── fix_location.cpp ├── hive_metastore_client.cpp ├── hive_metastore_client.h ├── hive_metastore_server.cpp ├── hive_metastore_server.h ├── ls.cpp ├── make_metadata.cpp ├── metadata_tree.cpp ├── metadata_tree.h ├── metastore_client.h ├── s3client.h ├── validation.cpp ├── validation.h └── validator_tool.cpp └── vendor ├── CMakeLists.txt ├── abseil └── abseil-fix-build.patch ├── arrow ├── arrow-fix-snappy-empty-column.patch ├── arrow_ensure_xsimd.patch └── fix_c-ares_url.patch ├── avro ├── CMakeLists.txt ├── avro.patch └── avro_metadata.patch ├── boost ├── CMakeLists.txt └── boost │ ├── iostreams │ ├── categories.hpp │ ├── chain.hpp │ ├── char_traits.hpp │ ├── checked_operations.hpp │ ├── close.hpp │ ├── code_converter.hpp │ ├── combine.hpp │ ├── compose.hpp │ ├── concepts.hpp │ ├── constants.hpp │ ├── copy.hpp │ ├── detail │ │ ├── absolute_path.hpp │ │ ├── access_control.hpp │ │ ├── adapter │ │ │ ├── concept_adapter.hpp │ │ │ ├── device_adapter.hpp │ │ │ ├── direct_adapter.hpp │ │ │ ├── filter_adapter.hpp │ │ │ ├── mode_adapter.hpp │ │ │ ├── non_blocking_adapter.hpp │ │ │ ├── output_iterator_adapter.hpp │ │ │ └── range_adapter.hpp │ │ ├── add_facet.hpp │ │ ├── bool_trait_def.hpp │ │ ├── broken_overload_resolution │ │ │ ├── forward.hpp │ │ │ ├── stream.hpp │ │ │ └── stream_buffer.hpp │ │ ├── buffer.hpp │ │ ├── call_traits.hpp │ │ ├── char_traits.hpp │ │ ├── codecvt_helper.hpp │ │ ├── codecvt_holder.hpp │ │ ├── config │ │ │ ├── auto_link.hpp │ │ │ ├── bzip2.hpp │ │ │ ├── codecvt.hpp │ │ │ ├── disable_warnings.hpp │ │ │ ├── dyn_link.hpp │ │ │ ├── enable_warnings.hpp │ │ │ ├── fpos.hpp │ │ │ ├── gcc.hpp │ │ │ ├── limits.hpp │ │ │ ├── overload_resolution.hpp │ │ │ ├── rtl.hpp │ │ │ ├── unreachable_return.hpp │ │ │ ├── wide_streams.hpp │ │ │ ├── windows_posix.hpp │ │ │ └── zlib.hpp │ │ ├── counted_array.hpp │ │ ├── current_directory.hpp │ │ ├── default_arg.hpp │ │ ├── dispatch.hpp │ │ ├── double_object.hpp │ │ ├── enable_if_stream.hpp │ │ ├── error.hpp │ │ ├── execute.hpp │ │ ├── file_handle.hpp │ │ ├── forward.hpp │ │ ├── fstream.hpp │ │ ├── functional.hpp │ │ ├── ios.hpp │ │ ├── iostream.hpp │ │ ├── is_dereferenceable.hpp │ │ ├── is_iterator_range.hpp │ │ ├── newline.hpp │ │ ├── optional.hpp │ │ ├── param_type.hpp │ │ ├── path.hpp │ │ ├── push.hpp │ │ ├── push_params.hpp │ │ ├── resolve.hpp │ │ ├── restrict_impl.hpp │ │ ├── select.hpp │ │ ├── select_by_size.hpp │ │ ├── streambuf.hpp │ │ ├── streambuf │ │ │ ├── chainbuf.hpp │ │ │ ├── direct_streambuf.hpp │ │ │ ├── indirect_streambuf.hpp │ │ │ └── linked_streambuf.hpp │ │ ├── system_failure.hpp │ │ ├── template_params.hpp │ │ ├── translate_int_type.hpp │ │ └── wrap_unwrap.hpp │ ├── device │ │ ├── array.hpp │ │ ├── back_inserter.hpp │ │ ├── file.hpp │ │ ├── file_descriptor.hpp │ │ ├── mapped_file.hpp │ │ └── null.hpp │ ├── filter │ │ ├── aggregate.hpp │ │ ├── bzip2.hpp │ │ ├── counter.hpp │ │ ├── grep.hpp │ │ ├── gzip.hpp │ │ ├── line.hpp │ │ ├── lzma.hpp │ │ ├── newline.hpp │ │ ├── regex.hpp │ │ ├── stdio.hpp │ │ ├── symmetric.hpp │ │ ├── test.hpp │ │ ├── zlib.hpp │ │ └── zstd.hpp │ ├── filtering_stream.hpp │ ├── filtering_streambuf.hpp │ ├── flush.hpp │ ├── get.hpp │ ├── imbue.hpp │ ├── input_sequence.hpp │ ├── invert.hpp │ ├── operations.hpp │ ├── operations_fwd.hpp │ ├── optimal_buffer_size.hpp │ ├── output_sequence.hpp │ ├── pipeline.hpp │ ├── positioning.hpp │ ├── put.hpp │ ├── putback.hpp │ ├── read.hpp │ ├── restrict.hpp │ ├── seek.hpp │ ├── skip.hpp │ ├── slice.hpp │ ├── stream.hpp │ ├── stream_buffer.hpp │ ├── tee.hpp │ ├── traits.hpp │ ├── traits_fwd.hpp │ └── write.hpp │ └── random │ ├── additive_combine.hpp │ ├── bernoulli_distribution.hpp │ ├── beta_distribution.hpp │ ├── binomial_distribution.hpp │ ├── cauchy_distribution.hpp │ ├── chi_squared_distribution.hpp │ ├── detail │ ├── auto_link.hpp │ ├── config.hpp │ ├── const_mod.hpp │ ├── disable_warnings.hpp │ ├── enable_warnings.hpp │ ├── generator_bits.hpp │ ├── generator_seed_seq.hpp │ ├── gray_coded_qrng.hpp │ ├── int_float_pair.hpp │ ├── integer_log2.hpp │ ├── iterator_mixin.hpp │ ├── large_arithmetic.hpp │ ├── mixmax_skip_N17.ipp │ ├── niederreiter_base2_table.hpp │ ├── operators.hpp │ ├── polynomial.hpp │ ├── ptr_helper.hpp │ ├── qrng_base.hpp │ ├── seed.hpp │ ├── seed_impl.hpp │ ├── signed_unsigned_tools.hpp │ ├── sobol_table.hpp │ ├── uniform_int_float.hpp │ └── vector_io.hpp │ ├── discard_block.hpp │ ├── discrete_distribution.hpp │ ├── exponential_distribution.hpp │ ├── extreme_value_distribution.hpp │ ├── faure.hpp │ ├── fisher_f_distribution.hpp │ ├── gamma_distribution.hpp │ ├── generate_canonical.hpp │ ├── geometric_distribution.hpp │ ├── hyperexponential_distribution.hpp │ ├── independent_bits.hpp │ ├── inversive_congruential.hpp │ ├── lagged_fibonacci.hpp │ ├── laplace_distribution.hpp │ ├── linear_congruential.hpp │ ├── linear_feedback_shift.hpp │ ├── lognormal_distribution.hpp │ ├── mersenne_twister.hpp │ ├── mixmax.hpp │ ├── negative_binomial_distribution.hpp │ ├── niederreiter_base2.hpp │ ├── non_central_chi_squared_distribution.hpp │ ├── normal_distribution.hpp │ ├── piecewise_constant_distribution.hpp │ ├── piecewise_linear_distribution.hpp │ ├── poisson_distribution.hpp │ ├── random_device.hpp │ ├── random_number_generator.hpp │ ├── ranlux.hpp │ ├── seed_seq.hpp │ ├── shuffle_order.hpp │ ├── shuffle_output.hpp │ ├── sobol.hpp │ ├── student_t_distribution.hpp │ ├── subtract_with_carry.hpp │ ├── taus88.hpp │ ├── traits.hpp │ ├── triangle_distribution.hpp │ ├── uniform_01.hpp │ ├── uniform_int.hpp │ ├── uniform_int_distribution.hpp │ ├── uniform_on_sphere.hpp │ ├── uniform_real.hpp │ ├── uniform_real_distribution.hpp │ ├── uniform_smallint.hpp │ ├── variate_generator.hpp │ ├── weibull_distribution.hpp │ └── xor_combine.hpp ├── c-ares ├── CMakeLists.txt ├── darwin │ ├── ares_build.h │ └── ares_config.h └── linux │ ├── ares_build.h │ └── ares_config.h ├── cpr └── CMakeLists.txt ├── croaring └── CMakeLists.txt ├── curl ├── CMakeLists.txt └── curl_config.h ├── hive-metastore └── CMakeLists.txt ├── rapidjson └── CMakeLists.txt ├── thrift └── CMakeLists.txt ├── zlib-ng └── CMakeLists.txt └── zstd └── CMakeLists.txt /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | 7 | [*.py] 8 | indent_style = space 9 | indent_size = 4 10 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @lithium-tech/dev-team 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .cache 3 | compile_commands.json 4 | /.vscode/ 5 | /out/ 6 | /_build/ 7 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | All members of our community are expected to follow our [Code of Conduct](CODE_OF_CONDUCT.md). Please make sure you are 4 | welcoming and friendly in all of our spaces. 5 | 6 | ## Technical Information 7 | 8 | You can find technical details in [Apache Iceberg Specification](https://iceberg.apache.org/spec/). 9 | There's reference [Java implementation](https://github.com/apache/iceberg). There's also alternative 10 | [C++ implementation](https://github.com/apache/iceberg-cpp). 11 | 12 | ## Pull Request Process 13 | 14 | 1. In order to make your contribution please make a fork of the repository 15 | 2. Make changes in feature branche in your fork 16 | 3. We recommend to use [Conventional Commits](https://www.conventionalcommits.org/) in commit messages 17 | 4. Make sure you've covered all the code changes with tests 18 | 5. Create Pull Request into original repository into main branch 19 | -------------------------------------------------------------------------------- /CPPLINT.cfg: -------------------------------------------------------------------------------- 1 | set noparent 2 | filter=-build/c++11,-legal/copyright,-runtime/references,-readability/casting,-build/header_guard,-whitespace/line_length 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Apache Iceberg C++ library 2 | 3 | # Apache Iceberg™ C++ 4 | 5 | Yet another C++ implementation of [Apache Iceberg™](https://iceberg.apache.org/). 6 | 7 | We started it before [iceberg-cpp](https://github.com/apache/iceberg-cpp) appears. The library was a part of 8 | closed source project for reading Iceberg data via some opensource DBMS we use. 9 | Now we are happy to share results of our work with community to make the best Apache Iceberg™ C++ library together. 10 | 11 | ## Requirements 12 | 13 | - C++20 compliant compiler 14 | - CMake 3.20 or higher 15 | - OpenSSL 16 | 17 | ### Build, Run Test 18 | 19 | You have to [download Apache Arrow dependencies](https://arrow.apache.org/docs/15.0/developers/cpp/building.html#offline-builds) first. 20 | ```bash 21 | mkdir _deps && cd _deps 22 | git clone --single-branch -b maint-15.0.2 https://github.com/apache/arrow.git 23 | cd arrow && git apply ../../vendor/arrow/fix_c-ares_url.patch && cd .. 24 | ./arrow/cpp/thirdparty/download_dependencies.sh ./arrow-thirdparty 25 | ``` 26 | 27 | ```bash 28 | mkdir _build 29 | cd _build 30 | ln -s ../_deps/arrow-thirdparty arrow-thirdparty 31 | cmake -GNinja ../ 32 | ninja 33 | cd tests/ 34 | ../iceberg/iceberg-cpp-test 35 | ../iceberg/common/fs/iceberg_common_fs_test 36 | ./iceberg_local_test 37 | ``` 38 | -------------------------------------------------------------------------------- /gen/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(src) 2 | add_subdirectory(tpch) 3 | -------------------------------------------------------------------------------- /gen/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(data-gen 2 | generators.cpp 3 | ) 4 | 5 | target_include_directories(data-gen PUBLIC ${PROJECT_SOURCE_DIR}) 6 | target_link_libraries(data-gen PUBLIC Arrow::arrow_static Parquet::parquet_static) 7 | 8 | if (ICECXX_GENERATOR) 9 | target_compile_definitions(data-gen PUBLIC HAS_ARROW_CSV) 10 | endif() 11 | -------------------------------------------------------------------------------- /gen/src/generators.cpp: -------------------------------------------------------------------------------- 1 | #include "gen/src/generators.h" 2 | 3 | #include 4 | #include 5 | 6 | namespace gen { 7 | 8 | StringFromListGenerator::StringFromListGenerator(const List& list, RandomDevice& random_device) 9 | : random_device_(random_device), 10 | values_([&list]() { 11 | std::vector result; 12 | result.reserve(list.elements.size()); 13 | for (const auto& elem : list.elements) { 14 | result.emplace_back(elem.string); 15 | } 16 | return result; 17 | }()), 18 | cumulative_weights_([&list]() { 19 | std::vector result; 20 | result.reserve(list.elements.size()); 21 | int64_t cur_weight = 0; 22 | for (const auto& elem : list.elements) { 23 | cur_weight += elem.weight; 24 | result.emplace_back(cur_weight); 25 | } 26 | return result; 27 | }()), 28 | generator_(0, cumulative_weights_.back() - 1) {} 29 | 30 | } // namespace gen 31 | -------------------------------------------------------------------------------- /gen/src/list.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace gen { 8 | 9 | struct List { 10 | struct StringWithWeight { 11 | std::string string; 12 | uint16_t weight; 13 | }; 14 | 15 | List(const std::string& list_name, const std::vector& elements) 16 | : list_name(list_name), elements(elements) {} 17 | 18 | List(const std::string& list_name, const std::vector& strings) : list_name(list_name) { 19 | elements.reserve(strings.size()); 20 | for (const auto& str : strings) { 21 | elements.emplace_back(StringWithWeight{.string = str, .weight = 1}); 22 | } 23 | } 24 | 25 | std::string list_name; 26 | std::vector elements; 27 | }; 28 | 29 | } // namespace gen 30 | -------------------------------------------------------------------------------- /gen/src/log.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "arrow/status.h" 6 | 7 | #define LOG_NOT_OK(status) \ 8 | do { \ 9 | if (!status.ok()) { \ 10 | std::cerr << status.message() << std::endl; \ 11 | } \ 12 | } while (false) 13 | -------------------------------------------------------------------------------- /gen/src/table.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "gen/src/fields.h" 8 | #include "gen/src/writer.h" 9 | 10 | namespace gen { 11 | 12 | struct Table { 13 | std::shared_ptr MakeParquetSchema() const { 14 | return ParquetSchemaFromArrowSchema(MakeArrowSchema()); 15 | } 16 | 17 | virtual std::shared_ptr MakeArrowSchema() const = 0; 18 | 19 | virtual std::string Name() const = 0; 20 | 21 | #ifdef HAS_ARROW_CSV 22 | std::shared_ptr GetCSVWriter(const std::string& output_dir, 23 | const arrow::csv::WriteOptions& options) const { 24 | return std::make_shared(OpenLocalOutputStream(output_dir + "/" + Name() + ".csv"), MakeArrowSchema(), 25 | options); 26 | } 27 | #endif 28 | 29 | std::vector MakeColumnNames() const { 30 | std::vector result; 31 | auto schema = MakeArrowSchema(); 32 | for (const auto& field : schema->fields()) { 33 | result.emplace_back(field->name()); 34 | } 35 | return result; 36 | } 37 | 38 | virtual ~Table() = default; 39 | }; 40 | 41 | } // namespace gen 42 | -------------------------------------------------------------------------------- /gen/tpch/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(tpch-gen-lib STATIC 2 | list.cpp 3 | tables.cpp 4 | text.cpp 5 | dataset.cpp 6 | ) 7 | 8 | target_include_directories(tpch-gen-lib PUBLIC ${CMAKE_SOURCE_DIR}) 9 | target_link_libraries(tpch-gen-lib PUBLIC data-gen absl::flags absl::flags_parse) 10 | 11 | add_executable(tpch-gen 12 | main.cpp 13 | ) 14 | 15 | target_include_directories(tpch-gen PUBLIC ${CMAKE_SOURCE_DIR}) 16 | target_link_libraries(tpch-gen tpch-gen-lib absl::flags absl::flags_parse) 17 | -------------------------------------------------------------------------------- /gen/tpch/list.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "gen/src/list.h" 6 | 7 | namespace gen { 8 | 9 | namespace tpch { 10 | 11 | std::shared_ptr GetTypesList(); 12 | std::shared_ptr GetContainersList(); 13 | std::shared_ptr GetSegmentsList(); 14 | std::shared_ptr GetPrioritiesList(); 15 | std::shared_ptr GetInstructionsList(); 16 | std::shared_ptr GetModesList(); 17 | 18 | namespace text { 19 | 20 | std::shared_ptr GetNounsList(); 21 | std::shared_ptr GetVerbsList(); 22 | std::shared_ptr GetAdjectivesList(); 23 | std::shared_ptr GetAdverbsList(); 24 | std::shared_ptr GetPrepositionsList(); 25 | std::shared_ptr GetAuxiliariesList(); 26 | std::shared_ptr GetTerminatorsList(); 27 | std::shared_ptr GetSentenceGrammarList(); 28 | std::shared_ptr GetNounPhraseGrammarList(); 29 | std::shared_ptr GetVerbPhraseGrammarList(); 30 | 31 | } // namespace text 32 | 33 | namespace part { 34 | 35 | std::shared_ptr GetPNameList(); 36 | 37 | } 38 | 39 | } // namespace tpch 40 | 41 | } // namespace gen 42 | -------------------------------------------------------------------------------- /gen/tpch/text.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "gen/src/generators.h" 6 | 7 | namespace gen::tpch::text { 8 | 9 | using Text = std::string; 10 | 11 | Text GenerateText(gen::RandomDevice& random_device); 12 | 13 | } // namespace gen::tpch::text 14 | -------------------------------------------------------------------------------- /iceberg/CPPLINT.cfg: -------------------------------------------------------------------------------- 1 | filter=-readability/braces 2 | -------------------------------------------------------------------------------- /iceberg/common/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(fs) 2 | 3 | add_library(iceberg_common STATIC 4 | rg_metadata.cpp 5 | ) 6 | 7 | target_include_directories(iceberg_common PUBLIC ${CMAKE_SOURCE_DIR}) 8 | target_link_libraries(iceberg_common PUBLIC Arrow::arrow_static Parquet::parquet_static) 9 | -------------------------------------------------------------------------------- /iceberg/common/batch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/record_batch.h" 7 | #include "iceberg/common/selection_vector.h" 8 | 9 | namespace iceberg { 10 | 11 | class BatchWithSelectionVector { 12 | public: 13 | BatchWithSelectionVector(std::shared_ptr batch, SelectionVector selection_vector) 14 | : batch_(batch), selection_vector_(std::move(selection_vector)) { 15 | if (!batch_) { 16 | throw std::runtime_error("BatchWithSelectionVector: batch is null"); 17 | } 18 | } 19 | 20 | BatchWithSelectionVector(const BatchWithSelectionVector&) = default; 21 | BatchWithSelectionVector& operator=(const BatchWithSelectionVector&) = default; 22 | 23 | BatchWithSelectionVector(BatchWithSelectionVector&&) = default; 24 | BatchWithSelectionVector& operator=(BatchWithSelectionVector&&) = default; 25 | 26 | std::shared_ptr GetBatch() const { return batch_; } 27 | const SelectionVector& GetSelectionVector() const { return selection_vector_; } 28 | 29 | SelectionVector& GetSelectionVector() { return selection_vector_; } 30 | 31 | private: 32 | std::shared_ptr batch_; 33 | SelectionVector selection_vector_; 34 | }; 35 | 36 | } // namespace iceberg 37 | -------------------------------------------------------------------------------- /iceberg/common/defer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace iceberg { 7 | 8 | class Defer { 9 | public: 10 | explicit Defer(std::function callback) : callback_(std::move(callback)) {} 11 | 12 | ~Defer() { 13 | try { 14 | callback_(); 15 | } catch (...) { 16 | } 17 | } 18 | 19 | private: 20 | std::function callback_; 21 | }; 22 | 23 | } // namespace iceberg 24 | -------------------------------------------------------------------------------- /iceberg/common/fs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(iceberg_common_fs STATIC 2 | url.cpp 3 | s3.cpp 4 | ) 5 | 6 | target_include_directories(iceberg_common_fs PUBLIC ${CMAKE_SOURCE_DIR}) 7 | target_link_libraries(iceberg_common_fs PUBLIC Arrow::arrow_static absl::base) 8 | 9 | add_executable( 10 | iceberg_common_fs_test 11 | ut/url_test.cpp) 12 | 13 | target_link_libraries(iceberg_common_fs_test PRIVATE gtest_main iceberg_common_fs) 14 | target_include_directories(iceberg_common_fs_test PUBLIC ${CMAKE_SOURCE_DIR}) 15 | -------------------------------------------------------------------------------- /iceberg/common/fs/file_reader_provider.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "parquet/arrow/reader.h" 7 | 8 | namespace iceberg { 9 | 10 | class IFileReaderProvider { 11 | public: 12 | virtual arrow::Result> Open(const std::string& url) const = 0; 13 | 14 | virtual ~IFileReaderProvider() = default; 15 | }; 16 | 17 | } // namespace iceberg 18 | -------------------------------------------------------------------------------- /iceberg/common/fs/file_reader_provider_impl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/status.h" 7 | #include "iceberg/common/fs/file_reader_provider.h" 8 | #include "iceberg/common/fs/filesystem_provider.h" 9 | #include "parquet/arrow/reader.h" 10 | 11 | namespace iceberg { 12 | 13 | class FileReaderProvider : public IFileReaderProvider { 14 | public: 15 | explicit FileReaderProvider(std::shared_ptr fs_provider) : fs_provider_(fs_provider) {} 16 | 17 | arrow::Result> Open(const std::string& url) const override { 18 | ARROW_ASSIGN_OR_RAISE(auto fs, fs_provider_->GetFileSystem(url)); 19 | 20 | if (url.find("://") == std::string::npos) { 21 | return arrow::Status::ExecutionError("FileReaderProvider: file ", url, " does not contain schema"); 22 | } 23 | 24 | std::string path = url.substr(url.find("://") + 3); 25 | ARROW_ASSIGN_OR_RAISE(auto input_file, fs->OpenInputFile(path)); 26 | 27 | parquet::arrow::FileReaderBuilder reader_builder; 28 | ARROW_RETURN_NOT_OK(reader_builder.Open(input_file)); 29 | 30 | return reader_builder.Build(); 31 | } 32 | 33 | private: 34 | std::shared_ptr fs_provider_; 35 | }; 36 | 37 | } // namespace iceberg 38 | -------------------------------------------------------------------------------- /iceberg/common/fs/filesystem_provider.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/filesystem/filesystem.h" 7 | #include "arrow/result.h" 8 | 9 | namespace iceberg { 10 | 11 | class IFileSystemProvider { 12 | public: 13 | virtual arrow::Result> GetFileSystem(const std::string& url) = 0; 14 | 15 | virtual ~IFileSystemProvider() = default; 16 | }; 17 | 18 | } // namespace iceberg 19 | -------------------------------------------------------------------------------- /iceberg/common/fs/s3.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/common/fs/s3.h" 2 | 3 | namespace iceberg { 4 | 5 | CountingS3RetryStrategy::CountingS3RetryStrategy(int64_t max_attempts) 6 | : s3_retry_strategy_(arrow::fs::S3RetryStrategy::GetAwsStandardRetryStrategy(max_attempts)) {} 7 | 8 | bool CountingS3RetryStrategy::ShouldRetry(const AWSErrorDetail& error, int64_t attempted_retries) { 9 | bool result = s3_retry_strategy_->ShouldRetry(error, attempted_retries); 10 | if (result) { 11 | ++retry_count; 12 | } 13 | return result; 14 | } 15 | 16 | int64_t CountingS3RetryStrategy::CalculateDelayBeforeNextRetry(const AWSErrorDetail& error, int64_t attempted_retries) { 17 | return s3_retry_strategy_->CalculateDelayBeforeNextRetry(error, attempted_retries); 18 | } 19 | 20 | int64_t CountingS3RetryStrategy::GetRetryCount() const { return retry_count; } 21 | 22 | arrow::Result> MakeS3FileSystem( 23 | arrow::fs::S3Options options, std::shared_ptr retry_strategy) { 24 | setenv("AWS_EC2_METADATA_DISABLED", "true", 1); 25 | options.retry_strategy = retry_strategy; 26 | return arrow::fs::S3FileSystem::Make(options); 27 | } 28 | 29 | } // namespace iceberg 30 | -------------------------------------------------------------------------------- /iceberg/common/fs/s3.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/filesystem/s3fs.h" 7 | #include "arrow/result.h" 8 | 9 | namespace iceberg { 10 | 11 | class CountingS3RetryStrategy : public arrow::fs::S3RetryStrategy { 12 | public: 13 | explicit CountingS3RetryStrategy(int64_t max_attempts); 14 | 15 | bool ShouldRetry(const AWSErrorDetail& error, int64_t attempted_retries) override; 16 | 17 | int64_t CalculateDelayBeforeNextRetry(const AWSErrorDetail& error, int64_t attempted_retries) override; 18 | 19 | int64_t GetRetryCount() const; 20 | 21 | private: 22 | std::shared_ptr s3_retry_strategy_; 23 | std::atomic retry_count = 0; 24 | }; 25 | 26 | arrow::Result> MakeS3FileSystem( 27 | arrow::fs::S3Options options, std::shared_ptr retry_strategy = nullptr); 28 | 29 | } // namespace iceberg 30 | -------------------------------------------------------------------------------- /iceberg/common/fs/url.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace iceberg { 8 | 9 | struct UrlComponents { 10 | using ParameterCollection = std::vector>; 11 | 12 | std::string_view schema; 13 | std::string_view location; 14 | std::string_view path; 15 | ParameterCollection params; 16 | }; 17 | 18 | UrlComponents SplitUrl(std::string_view url); 19 | 20 | } // namespace iceberg 21 | -------------------------------------------------------------------------------- /iceberg/common/logger.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace iceberg { 6 | 7 | class ILogger { 8 | public: 9 | using Message = std::string; 10 | using MessageType = std::string; 11 | 12 | virtual void Log(const Message& message, const MessageType& message_type) = 0; 13 | 14 | virtual ~ILogger() = default; 15 | }; 16 | 17 | } // namespace iceberg 18 | -------------------------------------------------------------------------------- /iceberg/common/rg_metadata.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/common/rg_metadata.h" 2 | 3 | #include 4 | 5 | namespace iceberg { 6 | 7 | int64_t RowGroupMetaToFileOffset(const parquet::RowGroupMetaData& meta) { 8 | // RowGroup.file_offset is deprecated (see https://issues.apache.org/jira/browse/PARQUET-2078 and 9 | // https://github.com/apache/parquet-format/issues/394). 10 | // We use it for backward compatibility. In case if it is not set, we fallback to data_page_offset 11 | auto row_group_offset = meta.file_offset(); 12 | 13 | // row_group_offset is not set 14 | if (row_group_offset == 0) { 15 | // offset is used only for balancing, so we do not care if data_page_offset matches file_offset 16 | row_group_offset = meta.ColumnChunk(0)->data_page_offset(); 17 | 18 | if (row_group_offset == 0) { 19 | throw std::runtime_error("File offset is not set in file"); 20 | } 21 | } 22 | 23 | return row_group_offset; 24 | } 25 | 26 | } // namespace iceberg 27 | -------------------------------------------------------------------------------- /iceberg/common/rg_metadata.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "parquet/metadata.h" 4 | 5 | namespace iceberg { 6 | 7 | int64_t RowGroupMetaToFileOffset(const parquet::RowGroupMetaData& meta); 8 | 9 | } // namespace iceberg 10 | -------------------------------------------------------------------------------- /iceberg/equality_delete/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(iceberg_equality_delete STATIC 2 | common.cpp 3 | common.h 4 | delete.cpp 5 | delete.h 6 | generic_delete.cpp 7 | generic_delete.h 8 | handler.cpp 9 | handler.h 10 | specialized_one_column_delete.h 11 | specialized_multiple_column_delete.h 12 | utils.h 13 | ) 14 | 15 | set_target_properties(iceberg_equality_delete PROPERTIES POSITION_INDEPENDENT_CODE ON) 16 | target_include_directories(iceberg_equality_delete PUBLIC ${CMAKE_SOURCE_DIR}) 17 | target_link_libraries(iceberg_equality_delete PUBLIC Arrow::arrow_static Parquet::parquet_static absl::base) 18 | 19 | add_executable(iceberg_equality_delete_test 20 | ut/allocator_test.cpp 21 | ut/equality_delete_test.cpp 22 | ut/generic_delete_test.cpp 23 | ut/specialized_delete_test.cpp 24 | ) 25 | 26 | target_link_libraries(iceberg_equality_delete_test PUBLIC iceberg_equality_delete iceberg_test_utils absl::base gtest_main ${CMAKE_DL_LIBS}) 27 | if (NOT APPLE) 28 | target_link_options(iceberg_equality_delete_test PRIVATE "-Wl,--allow-multiple-definition") 29 | endif() 30 | -------------------------------------------------------------------------------- /iceberg/equality_delete/common.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/equality_delete/common.h" 2 | 3 | namespace iceberg { 4 | 5 | int TypeToBitWidth(arrow::Type::type type) { 6 | switch (type) { 7 | case arrow::Type::INT16: 8 | return 16; 9 | case arrow::Type::INT32: 10 | return 32; 11 | case arrow::Type::INT64: 12 | return 64; 13 | case arrow::Type::TIMESTAMP: 14 | return 64; 15 | default: 16 | throw arrow::Status::ExecutionError("TypeToBitWidth: unsupported type"); 17 | } 18 | } 19 | 20 | } // namespace iceberg 21 | -------------------------------------------------------------------------------- /iceberg/equality_delete/common.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "arrow/result.h" 9 | #include "parquet/file_reader.h" 10 | 11 | namespace iceberg { 12 | 13 | using FieldId = int32_t; 14 | using DeleteInfoId = uint32_t; 15 | 16 | using ReaderMethodType = 17 | std::function>(const std::string& url)>; 18 | 19 | int TypeToBitWidth(arrow::Type::type type); 20 | 21 | } // namespace iceberg 22 | -------------------------------------------------------------------------------- /iceberg/equality_delete/delete.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "arrow/array.h" 8 | #include "arrow/status.h" 9 | #include "iceberg/equality_delete/common.h" 10 | #include "iceberg/equality_delete/utils.h" 11 | 12 | namespace iceberg { 13 | 14 | class EqualityDelete { 15 | public: 16 | using Layer = int; 17 | 18 | virtual ~EqualityDelete() = default; 19 | 20 | virtual arrow::Status Add(const std::vector>& arrays, uint64_t rows_count, 21 | Layer delete_layer) = 0; 22 | 23 | virtual size_t Size() const = 0; 24 | 25 | virtual bool IsDeleted(const std::vector>& arrays, uint64_t row, 26 | Layer data_layer) const = 0; 27 | }; 28 | 29 | using EqualityDeletePtr = std::unique_ptr; 30 | 31 | inline size_t GetSize(const EqualityDeletePtr& ptr) { 32 | if (!ptr) { 33 | return 0; 34 | } else { 35 | return ptr->Size(); 36 | } 37 | } 38 | 39 | EqualityDeletePtr MakeEqualityDelete(std::shared_ptr schema, bool use_specialized_deletes, 40 | uint64_t num_rows, const std::shared_ptr& shared_state); 41 | 42 | } // namespace iceberg 43 | -------------------------------------------------------------------------------- /iceberg/equality_delete/stats.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace iceberg { 7 | 8 | struct EqualityDeleteStats { 9 | uint64_t files_read = 0; 10 | uint64_t rows_read = 0; 11 | uint64_t max_rows_materialized = 0; 12 | double max_mb_size_materialized = 0; 13 | 14 | void Combine(const EqualityDeleteStats& other) { 15 | files_read += other.files_read; 16 | rows_read += other.rows_read; 17 | max_rows_materialized = std::max(max_rows_materialized, other.max_rows_materialized); 18 | max_mb_size_materialized = std::max(max_mb_size_materialized, other.max_mb_size_materialized); 19 | } 20 | }; 21 | 22 | } // namespace iceberg 23 | -------------------------------------------------------------------------------- /iceberg/equality_delete/ut/allocator_test.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "gtest/gtest.h" 5 | #include "iceberg/equality_delete/utils.h" 6 | 7 | namespace iceberg { 8 | namespace { 9 | 10 | TEST(LimitedAllocator, Simple) { 11 | auto alloc = iceberg::LimitedAllocator(std::make_shared(10, true)); 12 | alloc.allocate(1); 13 | alloc.allocate(1); 14 | EXPECT_ANY_THROW(alloc.allocate(1)); 15 | } 16 | 17 | TEST(LimitedAllocator, Vector) { 18 | auto alloc = iceberg::LimitedAllocator(std::make_shared(10, true)); 19 | std::vector> v(alloc); 20 | 21 | v.push_back(1); 22 | // This push_back will allocate 8 bytes due reallocation, so it should fail. 23 | EXPECT_ANY_THROW(v.push_back(1)); 24 | } 25 | 26 | } // namespace 27 | } // namespace iceberg 28 | -------------------------------------------------------------------------------- /iceberg/experimental_representations.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "iceberg/schema.h" 6 | #include "iceberg/tea_scan.h" 7 | #include "iceberg/tea_scan_hashers.h" 8 | 9 | namespace iceberg::experimental { 10 | 11 | std::vector UniteSegments(const std::vector& segments); 12 | 13 | bool AreDataEntriesEqual(const iceberg::ice_tea::DataEntry& lhs, const iceberg::ice_tea::DataEntry& rhs); 14 | 15 | bool AreScanMetadataEqual(const iceberg::ice_tea::ScanMetadata& lhs, const iceberg::ice_tea::ScanMetadata& rhs); 16 | 17 | } // namespace iceberg::experimental 18 | -------------------------------------------------------------------------------- /iceberg/filter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(representation) 2 | add_subdirectory(stats_filter) 3 | -------------------------------------------------------------------------------- /iceberg/filter/representation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(filter_representation STATIC 2 | function.h 3 | node.h 4 | serializer.cpp 5 | serializer.h 6 | tree_rewriter.cpp 7 | tree_rewriter.h 8 | value.cpp 9 | value.h 10 | visitor.h 11 | ) 12 | 13 | target_link_libraries(filter_representation PUBLIC _rapidjson) 14 | target_link_libraries(filter_representation PRIVATE Arrow::arrow_static) 15 | target_include_directories(filter_representation PUBLIC ${CMAKE_SOURCE_DIR}) 16 | 17 | set_target_properties(filter_representation PROPERTIES POSITION_INDEPENDENT_CODE ON) 18 | 19 | 20 | add_executable(filter_representation_ut 21 | ut/node_test.cpp 22 | ut/serializer_test.cpp 23 | ut/tree_rewriter_test.cpp 24 | ut/visitor_test.cpp 25 | ) 26 | target_link_libraries(filter_representation_ut filter_representation Arrow::arrow_static gtest_main) 27 | -------------------------------------------------------------------------------- /iceberg/filter/representation/column_extractor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "iceberg/filter/representation/visitor.h" 8 | 9 | namespace iceberg::filter { 10 | 11 | class ColumnExtractorVisitor { 12 | public: 13 | using ResultType = void; 14 | using AggregatedResultType = std::set; 15 | 16 | void Visit(iceberg::filter::NodePtr node) { return Accept(node, *this); } 17 | 18 | template 19 | void TypedVisit(std::shared_ptr node) {} 20 | 21 | void TypedVisit(std::shared_ptr node) { result.insert(node->column_name); } 22 | 23 | AggregatedResultType GetResult() const { return result; } 24 | 25 | private: 26 | AggregatedResultType result; 27 | }; 28 | } // namespace iceberg::filter 29 | -------------------------------------------------------------------------------- /iceberg/filter/representation/serializer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "iceberg/filter/representation/node.h" 6 | 7 | namespace iceberg::filter { 8 | 9 | NodePtr StringToFilter(const std::string& row_filter); 10 | std::string FilterToString(NodePtr node); 11 | 12 | } // namespace iceberg::filter 13 | -------------------------------------------------------------------------------- /iceberg/filter/representation/tree_rewriter.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/filter/representation/tree_rewriter.h" 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace iceberg::filter { 8 | 9 | NodePtr TreeRewriter::ScalarOverArrayToLogical(std::shared_ptr node) { 10 | std::vector function_nodes; 11 | std::visit( 12 | [&](Tag) { 13 | Array values = node->array.GetValue(); 14 | function_nodes.reserve(values.size()); 15 | for (const auto& maybe_value : values) { 16 | Value value = 17 | maybe_value.has_value() ? Value::Make(maybe_value.value()) : Value::Make(); 18 | NodePtr const_node = std::make_shared(std::move(value)); 19 | NodePtr op_node = 20 | std::make_shared(node->function_signature, std::vector{node->scalar, const_node}); 21 | function_nodes.emplace_back(op_node); 22 | } 23 | }, 24 | DispatchTag(node->array.GetValueType())); 25 | 26 | return std::make_shared(node->use_or ? LogicalNode::Operation::kOr : LogicalNode::Operation::kAnd, 27 | std::move(function_nodes)); 28 | } 29 | 30 | } // namespace iceberg::filter 31 | -------------------------------------------------------------------------------- /iceberg/filter/representation/tree_rewriter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "iceberg/filter/representation/node.h" 6 | 7 | namespace iceberg::filter { 8 | 9 | class TreeRewriter { 10 | public: 11 | static NodePtr ScalarOverArrayToLogical(std::shared_ptr node); 12 | }; 13 | 14 | } // namespace iceberg::filter 15 | -------------------------------------------------------------------------------- /iceberg/filter/representation/value.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/filter/representation/value.h" 2 | 3 | namespace iceberg::filter { 4 | 5 | std::string ValueTypeToString(ValueType value_type) { 6 | switch (value_type) { 7 | case ValueType::kBool: 8 | return "bool"; 9 | case ValueType::kInt2: 10 | return "int2"; 11 | case ValueType::kInt4: 12 | return "int4"; 13 | case ValueType::kInt8: 14 | return "int8"; 15 | case ValueType::kFloat4: 16 | return "float4"; 17 | case ValueType::kFloat8: 18 | return "float8"; 19 | case ValueType::kNumeric: 20 | return "numeric"; 21 | case ValueType::kString: 22 | return "string"; 23 | case ValueType::kDate: 24 | return "date"; 25 | case ValueType::kTime: 26 | return "time"; 27 | case ValueType::kTimestamp: 28 | return "timestamp"; 29 | case ValueType::kTimestamptz: 30 | return "timestamptz"; 31 | case ValueType::kInterval: 32 | return "interval"; 33 | } 34 | return "unknown"; 35 | } 36 | 37 | } // namespace iceberg::filter 38 | -------------------------------------------------------------------------------- /iceberg/filter/stats_filter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(stats_filter STATIC 2 | registry.cpp 3 | registry.h 4 | stats_filter.cpp 5 | stats_filter.h 6 | stats.h 7 | ) 8 | 9 | target_link_libraries(stats_filter PRIVATE filter_representation Arrow::arrow_static) 10 | target_include_directories(stats_filter PUBLIC ${CMAKE_SOURCE_DIR}) 11 | 12 | set_target_properties(stats_filter PROPERTIES POSITION_INDEPENDENT_CODE ON) 13 | 14 | 15 | add_executable(stats_filter_ut 16 | ut/stats_filter_test.cpp 17 | ) 18 | target_link_libraries(stats_filter_ut iceberg_test_utils stats_filter Arrow::arrow_static gtest_main ${CMAKE_DL_LIBS}) 19 | -------------------------------------------------------------------------------- /iceberg/filter/stats_filter/registry.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "arrow/result.h" 6 | #include "iceberg/filter/representation/function.h" 7 | #include "iceberg/filter/stats_filter/stats.h" 8 | 9 | namespace iceberg::filter { 10 | 11 | using StatsValue = arrow::Result; 12 | 13 | class Registry { 14 | public: 15 | struct Settings { 16 | std::optional timestamp_to_timestamptz_shift_us = std::nullopt; 17 | }; 18 | 19 | explicit Registry(Settings settings) : settings_(settings) {} 20 | 21 | arrow::Result Evaluate(FunctionID function_id, std::vector args) const; 22 | 23 | private: 24 | arrow::Result> CastToSameTypeForComparison(std::vector args) const; 25 | 26 | Settings settings_; 27 | }; 28 | 29 | } // namespace iceberg::filter 30 | -------------------------------------------------------------------------------- /iceberg/filter/stats_filter/stats_filter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/result.h" 7 | #include "iceberg/filter/representation/node.h" 8 | #include "iceberg/filter/stats_filter/stats.h" 9 | 10 | namespace iceberg::filter { 11 | 12 | enum class MatchedRows { kNone = 0, kSome = 1, kAll = 2 }; 13 | 14 | class StatsFilter { 15 | public: 16 | struct Settings { 17 | std::optional timestamp_to_timestamptz_shift_us = std::nullopt; 18 | }; 19 | 20 | explicit StatsFilter(iceberg::filter::NodePtr root, Settings settings); 21 | 22 | MatchedRows ApplyFilter(const IStatsGetter& stats_getter) const; 23 | 24 | class ILogger { 25 | public: 26 | virtual void Log(const std::string& message) = 0; 27 | virtual ~ILogger() = default; 28 | }; 29 | 30 | void SetLogger(std::shared_ptr logger) { logger_ = logger; } 31 | 32 | arrow::Result Evaluate(const IStatsGetter& stats_getter) const; 33 | 34 | private: 35 | iceberg::filter::NodePtr root_; 36 | std::shared_ptr logger_; 37 | 38 | Settings settings_; 39 | }; 40 | 41 | } // namespace iceberg::filter 42 | -------------------------------------------------------------------------------- /iceberg/manifest_file.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace iceberg { 8 | 9 | enum class ManifestContent { 10 | kData = 0, 11 | kDeletes = 1, 12 | }; 13 | 14 | struct PartitionFieldSummary { 15 | bool contains_null; 16 | std::optional contains_nan; 17 | std::vector lower_bound; 18 | std::vector upper_bound; 19 | }; 20 | 21 | // see also https://iceberg.apache.org/javadoc/1.5.0/org/apache/iceberg/ManifestFile.html 22 | struct ManifestFile { 23 | int32_t added_files_count{}; 24 | int64_t added_rows_count{}; 25 | ManifestContent content = ManifestContent::kData; 26 | int32_t deleted_files_count{}; 27 | int64_t deleted_rows_count{}; 28 | int32_t existing_files_count{}; 29 | int64_t existing_rows_count{}; 30 | int64_t length{}; 31 | int64_t min_sequence_number{}; 32 | int32_t partition_spec_id{}; 33 | std::string path{}; 34 | int64_t sequence_number{}; 35 | int64_t snapshot_id{}; 36 | std::vector partitions; 37 | 38 | // TODO(gmusya): key metadata 39 | }; 40 | 41 | namespace ice_tea { 42 | 43 | // SerDe for manifest list 44 | std::vector ReadManifestList(std::istream& istream); 45 | std::string WriteManifestList(const std::vector& manifest_list); 46 | 47 | } // namespace ice_tea 48 | } // namespace iceberg 49 | -------------------------------------------------------------------------------- /iceberg/nested_field.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "iceberg/type.h" 8 | 9 | namespace iceberg::types { 10 | 11 | struct NestedField { 12 | std::string name; 13 | int32_t field_id; 14 | bool is_required = false; 15 | std::shared_ptr type; 16 | 17 | bool operator==(const NestedField& other) const { 18 | auto left_type = type->ToString(); 19 | auto right_type = other.type->ToString(); 20 | 21 | return std::tie(name, field_id, is_required, left_type) == 22 | std::tie(other.name, other.field_id, other.is_required, right_type); 23 | } 24 | }; 25 | 26 | } // namespace iceberg::types 27 | -------------------------------------------------------------------------------- /iceberg/positional_delete/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(iceberg_positional_delete STATIC 2 | positional_delete.cpp 3 | positional_delete.h 4 | ) 5 | 6 | set_target_properties(iceberg_positional_delete PROPERTIES POSITION_INDEPENDENT_CODE ON) 7 | target_include_directories(iceberg_positional_delete PUBLIC ${CMAKE_SOURCE_DIR}) 8 | target_link_libraries(iceberg_positional_delete PUBLIC Arrow::arrow_static Parquet::parquet_static absl::base) 9 | 10 | add_executable(iceberg_positional_delete_test 11 | ut/positional_delete_test.cpp 12 | ) 13 | 14 | target_link_libraries(iceberg_positional_delete_test PUBLIC iceberg_positional_delete iceberg_test_utils absl::base gtest_main ${CMAKE_DL_LIBS}) 15 | if (NOT APPLE) 16 | target_link_options(iceberg_positional_delete_test PRIVATE "-Wl,--allow-multiple-definition") 17 | endif() 18 | -------------------------------------------------------------------------------- /iceberg/positional_delete/stats.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace iceberg { 6 | 7 | struct PositionalDeleteStats { 8 | uint64_t files_read = 0; 9 | uint64_t rows_read = 0; 10 | 11 | void Combine(const PositionalDeleteStats& other) { 12 | files_read += other.files_read; 13 | rows_read += other.rows_read; 14 | } 15 | }; 16 | 17 | } // namespace iceberg -------------------------------------------------------------------------------- /iceberg/result.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "arrow/result.h" 4 | 5 | namespace iceberg { 6 | 7 | // TODO(gmusya): consider throwing std::runtime_error instead of arrow::Status 8 | inline void Ensure(const arrow::Status& s) { 9 | if (!s.ok()) { 10 | throw std::runtime_error(s.message()); 11 | } 12 | } 13 | 14 | template 15 | T& ValueSafe(arrow::Result& value) { 16 | if (!value.ok()) { 17 | throw std::runtime_error(value.status().message()); 18 | } 19 | return value.ValueUnsafe(); 20 | } 21 | 22 | template 23 | const T& ValueSafe(const arrow::Result& value) { 24 | if (!value.ok()) { 25 | throw std::runtime_error(value.status().message()); 26 | } 27 | return value.ValueUnsafe(); 28 | } 29 | 30 | template 31 | T ValueSafe(arrow::Result&& value) { 32 | if (!value.ok()) { 33 | throw std::runtime_error(value.status().message()); 34 | } 35 | return value.MoveValueUnsafe(); 36 | } 37 | 38 | template 39 | T MoveValueSafe(arrow::Result&& value) { 40 | if (!value.ok()) { 41 | throw std::runtime_error(value.status().message()); 42 | } 43 | return value.MoveValueUnsafe(); 44 | } 45 | 46 | } // namespace iceberg 47 | -------------------------------------------------------------------------------- /iceberg/streams/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(iceberg_streams INTERFACE) 2 | 3 | target_include_directories(iceberg_streams INTERFACE ${CMAKE_SOURCE_DIR}) 4 | target_link_libraries(iceberg_streams INTERFACE Arrow::arrow_static Parquet::parquet_static iceberg iceberg_common iceberg_positional_delete iceberg_equality_delete) 5 | 6 | add_executable(iceberg_streams_ut 7 | # ut/builder_test.cpp # TODO(gmusya): cover 8 | ut/data_scan_test.cpp 9 | ut/equality_delete_applier_test.cpp 10 | ut/file_reader_builder_test.cpp 11 | ut/file_reader_test.cpp 12 | ut/mapper_test.cpp 13 | ut/positional_delete_applier_test.cpp 14 | ut/projection_stream_test.cpp 15 | ut/row_group_reader_test.cpp 16 | ) 17 | 18 | target_link_libraries(iceberg_streams_ut PUBLIC iceberg_streams iceberg_test_utils gtest_main iceberg_common_fs ${CMAKE_DL_LIBS}) 19 | 20 | if (NOT APPLE) 21 | target_link_options(iceberg_streams_ut PRIVATE "-Wl,--allow-multiple-definition") 22 | endif() 23 | 24 | add_executable(iceberg_streams_cli main.cpp) 25 | 26 | target_link_libraries(iceberg_streams_cli PUBLIC iceberg_streams iceberg_common_fs ${CMAKE_DL_LIBS}) 27 | 28 | if (NOT APPLE) 29 | target_link_options(iceberg_streams_cli PRIVATE "-Wl,--allow-multiple-definition") 30 | endif() 31 | 32 | -------------------------------------------------------------------------------- /iceberg/streams/arrow/batch_with_row_number.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/record_batch.h" 7 | #include "iceberg/streams/arrow/error.h" 8 | 9 | namespace iceberg { 10 | 11 | struct ArrowBatchWithRowPosition { 12 | std::shared_ptr batch; 13 | int64_t row_position; // position of first batch row in file (numbering from 0) 14 | 15 | std::shared_ptr GetRecordBatch() const { return batch; } 16 | 17 | ArrowBatchWithRowPosition() = delete; 18 | ArrowBatchWithRowPosition(std::shared_ptr b, int64_t r) : batch(b), row_position(r) { 19 | Ensure(batch != nullptr, std::string(__PRETTY_FUNCTION__) + ": batch is nullptr"); 20 | } 21 | }; 22 | 23 | } // namespace iceberg 24 | -------------------------------------------------------------------------------- /iceberg/streams/arrow/error.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace iceberg { 7 | 8 | inline void Ensure(bool condition, const std::string& message) { 9 | if (!condition) { 10 | throw std::runtime_error(message); 11 | } 12 | } 13 | 14 | } // namespace iceberg 15 | -------------------------------------------------------------------------------- /iceberg/streams/arrow/stream.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "arrow/record_batch.h" 6 | 7 | namespace iceberg { 8 | 9 | template 10 | class IStream { 11 | public: 12 | virtual std::shared_ptr ReadNext() = 0; 13 | 14 | virtual ~IStream() = default; 15 | }; 16 | 17 | template 18 | using StreamPtr = std::shared_ptr>; 19 | 20 | using IBatchStream = IStream; 21 | using BatchStreamPtr = StreamPtr; 22 | 23 | } // namespace iceberg 24 | -------------------------------------------------------------------------------- /iceberg/streams/iceberg/data_entries_meta_stream.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "iceberg/streams/arrow/stream.h" 8 | #include "iceberg/streams/iceberg/plan.h" 9 | 10 | namespace iceberg { 11 | 12 | class AnnotatedDataPath : public PartitionLayerFile { 13 | public: 14 | struct Segment { 15 | int64_t offset; 16 | int64_t length; 17 | }; 18 | 19 | AnnotatedDataPath() = delete; 20 | AnnotatedDataPath(PartitionLayerFile s, std::vector seg) 21 | : PartitionLayerFile(std::move(s)), segments_(std::move(seg)) {} 22 | 23 | public: 24 | const std::vector& GetSegments() const { return segments_; } 25 | 26 | protected: 27 | std::vector segments_; 28 | }; 29 | 30 | using IAnnotatedDataPathStream = IStream; 31 | using AnnotatedDataPathStreamPtr = StreamPtr; 32 | 33 | } // namespace iceberg 34 | -------------------------------------------------------------------------------- /iceberg/streams/iceberg/iceberg_batch.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/record_batch.h" 7 | #include "iceberg/common/batch.h" 8 | #include "iceberg/common/selection_vector.h" 9 | #include "iceberg/streams/arrow/stream.h" 10 | #include "iceberg/streams/iceberg/plan.h" 11 | 12 | namespace iceberg { 13 | 14 | class IcebergBatch : public PartitionLayerFilePosition { 15 | public: 16 | std::shared_ptr GetRecordBatch() const { return batch_; } 17 | 18 | SelectionVector& GetSelectionVector() { return selection_vector_; } 19 | const SelectionVector& GetSelectionVector() const { return selection_vector_; } 20 | 21 | IcebergBatch() = delete; 22 | 23 | IcebergBatch(BatchWithSelectionVector b, PartitionLayerFilePosition state) 24 | : PartitionLayerFilePosition(std::move(state)), 25 | batch_(b.GetBatch()), 26 | selection_vector_(std::move(b.GetSelectionVector())) {} 27 | 28 | private: 29 | std::shared_ptr batch_; 30 | SelectionVector selection_vector_; 31 | }; 32 | 33 | using IcebergStream = IStream; 34 | using IcebergStreamPtr = StreamPtr; 35 | 36 | } // namespace iceberg 37 | -------------------------------------------------------------------------------- /iceberg/streams/iceberg/row_group_filter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "parquet/metadata.h" 4 | 5 | namespace iceberg { 6 | 7 | class IRowGroupFilter { 8 | public: 9 | virtual bool CanSkipRowGroup(const parquet::RowGroupMetaData& meta) const = 0; 10 | 11 | virtual ~IRowGroupFilter() = default; 12 | }; 13 | 14 | } // namespace iceberg 15 | -------------------------------------------------------------------------------- /iceberg/streams/ut/local_file_reader_provider.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/filesystem/localfs.h" 7 | #include "arrow/status.h" 8 | #include "iceberg/common/fs/file_reader_provider.h" 9 | #include "parquet/arrow/reader.h" 10 | 11 | namespace iceberg { 12 | 13 | class LocalFileReaderProvider : public IFileReaderProvider { 14 | public: 15 | arrow::Result> Open(const std::string& url) const override { 16 | auto fs = std::make_shared(); 17 | 18 | std::string path = url.starts_with("file://") ? url.substr(7) : url; 19 | ARROW_ASSIGN_OR_RAISE(auto input_file, fs->OpenInputFile(path)); 20 | 21 | parquet::arrow::FileReaderBuilder reader_builder; 22 | ARROW_RETURN_NOT_OK(reader_builder.Open(input_file)); 23 | reader_builder.memory_pool(arrow::default_memory_pool()); 24 | 25 | std::unique_ptr arrow_reader; 26 | ARROW_ASSIGN_OR_RAISE(arrow_reader, reader_builder.Build()); 27 | 28 | return arrow_reader; 29 | } 30 | }; 31 | 32 | } // namespace iceberg 33 | -------------------------------------------------------------------------------- /iceberg/streams/ut/mapper_test.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/streams/iceberg/mapper.h" 2 | 3 | #include "gtest/gtest.h" 4 | 5 | namespace iceberg { 6 | namespace { 7 | 8 | TEST(MapperTest, Trivial) { 9 | std::map map{{1, "first"}, {2, "second"}}; 10 | 11 | FieldIdMapper mapper(std::move(map)); 12 | EXPECT_EQ(mapper.FieldIdToColumnName(1), "first"); 13 | EXPECT_EQ(mapper.FieldIdToColumnName(2), "second"); 14 | } 15 | 16 | TEST(MapperTest, NonExistingField) { 17 | std::map map{{1, "first"}, {2, "second"}}; 18 | 19 | FieldIdMapper mapper(std::move(map)); 20 | EXPECT_EQ(mapper.FieldIdToColumnName(3), "__unnamed_c0_f3"); 21 | } 22 | 23 | TEST(MapperTest, NonExistingFieldExistingName) { 24 | std::map map{{1, "__unnamed_c1_f3"}, {2, "__unnamed_c0_f3"}}; 25 | 26 | FieldIdMapper mapper(std::move(map)); 27 | EXPECT_EQ(mapper.FieldIdToColumnName(3), "__unnamed_c2_f3"); 28 | } 29 | 30 | } // namespace 31 | } // namespace iceberg 32 | -------------------------------------------------------------------------------- /iceberg/streams/ut/mock_stream.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "iceberg/streams/arrow/batch_with_row_number.h" 8 | #include "iceberg/streams/arrow/stream.h" 9 | 10 | namespace iceberg { 11 | 12 | template 13 | class MockStream : public IStream { 14 | public: 15 | explicit MockStream(std::vector values) : values_(std::move(values)) {} 16 | 17 | std::shared_ptr ReadNext() override { 18 | if (current_position_ == values_.size()) { 19 | return nullptr; 20 | } 21 | return std::make_shared(std::move(values_.at(current_position_++))); 22 | } 23 | 24 | private: 25 | std::vector values_; 26 | size_t current_position_ = 0; 27 | }; 28 | 29 | } // namespace iceberg 30 | -------------------------------------------------------------------------------- /iceberg/table.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include 6 | #include 7 | 8 | #include "iceberg/manifest_entry.h" 9 | #include "iceberg/schema.h" 10 | #include "iceberg/table_metadata.h" 11 | 12 | namespace iceberg { 13 | 14 | class Table { 15 | public: 16 | virtual ~Table() = default; 17 | 18 | // virtual const Snapshot& CurrentSnapshot() const = 0; 19 | // virtual const Snapshot& GetSnapshot​(int64_t snapshotId); 20 | virtual const std::string& Location() const = 0; 21 | virtual const std::string& Name() const = 0; 22 | virtual std::shared_ptr GetSchema() const = 0; 23 | virtual std::vector GetFilePathes() const = 0; 24 | // AppendFiles NewAppend(); 25 | // TableScan NewScan(); 26 | // UpdateSchema updateSchema(); 27 | 28 | virtual void AppendTable(std::shared_ptr table) = 0; 29 | 30 | protected: 31 | friend class Transaction; 32 | 33 | virtual void DoCommit(const std::vector& file_updates) = 0; 34 | }; 35 | 36 | } // namespace iceberg 37 | -------------------------------------------------------------------------------- /iceberg/tea_column_stats.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifdef __cplusplus 4 | extern "C" { 5 | #endif 6 | 7 | #include 8 | 9 | typedef struct ColumnStats { 10 | int64_t null_count; // -1 <=> not set 11 | int64_t distinct_count; // -1 <=> not set 12 | int64_t not_null_count; // -1 <=> not set 13 | int64_t total_compressed_size; // -1 <=> not set 14 | int64_t total_uncompressed_size; // -1 <=> not set 15 | } ColumnStats; 16 | 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /iceberg/tea_hive_catalog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "arrow/filesystem/s3fs.h" 9 | #include "iceberg/catalog.h" 10 | #include "iceberg/table.h" 11 | #include "iceberg/table_metadata.h" 12 | #include "iceberg/tea_remote_catalog.h" 13 | #include "iceberg/transaction.h" 14 | 15 | namespace iceberg::ice_tea { 16 | 17 | class HiveClientImpl; 18 | 19 | class HiveClient : public IMetadataClient { 20 | public: 21 | HiveClient(const std::string& host, int port); 22 | 23 | std::string GetMetadataLocation(const std::string& db_name, const std::string& table_name) override; 24 | 25 | bool TableExists(const std::string& db_name, const std::string& table_name) override; 26 | 27 | private: 28 | std::shared_ptr client_; 29 | }; 30 | 31 | using HiveTable = RemoteTable; 32 | 33 | class HiveCatalog : public RemoteCatalog { 34 | public: 35 | HiveCatalog(const std::string& host, int port, std::shared_ptr s3fs = {}); 36 | }; 37 | 38 | } // namespace iceberg::ice_tea 39 | -------------------------------------------------------------------------------- /iceberg/tea_rest_catalog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "arrow/filesystem/s3fs.h" 9 | #include "iceberg/catalog.h" 10 | #include "iceberg/table.h" 11 | #include "iceberg/table_metadata.h" 12 | #include "iceberg/tea_remote_catalog.h" 13 | #include "iceberg/transaction.h" 14 | #include "rapidjson/document.h" 15 | 16 | namespace iceberg::ice_tea { 17 | 18 | class RESTClientImpl : public IMetadataClient { 19 | public: 20 | RESTClientImpl(const std::string& host, int port); 21 | 22 | std::string GetMetadataLocation(const std::string& db_name, const std::string& table_name) override; 23 | 24 | bool TableExists(const std::string& db_name, const std::string& table_name) override; 25 | 26 | private: 27 | std::optional GetTable(const std::string& db_name, const std::string& table_name); 28 | 29 | std::string base_url_; 30 | }; 31 | 32 | using RESTTable = RemoteTable; 33 | 34 | class RESTCatalog : public RemoteCatalog { 35 | public: 36 | RESTCatalog(const std::string& host, int port, std::shared_ptr s3fs = {}); 37 | }; 38 | 39 | } // namespace iceberg::ice_tea 40 | -------------------------------------------------------------------------------- /iceberg/tea_scan_hashers.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "iceberg/tea_scan.h" 4 | 5 | namespace iceberg::ice_tea { 6 | 7 | struct SegmentHasher { 8 | size_t operator()(const DataEntry::Segment& segment) const { 9 | return (segment.offset ^ segment.length) + segment.length; 10 | } 11 | }; 12 | 13 | struct DataEntryHasher { 14 | size_t operator()(const DataEntry& data_entry) const; 15 | 16 | private: 17 | std::hash hasher; 18 | SegmentHasher segment_hasher; 19 | }; 20 | 21 | struct PositionalDeleteInfoHasher { 22 | size_t operator()(const PositionalDeleteInfo& pos_delete) const; 23 | 24 | private: 25 | std::hash path_hasher; 26 | }; 27 | 28 | struct EqualityDeleteInfoHasher { 29 | size_t operator()(const EqualityDeleteInfo& pos_delete) const; 30 | 31 | private: 32 | std::hash path_hasher; 33 | }; 34 | 35 | struct LayerHasher { 36 | size_t operator()(const ScanMetadata::Layer& layer) const; 37 | 38 | private: 39 | std::hash hasher; 40 | SegmentHasher segment_hasher; 41 | }; 42 | 43 | struct PartitionHasher { 44 | size_t operator()(const ScanMetadata::Partition& partition) const; 45 | 46 | private: 47 | LayerHasher hasher; 48 | }; 49 | 50 | } // namespace iceberg::ice_tea 51 | -------------------------------------------------------------------------------- /iceberg/test_utils/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(test_utils_sources 2 | arrow_array.cpp 3 | arrow_array.h 4 | column.cpp 5 | column.h 6 | scoped_temp_dir.cpp 7 | scoped_temp_dir.h 8 | write.cpp 9 | write.h 10 | ) 11 | 12 | add_library(iceberg_test_utils STATIC ${test_utils_sources}) 13 | 14 | target_include_directories( 15 | iceberg_test_utils PUBLIC ${CMAKE_SOURCE_DIR} ${Greenplum_INCLUDE_SERVER}) 16 | target_link_libraries(iceberg_test_utils PUBLIC Arrow::arrow_static 17 | Parquet::parquet_static iceberg) 18 | 19 | if (NOT APPLE) 20 | target_link_options(iceberg_test_utils PRIVATE "-Wl,--allow-multiple-definition") 21 | endif() 22 | -------------------------------------------------------------------------------- /iceberg/test_utils/arrow_array.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/test_utils/arrow_array.h" 2 | 3 | namespace iceberg { 4 | 5 | template <> 6 | std::shared_ptr CreateArray(const OptionalVector& values) { 7 | arrow::TimestampBuilder builder(std::make_shared(), arrow::default_memory_pool()); 8 | for (const auto& value : values) { 9 | if (value.has_value()) { 10 | if (auto status = builder.Append(value.value()); !status.ok()) { 11 | throw status; 12 | } 13 | } else { 14 | if (auto status = builder.AppendNull(); !status.ok()) { 15 | throw status; 16 | } 17 | } 18 | } 19 | auto maybe_array = builder.Finish(); 20 | if (!maybe_array.ok()) { 21 | throw maybe_array.status(); 22 | } 23 | return maybe_array.ValueUnsafe(); 24 | } 25 | 26 | } // namespace iceberg 27 | -------------------------------------------------------------------------------- /iceberg/test_utils/arrow_array.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "arrow/array.h" 6 | #include "arrow/array/builder_binary.h" 7 | #include "arrow/array/builder_primitive.h" 8 | #include "arrow/array/builder_time.h" 9 | #include "iceberg/test_utils/optional_vector.h" 10 | 11 | namespace iceberg { 12 | 13 | template 14 | std::shared_ptr CreateArray(const OptVector& values) { 15 | ArrayBuilder builder; 16 | for (const auto& value : values) { 17 | if (value.has_value()) { 18 | if (auto status = builder.Append(value.value()); !status.ok()) { 19 | throw status; 20 | } 21 | } else { 22 | if (auto status = builder.AppendNull(); !status.ok()) { 23 | throw status; 24 | } 25 | } 26 | } 27 | auto maybe_array = builder.Finish(); 28 | if (!maybe_array.ok()) { 29 | throw maybe_array.status(); 30 | } 31 | return maybe_array.ValueUnsafe(); 32 | } 33 | 34 | template <> 35 | std::shared_ptr CreateArray(const OptionalVector& values); 36 | 37 | } // namespace iceberg 38 | -------------------------------------------------------------------------------- /iceberg/test_utils/assertions.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/status.h" 7 | 8 | #define ASSERT_OK(expr) \ 9 | static_assert(std::is_same_v, arrow::Status>); \ 10 | ASSERT_EQ(expr, arrow::Status::OK()) 11 | 12 | #define ASSIGN_OR_FAIL_IMPL(result_name, lhs, rexpr) \ 13 | auto&& result_name = (rexpr); \ 14 | ASSERT_OK(result_name.status()); \ 15 | lhs = std::move(result_name).ValueUnsafe(); 16 | 17 | #define ASSIGN_OR_FAIL_NAME(x, y) ARROW_CONCAT(x, y) 18 | 19 | #define ASSIGN_OR_FAIL(lhs, rexpr) ASSIGN_OR_FAIL_IMPL(ASSIGN_OR_FAIL_NAME(_error_or_value, __COUNTER__), lhs, rexpr); 20 | -------------------------------------------------------------------------------- /iceberg/test_utils/common.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace iceberg { 6 | 7 | // "s3://some-path" is valid 8 | // "file://some-path" is valid 9 | // "some-path" is not valid 10 | using FilePath = std::string; 11 | using TableName = std::string; 12 | 13 | } // namespace iceberg 14 | -------------------------------------------------------------------------------- /iceberg/test_utils/optional_vector.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace iceberg { 7 | 8 | template 9 | using OptionalVector = std::vector>; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /iceberg/test_utils/scoped_temp_dir.cpp: -------------------------------------------------------------------------------- 1 | #include "iceberg/test_utils/scoped_temp_dir.h" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include "arrow/filesystem/s3fs.h" 12 | 13 | namespace iceberg { 14 | 15 | ScopedTempDir::ScopedTempDir() { 16 | std::string name_template{std::filesystem::temp_directory_path() / "tea_smoke_test_XXXXXX"}; 17 | if (!mkdtemp(name_template.data())) std::abort(); 18 | path_ = name_template; 19 | } 20 | ScopedTempDir::~ScopedTempDir() { std::filesystem::remove_all(path_); } 21 | 22 | ScopedS3TempDir::ScopedS3TempDir(std::shared_ptr fs) : fs_(fs) { 23 | std::mt19937 rnd(std::chrono::system_clock::now().time_since_epoch().count()); 24 | std::string name; 25 | for (size_t i = 0; i < 6; ++i) { 26 | name += (rnd() % 26) + 'a'; 27 | } 28 | auto status = fs->CreateDir(name); 29 | if (!status.ok()) { 30 | std::cerr << status.ToString() << std::endl; 31 | throw status; 32 | } 33 | 34 | path_ = name; 35 | } 36 | 37 | ScopedS3TempDir::~ScopedS3TempDir() { 38 | auto status = fs_->DeleteDirContents(std::string(path_).substr(5), true); 39 | if (!status.ok()) { 40 | std::cerr << status.ToString() << std::endl; 41 | } 42 | } 43 | 44 | } // namespace iceberg 45 | -------------------------------------------------------------------------------- /iceberg/test_utils/scoped_temp_dir.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "arrow/filesystem/s3fs.h" 7 | 8 | namespace iceberg { 9 | class ScopedTempDir { 10 | public: 11 | ScopedTempDir(); 12 | ~ScopedTempDir(); 13 | 14 | ScopedTempDir(const ScopedTempDir&) = delete; 15 | ScopedTempDir& operator=(const ScopedTempDir&) = delete; 16 | 17 | const std::filesystem::path& path() const { return path_; } 18 | 19 | private: 20 | std::filesystem::path path_; 21 | }; 22 | 23 | class ScopedS3TempDir { 24 | public: 25 | explicit ScopedS3TempDir(std::shared_ptr fs); 26 | ~ScopedS3TempDir(); 27 | 28 | ScopedS3TempDir(const ScopedS3TempDir&) = delete; 29 | ScopedS3TempDir& operator=(const ScopedS3TempDir&) = delete; 30 | 31 | const std::filesystem::path& path() const { return path_; } 32 | 33 | private: 34 | std::shared_ptr fs_; 35 | std::filesystem::path path_; 36 | }; 37 | 38 | } // namespace iceberg 39 | -------------------------------------------------------------------------------- /iceberg/transaction.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | 8 | #include "iceberg/manifest_entry.h" 9 | #include "iceberg/table.h" 10 | #include "iceberg/table_metadata.h" 11 | #include "iceberg/uuid.h" 12 | 13 | namespace iceberg { 14 | 15 | class Transaction { 16 | public: 17 | explicit Transaction(Table* table, std::shared_ptr table_metadata, 18 | std::shared_ptr fs, bool auto_commit = false); 19 | 20 | // TODO(k.i.vedernikov): add other methods to transaction 21 | 22 | void AppendTable(const std::shared_ptr& table); 23 | 24 | void Commit(); 25 | 26 | private: 27 | bool commited_ = false; 28 | Table* table_; 29 | std::shared_ptr table_metadata_; 30 | 31 | std::vector data_files_; 32 | std::shared_ptr fs_; 33 | 34 | bool auto_commit_ = false; 35 | int cnt_files_ = 0; 36 | UuidGenerator uuid_generator_; 37 | }; 38 | 39 | } // namespace iceberg 40 | -------------------------------------------------------------------------------- /iceberg/write.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | #include "iceberg/manifest_entry.h" 10 | #include "iceberg/manifest_file.h" 11 | #include "iceberg/table_metadata.h" 12 | 13 | namespace iceberg::ice_tea { 14 | 15 | void WriteMetadataFile(const std::filesystem::path& out_path, const std::shared_ptr& table_metadata); 16 | void WriteManifestList(const std::filesystem::path& out_path, const std::vector& manifests); 17 | void WriteManifest(const std::filesystem::path& out_path, const Manifest& entries); 18 | 19 | void WriteMetadataFileRemote(std::shared_ptr fs, const std::filesystem::path& out_path, 20 | const std::shared_ptr& table_metadata); 21 | void WriteManifestListRemote(std::shared_ptr fs, const std::filesystem::path& out_path, 22 | const std::vector& manifests); 23 | void WriteManifestRemote(std::shared_ptr fs, const std::filesystem::path& out_path, 24 | const Manifest& entries); 25 | 26 | } // namespace iceberg::ice_tea 27 | -------------------------------------------------------------------------------- /stats/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_library(analyzer 2 | analyzer.cpp 3 | puffin.cpp 4 | ) 5 | 6 | target_link_libraries(analyzer PUBLIC datasketches Parquet::parquet_static Arrow::arrow_static) 7 | 8 | target_include_directories(analyzer PUBLIC ${CMAKE_SOURCE_DIR}) 9 | 10 | add_executable(stats_main 11 | main.cpp 12 | ) 13 | 14 | target_link_libraries(stats_main Arrow::arrow_static Parquet::parquet_static absl::flags absl::flags_parse iceberg analyzer ${CMAKE_DL_LIBS}) 15 | -------------------------------------------------------------------------------- /stats/datasketch/distinct.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "stats/datasketch/distinct_hll.h" 9 | #include "stats/datasketch/distinct_naive.h" 10 | #include "stats/datasketch/distinct_theta.h" 11 | 12 | namespace stats { 13 | 14 | class GenericDistinctCounterSketch { 15 | public: 16 | using VariantType = std::variant; 17 | 18 | explicit GenericDistinctCounterSketch(const VariantType& other) : sketch_(other) {} 19 | explicit GenericDistinctCounterSketch(VariantType&& other) : sketch_(std::move(other)) {} 20 | 21 | void AppendValue(const int64_t value) { 22 | std::visit([value](auto&& sketch) { sketch.AppendValue(value); }, sketch_); 23 | } 24 | void AppendValue(const void* data, uint64_t size) { 25 | std::visit([data, size](auto&& sketch) { sketch.AppendValue(data, size); }, sketch_); 26 | } 27 | 28 | uint64_t GetDistinctValuesCount() const { 29 | return std::visit([](auto&& sketch) { return sketch.GetDistinctValuesCount(); }, sketch_); 30 | } 31 | 32 | const VariantType& GetSketch() const { return sketch_; } 33 | 34 | private: 35 | VariantType sketch_; 36 | }; 37 | 38 | } // namespace stats 39 | -------------------------------------------------------------------------------- /stats/datasketch/distinct_hll.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "hll.hpp" 6 | 7 | namespace stats { 8 | 9 | class HLLDistinctCounter { 10 | static constexpr int32_t kDefaultLgK = 11; 11 | 12 | public: 13 | // sketch can hold 2^lg_config_k rows 14 | explicit HLLDistinctCounter(int32_t lg_config_k = kDefaultLgK) : sketch_(lg_config_k) {} 15 | 16 | void AppendValue(const int64_t value) { sketch_.update(value); } 17 | void AppendValue(const void* data, uint64_t size) { sketch_.update(data, size); } 18 | 19 | uint64_t GetDistinctValuesCount() const { return sketch_.get_estimate(); } 20 | 21 | datasketches::hll_sketch& GetSketch() { return sketch_; } 22 | const datasketches::hll_sketch& GetSketch() const { return sketch_; } 23 | 24 | private: 25 | datasketches::hll_sketch sketch_; 26 | }; 27 | 28 | } // namespace stats 29 | -------------------------------------------------------------------------------- /stats/datasketch/distinct_naive.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace stats { 8 | 9 | class NaiveDistinctCounter { 10 | public: 11 | void AppendValue(const void* data, int64_t size) { 12 | string_values_.insert(std::string(reinterpret_cast(data), size)); 13 | } 14 | void AppendValue(const int64_t value) { int_values_.insert(value); } 15 | 16 | uint64_t GetDistinctValuesCount() const { return string_values_.size() + int_values_.size(); } 17 | 18 | private: 19 | std::unordered_set string_values_; 20 | std::unordered_set int_values_; 21 | }; 22 | 23 | } // namespace stats 24 | -------------------------------------------------------------------------------- /stats/datasketch/distinct_theta.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #include "theta_sketch.hpp" 6 | 7 | namespace stats { 8 | 9 | class ThetaDistinctCounter { 10 | public: 11 | ThetaDistinctCounter() 12 | : sketch_([]() { 13 | datasketches::update_theta_sketch::builder builder; 14 | return builder.build(); 15 | }()) {} 16 | 17 | void AppendValue(const int64_t value) { sketch_.update(value); } 18 | void AppendValue(const void* data, uint64_t size) { sketch_.update(data, size); } 19 | 20 | uint64_t GetDistinctValuesCount() const { return sketch_.get_estimate(); } 21 | 22 | datasketches::update_theta_sketch& GetSketch() { return sketch_; } 23 | const datasketches::update_theta_sketch& GetSketch() const { return sketch_; } 24 | 25 | private: 26 | datasketches::update_theta_sketch sketch_; 27 | }; 28 | 29 | } // namespace stats 30 | -------------------------------------------------------------------------------- /stats/datasketch/string_view_serializer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "serde.hpp" 7 | 8 | namespace stats { 9 | 10 | class StringViewSerializer { 11 | public: 12 | explicit StringViewSerializer() {} 13 | 14 | size_t serialize(void* ptr, size_t capacity, const std::string_view* items, unsigned num) const { 15 | std::vector uncompressed_data(num); 16 | for (unsigned i = 0; i < num; ++i) { 17 | uncompressed_data[i] = items[i]; 18 | } 19 | return typed_serde_.serialize(ptr, capacity, uncompressed_data.data(), num); 20 | } 21 | 22 | size_t size_of_item(const std::string_view& item) const { return typed_serde_.size_of_item(std::string(item)); } 23 | 24 | private: 25 | datasketches::serde typed_serde_; 26 | }; 27 | 28 | } // namespace stats 29 | -------------------------------------------------------------------------------- /stats/measure.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace iceberg { 6 | 7 | using TimePointClock = std::chrono::time_point; 8 | using DurationClock = std::chrono::steady_clock::duration; 9 | 10 | class ScopedTimerClock { 11 | public: 12 | explicit ScopedTimerClock(DurationClock& result) : start_(std::chrono::steady_clock::now()), result_(result) {} 13 | ~ScopedTimerClock() { result_ += std::chrono::steady_clock::now() - start_; } 14 | 15 | private: 16 | TimePointClock start_; 17 | DurationClock& result_; 18 | }; 19 | 20 | } // namespace iceberg 21 | -------------------------------------------------------------------------------- /stats/puffin.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "iceberg/puffin.h" 4 | #include "iceberg/table_metadata.h" 5 | #include "stats/analyzer.h" 6 | 7 | namespace stats { 8 | 9 | void SketchesToPuffin(const stats::AnalyzeResult& result, iceberg::PuffinFileBuilder& puffin_file_builder); 10 | 11 | iceberg::Statistics PuffinInfoToStatistics(const iceberg::PuffinFile& puffin_file, const std::string& puffin_file_path, 12 | int64_t snapshot_id); 13 | 14 | } // namespace stats 15 | -------------------------------------------------------------------------------- /stats/tests/prepare.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # generate data 4 | mkdir -p $TPCH_DIR/sf25/f1 5 | gen/tpch/tpch-gen --output_dir $TPCH_DIR/sf25/f1 --write_parquet --scale_factor 25 6 | 7 | export FILEPATH=$TPCH_DIR/sf25/f1/lineitem0.parquet 8 | 9 | # preparet directory for results 10 | export CURRENT_RESULTS_DIR=$ICESTATS_RESULT_DIR/tpch/sf25/f1/ 11 | mkdir -p $CURRENT_RESULTS_DIR 12 | -------------------------------------------------------------------------------- /stats/types.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace stats { 4 | 5 | enum class Type { kInt64, kString }; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /test-validator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | TEST_DATA_DIR="tests/warehouse" 4 | MINIO=${MINIO_EXECUTABLE:-minio} 5 | MC=${MC_EXECUTABLE:-mc} 6 | HOST=127.0.0.1 7 | HMS_PORT=9090 8 | S3_PORT=9000 9 | DB_NAME=miniodb 10 | 11 | export AWS_ENDPOINT_URL="http://$HOST:$S3_PORT" 12 | export AWS_ACCESS_KEY_ID=minioadmin 13 | export AWS_SECRET_ACCESS_KEY=minioadmin 14 | export AWS_DEFAULT_REGION="" 15 | 16 | mkdir $MINIO_DATA_DIR 17 | $MINIO server $MINIO_DATA_DIR & 18 | 19 | sleep 1 20 | 21 | echo $AWS_ENDPOINT_URL $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 22 | $MC alias set 'myminio' $AWS_ENDPOINT_URL $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 23 | $MC mb myminio/warehouse 24 | $MC mirror $TEST_DATA_DIR myminio/warehouse 25 | $MC ls myminio/warehouse 26 | 27 | $MC ls -r myminio/warehouse 28 | -------------------------------------------------------------------------------- /tests/data/00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/data/00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/data/00000-7-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00002.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/data/00000-7-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00002.parquet -------------------------------------------------------------------------------- /tests/meta_perf/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(meta_perf_test run_performance_tests.cpp) 2 | target_link_libraries(meta_perf_test PUBLIC iceberg-cpp dl absl::flags absl::flags_parse) 3 | target_compile_options(meta_perf_test PRIVATE -fno-omit-frame-pointer) 4 | 5 | ADD_CUSTOM_TARGET(test_performance_warehouse_symlink ALL 6 | COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/warehouse" "${CMAKE_CURRENT_BINARY_DIR}/warehouse" 7 | ) 8 | add_dependencies(meta_perf_test test_performance_warehouse_symlink) 9 | -------------------------------------------------------------------------------- /tests/meta_perf/s3.env: -------------------------------------------------------------------------------- 1 | AWS_ACCESS_KEY_ID=admin 2 | AWS_SECRET_ACCESS_KEY=password 3 | AWS_REGION= 4 | CATALOG_WAREHOUSE=s3://warehouse/ 5 | CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO 6 | CATALOG_S3_ENDPOINT=http://minio:9000 7 | -------------------------------------------------------------------------------- /tests/meta_perf/scripts/manifest_entries.py: -------------------------------------------------------------------------------- 1 | from pyspark.sql.session import SparkSession 2 | from pyspark.sql.functions import lit 3 | 4 | spark = SparkSession.builder \ 5 | .getOrCreate() 6 | 7 | 8 | spark.sql(""" 9 | CREATE TABLE IF NOT EXISTS demo.performance.manifest_entries ( 10 | id BIGINT, 11 | data STRING 12 | ) USING iceberg 13 | TBLPROPERTIES( 14 | 'commit.manifest-merge.enabled' = 'false', 15 | 'write.target-file-size-bytes' = '1024' 16 | ) 17 | """) 18 | 19 | df = spark.range(0, 10000000).withColumn("data", lit("sample_data")) 20 | 21 | df.writeTo("demo.performance.manifest_entries") \ 22 | .append() 23 | -------------------------------------------------------------------------------- /tests/meta_perf/scripts/snapshots.py: -------------------------------------------------------------------------------- 1 | from pyspark.sql import SparkSession 2 | 3 | spark = SparkSession.builder.getOrCreate() 4 | 5 | spark.sql(""" 6 | CREATE TABLE IF NOT EXISTS performance.snapshots ( 7 | id INT 8 | ) USING iceberg 9 | """) 10 | 11 | spark.sql("INSERT INTO performance.snapshots VALUES (0)") 12 | snapshot_df = spark.sql("SELECT snapshot_id FROM performance.snapshots.history ORDER BY made_current_at DESC LIMIT 1") 13 | first_snapshot_id = snapshot_df.collect()[0]["snapshot_id"] 14 | 15 | for i in range(1, 1000): 16 | if i % 2 == 0: 17 | snapshot_df = spark.sql("SELECT snapshot_id FROM performance.snapshots.history ORDER BY made_current_at DESC LIMIT 1") 18 | last_snapshot_id = snapshot_df.collect()[0]["snapshot_id"] 19 | spark.sql(f"ALTER TABLE performance.snapshots CREATE TAG v{i} AS OF VERSION {last_snapshot_id}") 20 | spark.sql(f"INSERT INTO performance.snapshots VALUES ({i})") 21 | else: 22 | spark.sql(f"ALTER TABLE performance.snapshots CREATE BRANCH v{i} AS OF VERSION {first_snapshot_id}") 23 | spark.sql(f"INSERT INTO performance.snapshots VALUES ({i})") 24 | 25 | spark.stop() 26 | -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/manifest_entries/metadata/850b6bca-3496-42ce-9ec0-753e8c496baf-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/manifest_entries/metadata/850b6bca-3496-42ce-9ec0-753e8c496baf-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/manifest_entries/metadata/snap-2349672351566884055-1-850b6bca-3496-42ce-9ec0-753e8c496baf.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/manifest_entries/metadata/snap-2349672351566884055-1-850b6bca-3496-42ce-9ec0-753e8c496baf.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/manifest_entries_wide/metadata/07ee5ccb-cf4a-4411-a8cc-bc8daeb96c55-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/manifest_entries_wide/metadata/07ee5ccb-cf4a-4411-a8cc-bc8daeb96c55-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/manifest_entries_wide/metadata/snap-6799354693338723293-1-07ee5ccb-cf4a-4411-a8cc-bc8daeb96c55.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/manifest_entries_wide/metadata/snap-6799354693338723293-1-07ee5ccb-cf4a-4411-a8cc-bc8daeb96c55.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/manifest_files/metadata/7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/manifest_files/metadata/7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/manifest_files/metadata/snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/manifest_files/metadata/snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/schemas/metadata/53bc87de-6fcc-4115-baa5-74da0dfd9641-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/schemas/metadata/53bc87de-6fcc-4115-baa5-74da0dfd9641-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/schemas/metadata/snap-6742135830728029642-1-53bc87de-6fcc-4115-baa5-74da0dfd9641.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/schemas/metadata/snap-6742135830728029642-1-53bc87de-6fcc-4115-baa5-74da0dfd9641.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/1eb8deb9-1ab5-4d56-8d1e-727779d4f1f0-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/1eb8deb9-1ab5-4d56-8d1e-727779d4f1f0-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/334252e9-a797-4fab-ba7e-23f319398888-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/334252e9-a797-4fab-ba7e-23f319398888-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/48a01163-355f-490b-96a9-0d851f5ef11d-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/48a01163-355f-490b-96a9-0d851f5ef11d-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/4dd7c847-2504-41a9-abfb-d181836d6686-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/4dd7c847-2504-41a9-abfb-d181836d6686-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/569d979d-9a8f-4142-8f14-3aa744d371f8-m1.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/569d979d-9a8f-4142-8f14-3aa744d371f8-m1.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/5db8f3d2-9617-476a-8970-60c73823afc5-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/5db8f3d2-9617-476a-8970-60c73823afc5-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/662fc099-55bd-4cb0-9749-0658b9535624-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/662fc099-55bd-4cb0-9749-0658b9535624-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/a868eb67-3850-4aea-834e-7ed3b2b04df1-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/a868eb67-3850-4aea-834e-7ed3b2b04df1-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/b112172a-2ee1-499e-bcf4-01cae6f78b78-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/b112172a-2ee1-499e-bcf4-01cae6f78b78-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/b648f4bc-c4d1-42fc-8e39-9fb0951fd690-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/b648f4bc-c4d1-42fc-8e39-9fb0951fd690-m0.avro -------------------------------------------------------------------------------- /tests/meta_perf/warehouse/performance/snapshots/metadata/snap-7784024162103807679-1-5db8f3d2-9617-476a-8970-60c73823afc5.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/meta_perf/warehouse/performance/snapshots/metadata/snap-7784024162103807679-1-5db8f3d2-9617-476a-8970-60c73823afc5.avro -------------------------------------------------------------------------------- /tests/metadata/02ce7cec-31fd-4de7-8811-02ce7cec44a9-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/02ce7cec-31fd-4de7-8811-02ce7cec44a9-m0.avro -------------------------------------------------------------------------------- /tests/metadata/3ccdc97b-a744-4930-98c7-4abc66c26625-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/3ccdc97b-a744-4930-98c7-4abc66c26625-m0.avro -------------------------------------------------------------------------------- /tests/metadata/41f34bc8-eedf-4573-96b0-10c04e7c84c4-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/41f34bc8-eedf-4573-96b0-10c04e7c84c4-m0.avro -------------------------------------------------------------------------------- /tests/metadata/66ee5e5e-f6c6-47a5-a609-1a439232d1ea-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/66ee5e5e-f6c6-47a5-a609-1a439232d1ea-m0.avro -------------------------------------------------------------------------------- /tests/metadata/7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro -------------------------------------------------------------------------------- /tests/metadata/broken1.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/broken1.avro -------------------------------------------------------------------------------- /tests/metadata/broken1.metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "format-version" : 2, 3 | "table-uu -------------------------------------------------------------------------------- /tests/metadata/broken2.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/broken2.avro -------------------------------------------------------------------------------- /tests/metadata/broken2.metadata.json: -------------------------------------------------------------------------------- 1 | amp-ms" : 1713951998911, 2 | "metadata-file" : "s3://warehouse/gperov/test/metadata/00005-176a8e24-c5e2-48a8-884b-b0186a1c86fe.metadata.json" 3 | } ] 4 | } -------------------------------------------------------------------------------- /tests/metadata/empty.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/empty.avro -------------------------------------------------------------------------------- /tests/metadata/empty.metadata.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/empty.metadata.json -------------------------------------------------------------------------------- /tests/metadata/snap-154324552338474173-1-66ee5e5e-f6c6-47a5-a609-1a439232d1ea.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/snap-154324552338474173-1-66ee5e5e-f6c6-47a5-a609-1a439232d1ea.avro -------------------------------------------------------------------------------- /tests/metadata/snap-1638951453256129678-1-eea762e4-1b7a-4717-b361-eae34da54fd4.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/snap-1638951453256129678-1-eea762e4-1b7a-4717-b361-eae34da54fd4.avro -------------------------------------------------------------------------------- /tests/metadata/snap-293191470325800019-1-3ccdc97b-a744-4930-98c7-4abc66c26625.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/snap-293191470325800019-1-3ccdc97b-a744-4930-98c7-4abc66c26625.avro -------------------------------------------------------------------------------- /tests/metadata/snap-2dfe8bdb-200b-1006-9bb5-0242ac110002.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/snap-2dfe8bdb-200b-1006-9bb5-0242ac110002.avro -------------------------------------------------------------------------------- /tests/metadata/snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro -------------------------------------------------------------------------------- /tests/metadata/snap-7558608030923099867-1-41f34bc8-eedf-4573-96b0-10c04e7c84c4.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/metadata/snap-7558608030923099867-1-41f34bc8-eedf-4573-96b0-10c04e7c84c4.avro -------------------------------------------------------------------------------- /tests/rest/setup/init_nessie.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | nohup java -jar /nessie/nessie-quarkus-0.103.0-runner.jar > nessie.log 2>&1 & 4 | sleep 20 5 | -------------------------------------------------------------------------------- /tests/rest/setup/upload_table.py: -------------------------------------------------------------------------------- 1 | import pynessie 2 | 3 | client = pynessie.init(config_dict={ 4 | 'endpoint': 'http://0.0.0.0:19120/api/v1', 5 | 'verify': True, 6 | 'default_branch': 'main', 7 | }) 8 | 9 | main_branch = client.get_reference("main") 10 | main_hash = main_branch.hash_ 11 | 12 | 13 | namespace = pynessie.model.Namespace(id=None, elements=["default"]) 14 | namespace_key = pynessie.model.ContentKey.from_path_string('default') 15 | put_operation = pynessie.model.Put(key=namespace_key, content=namespace) 16 | client.commit( 17 | "main", 18 | main_hash, 19 | None, 20 | None, 21 | put_operation 22 | ) 23 | 24 | table_key = pynessie.model.ContentKey.from_path_string('default.test') 25 | 26 | iceberg_table = pynessie.model.IcebergTable( 27 | id=None, 28 | metadata_location="file:///some_snap", 29 | snapshot_id=1, 30 | schema_id=1, 31 | spec_id=1, 32 | sort_order_id=0 33 | ) 34 | 35 | put_operation = pynessie.model.Put(key=table_key, content=iceberg_table) 36 | client.commit( 37 | "main", 38 | main_hash, 39 | None, 40 | None, 41 | put_operation 42 | ) 43 | -------------------------------------------------------------------------------- /tests/rest/test_rest_catalog.cpp: -------------------------------------------------------------------------------- 1 | #include "gtest/gtest.h" 2 | #include "iceberg/catalog.h" 3 | #include "iceberg/schema.h" 4 | #include "iceberg/table_metadata.h" 5 | #include "iceberg/tea_rest_catalog.h" 6 | 7 | namespace iceberg { 8 | 9 | TEST(Catalog, REST) { 10 | auto rest_catalog = ice_tea::RESTCatalog("127.0.0.1", 19120); 11 | 12 | auto table_identifier = catalog::TableIdentifier{.db = "default", .name = "test"}; 13 | auto fake_table_identifier = catalog::TableIdentifier{.db = "default", .name = "fake"}; 14 | 15 | EXPECT_TRUE(rest_catalog.TableExists(table_identifier)); 16 | EXPECT_FALSE(rest_catalog.TableExists(fake_table_identifier)); 17 | 18 | EXPECT_EQ(rest_catalog.LoadTable(table_identifier)->Location(), "file:///some_snap"); 19 | } 20 | 21 | } // namespace iceberg 22 | -------------------------------------------------------------------------------- /tests/run_tests.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "arrow/filesystem/s3fs.h" 4 | #include "iceberg/catalog.h" 5 | 6 | namespace iceberg { 7 | 8 | catalog::TableIdentifier GetTestTable() { 9 | catalog::TableIdentifier table_identifier{.db = "gperov", .name = "test"}; 10 | if (auto* db = getenv("TEST_DB")) { 11 | table_identifier.db = db; 12 | } 13 | if (auto* table = getenv("TEST_TABLE")) { 14 | table_identifier.name = table; 15 | } 16 | return table_identifier; 17 | } 18 | 19 | } // namespace iceberg 20 | 21 | int main(int argc, char** argv) { 22 | ::testing::InitGoogleTest(&argc, argv); 23 | arrow::fs::S3GlobalOptions global_options{}; 24 | global_options.log_level = arrow::fs::S3LogLevel::Fatal; 25 | if (auto status = arrow::fs::InitializeS3(global_options); !status.ok()) { 26 | std::cerr << "Failed to initialize S3: " << status.message() << std::endl; 27 | return 1; 28 | } 29 | auto result = RUN_ALL_TESTS(); 30 | if (auto status = arrow::fs::FinalizeS3(); !status.ok()) { 31 | std::cerr << "Failed to finalize S3: " << status.message() << std::endl; 32 | return 1; 33 | } 34 | return result; 35 | } 36 | -------------------------------------------------------------------------------- /tests/snapshots/data/00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/snapshots/data/00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/bucket_partitioning/data/col_int_bucket=0/col_long_bucket=0/col_decimal_bucket=3/col_date_bucket=2/col_time_bucket=2/col_timestamp_bucket=99/col_timestamptz_bucket=75/col_string_bucket=13/col_uuid_bucket=5/col_varbinary_bucket=724/20250307_163052_00008_sdejt-d3a59669-ce58-4006-b445-2f83ff3e0398.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/bucket_partitioning/data/col_int_bucket=0/col_long_bucket=0/col_decimal_bucket=3/col_date_bucket=2/col_time_bucket=2/col_timestamp_bucket=99/col_timestamptz_bucket=75/col_string_bucket=13/col_uuid_bucket=5/col_varbinary_bucket=724/20250307_163052_00008_sdejt-d3a59669-ce58-4006-b445-2f83ff3e0398.parquet -------------------------------------------------------------------------------- /tests/tables/bucket_partitioning/metadata/0ffce867-cc54-49f8-ac74-c89fc147015d-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/bucket_partitioning/metadata/0ffce867-cc54-49f8-ac74-c89fc147015d-m0.avro -------------------------------------------------------------------------------- /tests/tables/bucket_partitioning/metadata/20250307_163052_00008_sdejt-7eed864b-4a77-4ab0-b8a5-712146bcd8ac.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/bucket_partitioning/metadata/20250307_163052_00008_sdejt-7eed864b-4a77-4ab0-b8a5-712146bcd8ac.stats -------------------------------------------------------------------------------- /tests/tables/bucket_partitioning/metadata/snap-8499397478161915471-1-0ffce867-cc54-49f8-ac74-c89fc147015d.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/bucket_partitioning/metadata/snap-8499397478161915471-1-0ffce867-cc54-49f8-ac74-c89fc147015d.avro -------------------------------------------------------------------------------- /tests/tables/bucket_partitioning/metadata/snap-8928121299234260333-1-c5e0a865-4a76-41b8-a80c-ba21dbea7714.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/bucket_partitioning/metadata/snap-8928121299234260333-1-c5e0a865-4a76-41b8-a80c-ba21dbea7714.avro -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 471 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.day_timestamptz_partitioning (c1 INTEGER, c2 TIMESTAMP(6) WITH TIME ZONE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['day(c2)'], 8 | location = 's3a://warehouse/day_timestamptz_partitioning' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.day_timestamptz_partitioning 13 | VALUES 14 | (1, cast('2025-03-03 23:00:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 15 | (2, cast('2024-03-03 23:52:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 16 | (3, null, double '0.0'); 17 | -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/data/c2_day=2024-03-03/20250313_203214_00002_z8hj2-4bfdd683-3541-4dfe-a172-0cbfcd4ca917.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/day_timestamptz_partitioning/data/c2_day=2024-03-03/20250313_203214_00002_z8hj2-4bfdd683-3541-4dfe-a172-0cbfcd4ca917.parquet -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/data/c2_day=2025-03-03/20250313_203214_00002_z8hj2-7c70e9f3-28ad-48b4-9c6a-199c07392c87.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/day_timestamptz_partitioning/data/c2_day=2025-03-03/20250313_203214_00002_z8hj2-7c70e9f3-28ad-48b4-9c6a-199c07392c87.parquet -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/data/c2_day=null/20250313_203214_00002_z8hj2-d9b28a80-295f-4f3b-b609-3a509dc2bc88.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/day_timestamptz_partitioning/data/c2_day=null/20250313_203214_00002_z8hj2-d9b28a80-295f-4f3b-b609-3a509dc2bc88.parquet -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/metadata/20250313_203214_00002_z8hj2-a974b6cb-63a2-4082-941e-8e3590c5f3aa.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/day_timestamptz_partitioning/metadata/20250313_203214_00002_z8hj2-a974b6cb-63a2-4082-941e-8e3590c5f3aa.stats -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/metadata/50c451b7-68a3-45d5-924a-8d655175c051-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/day_timestamptz_partitioning/metadata/50c451b7-68a3-45d5-924a-8d655175c051-m0.avro -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/metadata/snap-1944506328799061399-1-1ee79e78-b927-4b2c-9a07-8f8dc0c8d691.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/day_timestamptz_partitioning/metadata/snap-1944506328799061399-1-1ee79e78-b927-4b2c-9a07-8f8dc0c8d691.avro -------------------------------------------------------------------------------- /tests/tables/day_timestamptz_partitioning/metadata/snap-8652648222487599862-1-50c451b7-68a3-45d5-924a-8d655175c051.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/day_timestamptz_partitioning/metadata/snap-8652648222487599862-1-50c451b7-68a3-45d5-924a-8d655175c051.avro -------------------------------------------------------------------------------- /tests/tables/decimal_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 471 2 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 3 | 4 | CREATE TABLE warehouse.example_schema.decimal_partitioning ( 5 | col_decimal_9_2 DECIMAL(9, 2), 6 | col_decimal_18_2 DECIMAL(18, 2), 7 | col_decimal_19_2 DECIMAL(19, 2), 8 | col_decimal_38_2 DECIMAL(38, 2) 9 | ) WITH ( 10 | format = 'PARQUET', 11 | partitioning = ARRAY ['col_decimal_9_2', 'col_decimal_18_2', 'col_decimal_19_2', 'col_decimal_38_2'], 12 | location = 's3a://warehouse/decimal_partitioning' 13 | ); 14 | 15 | INSERT INTO 16 | warehouse.example_schema.decimal_partitioning 17 | VALUES 18 | ( 19 | cast(3.0 AS DECIMAL(9, 2)), 20 | cast(-5.0 AS DECIMAL(18, 2)), 21 | cast(0.0 AS DECIMAL(19, 2)), 22 | cast(-0.0 AS DECIMAL(38, 2)) 23 | ); -------------------------------------------------------------------------------- /tests/tables/decimal_partitioning/data/col_decimal_9_2=3.00/col_decimal_18_2=-5.00/col_decimal_19_2=0.00/col_decimal_38_2=0.00/20250308_001617_00002_sdejt-955cdfa3-7763-48fc-87a2-ce832628f641.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/decimal_partitioning/data/col_decimal_9_2=3.00/col_decimal_18_2=-5.00/col_decimal_19_2=0.00/col_decimal_38_2=0.00/20250308_001617_00002_sdejt-955cdfa3-7763-48fc-87a2-ce832628f641.parquet -------------------------------------------------------------------------------- /tests/tables/decimal_partitioning/metadata/20250308_001617_00002_sdejt-806e1097-34de-4022-b75d-08ce69cb34c6.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/decimal_partitioning/metadata/20250308_001617_00002_sdejt-806e1097-34de-4022-b75d-08ce69cb34c6.stats -------------------------------------------------------------------------------- /tests/tables/decimal_partitioning/metadata/20d87eae-b5a0-4f44-b543-9abfbd448b70-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/decimal_partitioning/metadata/20d87eae-b5a0-4f44-b543-9abfbd448b70-m0.avro -------------------------------------------------------------------------------- /tests/tables/decimal_partitioning/metadata/snap-1870322215060526703-1-20d87eae-b5a0-4f44-b543-9abfbd448b70.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/decimal_partitioning/metadata/snap-1870322215060526703-1-20d87eae-b5a0-4f44-b543-9abfbd448b70.avro -------------------------------------------------------------------------------- /tests/tables/decimal_partitioning/metadata/snap-7513916147151367933-1-c00344c3-11f1-4a5b-aa43-f84d53b48b8f.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/decimal_partitioning/metadata/snap-7513916147151367933-1-c00344c3-11f1-4a5b-aa43-f84d53b48b8f.avro -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Spark 3.5.2 2 | 3 | CREATE DATABASE IF NOT EXISTS my_catalog 4 | 5 | CREATE TABLE my_catalog.deletion_vector.deletion_vector_sample ( 6 | id BIGINT, 7 | name STRING, 8 | ts TIMESTAMP 9 | ) USING iceberg 10 | TBLPROPERTIES ( 11 | 'format-version'='3', 12 | 'write.delete.mode'='merge-on-read', 13 | 'write.update.mode'='merge-on-read' 14 | ); 15 | 16 | INSERT INTO my_catalog.deletion_vector.deletion_vector_sample 17 | SELECT 18 | id, 19 | CONCAT('Name_', CAST(id AS STRING)) AS name, 20 | CURRENT_TIMESTAMP() AS ts 21 | FROM ( 22 | SELECT explode(sequence(1, 10)) AS id 23 | ); 24 | 25 | DELETE FROM my_catalog.deletion_vector.deletion_vector_sample WHERE id % 2 = 0; 26 | -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/data/00000-0-93fc73ad-0331-4e55-bf0b-dfb27906f0bd-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/deletion_vector/deletion_vector_sample/data/00000-0-93fc73ad-0331-4e55-bf0b-dfb27906f0bd-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/data/00000-2-766d0c1d-4652-4a59-9721-58fb02898559-00001-deletes.puffin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/deletion_vector/deletion_vector_sample/data/00000-2-766d0c1d-4652-4a59-9721-58fb02898559-00001-deletes.puffin -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/metadata/8dd06abb-849d-4422-9515-8e68f1bafea1-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/deletion_vector/deletion_vector_sample/metadata/8dd06abb-849d-4422-9515-8e68f1bafea1-m0.avro -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/metadata/a2b5890a-4c9d-427f-9434-b7100abddc2f-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/deletion_vector/deletion_vector_sample/metadata/a2b5890a-4c9d-427f-9434-b7100abddc2f-m0.avro -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/metadata/snap-4657151992128388721-1-8dd06abb-849d-4422-9515-8e68f1bafea1.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/deletion_vector/deletion_vector_sample/metadata/snap-4657151992128388721-1-8dd06abb-849d-4422-9515-8e68f1bafea1.avro -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/metadata/snap-8122216072706851001-1-a2b5890a-4c9d-427f-9434-b7100abddc2f.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/deletion_vector/deletion_vector_sample/metadata/snap-8122216072706851001-1-a2b5890a-4c9d-427f-9434-b7100abddc2f.avro -------------------------------------------------------------------------------- /tests/tables/deletion_vector/deletion_vector_sample/metadata/version-hint.text: -------------------------------------------------------------------------------- 1 | 3 -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 471 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.hour_timestamptz_partitioning (c1 INTEGER, c2 TIMESTAMP(6) WITH TIME ZONE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['hour(c2)'], 8 | location = 's3a://warehouse/hour_timestamptz_partitioning' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.hour_timestamptz_partitioning 13 | VALUES 14 | (1, cast('2025-03-03 23:00:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 15 | (2, cast('2024-03-03 23:52:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 16 | (3, null, double '0.0'); 17 | -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/data/c2_hour=2024-03-03-23/20250313_204716_00010_z8hj2-390c9791-2ac1-4f16-80fd-ff7e4c7ef3ec.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/hour_timestamptz_partitioning/data/c2_hour=2024-03-03-23/20250313_204716_00010_z8hj2-390c9791-2ac1-4f16-80fd-ff7e4c7ef3ec.parquet -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/data/c2_hour=2025-03-03-23/20250313_204716_00010_z8hj2-8f33ea30-2e2f-4bf0-9d18-293f3c162123.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/hour_timestamptz_partitioning/data/c2_hour=2025-03-03-23/20250313_204716_00010_z8hj2-8f33ea30-2e2f-4bf0-9d18-293f3c162123.parquet -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/data/c2_hour=null/20250313_204716_00010_z8hj2-a609ed24-aae4-4954-8587-b2ef0c09c60c.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/hour_timestamptz_partitioning/data/c2_hour=null/20250313_204716_00010_z8hj2-a609ed24-aae4-4954-8587-b2ef0c09c60c.parquet -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/metadata/20250313_204716_00010_z8hj2-1d4d4968-a121-4f78-8a72-ca3efd6b1541.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/hour_timestamptz_partitioning/metadata/20250313_204716_00010_z8hj2-1d4d4968-a121-4f78-8a72-ca3efd6b1541.stats -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/metadata/dd2a408a-3d27-4ab0-b560-839ff3265ac8-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/hour_timestamptz_partitioning/metadata/dd2a408a-3d27-4ab0-b560-839ff3265ac8-m0.avro -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/metadata/snap-2609880227259799936-1-dd2a408a-3d27-4ab0-b560-839ff3265ac8.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/hour_timestamptz_partitioning/metadata/snap-2609880227259799936-1-dd2a408a-3d27-4ab0-b560-839ff3265ac8.avro -------------------------------------------------------------------------------- /tests/tables/hour_timestamptz_partitioning/metadata/snap-4359693665907534249-1-cd736996-684a-42d8-8052-edf22a4315ba.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/hour_timestamptz_partitioning/metadata/snap-4359693665907534249-1-cd736996-684a-42d8-8052-edf22a4315ba.avro -------------------------------------------------------------------------------- /tests/tables/identity_partitioning/data/col_bool=false/col_int=1/col_long=2/col_float=2.25/col_double=2.375/col_decimal=3.00/col_date=2025-03-03/col_time=17%3A00/col_timestamp=2025-03-03T00%3A00%3A00/col_timestamptz=2025-03-03T00%3A00%3A00%2B00%3A00/col_string=some-string/col_uuid=12151fd2-7586-11e9-8f9e-2a86e4085a59/col_varbinary=c29tZS12YXJiaW5hcnk%3D/20250307_151431_00004_sdejt-0508d88f-3117-466e-b115-7a9ebc4313b9.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/identity_partitioning/data/col_bool=false/col_int=1/col_long=2/col_float=2.25/col_double=2.375/col_decimal=3.00/col_date=2025-03-03/col_time=17%3A00/col_timestamp=2025-03-03T00%3A00%3A00/col_timestamptz=2025-03-03T00%3A00%3A00%2B00%3A00/col_string=some-string/col_uuid=12151fd2-7586-11e9-8f9e-2a86e4085a59/col_varbinary=c29tZS12YXJiaW5hcnk%3D/20250307_151431_00004_sdejt-0508d88f-3117-466e-b115-7a9ebc4313b9.parquet -------------------------------------------------------------------------------- /tests/tables/identity_partitioning/metadata/20250307_151431_00004_sdejt-6b8b03ca-5975-4f1c-a74d-374d52fe4aac.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/identity_partitioning/metadata/20250307_151431_00004_sdejt-6b8b03ca-5975-4f1c-a74d-374d52fe4aac.stats -------------------------------------------------------------------------------- /tests/tables/identity_partitioning/metadata/bfd02a62-ed9d-4ab0-83a0-992b76310fe4-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/identity_partitioning/metadata/bfd02a62-ed9d-4ab0-83a0-992b76310fe4-m0.avro -------------------------------------------------------------------------------- /tests/tables/identity_partitioning/metadata/snap-1348041121627674336-1-bfd02a62-ed9d-4ab0-83a0-992b76310fe4.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/identity_partitioning/metadata/snap-1348041121627674336-1-bfd02a62-ed9d-4ab0-83a0-992b76310fe4.avro -------------------------------------------------------------------------------- /tests/tables/identity_partitioning/metadata/snap-2926447781240171674-1-f2c698f3-c7ae-4819-8e4e-ab332b315de1.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/identity_partitioning/metadata/snap-2926447781240171674-1-f2c698f3-c7ae-4819-8e4e-ab332b315de1.avro -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 471 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.month_timestamptz_partitioning (c1 INTEGER, c2 TIMESTAMP(6) WITH TIME ZONE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['month(c2)'], 8 | location = 's3a://warehouse/month_timestamptz_partitioning' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.month_timestamptz_partitioning 13 | VALUES 14 | (1, cast('2025-03-03 23:00:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 15 | (2, cast('2024-03-03 23:52:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 16 | (3, null, double '0.0'); 17 | -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/data/c2_month=2024-03/20250313_211747_00013_z8hj2-d767dfcd-16a7-45d1-ab2c-2d89c4497e2b.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/month_timestamptz_partitioning/data/c2_month=2024-03/20250313_211747_00013_z8hj2-d767dfcd-16a7-45d1-ab2c-2d89c4497e2b.parquet -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/data/c2_month=2025-03/20250313_211747_00013_z8hj2-4067e971-5448-4141-ab05-6b1c69837da3.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/month_timestamptz_partitioning/data/c2_month=2025-03/20250313_211747_00013_z8hj2-4067e971-5448-4141-ab05-6b1c69837da3.parquet -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/data/c2_month=null/20250313_211747_00013_z8hj2-d36eef20-67f4-4cab-af25-3f0c924e2d25.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/month_timestamptz_partitioning/data/c2_month=null/20250313_211747_00013_z8hj2-d36eef20-67f4-4cab-af25-3f0c924e2d25.parquet -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/metadata/1fcf77ef-6cf3-4bdb-94a7-e06502b15dc0-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/month_timestamptz_partitioning/metadata/1fcf77ef-6cf3-4bdb-94a7-e06502b15dc0-m0.avro -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/metadata/20250313_211747_00013_z8hj2-9e461345-a57f-4f81-a642-8bdac8855323.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/month_timestamptz_partitioning/metadata/20250313_211747_00013_z8hj2-9e461345-a57f-4f81-a642-8bdac8855323.stats -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/metadata/snap-2311346262833015500-1-889b631f-d6ef-4c9b-9f44-4119d724cf02.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/month_timestamptz_partitioning/metadata/snap-2311346262833015500-1-889b631f-d6ef-4c9b-9f44-4119d724cf02.avro -------------------------------------------------------------------------------- /tests/tables/month_timestamptz_partitioning/metadata/snap-7681461458663170398-1-1fcf77ef-6cf3-4bdb-94a7-e06502b15dc0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/month_timestamptz_partitioning/metadata/snap-7681461458663170398-1-1fcf77ef-6cf3-4bdb-94a7-e06502b15dc0.avro -------------------------------------------------------------------------------- /tests/tables/no_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 408 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.no_partitioning (c1 INTEGER, c2 DATE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | location = 's3a://warehouse/no_partitioning' 8 | ); 9 | 10 | INSERT INTO 11 | warehouse.example_schema.no_partitioning 12 | VALUES 13 | (1, date '2025-03-03', double '0.0'), 14 | (2, date '2025-03-03', double '-1.0'), 15 | (1, date '2025-03-04', double '1.5'), 16 | (2, date '2025-03-04', double '42'), 17 | (1, date '2025-03-05', double '17'), 18 | (1, date '2025-03-02', double '-50'); 19 | -------------------------------------------------------------------------------- /tests/tables/no_partitioning/data/20250310_161728_00004_i9wr4-40df733f-a909-4d83-8516-ac48ad8965c0.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/no_partitioning/data/20250310_161728_00004_i9wr4-40df733f-a909-4d83-8516-ac48ad8965c0.parquet -------------------------------------------------------------------------------- /tests/tables/no_partitioning/metadata/20250310_161728_00004_i9wr4-b7251c28-d52e-4826-8ca6-7dead651c5a1.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/no_partitioning/metadata/20250310_161728_00004_i9wr4-b7251c28-d52e-4826-8ca6-7dead651c5a1.stats -------------------------------------------------------------------------------- /tests/tables/no_partitioning/metadata/bb0c25c8-adcf-4b05-8d6d-142300e83cc8-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/no_partitioning/metadata/bb0c25c8-adcf-4b05-8d6d-142300e83cc8-m0.avro -------------------------------------------------------------------------------- /tests/tables/no_partitioning/metadata/snap-4752200045239310452-1-115f159d-0e8c-4af2-8d7e-9fd6540236e5.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/no_partitioning/metadata/snap-4752200045239310452-1-115f159d-0e8c-4af2-8d7e-9fd6540236e5.avro -------------------------------------------------------------------------------- /tests/tables/no_partitioning/metadata/snap-6247215453669530946-1-bb0c25c8-adcf-4b05-8d6d-142300e83cc8.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/no_partitioning/metadata/snap-6247215453669530946-1-bb0c25c8-adcf-4b05-8d6d-142300e83cc8.avro -------------------------------------------------------------------------------- /tests/tables/partition_evolution/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 408 2 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 3 | 4 | CREATE TABLE warehouse.example_schema.partition_evolution (c1 INTEGER, c2 DATE, c3 DOUBLE) WITH ( 5 | format = 'PARQUET', 6 | partitioning = ARRAY ['c1', 'c2'], 7 | location = 's3a://warehouse/partition_evolution' 8 | ); 9 | 10 | INSERT INTO 11 | warehouse.example_schema.partition_evolution 12 | VALUES 13 | (1, date '2025-03-03', double '0.0'), 14 | (2, date '2025-03-03', double '-1.0'), 15 | (1, date '2025-03-04', double '1.5'), 16 | (2, date '2025-03-04', double '42'), 17 | (1, date '2025-03-05', double '17'), 18 | (1, date '2025-03-02', double '-50'); 19 | 20 | ALTER TABLE 21 | warehouse.example_schema.partition_evolution 22 | SET 23 | PROPERTIES partitioning = ARRAY ['c3']; 24 | 25 | INSERT INTO 26 | warehouse.example_schema.partition_evolution 27 | VALUES 28 | (3, date '2025-03-11', double '2.0'); 29 | -------------------------------------------------------------------------------- /tests/tables/partition_evolution/data/c1=1/c2=2025-03-02/20250311_095424_00001_jx9gc-5ee68e7a-8194-4bed-ab99-76751223b13d.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/data/c1=1/c2=2025-03-02/20250311_095424_00001_jx9gc-5ee68e7a-8194-4bed-ab99-76751223b13d.parquet -------------------------------------------------------------------------------- /tests/tables/partition_evolution/data/c1=1/c2=2025-03-03/20250311_095424_00001_jx9gc-96ef0a9a-8769-4932-b6dd-4d4f287b887d.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/data/c1=1/c2=2025-03-03/20250311_095424_00001_jx9gc-96ef0a9a-8769-4932-b6dd-4d4f287b887d.parquet -------------------------------------------------------------------------------- /tests/tables/partition_evolution/data/c1=1/c2=2025-03-04/20250311_095424_00001_jx9gc-bd980f5f-8829-4479-9ffb-6e932e8bd749.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/data/c1=1/c2=2025-03-04/20250311_095424_00001_jx9gc-bd980f5f-8829-4479-9ffb-6e932e8bd749.parquet -------------------------------------------------------------------------------- /tests/tables/partition_evolution/data/c1=1/c2=2025-03-05/20250311_095424_00001_jx9gc-b69d185a-acfb-47ca-af4c-326129ce9c4a.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/data/c1=1/c2=2025-03-05/20250311_095424_00001_jx9gc-b69d185a-acfb-47ca-af4c-326129ce9c4a.parquet -------------------------------------------------------------------------------- /tests/tables/partition_evolution/data/c1=2/c2=2025-03-03/20250311_095424_00001_jx9gc-779adb6b-fa28-4505-ac6e-5b1e4ba6372d.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/data/c1=2/c2=2025-03-03/20250311_095424_00001_jx9gc-779adb6b-fa28-4505-ac6e-5b1e4ba6372d.parquet -------------------------------------------------------------------------------- /tests/tables/partition_evolution/data/c1=2/c2=2025-03-04/20250311_095424_00001_jx9gc-0028c817-71c7-441e-94ce-388913690ea1.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/data/c1=2/c2=2025-03-04/20250311_095424_00001_jx9gc-0028c817-71c7-441e-94ce-388913690ea1.parquet -------------------------------------------------------------------------------- /tests/tables/partition_evolution/data/c3=2.0/20250311_095902_00004_jx9gc-8917792a-57e7-46eb-9a6a-204323cc05f0.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/data/c3=2.0/20250311_095902_00004_jx9gc-8917792a-57e7-46eb-9a6a-204323cc05f0.parquet -------------------------------------------------------------------------------- /tests/tables/partition_evolution/metadata/20250311_095424_00001_jx9gc-fc9df7eb-f780-48ba-93ec-c32bdcc1b2fa.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/metadata/20250311_095424_00001_jx9gc-fc9df7eb-f780-48ba-93ec-c32bdcc1b2fa.stats -------------------------------------------------------------------------------- /tests/tables/partition_evolution/metadata/20250311_095902_00004_jx9gc-ba26b6f6-7cb7-4cbd-b4f9-7f0acde121f6.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/metadata/20250311_095902_00004_jx9gc-ba26b6f6-7cb7-4cbd-b4f9-7f0acde121f6.stats -------------------------------------------------------------------------------- /tests/tables/partition_evolution/metadata/4d7915f9-6916-46a6-8d60-15f71252c17e-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/metadata/4d7915f9-6916-46a6-8d60-15f71252c17e-m0.avro -------------------------------------------------------------------------------- /tests/tables/partition_evolution/metadata/8a56b416-7620-4255-938a-a003682bc394-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/metadata/8a56b416-7620-4255-938a-a003682bc394-m0.avro -------------------------------------------------------------------------------- /tests/tables/partition_evolution/metadata/snap-240252726469419150-1-8a56b416-7620-4255-938a-a003682bc394.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/metadata/snap-240252726469419150-1-8a56b416-7620-4255-938a-a003682bc394.avro -------------------------------------------------------------------------------- /tests/tables/partition_evolution/metadata/snap-5032402648663831776-1-c9f2cb47-0a40-4a82-8e40-4a7432dceaf0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/metadata/snap-5032402648663831776-1-c9f2cb47-0a40-4a82-8e40-4a7432dceaf0.avro -------------------------------------------------------------------------------- /tests/tables/partition_evolution/metadata/snap-6593870062034330780-1-4d7915f9-6916-46a6-8d60-15f71252c17e.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partition_evolution/metadata/snap-6593870062034330780-1-4d7915f9-6916-46a6-8d60-15f71252c17e.avro -------------------------------------------------------------------------------- /tests/tables/partitioned_table/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 408 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.partitioned_table (c1 INTEGER, c2 DATE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['c1', 'c2'], 8 | location = 's3a://warehouse/partitioned_table' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.partitioned_table 13 | VALUES 14 | (1, date '2025-03-03', double '0.0'), 15 | (2, date '2025-03-03', double '-1.0'), 16 | (1, date '2025-03-04', double '1.5'), 17 | (2, date '2025-03-04', double '42'), 18 | (1, date '2025-03-05', double '17'), 19 | (1, date '2025-03-02', double '-50'); 20 | -------------------------------------------------------------------------------- /tests/tables/partitioned_table/data/c1=1/c2=2025-03-02/20250303_133349_00017_es78y-f3faefe9-3633-4957-b4b0-de27ebaba18f.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/data/c1=1/c2=2025-03-02/20250303_133349_00017_es78y-f3faefe9-3633-4957-b4b0-de27ebaba18f.parquet -------------------------------------------------------------------------------- /tests/tables/partitioned_table/data/c1=1/c2=2025-03-03/20250303_133349_00017_es78y-6dbfa92b-ac02-436c-9931-ed6ac0b42834.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/data/c1=1/c2=2025-03-03/20250303_133349_00017_es78y-6dbfa92b-ac02-436c-9931-ed6ac0b42834.parquet -------------------------------------------------------------------------------- /tests/tables/partitioned_table/data/c1=1/c2=2025-03-04/20250303_133349_00017_es78y-1c514831-ecee-48f8-9c10-a525bb28dcd9.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/data/c1=1/c2=2025-03-04/20250303_133349_00017_es78y-1c514831-ecee-48f8-9c10-a525bb28dcd9.parquet -------------------------------------------------------------------------------- /tests/tables/partitioned_table/data/c1=1/c2=2025-03-05/20250303_133349_00017_es78y-6c0269c5-388d-42eb-a43b-c0deab035d2c.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/data/c1=1/c2=2025-03-05/20250303_133349_00017_es78y-6c0269c5-388d-42eb-a43b-c0deab035d2c.parquet -------------------------------------------------------------------------------- /tests/tables/partitioned_table/data/c1=2/c2=2025-03-03/20250303_133349_00017_es78y-d11eae4b-7152-4f09-a044-0920a934ec62.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/data/c1=2/c2=2025-03-03/20250303_133349_00017_es78y-d11eae4b-7152-4f09-a044-0920a934ec62.parquet -------------------------------------------------------------------------------- /tests/tables/partitioned_table/data/c1=2/c2=2025-03-04/20250303_133349_00017_es78y-ab06c0f6-2a0b-46c9-b42e-dd27880eb385.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/data/c1=2/c2=2025-03-04/20250303_133349_00017_es78y-ab06c0f6-2a0b-46c9-b42e-dd27880eb385.parquet -------------------------------------------------------------------------------- /tests/tables/partitioned_table/metadata/8968fbb0-57cf-40b0-a725-7d147f07b4b8-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/metadata/8968fbb0-57cf-40b0-a725-7d147f07b4b8-m0.avro -------------------------------------------------------------------------------- /tests/tables/partitioned_table/metadata/snap-3829439561253574382-1-8968fbb0-57cf-40b0-a725-7d147f07b4b8.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/metadata/snap-3829439561253574382-1-8968fbb0-57cf-40b0-a725-7d147f07b4b8.avro -------------------------------------------------------------------------------- /tests/tables/partitioned_table/metadata/snap-8956261480252155444-1-d60b441c-d72c-4c7b-9050-c0af13eb3e2f.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioned_table/metadata/snap-8956261480252155444-1-d60b441c-d72c-4c7b-9050-c0af13eb3e2f.avro -------------------------------------------------------------------------------- /tests/tables/partitioned_table_with_missing_spec/create.md: -------------------------------------------------------------------------------- 1 | * Copy partitioned_table 2 | * Change partition_spec field in json 3 | -------------------------------------------------------------------------------- /tests/tables/partitioned_table_with_multiple_spec/create.md: -------------------------------------------------------------------------------- 1 | * Copy partitioned_table 2 | * Change partition_spec field in json 3 | -------------------------------------------------------------------------------- /tests/tables/partitioned_table_with_void_transform/create.md: -------------------------------------------------------------------------------- 1 | * Copy partitioned_table 2 | * Change partition_spec field in json 3 | -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 471 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.partitioning_with_null_value (c1 INTEGER, c2 DATE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['c1', 'c2'], 8 | location = 's3a://warehouse/partitioning_with_null_value' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.partitioning_with_null_value 13 | VALUES 14 | (2, date '2025-03-03', double '-1.0'), 15 | (null, date '2025-03-03', double '0.0'), 16 | (1, null, double '-50'), 17 | (null, null, double '17'); 18 | -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/data/c1=1/c2=null/20250307_214706_00010_sdejt-ef49cc20-5cc5-4dac-ab60-8e4ed22773f4.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/data/c1=1/c2=null/20250307_214706_00010_sdejt-ef49cc20-5cc5-4dac-ab60-8e4ed22773f4.parquet -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/data/c1=2/c2=2025-03-03/20250307_214706_00010_sdejt-61343ed1-8a19-4193-9ca5-2f0bee74ef33.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/data/c1=2/c2=2025-03-03/20250307_214706_00010_sdejt-61343ed1-8a19-4193-9ca5-2f0bee74ef33.parquet -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/data/c1=null/c2=2025-03-03/20250307_214706_00010_sdejt-01cc7c76-20aa-45fb-9ae4-e2354a02ec43.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/data/c1=null/c2=2025-03-03/20250307_214706_00010_sdejt-01cc7c76-20aa-45fb-9ae4-e2354a02ec43.parquet -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/data/c1=null/c2=null/20250307_214706_00010_sdejt-1493f722-3cbd-4f10-b15f-a7a7ae35c60b.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/data/c1=null/c2=null/20250307_214706_00010_sdejt-1493f722-3cbd-4f10-b15f-a7a7ae35c60b.parquet -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/metadata/20250307_214706_00010_sdejt-4d3f4bbf-9710-4935-891a-95fad325f283.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/metadata/20250307_214706_00010_sdejt-4d3f4bbf-9710-4935-891a-95fad325f283.stats -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/metadata/5fdf7a4a-b0c5-465e-84a3-bed9a79cca3b-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/metadata/5fdf7a4a-b0c5-465e-84a3-bed9a79cca3b-m0.avro -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/metadata/snap-322244654253441419-1-5fdf7a4a-b0c5-465e-84a3-bed9a79cca3b.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/metadata/snap-322244654253441419-1-5fdf7a4a-b0c5-465e-84a3-bed9a79cca3b.avro -------------------------------------------------------------------------------- /tests/tables/partitioning_with_null_value/metadata/snap-90806248637524814-1-0515af81-651e-42e0-92f8-e8f55839a5ce.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/partitioning_with_null_value/metadata/snap-90806248637524814-1-0515af81-651e-42e0-92f8-e8f55839a5ce.avro -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Spark 3.5.1 fd86f85e181fc2dc0f50a096855acf83a6cc5d9c 2 | CREATE TABLE prod.db.refdeletes3 (a int, b int) USING iceberg TBLPROPERTIES( 3 | 'write.delete.mode' = 'merge-on-read', 4 | 'write.delete.granularity' = 'file', 5 | 'write.target-file-size-bytes' = 200 6 | ); 7 | 8 | INSERT INTO 9 | prod.db.refdeletes3 10 | VALUES 11 | (0, 12), 12 | (1, 123), 13 | (2, 2314), 14 | (3, 9), 15 | (4, 1292), 16 | (5, 12831), 17 | (6, 12381), 18 | (7, 123999), 19 | (8, 12318231), 20 | (9, 999), 21 | (10, 1010), 22 | (11, 11), 23 | (12, 1212), 24 | (13, 1313), 25 | (14, 91121), 26 | (15, 182222); 27 | 28 | DELETE FROM 29 | prod.db.refdeletes3 30 | WHERE 31 | a % 3 == 0; 32 | -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00000-18-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00000-18-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00001-deletes.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00001-deletes.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00002-deletes.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00002-deletes.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00003-deletes.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00003-deletes.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00004-deletes.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00004-deletes.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00005-deletes.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00005-deletes.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00006-deletes.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00000-26-3221b69e-b966-4966-b438-81696899d868-00006-deletes.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00001-19-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00001-19-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00002-20-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00002-20-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00003-21-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00003-21-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00004-22-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00004-22-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/data/00005-23-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/data/00005-23-948c0a14-fe35-48c1-a74a-494d02a6f065-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/metadata/06d9558e-cca7-431c-80b5-d0b72456a01b-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/metadata/06d9558e-cca7-431c-80b5-d0b72456a01b-m0.avro -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/metadata/7aed75a9-17aa-45dd-a68a-89831549816e-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/metadata/7aed75a9-17aa-45dd-a68a-89831549816e-m0.avro -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/metadata/snap-1699098461694364756-1-7aed75a9-17aa-45dd-a68a-89831549816e.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/metadata/snap-1699098461694364756-1-7aed75a9-17aa-45dd-a68a-89831549816e.avro -------------------------------------------------------------------------------- /tests/tables/prod/db/refdeletes3/metadata/snap-6838570461092714410-1-06d9558e-cca7-431c-80b5-d0b72456a01b.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/prod/db/refdeletes3/metadata/snap-6838570461092714410-1-06d9558e-cca7-431c-80b5-d0b72456a01b.avro -------------------------------------------------------------------------------- /tests/tables/types/all_spark_types/data/00007-7-08e6240e-b5f7-48ad-b7f0-039dc52bc563-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_spark_types/data/00007-7-08e6240e-b5f7-48ad-b7f0-039dc52bc563-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/types/all_spark_types/metadata/8a27d569-2236-4eec-adbb-e4bf66ccba3c-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_spark_types/metadata/8a27d569-2236-4eec-adbb-e4bf66ccba3c-m0.avro -------------------------------------------------------------------------------- /tests/tables/types/all_spark_types/metadata/snap-2340548317493693275-1-8a27d569-2236-4eec-adbb-e4bf66ccba3c.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_spark_types/metadata/snap-2340548317493693275-1-8a27d569-2236-4eec-adbb-e4bf66ccba3c.avro -------------------------------------------------------------------------------- /tests/tables/types/all_trino_types/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 471 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.types 4 | WITH (location = 's3a://warehouse/'); 5 | 6 | CREATE TABLE warehouse.types.all_trino_types ( 7 | id BIGINT, 8 | boolean_col BOOLEAN, 9 | integer_col INTEGER, 10 | long_col BIGINT, 11 | float_col REAL, 12 | double_col DOUBLE, 13 | decimal_col DECIMAL(18, 5), 14 | date_col DATE, 15 | time_col TIME(6), 16 | timestamp_col TIMESTAMP(6), 17 | timestamptz_col TIMESTAMP(6) WITH TIME ZONE, 18 | string_col VARCHAR, 19 | uuid_col UUID, 20 | binary_col VARBINARY, 21 | list_col ARRAY 22 | ) 23 | WITH ( 24 | format = 'PARQUET', 25 | location = 's3a://warehouse/types/all_trino_types/' 26 | ); 27 | 28 | INSERT INTO warehouse.types.all_trino_types VALUES ( 29 | 1, 30 | true, 31 | 42, 32 | 9223372036854775807, 33 | REAL '3.14', 34 | DOUBLE '2.718281828459045', 35 | DECIMAL '123456.78901', 36 | DATE '2025-04-05', 37 | TIME '12:34:56.123456', 38 | TIMESTAMP '2025-04-05 12:34:56.123456', 39 | TIMESTAMP '2025-04-05 12:34:56.123456 UTC', 40 | 'Hello Iceberg', 41 | UUID '550e8400-e29b-41d4-a716-446655440000', 42 | from_hex('DEADBEEF'), 43 | ARRAY[DOUBLE '1.1', DOUBLE '2.2', DOUBLE '3.3'] 44 | ); 45 | -------------------------------------------------------------------------------- /tests/tables/types/all_trino_types/data/20250601_201751_00003_935ws-92e43a1f-75de-42b6-87bf-85642c280237.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_trino_types/data/20250601_201751_00003_935ws-92e43a1f-75de-42b6-87bf-85642c280237.parquet -------------------------------------------------------------------------------- /tests/tables/types/all_trino_types/metadata/02c4d068-8896-4f9d-a2b6-7d74182b8a31-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_trino_types/metadata/02c4d068-8896-4f9d-a2b6-7d74182b8a31-m0.avro -------------------------------------------------------------------------------- /tests/tables/types/all_trino_types/metadata/20250601_201751_00003_935ws-c92f657f-1523-444c-b0ff-9813e5b23535.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_trino_types/metadata/20250601_201751_00003_935ws-c92f657f-1523-444c-b0ff-9813e5b23535.stats -------------------------------------------------------------------------------- /tests/tables/types/all_trino_types/metadata/snap-253637412106018159-1-7df818ce-0b9d-4fd2-b42d-ac6c2d1b28b5.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_trino_types/metadata/snap-253637412106018159-1-7df818ce-0b9d-4fd2-b42d-ac6c2d1b28b5.avro -------------------------------------------------------------------------------- /tests/tables/types/all_trino_types/metadata/snap-997544649215353036-1-02c4d068-8896-4f9d-a2b6-7d74182b8a31.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/all_trino_types/metadata/snap-997544649215353036-1-02c4d068-8896-4f9d-a2b6-7d74182b8a31.avro -------------------------------------------------------------------------------- /tests/tables/types/decimals/data/00007-7-7b64d752-fbdc-48ca-b1a2-b88f692557ff-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/decimals/data/00007-7-7b64d752-fbdc-48ca-b1a2-b88f692557ff-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/types/decimals/metadata/26d9b3c8-c8e7-4a35-ae5f-0bf7bec65734-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/decimals/metadata/26d9b3c8-c8e7-4a35-ae5f-0bf7bec65734-m0.avro -------------------------------------------------------------------------------- /tests/tables/types/decimals/metadata/snap-7566918053174708835-1-26d9b3c8-c8e7-4a35-ae5f-0bf7bec65734.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/decimals/metadata/snap-7566918053174708835-1-26d9b3c8-c8e7-4a35-ae5f-0bf7bec65734.avro -------------------------------------------------------------------------------- /tests/tables/types/unsupported_types/data/00007-7-40e35baf-8f61-4545-972a-8ef5acb5bd9c-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/unsupported_types/data/00007-7-40e35baf-8f61-4545-972a-8ef5acb5bd9c-0-00001.parquet -------------------------------------------------------------------------------- /tests/tables/types/unsupported_types/metadata/816676f1-56be-4ecd-9da8-f5ba250e6ad3-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/unsupported_types/metadata/816676f1-56be-4ecd-9da8-f5ba250e6ad3-m0.avro -------------------------------------------------------------------------------- /tests/tables/types/unsupported_types/metadata/snap-5887253152739225772-1-816676f1-56be-4ecd-9da8-f5ba250e6ad3.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/types/unsupported_types/metadata/snap-5887253152739225772-1-816676f1-56be-4ecd-9da8-f5ba250e6ad3.avro -------------------------------------------------------------------------------- /tests/tables/v_20240913/iceberg/metadata/b69dcb96-2926-47ff-95b0-14cb64f65c65-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/v_20240913/iceberg/metadata/b69dcb96-2926-47ff-95b0-14cb64f65c65-m0.avro -------------------------------------------------------------------------------- /tests/tables/v_20240913/iceberg/metadata/snap-2144761731165004944-1-b69dcb96-2926-47ff-95b0-14cb64f65c65.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/v_20240913/iceberg/metadata/snap-2144761731165004944-1-b69dcb96-2926-47ff-95b0-14cb64f65c65.avro -------------------------------------------------------------------------------- /tests/tables/v_20240913/timestamptzcol_day=2024-09-13/out_sds-erebor01tdsdatalakehouse-testlocal9201_0.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/v_20240913/timestamptzcol_day=2024-09-13/out_sds-erebor01tdsdatalakehouse-testlocal9201_0.parquet -------------------------------------------------------------------------------- /tests/tables/v_20240913/timestamptzcol_day=null/out_sds-erebor01tdsdatalakehouse-testlocal9201_0.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/v_20240913/timestamptzcol_day=null/out_sds-erebor01tdsdatalakehouse-testlocal9201_0.parquet -------------------------------------------------------------------------------- /tests/tables/v_20240913/timestamptzcol_day=null/out_sds-erebor01tdsdatalakehouse-testlocal9301_0.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/v_20240913/timestamptzcol_day=null/out_sds-erebor01tdsdatalakehouse-testlocal9301_0.parquet -------------------------------------------------------------------------------- /tests/tables/year_date_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 450 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.year_date_partitioning (c1 INTEGER, c2 DATE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['year(c2)'], 8 | location = 's3a://warehouse/year_date_partitioning' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.year_date_partitioning 13 | VALUES 14 | (1, date '2025-03-03', double '0.0'), 15 | (2, date '2024-03-03', double '0.0'), 16 | (3, date '2025-03-03', double '0.0'); 17 | -------------------------------------------------------------------------------- /tests/tables/year_date_partitioning/data/c2_year=2024/20250306_111518_00004_x2kme-db21dbbd-333a-4d38-af81-0feb3d4588e5.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_date_partitioning/data/c2_year=2024/20250306_111518_00004_x2kme-db21dbbd-333a-4d38-af81-0feb3d4588e5.parquet -------------------------------------------------------------------------------- /tests/tables/year_date_partitioning/data/c2_year=2025/20250306_111518_00004_x2kme-bc6c0ad0-b670-4fb0-994b-2e3e3637a1a2.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_date_partitioning/data/c2_year=2025/20250306_111518_00004_x2kme-bc6c0ad0-b670-4fb0-994b-2e3e3637a1a2.parquet -------------------------------------------------------------------------------- /tests/tables/year_date_partitioning/metadata/20250306_111518_00004_x2kme-d61e59c4-6f13-4be8-8d3c-bd2fa0fc81fc.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_date_partitioning/metadata/20250306_111518_00004_x2kme-d61e59c4-6f13-4be8-8d3c-bd2fa0fc81fc.stats -------------------------------------------------------------------------------- /tests/tables/year_date_partitioning/metadata/48510c7c-7855-4273-9170-5de3130502f6-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_date_partitioning/metadata/48510c7c-7855-4273-9170-5de3130502f6-m0.avro -------------------------------------------------------------------------------- /tests/tables/year_date_partitioning/metadata/snap-4795903818150143955-1-5f08f1b0-2333-494d-9cb0-280b76e6544c.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_date_partitioning/metadata/snap-4795903818150143955-1-5f08f1b0-2333-494d-9cb0-280b76e6544c.avro -------------------------------------------------------------------------------- /tests/tables/year_date_partitioning/metadata/snap-7253010310290501549-1-48510c7c-7855-4273-9170-5de3130502f6.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_date_partitioning/metadata/snap-7253010310290501549-1-48510c7c-7855-4273-9170-5de3130502f6.avro -------------------------------------------------------------------------------- /tests/tables/year_timestamp_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 450 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.year_timestamp_partitioning (c1 INTEGER, c2 TIMESTAMP(6), c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['year(c2)'], 8 | location = 's3a://warehouse/year_timestamp_partitioning' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.year_timestamp_partitioning 13 | VALUES 14 | (1, cast('2025-03-03 23:00:00' AS TIMESTAMP(6)), double '0.0'), 15 | (2, cast('2024-03-03 23:52:00' AS TIMESTAMP(6)), double '0.0'), 16 | (3, cast('2025-03-03 22:00:00' AS TIMESTAMP(6)), double '0.0'); 17 | -------------------------------------------------------------------------------- /tests/tables/year_timestamp_partitioning/data/c2_year=2024/20250306_124856_00011_x2kme-1a4e36e5-45f1-423d-916d-8f0135d42f9f.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamp_partitioning/data/c2_year=2024/20250306_124856_00011_x2kme-1a4e36e5-45f1-423d-916d-8f0135d42f9f.parquet -------------------------------------------------------------------------------- /tests/tables/year_timestamp_partitioning/data/c2_year=2025/20250306_124856_00011_x2kme-4fcd2542-d56b-48a3-a169-61ddd2144294.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamp_partitioning/data/c2_year=2025/20250306_124856_00011_x2kme-4fcd2542-d56b-48a3-a169-61ddd2144294.parquet -------------------------------------------------------------------------------- /tests/tables/year_timestamp_partitioning/metadata/20250306_124856_00011_x2kme-dd7c2ed5-cba7-4825-9b27-f9757917a9b4.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamp_partitioning/metadata/20250306_124856_00011_x2kme-dd7c2ed5-cba7-4825-9b27-f9757917a9b4.stats -------------------------------------------------------------------------------- /tests/tables/year_timestamp_partitioning/metadata/f6bc700c-2909-411e-b32c-6c3c74a447ae-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamp_partitioning/metadata/f6bc700c-2909-411e-b32c-6c3c74a447ae-m0.avro -------------------------------------------------------------------------------- /tests/tables/year_timestamp_partitioning/metadata/snap-52383582558834656-1-741fe349-b3c8-47ba-a874-2cd48b0b655a.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamp_partitioning/metadata/snap-52383582558834656-1-741fe349-b3c8-47ba-a874-2cd48b0b655a.avro -------------------------------------------------------------------------------- /tests/tables/year_timestamp_partitioning/metadata/snap-8204664518222632581-1-f6bc700c-2909-411e-b32c-6c3c74a447ae.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamp_partitioning/metadata/snap-8204664518222632581-1-f6bc700c-2909-411e-b32c-6c3c74a447ae.avro -------------------------------------------------------------------------------- /tests/tables/year_timestamptz_partitioning/create.sql: -------------------------------------------------------------------------------- 1 | -- Engine: Trino 450 2 | 3 | CREATE SCHEMA IF NOT EXISTS warehouse.example_schema WITH (location = 's3a://warehouse/example'); 4 | 5 | CREATE TABLE warehouse.example_schema.year_timestamptz_partitioning (c1 INTEGER, c2 TIMESTAMP(6) WITH TIME ZONE, c3 DOUBLE) WITH ( 6 | format = 'PARQUET', 7 | partitioning = ARRAY ['year(c2)'], 8 | location = 's3a://warehouse/year_timestamptz_partitioning' 9 | ); 10 | 11 | INSERT INTO 12 | warehouse.example_schema.year_timestamptz_partitioning 13 | VALUES 14 | (1, cast('2025-03-03 23:00:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 15 | (2, cast('2024-03-03 23:52:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'), 16 | (3, cast('2025-03-03 22:00:00' AS TIMESTAMP(6) WITH TIME ZONE), double '0.0'); 17 | -------------------------------------------------------------------------------- /tests/tables/year_timestamptz_partitioning/data/c2_year=2024/20250306_130057_00013_x2kme-f7a7dfc5-6cfd-4bb8-8b3d-9f1846a19f3e.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamptz_partitioning/data/c2_year=2024/20250306_130057_00013_x2kme-f7a7dfc5-6cfd-4bb8-8b3d-9f1846a19f3e.parquet -------------------------------------------------------------------------------- /tests/tables/year_timestamptz_partitioning/data/c2_year=2025/20250306_130057_00013_x2kme-71e7f253-9d99-409f-a473-173c935bf6bc.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamptz_partitioning/data/c2_year=2025/20250306_130057_00013_x2kme-71e7f253-9d99-409f-a473-173c935bf6bc.parquet -------------------------------------------------------------------------------- /tests/tables/year_timestamptz_partitioning/metadata/20250306_130057_00013_x2kme-cc7adc60-ff99-439e-b8cd-f4d16745d3cc.stats: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamptz_partitioning/metadata/20250306_130057_00013_x2kme-cc7adc60-ff99-439e-b8cd-f4d16745d3cc.stats -------------------------------------------------------------------------------- /tests/tables/year_timestamptz_partitioning/metadata/26969caf-f1a0-41ee-8ec9-8b442ed19ecc-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamptz_partitioning/metadata/26969caf-f1a0-41ee-8ec9-8b442ed19ecc-m0.avro -------------------------------------------------------------------------------- /tests/tables/year_timestamptz_partitioning/metadata/snap-267584900874813174-1-862659b5-df97-4ee6-ba72-aa49ab61d161.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamptz_partitioning/metadata/snap-267584900874813174-1-862659b5-df97-4ee6-ba72-aa49ab61d161.avro -------------------------------------------------------------------------------- /tests/tables/year_timestamptz_partitioning/metadata/snap-4099093144421395716-1-26969caf-f1a0-41ee-8ec9-8b442ed19ecc.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/tables/year_timestamptz_partitioning/metadata/snap-4099093144421395716-1-26969caf-f1a0-41ee-8ec9-8b442ed19ecc.avro -------------------------------------------------------------------------------- /tests/warehouse/empty/empty/metadata/00000-80089c7c-cfe3-4279-a864-ef65495ba43b.metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "format-version" : 2, 3 | "table-uuid" : "83d399af-a71f-4a31-8625-a39c7e97953e", 4 | "location" : "s3://warehouse/empty/empty", 5 | "last-sequence-number" : 0, 6 | "last-updated-ms" : 1701420818661, 7 | "last-column-id" : 2, 8 | "current-schema-id" : 0, 9 | "schemas" : [ { 10 | "type" : "struct", 11 | "schema-id" : 0, 12 | "fields" : [ { 13 | "id" : 1, 14 | "name" : "a", 15 | "required" : false, 16 | "type" : "long" 17 | }, { 18 | "id" : 2, 19 | "name" : "b", 20 | "required" : false, 21 | "type" : "long" 22 | } ] 23 | } ], 24 | "default-spec-id" : 0, 25 | "partition-specs" : [ { 26 | "spec-id" : 0, 27 | "fields" : [ ] 28 | } ], 29 | "last-partition-id" : 999, 30 | "default-sort-order-id" : 0, 31 | "sort-orders" : [ { 32 | "order-id" : 0, 33 | "fields" : [ ] 34 | } ], 35 | "properties" : { 36 | "write.format.default" : "PARQUET" 37 | }, 38 | "current-snapshot-id" : -1, 39 | "refs" : { }, 40 | "snapshots" : [ ], 41 | "statistics" : [ ], 42 | "snapshot-log" : [ ], 43 | "metadata-log" : [ ] 44 | } 45 | -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00000-13-85b2f39e-780b-4214-912b-df665f506333-00001-deletes.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00000-13-85b2f39e-780b-4214-912b-df665f506333-00001-deletes.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00000-14-ca493fad-f1d8-4554-8c76-7ce3b52aa5ba-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00000-14-ca493fad-f1d8-4554-8c76-7ce3b52aa5ba-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00000-15-70eba51c-bc41-42b7-881e-c68c0d86888c-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00000-15-70eba51c-bc41-42b7-881e-c68c0d86888c-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00000-6-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00001-7-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00001-7-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00002-8-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00002-8-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00003-9-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00003-9-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00004-10-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00004-10-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/data/00005-11-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/data/00005-11-d4e36f4d-a2c0-467d-90e7-0ef1a54e2724-0-00001.parquet -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/3ccdc97b-a744-4930-98c7-4abc66c26625-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/3ccdc97b-a744-4930-98c7-4abc66c26625-m0.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/41f34bc8-eedf-4573-96b0-10c04e7c84c4-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/41f34bc8-eedf-4573-96b0-10c04e7c84c4-m0.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/66ee5e5e-f6c6-47a5-a609-1a439232d1ea-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/66ee5e5e-f6c6-47a5-a609-1a439232d1ea-m0.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/7e6e13cb-31fd-4de7-8811-02ce7cec44a9-m0.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/snap-154324552338474173-1-66ee5e5e-f6c6-47a5-a609-1a439232d1ea.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/snap-154324552338474173-1-66ee5e5e-f6c6-47a5-a609-1a439232d1ea.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/snap-1638951453256129678-1-eea762e4-1b7a-4717-b361-eae34da54fd4.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/snap-1638951453256129678-1-eea762e4-1b7a-4717-b361-eae34da54fd4.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/snap-293191470325800019-1-3ccdc97b-a744-4930-98c7-4abc66c26625.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/snap-293191470325800019-1-3ccdc97b-a744-4930-98c7-4abc66c26625.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/snap-5231658854638766100-1-7e6e13cb-31fd-4de7-8811-02ce7cec44a9.avro -------------------------------------------------------------------------------- /tests/warehouse/gperov/test/metadata/snap-7558608030923099867-1-41f34bc8-eedf-4573-96b0-10c04e7c84c4.avro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lithium-tech/iceberg-cxx/39edc2989c2ecb685a2e2c7d571d3d08327abad0/tests/warehouse/gperov/test/metadata/snap-7558608030923099867-1-41f34bc8-eedf-4573-96b0-10c04e7c84c4.avro -------------------------------------------------------------------------------- /tests/warehouse/restrictions.json: -------------------------------------------------------------------------------- 1 | { 2 | "max_equality_deletes_count" : 1000, 3 | "max_position_deletes_count" : 1000, 4 | "max_data_files_count" : 1000, 5 | "max_delete_files_count" : 1000, 6 | 7 | "max_row_groups_per_file" : 1000, 8 | "max_array_dimensionality" : 1, 9 | 10 | "max_row_group_size_percentile" : 90, 11 | "min_row_group_size_percentile" : 10, 12 | "max_row_group_size_bytes" : 100000, 13 | "min_row_group_size_bytes" : 1, 14 | 15 | "partitioned" : ["4412d001-c6df-4adb-8854-d3b9e762440c"], 16 | "sorted" : ["4412d001-c6df-4adb-8854-d3b9e762440c"], 17 | "required_tags" : ["main"], 18 | "properties" : { 19 | "owner" : "root", 20 | "created-at" : "", 21 | "write.parquet.compression-codec" : "zstd" 22 | }, 23 | "forbidden_types" : ["binary"] 24 | } 25 | -------------------------------------------------------------------------------- /tests/warehouse/restrictionsBad.json: -------------------------------------------------------------------------------- 1 | { 2 | "max_equality_deletes_count" : 1000, 3 | "max_position_deletes_count" : 0, 4 | "max_data_files_count" : 1000, 5 | "max_delete_files_count" : 1000, 6 | 7 | "max_row_groups_per_file" : 0, 8 | "max_array_dimensionality" : 1, 9 | 10 | "max_row_group_size_percentile" : 90, 11 | "min_row_group_size_percentile" : 10, 12 | "max_row_group_size_bytes" : 100000, 13 | "min_row_group_size_bytes" : 1, 14 | 15 | "partitioned" : ["4412d001-c6df-4adb-8854-d3b9e762440c"], 16 | "sorted" : ["4412d001-c6df-4adb-8854-d3b9e762440c"], 17 | "required_tags" : ["main, chill"], 18 | "properties" : { 19 | "owner" : "root", 20 | "created-at" : "", 21 | "write.parquet.compression-codec" : "zstd", 22 | "random_name" : "random_arg" 23 | }, 24 | "forbidden_types" : ["binary, long"] 25 | } 26 | -------------------------------------------------------------------------------- /tests/warehouse/restrictionsNotFull.json: -------------------------------------------------------------------------------- 1 | { 2 | "max_equality_deletes_count" : 1000, 3 | "max_data_files_count" : 1000, 4 | "max_delete_files_count" : 1000, 5 | 6 | "max_row_groups_per_file" : 1000, 7 | "max_array_dimensionality" : 1, 8 | 9 | "max_row_group_size_percentile" : 90, 10 | "min_row_group_size_bytes" : 1, 11 | 12 | "sorted" : ["4412d001-c6df-4adb-8854-d3b9e762440c"], 13 | "properties" : { 14 | "owner" : "root", 15 | "created-at" : "", 16 | "write.parquet.compression-codec" : "zstd" 17 | }, 18 | "forbidden_types" : ["binary"] 19 | } 20 | -------------------------------------------------------------------------------- /tools/hive_metastore_server.cpp: -------------------------------------------------------------------------------- 1 | #include "tools/hive_metastore_server.h" 2 | 3 | #include 4 | 5 | int main(int argc, char** argv) { 6 | auto logger = [](const std::string& str) { std::cerr << str << std::endl; }; 7 | 8 | apache::thrift::server::TThreadedServer server = iceberg::MakeHMSServer(9090, std::move(logger)); 9 | server.run(); 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /tools/metastore_client.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | namespace ice_tea { 14 | 15 | class MetastoreClient { 16 | public: 17 | MetastoreClient(const std::string& endpoint, int16_t port) 18 | : socket_(std::make_shared(endpoint, port)), 19 | transport_(std::make_shared(socket_)), 20 | protocol_(std::make_shared(transport_)), 21 | client_(protocol_) { 22 | transport_->open(); 23 | } 24 | 25 | ~MetastoreClient() { transport_->close(); } 26 | 27 | Apache::Hadoop::Hive::ThriftHiveMetastoreClient& Get() { return client_; } 28 | 29 | private: 30 | std::shared_ptr socket_; 31 | std::shared_ptr transport_; 32 | std::shared_ptr protocol_; 33 | Apache::Hadoop::Hive::ThriftHiveMetastoreClient client_; 34 | }; 35 | 36 | } // namespace ice_tea 37 | -------------------------------------------------------------------------------- /vendor/abseil/abseil-fix-build.patch: -------------------------------------------------------------------------------- 1 | diff --git a/absl/strings/internal/str_format/extension.h b/absl/strings/internal/str_format/extension.h 2 | index 55cbb56d..9c208120 100644 3 | --- a/absl/strings/internal/str_format/extension.h 4 | +++ b/absl/strings/internal/str_format/extension.h 5 | @@ -18,6 +18,7 @@ 6 | 7 | #include 8 | 9 | +#include 10 | #include 11 | #include 12 | #include 13 | -------------------------------------------------------------------------------- /vendor/arrow/arrow-fix-snappy-empty-column.patch: -------------------------------------------------------------------------------- 1 | diff --git a/cpp/src/arrow/util/compression_snappy.cc b/cpp/src/arrow/util/compression_snappy.cc 2 | index 731fdfd13..b862c6a24 100644 3 | --- a/cpp/src/arrow/util/compression_snappy.cc 4 | +++ b/cpp/src/arrow/util/compression_snappy.cc 5 | @@ -43,6 +43,9 @@ class SnappyCodec : public Codec { 6 | public: 7 | Result Decompress(int64_t input_len, const uint8_t* input, 8 | int64_t output_buffer_len, uint8_t* output_buffer) override { 9 | + if (!input_len) { 10 | + return 0; 11 | + } 12 | size_t decompressed_size; 13 | if (!snappy::GetUncompressedLength(reinterpret_cast(input), 14 | static_cast(input_len), 15 | -------------------------------------------------------------------------------- /vendor/avro/avro.patch: -------------------------------------------------------------------------------- 1 | diff --git a/lang/c++/api/Zigzag.hh b/lang/c++/api/Zigzag.hh 2 | index bf831d24..8842a05d 100644 3 | --- a/lang/c++/api/Zigzag.hh 4 | +++ b/lang/c++/api/Zigzag.hh 5 | @@ -20,6 +20,7 @@ 6 | #define avro_Encoding_hh__ 7 | 8 | #include 9 | +#include 10 | #include 11 | 12 | #include "Config.hh" 13 | -------------------------------------------------------------------------------- /vendor/boost/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (BOOST_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 2 | 3 | # headers-only 4 | 5 | add_library (_boost_headers_only INTERFACE) 6 | add_library (boost::headers_only ALIAS _boost_headers_only) 7 | target_include_directories (_boost_headers_only SYSTEM BEFORE INTERFACE ${BOOST_ROOT_DIR}) 8 | 9 | # iostreams 10 | 11 | set (IOSTREAMS_PATH ${BOOST_ROOT_DIR}/libs/iostreams) 12 | 13 | set (SRCS_IOSTREAMS 14 | "${IOSTREAMS_PATH}/src/file_descriptor.cpp" 15 | "${IOSTREAMS_PATH}/src/gzip.cpp" 16 | "${IOSTREAMS_PATH}/src/mapped_file.cpp" 17 | "${IOSTREAMS_PATH}/src/zlib.cpp" 18 | "${IOSTREAMS_PATH}/src/zstd.cpp" 19 | ) 20 | 21 | add_library (_boost_iostreams ${SRCS_IOSTREAMS}) 22 | add_library (boost::iostreams ALIAS _boost_iostreams) 23 | target_include_directories (_boost_iostreams PRIVATE ${BOOST_ROOT_DIR} ${IOSTREAMS_PATH}/include) 24 | target_link_libraries (_boost_iostreams PRIVATE _zlib) 25 | target_link_libraries (_boost_iostreams PRIVATE _zstd) 26 | set_target_properties(_boost_iostreams PROPERTIES POSITION_INDEPENDENT_CODE ON) 27 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/broken_overload_resolution/forward.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED 10 | 11 | #include // BOOST_STATIC_CONSANT. 12 | #include 13 | #include 14 | 15 | namespace boost { namespace iostreams { namespace detail { 16 | 17 | template 18 | struct forward_impl { 19 | BOOST_STATIC_CONSTANT(bool, value = 20 | ( !is_same< U, Device >::value && 21 | !is_same< U, reference_wrapper >::value )); 22 | }; 23 | 24 | template 25 | struct forward 26 | : mpl::bool_::value> 27 | { }; 28 | 29 | } } } // End namespaces detail, iostreams, boost. 30 | 31 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED 32 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/call_traits.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_VALUE_TYPE_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_VALUE_TYPE_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | #include 17 | 18 | namespace boost { namespace iostreams { namespace detail { 19 | 20 | template 21 | struct param_type { 22 | typedef typename mpl::if_, T&, const T&>::type type; 23 | }; 24 | 25 | template 26 | struct value_type { 27 | typedef typename mpl::if_, T&, T>::type type; 28 | }; 29 | 30 | } } } // End namespaces detail, iostreams, boost. 31 | 32 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_VALUE_TYPE_HPP_INCLUDED //-----------// 33 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/config/enable_warnings.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #if defined(BOOST_MSVC) 9 | # pragma warning(pop) 10 | #else 11 | # if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) 12 | # pragma warn .8008 // Condition always true/false. 13 | # pragma warn .8066 // Unreachable code. 14 | # pragma warn .8071 // Conversion may lose significant digits. 15 | # pragma warn .8072 // Suspicious pointer arithmetic. 16 | # pragma warn .8080 // identifier declared but never used. 17 | # endif 18 | #endif 19 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/config/gcc.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | // Adapted from and from 9 | // http://www.boost.org/more/separate_compilation.html, by John Maddock. 10 | 11 | #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_GCC_HPP_INCLUDED 12 | #define BOOST_IOSTREAMS_DETAIL_CONFIG_GCC_HPP_INCLUDED 13 | 14 | #if defined(_MSC_VER) 15 | # pragma once 16 | #endif 17 | 18 | #include // BOOST_INTEL. 19 | 20 | #if defined(__GNUC__) && !defined(BOOST_INTEL) 21 | # define BOOST_IOSTREAMS_GCC (__GNUC__ * 100 + __GNUC_MINOR__) 22 | # define BOOST_IOSTREAMS_GCC_WORKAROUND_GUARD 1 23 | #else 24 | # define BOOST_IOSTREAMS_GCC_WORKAROUND_GUARD 0 25 | #endif 26 | 27 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_GCC_HPP_INCLUDED 28 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/config/limits.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_LIMITS_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_CONFIG_LIMITS_HPP_INCLUDED 10 | 11 | #ifndef BOOST_IOSTREAMS_MAX_FORWARDING_ARITY 12 | # define BOOST_IOSTREAMS_MAX_FORWARDING_ARITY 3 13 | #endif 14 | 15 | #ifndef BOOST_IOSTREAMS_MAX_EXECUTE_ARITY 16 | # define BOOST_IOSTREAMS_MAX_EXECUTE_ARITY 5 17 | #endif 18 | 19 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_LIMITS_HPP_INCLUDED 20 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/config/overload_resolution.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | // Adapted from and from 9 | // http://www.boost.org/more/separate_compilation.html, by John Maddock. 10 | 11 | #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED 12 | #define BOOST_IOSTREAMS_DETAIL_CONFIG_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED 13 | 14 | #if defined(_MSC_VER) 15 | # pragma once 16 | #endif 17 | 18 | #include // BOOST_MSVC. 19 | #include 20 | #include 21 | 22 | #if !defined(BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION) 23 | # if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) || \ 24 | BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600) \ 25 | /**/ 26 | # define BOOST_IOSTREAMS_BROKEN_OVERLOAD_RESOLUTION 27 | # endif 28 | #endif 29 | 30 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_BROKEN_OVERLOAD_RESOLUTION_HPP_INCLUDED 31 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/config/unreachable_return.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2010 Daniel James 2 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 3 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 4 | 5 | // See http://www.boost.org/libs/iostreams for documentation. 6 | 7 | #ifndef BOOST_IOSTREAMS_DETAIL_UNREACHABLE_RETURN_HPP_INCLUDED 8 | #define BOOST_IOSTREAMS_DETAIL_UNREACHABLE_RETURN_HPP_INCLUDED 9 | 10 | #if defined(_MSC_VER) 11 | # pragma once 12 | #endif 13 | 14 | #include 15 | 16 | #if defined(_MSC_VER) || defined(__GNUC__) 17 | #define BOOST_IOSTREAMS_UNREACHABLE_RETURN(x) \ 18 | BOOST_UNREACHABLE_RETURN(x) 19 | #else 20 | #define BOOST_IOSTREAMS_UNREACHABLE_RETURN(x) \ 21 | return x; 22 | #endif 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/config/windows_posix.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2004-2007 Jonathan Turkanis 3 | // (C) Copyright 2002, 2003 Beman Dawes Boost.Filesystem 4 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 5 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 6 | 7 | // See http://www.boost.org/libs/iostreams for documentation. 8 | 9 | #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_WINDOWS_POSIX_HPP_INCLUDED 10 | #define BOOST_IOSTREAMS_DETAIL_CONFIG_WINDOWS_POSIX_HPP_INCLUDED 11 | 12 | //------------------From boost/libs/filesystem/src/path_posix_windows.cpp-----// 13 | 14 | // BOOST_IOSTREAMS_POSIX or BOOST_IOSTREAMS_WINDOWS specify which API to use. 15 | #if !defined( BOOST_IOSTREAMS_WINDOWS ) && !defined( BOOST_IOSTREAMS_POSIX ) 16 | # if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && \ 17 | !defined(__CYGWIN__) \ 18 | /**/ 19 | # define BOOST_IOSTREAMS_WINDOWS 20 | # else 21 | # define BOOST_IOSTREAMS_POSIX 22 | # endif 23 | #endif 24 | 25 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_CONFIG_WINDOWS_POSIX_HPP_INCLUDED 26 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/default_arg.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2005-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_DEFAULT_ARG_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_DEFAULT_ARG_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | #include 17 | 18 | // Obsolete. Remove. 19 | #define BOOST_IOSTREAMS_DEFAULT_ARG(arg) arg 20 | 21 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_DEFAULT_ARG_HPP_INCLUDED 22 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/file_handle.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0.(See accompanying 3 | * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 4 | * 5 | * See http://www.boost.org/libs/iostreams for documentation. 6 | * 7 | * File: boost/iostreams/detail/file_handle.hpp 8 | * Date: Sun Jun 22 14:23:12 MDT 2008 9 | * Copyright: 2008 CodeRage, LLC 10 | * Author: Jonathan Turkanis 11 | * Contact: turkanis at coderage dot com 12 | * 13 | * Defines the type boost::iostreams::detail::file_handle, representing an 14 | * operating system file handle. 15 | */ 16 | 17 | #ifndef BOOST_IOSTREAMS_DETAIL_FILE_HANDLE_HPP_INCLUDED 18 | #define BOOST_IOSTREAMS_DETAIL_FILE_HANDLE_HPP_INCLUDED 19 | 20 | #include 21 | 22 | namespace boost { namespace iostreams { namespace detail { 23 | 24 | #ifdef BOOST_IOSTREAMS_WINDOWS 25 | typedef void* file_handle; // A.k.a. HANDLE 26 | #else 27 | typedef int file_handle; 28 | #endif 29 | 30 | } } } // End namespaces detail, iostreams, boost. 31 | 32 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_FILE_HANDLE_HPP_INCLUDED 33 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/is_iterator_range.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_IS_ITERATOR_RANGE_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_IS_ITERATOR_RANGE_HPP_INCLUDED 10 | 11 | #include 12 | #include 13 | #include 14 | 15 | // Must come last. 16 | #include 17 | 18 | namespace boost { 19 | 20 | // We avoid dependence on Boost.Range by using a forward declaration. 21 | template 22 | class iterator_range; 23 | 24 | namespace iostreams { 25 | 26 | BOOST_IOSTREAMS_BOOL_TRAIT_DEF(is_iterator_range, boost::iterator_range, 1) 27 | 28 | } // End namespace iostreams. 29 | 30 | } // End namespace boost. 31 | 32 | #include 33 | 34 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_IS_ITERATOR_RANGE_HPP_INCLUDED 35 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/newline.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2005-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_NEWLINE_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_NEWLINE_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | namespace boost { namespace iostreams { namespace detail { 16 | 17 | template 18 | struct newline; 19 | 20 | template<> 21 | struct newline { 22 | BOOST_STATIC_CONSTANT(char, value = '\n'); 23 | }; 24 | 25 | template<> 26 | struct newline { 27 | BOOST_STATIC_CONSTANT(wchar_t, value = L'\n'); 28 | }; 29 | 30 | } } } // End namespaces detaill, iostreams, boost. 31 | 32 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_NEWLINE_HPP_INCLUDED 33 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/param_type.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_PARAM_TYPE_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_PARAM_TYPE_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | #include 17 | 18 | namespace boost { namespace iostreams { namespace detail { 19 | 20 | template 21 | struct param_type { 22 | typedef typename mpl::if_, T&, const T&>::type type; 23 | }; 24 | 25 | } } } // End namespaces detail, iostreams, boost. 26 | 27 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_PARAM_TYPE_HPP_INCLUDED //-----------// 28 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/push_params.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_PUSH_PARAMS_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_PUSH_PARAMS_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #define BOOST_IOSTREAMS_PUSH_PARAMS() \ 16 | , std::streamsize buffer_size = -1 , std::streamsize pback_size = -1 \ 17 | /**/ 18 | 19 | #define BOOST_IOSTREAMS_PUSH_ARGS() , buffer_size, pback_size 20 | 21 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_PUSH_PARAMS_HPP_INCLUDED 22 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/streambuf.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_STREAMBUF_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_DETAIL_STREAMBUF_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES 17 | # include 18 | #else 19 | # include 20 | #endif 21 | 22 | #ifndef BOOST_IOSTREAMS_NO_STREAM_TEMPLATES 23 | # define BOOST_IOSTREAMS_BASIC_STREAMBUF(ch, tr) std::basic_streambuf< ch, tr > 24 | # define BOOST_IOSTREAMS_PUBSYNC pubsync 25 | # define BOOST_IOSTREAMS_PUBSEEKOFF pubseekoff 26 | # define BOOST_IOSTREAMS_PUBSEEKPOS pubseekpos 27 | #else 28 | # define BOOST_IOSTREAMS_BASIC_STREAMBUF(ch, tr) std::streambuf 29 | # define BOOST_IOSTREAMS_PUBSYNC sync 30 | # define BOOST_IOSTREAMS_PUBSEEKOFF seekoff 31 | # define BOOST_IOSTREAMS_PUBSEEKPOS seekpos 32 | #endif 33 | 34 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_STREAMBUF_HPP_INCLUDED 35 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/detail/template_params.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_DETAIL_TEMPLATE_PARAMS_HPP_INCLUDED 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | #define BOOST_IOSTREAMS_TEMPLATE_PARAMS(arity, param) \ 15 | BOOST_PP_EXPR_IF(arity, template<) \ 16 | BOOST_PP_ENUM_PARAMS(arity, typename param) \ 17 | BOOST_PP_EXPR_IF(arity, >) \ 18 | /**/ 19 | 20 | #define BOOST_IOSTREAMS_TEMPLATE_ARGS(arity, param) \ 21 | BOOST_PP_EXPR_IF(arity, <) \ 22 | BOOST_PP_ENUM_PARAMS(arity, param) \ 23 | BOOST_PP_EXPR_IF(arity, >) \ 24 | /**/ 25 | 26 | #endif // #ifndef BOOST_IOSTREAMS_DETAIL_BUFFERS_HPP_INCLUDED 27 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/get.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2005-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_GET_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_GET_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | 17 | #endif // #ifndef BOOST_IOSTREAMS_GET_HPP_INCLUDED 18 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/operations.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2005-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_OPERATIONS_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_OPERATIONS_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | #endif // #ifndef BOOST_IOSTREAMS_OPERATIONS_HPP_INCLUDED 27 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/operations_fwd.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2003-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_OPERATIONS_FWD_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_OPERATIONS_FWD_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | #include 17 | 18 | namespace boost { namespace iostreams { 19 | 20 | template 21 | struct operations; 22 | 23 | namespace detail { 24 | 25 | struct custom_tag { }; 26 | 27 | template 28 | struct is_custom 29 | : mpl::not_< 30 | is_base_and_derived< custom_tag, operations > 31 | > 32 | { }; 33 | 34 | } // End namespace detail. 35 | 36 | template 37 | struct operations : detail::custom_tag { }; 38 | 39 | } } // End namespaces iostreams, boost. 40 | 41 | #endif // #ifndef BOOST_IOSTREAMS_OPERATIONS_FWD_HPP_INCLUDED //--------------// 42 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/put.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2005-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_PUT_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_PUT_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | 17 | #endif // #ifndef BOOST_IOSTREAMS_PUT_HPP_INCLUDED 18 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/putback.hpp: -------------------------------------------------------------------------------- 1 | // (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) 2 | // (C) Copyright 2005-2007 Jonathan Turkanis 3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 5 | 6 | // See http://www.boost.org/libs/iostreams for documentation. 7 | 8 | #ifndef BOOST_IOSTREAMS_PUTBACK_HPP_INCLUDED 9 | #define BOOST_IOSTREAMS_PUTBACK_HPP_INCLUDED 10 | 11 | #if defined(_MSC_VER) 12 | # pragma once 13 | #endif 14 | 15 | #include 16 | 17 | #endif // #ifndef BOOST_IOSTREAMS_PUTBACK_HPP_INCLUDED 18 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/restrict.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0.(See accompanying 3 | * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 4 | * 5 | * See http://www.boost.org/libs/iostreams for documentation. 6 | * 7 | * File: boost/iostreams/detail/restrict.hpp 8 | * Date: Sun Jan 06 12:57:30 MST 2008 9 | * Copyright: 2008 CodeRage, LLC 10 | 2004-2007 Jonathan Turkanis 11 | * Author: Jonathan Turkanis 12 | * Contact: turkanis at coderage dot com 13 | * 14 | * Defines the class template boost::iostreams::restriction and the 15 | * overloaded function template boost::iostreams::restrict 16 | */ 17 | 18 | #ifndef BOOST_IOSTREAMS_RESTRICT_HPP_INCLUDED 19 | #define BOOST_IOSTREAMS_RESTRICT_HPP_INCLUDED 20 | 21 | #include 22 | #define BOOST_IOSTREAMS_RESTRICT restrict 23 | #include 24 | #undef BOOST_IOSTREAMS_RESTRICT 25 | 26 | #endif // #ifndef BOOST_IOSTREAMS_RESTRICT_HPP_INCLUDED 27 | -------------------------------------------------------------------------------- /vendor/boost/boost/iostreams/slice.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0.(See accompanying 3 | * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.) 4 | * 5 | * See http://www.boost.org/libs/iostreams for documentation. 6 | * 7 | * File: boost/iostreams/detail/restrict.hpp 8 | * Date: Sun Jan 06 12:57:30 MST 2008 9 | * Copyright: 2008 CodeRage, LLC 10 | 2004-2007 Jonathan Turkanis 11 | * Author: Jonathan Turkanis 12 | * Contact: turkanis at coderage dot com 13 | * 14 | * Defines the class template boost::iostreams::restriction and the 15 | * overloaded function template boost::iostreams::slice. 16 | * 17 | * This header is provided for platforms on which "restrict" is a keyword. 18 | */ 19 | 20 | #ifndef BOOST_IOSTREAMS_RESTRICT_HPP_INCLUDED 21 | #define BOOST_IOSTREAMS_RESTRICT_HPP_INCLUDED 22 | 23 | #include 24 | #define BOOST_IOSTREAMS_RESTRICT slice 25 | #include 26 | #undef BOOST_IOSTREAMS_RESTRICT 27 | 28 | #endif // #ifndef BOOST_IOSTREAMS_RESTRICT_HPP_INCLUDED 29 | -------------------------------------------------------------------------------- /vendor/boost/boost/random/detail/auto_link.hpp: -------------------------------------------------------------------------------- 1 | /* boost random auto_link.hpp header file 2 | * 3 | * Copyright Steven Watanabe 2010 4 | * Distributed under the Boost Software License, Version 1.0. (See 5 | * accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | * $Id$ 9 | */ 10 | 11 | #ifndef BOOST_RANDOM_DETAIL_AUTO_LINK_HPP 12 | #define BOOST_RANDOM_DETAIL_AUTO_LINK_HPP 13 | 14 | #include 15 | 16 | #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_RANDOM_DYN_LINK) 17 | #if defined(BOOST_RANDOM_SOURCE) 18 | #define BOOST_RANDOM_DECL BOOST_SYMBOL_EXPORT 19 | #else 20 | #define BOOST_RANDOM_DECL BOOST_SYMBOL_IMPORT 21 | #endif 22 | #endif 23 | 24 | #ifndef BOOST_RANDOM_DECL 25 | #define BOOST_RANDOM_DECL 26 | #endif 27 | 28 | #if !defined(BOOST_RANDOM_NO_LIB) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_RANDOM_SOURCE) 29 | 30 | #define BOOST_LIB_NAME boost_random 31 | 32 | #if defined(BOOST_RANDOM_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) 33 | #define BOOST_DYN_LINK 34 | #endif 35 | 36 | #include 37 | 38 | #endif 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /vendor/boost/boost/random/detail/config.hpp: -------------------------------------------------------------------------------- 1 | /* boost random/detail/config.hpp header file 2 | * 3 | * Copyright Steven Watanabe 2009 4 | * Distributed under the Boost Software License, Version 1.0. (See 5 | * accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | * See http://www.boost.org for most recent version including documentation. 9 | * 10 | * $Id$ 11 | */ 12 | 13 | #include 14 | 15 | #if (defined(BOOST_NO_OPERATORS_IN_NAMESPACE) || defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)) \ 16 | && !defined(BOOST_MSVC) 17 | #define BOOST_RANDOM_NO_STREAM_OPERATORS 18 | #endif 19 | -------------------------------------------------------------------------------- /vendor/boost/boost/random/detail/disable_warnings.hpp: -------------------------------------------------------------------------------- 1 | /* boost random/detail/disable_warnings.hpp header file 2 | * 3 | * Copyright Steven Watanabe 2009 4 | * Distributed under the Boost Software License, Version 1.0. (See 5 | * accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | * See http://www.boost.org for most recent version including documentation. 9 | * 10 | * $Id$ 11 | * 12 | */ 13 | 14 | // No #include guard. This header is intended to be included multiple times. 15 | 16 | #include 17 | 18 | #ifdef BOOST_MSVC 19 | #pragma warning(push) 20 | #pragma warning(disable:4512) 21 | #pragma warning(disable:4127) 22 | #pragma warning(disable:4724) 23 | #pragma warning(disable:4800) // 'int' : forcing value to bool 'true' or 'false' (performance warning) 24 | #endif 25 | 26 | #if defined(BOOST_GCC) && BOOST_GCC >= 40600 27 | #pragma GCC diagnostic push 28 | #pragma GCC diagnostic ignored "-Wlogical-op" 29 | #endif 30 | -------------------------------------------------------------------------------- /vendor/boost/boost/random/detail/enable_warnings.hpp: -------------------------------------------------------------------------------- 1 | /* boost random/detail/enable_warnings.hpp header file 2 | * 3 | * Copyright Steven Watanabe 2009 4 | * Distributed under the Boost Software License, Version 1.0. (See 5 | * accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | * See http://www.boost.org for most recent version including documentation. 9 | * 10 | * $Id$ 11 | * 12 | */ 13 | 14 | // No #include guard. This header is intended to be included multiple times. 15 | 16 | #ifdef BOOST_MSVC 17 | #pragma warning(pop) 18 | #endif 19 | 20 | #if defined(BOOST_GCC) && BOOST_GCC >= 40600 21 | #pragma GCC diagnostic pop 22 | #endif 23 | -------------------------------------------------------------------------------- /vendor/boost/boost/random/detail/generator_bits.hpp: -------------------------------------------------------------------------------- 1 | /* boost random/detail/generator_bits.hpp header file 2 | * 3 | * Copyright Steven Watanabe 2011 4 | * Distributed under the Boost Software License, Version 1.0. (See 5 | * accompanying file LICENSE_1_0.txt or copy at 6 | * http://www.boost.org/LICENSE_1_0.txt) 7 | * 8 | * See http://www.boost.org for most recent version including documentation. 9 | * 10 | * $Id$ 11 | * 12 | */ 13 | 14 | #ifndef BOOST_RANDOM_DETAIL_GENERATOR_BITS_HPP 15 | #define BOOST_RANDOM_DETAIL_GENERATOR_BITS_HPP 16 | 17 | #include 18 | 19 | namespace boost { 20 | namespace random { 21 | namespace detail { 22 | 23 | // This is a temporary measure that retains backwards 24 | // compatibility. 25 | template 26 | struct generator_bits { 27 | static std::size_t value() { 28 | return std::numeric_limits::digits; 29 | } 30 | }; 31 | 32 | } // namespace detail 33 | } // namespace random 34 | } // namespace boost 35 | 36 | #endif // BOOST_RANDOM_DETAIL_GENERATOR_BITS_HPP 37 | -------------------------------------------------------------------------------- /vendor/boost/boost/random/detail/generator_seed_seq.hpp: -------------------------------------------------------------------------------- 1 | /* boost random/mersenne_twister.hpp header file 2 | * 3 | * Copyright Jens Maurer 2000-2001 4 | * Copyright Steven Watanabe 2010 5 | * Distributed under the Boost Software License, Version 1.0. (See 6 | * accompanying file LICENSE_1_0.txt or copy at 7 | * http://www.boost.org/LICENSE_1_0.txt) 8 | * 9 | * See http://www.boost.org for most recent version including documentation. 10 | * 11 | * $Id$ 12 | * 13 | */ 14 | 15 | #ifndef BOOST_RANDOM_DETAIL_GENERATOR_SEED_SEQ_HPP_INCLUDED 16 | #define BOOST_RANDOM_DETAIL_GENERATOR_SEED_SEQ_HPP_INCLUDED 17 | 18 | namespace boost { 19 | namespace random { 20 | namespace detail { 21 | 22 | template 23 | class generator_seed_seq { 24 | public: 25 | generator_seed_seq(Generator& g) : gen(&g) {} 26 | template 27 | void generate(It first, It last) { 28 | for(; first != last; ++first) { 29 | *first = (*gen)(); 30 | } 31 | } 32 | private: 33 | Generator* gen; 34 | }; 35 | 36 | } 37 | } 38 | } 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /vendor/boost/boost/random/taus88.hpp: -------------------------------------------------------------------------------- 1 | /* boost random/taus88.hpp header file 2 | * 3 | * Copyright Jens Maurer 2000-2001 4 | * Copyright Steven Watanabe 2011 5 | * Distributed under the Boost Software License, Version 1.0. (See 6 | * accompanying file LICENSE_1_0.txt or copy at 7 | * http://www.boost.org/LICENSE_1_0.txt) 8 | * 9 | * See http://www.boost.org/libs/random for documentation. 10 | * 11 | * $Id$ 12 | * 13 | */ 14 | 15 | #ifndef BOOST_RANDOM_TAUS88_HPP 16 | #define BOOST_RANDOM_TAUS88_HPP 17 | 18 | #include 19 | #include 20 | 21 | namespace boost { 22 | namespace random { 23 | 24 | /** 25 | * The specialization taus88 was suggested in 26 | * 27 | * @blockquote 28 | * "Maximally Equidistributed Combined Tausworthe Generators", 29 | * Pierre L'Ecuyer, Mathematics of Computation, Volume 65, 30 | * Number 213, January 1996, Pages 203-213 31 | * @endblockquote 32 | */ 33 | typedef xor_combine_engine< 34 | xor_combine_engine< 35 | linear_feedback_shift_engine, 0, 36 | linear_feedback_shift_engine, 0>, 0, 37 | linear_feedback_shift_engine, 0> taus88; 38 | 39 | } // namespace random 40 | 41 | using random::taus88; 42 | 43 | } // namespace boost 44 | 45 | #endif // BOOST_RANDOM_TAUS88_HPP 46 | -------------------------------------------------------------------------------- /vendor/c-ares/darwin/ares_build.h: -------------------------------------------------------------------------------- 1 | #ifndef __CARES_BUILD_H 2 | #define __CARES_BUILD_H 3 | 4 | #define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t 5 | #define CARES_TYPEOF_ARES_SSIZE_T ssize_t 6 | 7 | /* Prefix names with CARES_ to make sure they don't conflict with other config.h 8 | * files. We need to include some dependent headers that may be system specific 9 | * for C-Ares */ 10 | #define CARES_HAVE_SYS_TYPES_H 11 | #define CARES_HAVE_SYS_SOCKET_H 12 | /* #undef CARES_HAVE_WINDOWS_H */ 13 | /* #undef CARES_HAVE_WS2TCPIP_H */ 14 | /* #undef CARES_HAVE_WINSOCK2_H */ 15 | /* #undef CARES_HAVE_WINDOWS_H */ 16 | #define CARES_HAVE_ARPA_NAMESER_H 17 | #define CARES_HAVE_ARPA_NAMESER_COMPAT_H 18 | 19 | #ifdef CARES_HAVE_SYS_TYPES_H 20 | # include 21 | #endif 22 | 23 | #ifdef CARES_HAVE_SYS_SOCKET_H 24 | # include 25 | #endif 26 | 27 | #ifdef CARES_HAVE_WINSOCK2_H 28 | # include 29 | #endif 30 | 31 | #ifdef CARES_HAVE_WS2TCPIP_H 32 | # include 33 | #endif 34 | 35 | #ifdef CARES_HAVE_WINDOWS_H 36 | # include 37 | #endif 38 | 39 | 40 | typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t; 41 | typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t; 42 | 43 | #endif /* __CARES_BUILD_H */ 44 | -------------------------------------------------------------------------------- /vendor/c-ares/linux/ares_build.h: -------------------------------------------------------------------------------- 1 | #ifndef __CARES_BUILD_H 2 | #define __CARES_BUILD_H 3 | 4 | #define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t 5 | #define CARES_TYPEOF_ARES_SSIZE_T ssize_t 6 | 7 | /* Prefix names with CARES_ to make sure they don't conflict with other config.h 8 | * files. We need to include some dependent headers that may be system specific 9 | * for C-Ares */ 10 | #define CARES_HAVE_SYS_TYPES_H 11 | #define CARES_HAVE_SYS_SOCKET_H 12 | /* #undef CARES_HAVE_WINDOWS_H */ 13 | /* #undef CARES_HAVE_WS2TCPIP_H */ 14 | /* #undef CARES_HAVE_WINSOCK2_H */ 15 | /* #undef CARES_HAVE_WINDOWS_H */ 16 | #define CARES_HAVE_ARPA_NAMESER_H 17 | #define CARES_HAVE_ARPA_NAMESER_COMPAT_H 18 | 19 | #ifdef CARES_HAVE_SYS_TYPES_H 20 | # include 21 | #endif 22 | 23 | #ifdef CARES_HAVE_SYS_SOCKET_H 24 | # include 25 | #endif 26 | 27 | #ifdef CARES_HAVE_WINSOCK2_H 28 | # include 29 | #endif 30 | 31 | #ifdef CARES_HAVE_WS2TCPIP_H 32 | # include 33 | #endif 34 | 35 | #ifdef CARES_HAVE_WINDOWS_H 36 | # include 37 | #endif 38 | 39 | 40 | typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t; 41 | typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t; 42 | 43 | #endif /* __CARES_BUILD_H */ -------------------------------------------------------------------------------- /vendor/croaring/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 2 | 3 | set(CMAKE_C_STANDARD 17) 4 | set(croaring_SOURCES roaring.hh roaring.c) 5 | 6 | add_library(_croaring ${croaring_SOURCES}) 7 | target_include_directories(_croaring SYSTEM PUBLIC "${LIBRARY_DIR}") 8 | set_target_properties(_croaring PROPERTIES POSITION_INDEPENDENT_CODE ON) 9 | -------------------------------------------------------------------------------- /vendor/hive-metastore/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set (CMAKE_CXX_STANDARD 20) 2 | 3 | set (SRCS 4 | ${CMAKE_CURRENT_SOURCE_DIR}/hive_metastore_constants.cpp 5 | ${CMAKE_CURRENT_SOURCE_DIR}/hive_metastore_types.cpp 6 | ${CMAKE_CURRENT_SOURCE_DIR}/ThriftHiveMetastore.cpp 7 | ) 8 | 9 | add_library(_hivemetastore ${SRCS}) 10 | target_link_libraries(_hivemetastore PUBLIC _thrift) 11 | target_include_directories(_hivemetastore SYSTEM BEFORE PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) 12 | set_target_properties(_hivemetastore PROPERTIES POSITION_INDEPENDENT_CODE ON) 13 | -------------------------------------------------------------------------------- /vendor/rapidjson/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB_RECURSE rapidjson_src "include/rapidjson/*.h") 2 | 3 | add_library(_rapidjson INTERFACE ${rapidjson_src}) 4 | target_include_directories(_rapidjson INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include) 5 | --------------------------------------------------------------------------------