From dcc779c73c38046dea242e5c2542cd2e42ed41a8 Mon Sep 17 00:00:00 2001 From: Sagar Sumit Date: Thu, 31 Oct 2024 22:41:08 +0530 Subject: [PATCH 1/2] Support Hudi merged view file slices for partition path updates without compaction --- .../presto/hive/HiveClientConfig.java | 14 ++ .../presto/hive/HiveSessionProperties.java | 12 ++ .../presto/hive/HudiDirectoryLister.java | 37 +++- .../presto/hive/TestHudiDirectoryLister.java | 70 +++++++ .../.19700101000000000.deltacommit.crc | Bin 0 -> 24 bytes ...19700101000000000.deltacommit.inflight.crc | Bin 0 -> 16 bytes ...9700101000000000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000005000.deltacommit.crc | Bin 0 -> 24 bytes ...19700101000005000.deltacommit.inflight.crc | Bin 0 -> 20 bytes ...9700101000005000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000006000.deltacommit.crc | Bin 0 -> 32 bytes ...19700101000006000.deltacommit.inflight.crc | Bin 0 -> 28 bytes ...9700101000006000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000007000.deltacommit.crc | Bin 0 -> 24 bytes ...19700101000007000.deltacommit.inflight.crc | Bin 0 -> 20 bytes ...9700101000007000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000008000.deltacommit.crc | Bin 0 -> 24 bytes ...19700101000008000.deltacommit.inflight.crc | Bin 0 -> 20 bytes ...9700101000008000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000009000.deltacommit.crc | Bin 0 -> 32 bytes ...19700101000009000.deltacommit.inflight.crc | Bin 0 -> 28 bytes ...9700101000009000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.hoodie/.hoodie.properties.crc | Bin 0 -> 16 bytes .../.hoodie/19700101000000000.deltacommit | 38 ++++ .../19700101000000000.deltacommit.inflight | 32 +++ .../19700101000000000.deltacommit.requested | 0 .../.hoodie/19700101000005000.deltacommit | 45 +++++ .../19700101000005000.deltacommit.inflight | 56 ++++++ .../19700101000005000.deltacommit.requested | 0 .../.hoodie/19700101000006000.deltacommit | 74 +++++++ .../19700101000006000.deltacommit.inflight | 81 ++++++++ .../19700101000006000.deltacommit.requested | 0 .../.hoodie/19700101000007000.deltacommit | 45 +++++ .../19700101000007000.deltacommit.inflight | 56 ++++++ .../19700101000007000.deltacommit.requested | 0 .../.hoodie/19700101000008000.deltacommit | 45 +++++ .../19700101000008000.deltacommit.inflight | 56 ++++++ .../19700101000008000.deltacommit.requested | 0 .../.hoodie/19700101000009000.deltacommit | 74 +++++++ .../19700101000009000.deltacommit.inflight | 81 ++++++++ .../19700101000009000.deltacommit.requested | 0 .../.hoodie/hoodie.properties | 18 ++ .../.00000000000000010.deltacommit.crc | Bin 0 -> 76 bytes ...00000000000000010.deltacommit.inflight.crc | Bin 0 -> 8 bytes ...0000000000000010.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.00000000000000011.deltacommit.crc | Bin 0 -> 72 bytes ...00000000000000011.deltacommit.inflight.crc | Bin 0 -> 8 bytes ...0000000000000011.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000000000.deltacommit.crc | Bin 0 -> 116 bytes ...19700101000000000.deltacommit.inflight.crc | Bin 0 -> 48 bytes ...9700101000000000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000005000.deltacommit.crc | Bin 0 -> 80 bytes ...19700101000005000.deltacommit.inflight.crc | Bin 0 -> 20 bytes ...9700101000005000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000006000.deltacommit.crc | Bin 0 -> 116 bytes ...19700101000006000.deltacommit.inflight.crc | Bin 0 -> 48 bytes ...9700101000006000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000007000.deltacommit.crc | Bin 0 -> 100 bytes ...19700101000007000.deltacommit.inflight.crc | Bin 0 -> 40 bytes ...9700101000007000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000008000.deltacommit.crc | Bin 0 -> 92 bytes ...19700101000008000.deltacommit.inflight.crc | Bin 0 -> 32 bytes ...9700101000008000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../.19700101000009000.deltacommit.crc | Bin 0 -> 124 bytes ...19700101000009000.deltacommit.inflight.crc | Bin 0 -> 48 bytes ...9700101000009000.deltacommit.requested.crc | Bin 0 -> 8 bytes .../metadata/.hoodie/.hoodie.properties.crc | Bin 0 -> 16 bytes .../.hoodie/00000000000000010.deltacommit | 38 ++++ .../00000000000000010.deltacommit.inflight | 0 .../00000000000000010.deltacommit.requested | 0 .../.hoodie/00000000000000011.deltacommit | 8 + .../00000000000000011.deltacommit.inflight | 0 .../00000000000000011.deltacommit.requested | 0 .../.hoodie/19700101000000000.deltacommit | 186 ++++++++++++++++++ .../19700101000000000.deltacommit.inflight | 177 +++++++++++++++++ .../19700101000000000.deltacommit.requested | 0 .../.hoodie/19700101000005000.deltacommit | 45 +++++ .../19700101000005000.deltacommit.inflight | 56 ++++++ .../19700101000005000.deltacommit.requested | 0 .../.hoodie/19700101000006000.deltacommit | 186 ++++++++++++++++++ .../19700101000006000.deltacommit.inflight | 177 +++++++++++++++++ .../19700101000006000.deltacommit.requested | 0 .../.hoodie/19700101000007000.deltacommit | 116 +++++++++++ .../19700101000007000.deltacommit.inflight | 129 ++++++++++++ .../19700101000007000.deltacommit.requested | 0 .../.hoodie/19700101000008000.deltacommit | 81 ++++++++ .../19700101000008000.deltacommit.inflight | 105 ++++++++++ .../19700101000008000.deltacommit.requested | 0 .../.hoodie/19700101000009000.deltacommit | 186 ++++++++++++++++++ .../19700101000009000.deltacommit.inflight | 177 +++++++++++++++++ .../19700101000009000.deltacommit.requested | 0 .../metadata/.hoodie/hoodie.properties | 15 ++ ...s-0000-0_00000000000000010.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...000-0_00000000000000010.log.2_4-52-205.crc | Bin 0 -> 116 bytes ...00-0_00000000000000010.log.3_0-108-273.crc | Bin 0 -> 116 bytes ...00-0_00000000000000010.log.4_4-171-356.crc | Bin 0 -> 116 bytes ...00-0_00000000000000010.log.5_2-234-442.crc | Bin 0 -> 116 bytes ...00-0_00000000000000010.log.6_1-297-522.crc | Bin 0 -> 116 bytes ...00-0_00000000000000010.log.7_4-360-609.crc | Bin 0 -> 116 bytes .../files/..hoodie_partition_metadata.crc | Bin 0 -> 12 bytes ...s-0000-0_0-5-4_00000000000000010.hfile.crc | Bin 0 -> 64 bytes ...files-0000-0_00000000000000010.log.1_0-0-0 | Bin 0 -> 80 bytes ...es-0000-0_00000000000000010.log.2_4-52-205 | Bin 0 -> 13369 bytes ...s-0000-0_00000000000000010.log.3_0-108-273 | Bin 0 -> 13367 bytes ...s-0000-0_00000000000000010.log.4_4-171-356 | Bin 0 -> 13428 bytes ...s-0000-0_00000000000000010.log.5_2-234-442 | Bin 0 -> 13371 bytes ...s-0000-0_00000000000000010.log.6_1-297-522 | Bin 0 -> 13371 bytes ...s-0000-0_00000000000000010.log.7_4-360-609 | Bin 0 -> 13432 bytes .../metadata/files/.hoodie_partition_metadata | 4 + ...files-0000-0_0-5-4_00000000000000010.hfile | Bin 0 -> 6807 bytes .../..hoodie_partition_metadata.crc | Bin 0 -> 12 bytes ...x-0000-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...000-0_00000000000000011.log.2_0-52-201.crc | Bin 0 -> 112 bytes ...00-0_00000000000000011.log.3_0-171-352.crc | Bin 0 -> 112 bytes ...00-0_00000000000000011.log.4_0-297-521.crc | Bin 0 -> 68 bytes ...00-0_00000000000000011.log.5_0-360-605.crc | Bin 0 -> 112 bytes ...x-0001-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...001-0_00000000000000011.log.2_1-52-202.crc | Bin 0 -> 112 bytes ...01-0_00000000000000011.log.3_1-171-353.crc | Bin 0 -> 112 bytes ...01-0_00000000000000011.log.4_1-360-606.crc | Bin 0 -> 112 bytes ...x-0002-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...x-0003-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...x-0004-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...x-0005-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...x-0006-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...x-0007-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...x-0008-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...008-0_00000000000000011.log.2_2-52-203.crc | Bin 0 -> 112 bytes ...08-0_00000000000000011.log.3_2-171-354.crc | Bin 0 -> 112 bytes ...08-0_00000000000000011.log.4_0-234-440.crc | Bin 0 -> 68 bytes ...08-0_00000000000000011.log.5_2-360-607.crc | Bin 0 -> 112 bytes ...x-0009-0_00000000000000011.log.1_0-0-0.crc | Bin 0 -> 12 bytes ...009-0_00000000000000011.log.2_3-52-204.crc | Bin 0 -> 112 bytes ...09-0_00000000000000011.log.3_3-171-355.crc | Bin 0 -> 112 bytes ...09-0_00000000000000011.log.4_1-234-441.crc | Bin 0 -> 68 bytes ...09-0_00000000000000011.log.5_3-360-608.crc | Bin 0 -> 112 bytes .../record_index/.hoodie_partition_metadata | 4 + ...index-0000-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...ex-0000-0_00000000000000011.log.2_0-52-201 | Bin 0 -> 13282 bytes ...x-0000-0_00000000000000011.log.3_0-171-352 | Bin 0 -> 13283 bytes ...x-0000-0_00000000000000011.log.4_0-297-521 | Bin 0 -> 7264 bytes ...x-0000-0_00000000000000011.log.5_0-360-605 | Bin 0 -> 13282 bytes ...index-0001-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...ex-0001-0_00000000000000011.log.2_1-52-202 | Bin 0 -> 13282 bytes ...x-0001-0_00000000000000011.log.3_1-171-353 | Bin 0 -> 13283 bytes ...x-0001-0_00000000000000011.log.4_1-360-606 | Bin 0 -> 13282 bytes ...index-0002-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...index-0003-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...index-0004-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...index-0005-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...index-0006-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...index-0007-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...index-0008-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...ex-0008-0_00000000000000011.log.2_2-52-203 | Bin 0 -> 13281 bytes ...x-0008-0_00000000000000011.log.3_2-171-354 | Bin 0 -> 13283 bytes ...x-0008-0_00000000000000011.log.4_0-234-440 | Bin 0 -> 7264 bytes ...x-0008-0_00000000000000011.log.5_2-360-607 | Bin 0 -> 13281 bytes ...index-0009-0_00000000000000011.log.1_0-0-0 | Bin 0 -> 80 bytes ...ex-0009-0_00000000000000011.log.2_3-52-204 | Bin 0 -> 13281 bytes ...x-0009-0_00000000000000011.log.3_3-171-355 | Bin 0 -> 13283 bytes ...x-0009-0_00000000000000011.log.4_1-234-441 | Bin 0 -> 7264 bytes ...x-0009-0_00000000000000011.log.5_3-360-608 | Bin 0 -> 13281 bytes ...c3c-0_19700101000000000.log.1_0-86-264.crc | Bin 0 -> 20 bytes ...3c-0_19700101000000000.log.2_0-149-340.crc | Bin 0 -> 20 bytes .../p1/..hoodie_partition_metadata.crc | Bin 0 -> 12 bytes ...-0_1-338-594_19700101000009000.parquet.crc | Bin 0 -> 3416 bytes ...c-0_0-32-192_19700101000000000.parquet.crc | Bin 0 -> 3416 bytes ...8bb8c3c-0_19700101000000000.log.1_0-86-264 | Bin 0 -> 1413 bytes ...bb8c3c-0_19700101000000000.log.2_0-149-340 | Bin 0 -> 1035 bytes .../p1/.hoodie_partition_metadata | 4 + ...e4b4-0_1-338-594_19700101000009000.parquet | Bin 0 -> 435913 bytes ...b8c3c-0_0-32-192_19700101000000000.parquet | Bin 0 -> 435904 bytes ...b8-0_19700101000006000.log.1_0-212-431.crc | Bin 0 -> 16 bytes ...b8-0_19700101000006000.log.2_0-275-512.crc | Bin 0 -> 16 bytes ...b8-0_19700101000006000.log.3_0-338-593.crc | Bin 0 -> 16 bytes .../p2/..hoodie_partition_metadata.crc | Bin 0 -> 12 bytes ...-0_1-149-341_19700101000006000.parquet.crc | Bin 0 -> 3416 bytes ...5cd1b8-0_19700101000006000.log.1_0-212-431 | Bin 0 -> 1017 bytes ...5cd1b8-0_19700101000006000.log.2_0-275-512 | Bin 0 -> 1008 bytes ...5cd1b8-0_19700101000006000.log.3_0-338-593 | Bin 0 -> 1008 bytes .../p2/.hoodie_partition_metadata | 4 + ...d1b8-0_1-149-341_19700101000006000.parquet | Bin 0 -> 435917 bytes 182 files changed, 2529 insertions(+), 3 deletions(-) create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000005000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000005000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000005000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000006000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000006000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000006000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000007000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000007000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000007000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000008000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000008000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000008000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000009000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000009000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000009000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.hoodie.properties.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000000000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000000000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000000000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000005000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000005000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000005000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000006000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000006000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000006000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000007000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000007000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000007000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000008000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000008000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000008000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000009000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000009000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/19700101000009000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/hoodie.properties create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000010.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000010.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000010.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000000000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000000000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000000000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000005000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000005000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000005000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000008000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000008000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000008000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000009000.deltacommit.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000009000.deltacommit.inflight.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000009000.deltacommit.requested.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.hoodie.properties.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit.inflight create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit.requested create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/hoodie.properties create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.2_4-52-205.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.3_0-108-273.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.4_4-171-356.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.5_2-234-442.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.6_1-297-522.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.7_4-360-609.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..hoodie_partition_metadata.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_0-5-4_00000000000000010.hfile.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.2_4-52-205 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.3_0-108-273 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.4_4-171-356 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.5_2-234-442 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.6_1-297-522 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.7_4-360-609 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.hoodie_partition_metadata create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/files-0000-0_0-5-4_00000000000000010.hfile create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..hoodie_partition_metadata.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.2_0-52-201.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.3_0-171-352.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.4_0-297-521.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.5_0-360-605.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.2_1-52-202.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.3_1-171-353.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.4_1-360-606.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0002-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0003-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0004-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0005-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0006-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0007-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.2_2-52-203.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.3_2-171-354.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.4_0-234-440.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.5_2-360-607.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.1_0-0-0.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.2_3-52-204.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.3_3-171-355.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.4_1-234-441.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.5_3-360-608.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.hoodie_partition_metadata create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.2_0-52-201 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.3_0-171-352 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.4_0-297-521 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.5_0-360-605 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.2_1-52-202 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.3_1-171-353 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.4_1-360-606 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0002-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0003-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0004-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0005-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0006-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0007-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.2_2-52-203 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.3_2-171-354 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.4_0-234-440 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.5_2-360-607 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.1_0-0-0 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.2_3-52-204 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.3_3-171-355 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.4_1-234-441 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.5_3-360-608 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/..c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_19700101000000000.log.1_0-86-264.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/..c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_19700101000000000.log.2_0-149-340.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/..hoodie_partition_metadata.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/.37c2b860-eea6-4142-8bda-257b2562e4b4-0_1-338-594_19700101000009000.parquet.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/.c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_0-32-192_19700101000000000.parquet.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/.c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_19700101000000000.log.1_0-86-264 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/.c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_19700101000000000.log.2_0-149-340 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/.hoodie_partition_metadata create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/37c2b860-eea6-4142-8bda-257b2562e4b4-0_1-338-594_19700101000009000.parquet create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p1/c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_0-32-192_19700101000000000.parquet create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/..7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.1_0-212-431.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/..7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.2_0-275-512.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/..7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.3_0-338-593.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/..hoodie_partition_metadata.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_1-149-341_19700101000006000.parquet.crc create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.1_0-212-431 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.2_0-275-512 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.3_0-338-593 create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/.hoodie_partition_metadata create mode 100644 presto-hive/src/test/resources/hudi_mor_part_update/p2/7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_1-149-341_19700101000006000.parquet diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/HiveClientConfig.java b/presto-hive/src/main/java/com/facebook/presto/hive/HiveClientConfig.java index f4d9c7e00a1d..f0207269a59f 100644 --- a/presto-hive/src/main/java/com/facebook/presto/hive/HiveClientConfig.java +++ b/presto-hive/src/main/java/com/facebook/presto/hive/HiveClientConfig.java @@ -190,6 +190,7 @@ public class HiveClientConfig private boolean verboseRuntimeStatsEnabled; private boolean useRecordPageSourceForCustomSplit = true; private boolean hudiMetadataEnabled; + private String hudiTablesUseMergedView; private boolean sizeBasedSplitWeightsEnabled = true; private double minimumAssignedSplitWeight = 0.05; @@ -1647,6 +1648,19 @@ public boolean isHudiMetadataEnabled() return this.hudiMetadataEnabled; } + @Config("hive.hudi-tables-use-merged-view") + @ConfigDescription("For Hudi tables prefer to fetch the list of files from the merged file system view") + public HiveClientConfig setHudiTablesUseMergedView(String hudiTablesUseMergedView) + { + this.hudiTablesUseMergedView = hudiTablesUseMergedView; + return this; + } + + public String getHudiTablesUseMergedView() + { + return this.hudiTablesUseMergedView; + } + @Config("hive.quick-stats.enabled") @ConfigDescription("Use quick stats to resolve stats") public HiveClientConfig setQuickStatsEnabled(boolean quickStatsEnabled) diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/HiveSessionProperties.java b/presto-hive/src/main/java/com/facebook/presto/hive/HiveSessionProperties.java index f175a109636c..9231b1754ba4 100644 --- a/presto-hive/src/main/java/com/facebook/presto/hive/HiveSessionProperties.java +++ b/presto-hive/src/main/java/com/facebook/presto/hive/HiveSessionProperties.java @@ -125,6 +125,7 @@ public final class HiveSessionProperties public static final String MAX_INITIAL_SPLITS = "max_initial_splits"; public static final String FILE_SPLITTABLE = "file_splittable"; private static final String HUDI_METADATA_ENABLED = "hudi_metadata_enabled"; + private static final String HUDI_TABLES_USE_MERGED_VIEW = "hudi_tables_use_merged_view"; private static final String READ_TABLE_CONSTRAINTS = "read_table_constraints"; public static final String PARALLEL_PARSING_OF_PARTITION_VALUES_ENABLED = "parallel_parsing_of_partition_values_enabled"; public static final String QUICK_STATS_ENABLED = "quick_stats_enabled"; @@ -608,6 +609,11 @@ public HiveSessionProperties(HiveClientConfig hiveClientConfig, OrcFileWriterCon "For Hudi tables prefer to fetch the list of file names, sizes and other metadata from the internal metadata table rather than storage", hiveClientConfig.isHudiMetadataEnabled(), false), + stringProperty( + HUDI_TABLES_USE_MERGED_VIEW, + "For Hudi tables, use merged view to read data", + hiveClientConfig.getHudiTablesUseMergedView(), + false), booleanProperty( PARALLEL_PARSING_OF_PARTITION_VALUES_ENABLED, "Enables parallel parsing of partition values from partition names using thread pool", @@ -1101,6 +1107,12 @@ public static boolean isHudiMetadataEnabled(ConnectorSession session) return session.getProperty(HUDI_METADATA_ENABLED, Boolean.class); } + public static String getHudiTablesUseMergedView(ConnectorSession session) + { + String hudiTablesUseMergedView = session.getProperty(HUDI_TABLES_USE_MERGED_VIEW, String.class); + return hudiTablesUseMergedView == null ? "" : hudiTablesUseMergedView; + } + public static boolean isReadTableConstraints(ConnectorSession session) { return session.getProperty(READ_TABLE_CONSTRAINTS, Boolean.class); diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java b/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java index 72f9802ddad7..8d483572d8ac 100644 --- a/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java +++ b/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java @@ -20,6 +20,7 @@ import com.facebook.presto.hive.metastore.Table; import com.facebook.presto.hive.util.HiveFileIterator; import com.facebook.presto.spi.ConnectorSession; +import com.google.common.base.Splitter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FileStatus; @@ -30,16 +31,22 @@ import org.apache.hudi.common.engine.HoodieEngineContext; import org.apache.hudi.common.engine.HoodieLocalEngineContext; import org.apache.hudi.common.fs.FSUtils; +import org.apache.hudi.common.model.FileSlice; import org.apache.hudi.common.model.HoodieBaseFile; +import org.apache.hudi.common.model.HoodieTableType; import org.apache.hudi.common.table.HoodieTableMetaClient; +import org.apache.hudi.common.table.timeline.HoodieInstant; import org.apache.hudi.common.table.view.FileSystemViewManager; import org.apache.hudi.common.table.view.HoodieTableFileSystemView; +import org.apache.hudi.common.util.Option; import java.io.IOException; import java.util.Iterator; import java.util.Optional; +import java.util.stream.Stream; import static com.facebook.presto.hive.HiveFileInfo.createHiveFileInfo; +import static com.facebook.presto.hive.HiveSessionProperties.getHudiTablesUseMergedView; import static com.facebook.presto.hive.HiveSessionProperties.isHudiMetadataEnabled; import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_DEFAULT_PORT; @@ -47,15 +54,20 @@ public class HudiDirectoryLister implements DirectoryLister { private static final Logger log = Logger.get(HudiDirectoryLister.class); + private static final Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings(); private final HoodieTableFileSystemView fileSystemView; private final HoodieTableMetaClient metaClient; private final boolean metadataEnabled; + private final String latestInstant; + private final boolean shouldUseMergedView; public HudiDirectoryLister(Configuration conf, ConnectorSession session, Table table) { log.info("Using Hudi Directory Lister."); + // TODO: Just hardcoding for testing. Need to prepare connector session in the test. this.metadataEnabled = isHudiMetadataEnabled(session); + this.shouldUseMergedView = SPLITTER.splitToList(getHudiTablesUseMergedView(session)).contains(table.getSchemaTableName().toString()); Configuration actualConfig = ((CachingJobConf) conf).getConfig(); /* WrapperJobConf acts as a wrapper on top of the actual Configuration object. If `hive.copy-on-first-write-configuration-enabled` @@ -68,6 +80,11 @@ public HudiDirectoryLister(Configuration conf, ConnectorSession session, Table t .setConf(actualConfig) .setBasePath(table.getStorage().getLocation()) .build(); + this.latestInstant = metaClient.getActiveTimeline() + .getCommitsTimeline() + .filterCompletedInstants() + .lastInstant() + .map(HoodieInstant::getTimestamp).orElseThrow(() -> new RuntimeException("No active instant found")); HoodieEngineContext engineContext = new HoodieLocalEngineContext(actualConfig); HoodieMetadataConfig metadataConfig = HoodieMetadataConfig.newBuilder() .enable(metadataEnabled) @@ -96,7 +113,10 @@ public Iterator list( fileSystemView, metadataEnabled ? Optional.empty() : Optional.of(fileSystem.listStatus(p)), table.getStorage().getLocation(), - p), + p, + metaClient.getTableType(), + latestInstant, + shouldUseMergedView), namenodeStats, hiveDirectoryContext.getNestedDirectoryPolicy(), hiveDirectoryContext.isSkipEmptyFilesEnabled()); @@ -111,7 +131,10 @@ public HudiFileInfoIterator( HoodieTableFileSystemView fileSystemView, Optional fileStatuses, String tablePath, - Path directory) + Path directory, + HoodieTableType tableType, + String latestInstant, + boolean shouldUseMergedView) { String partition = FSUtils.getRelativePartitionPath(new Path(tablePath), directory); if (fileStatuses.isPresent()) { @@ -119,7 +142,15 @@ public HudiFileInfoIterator( this.hoodieBaseFileIterator = fileSystemView.fetchLatestBaseFiles(partition).iterator(); } else { - this.hoodieBaseFileIterator = fileSystemView.getLatestBaseFiles(partition).iterator(); + if (shouldUseMergedView) { + Stream fileSlices = HoodieTableType.MERGE_ON_READ.equals(tableType) ? + fileSystemView.getLatestMergedFileSlicesBeforeOrOn(partition, latestInstant) : + fileSystemView.getLatestFileSlicesBeforeOrOn(partition, latestInstant, false); + this.hoodieBaseFileIterator = fileSlices.map(FileSlice::getBaseFile).filter(Option::isPresent).map(Option::get).iterator(); + } + else { + this.hoodieBaseFileIterator = fileSystemView.getLatestBaseFiles(partition).iterator(); + } } } diff --git a/presto-hive/src/test/java/com/facebook/presto/hive/TestHudiDirectoryLister.java b/presto-hive/src/test/java/com/facebook/presto/hive/TestHudiDirectoryLister.java index 5dd727627711..d67805ab7083 100644 --- a/presto-hive/src/test/java/com/facebook/presto/hive/TestHudiDirectoryLister.java +++ b/presto-hive/src/test/java/com/facebook/presto/hive/TestHudiDirectoryLister.java @@ -18,7 +18,9 @@ import com.facebook.presto.hive.filesystem.ExtendedFileSystem; import com.facebook.presto.hive.metastore.Storage; import com.facebook.presto.hive.metastore.Table; +import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.security.ConnectorIdentity; +import com.facebook.presto.testing.TestingConnectorSession; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.apache.hadoop.conf.Configuration; @@ -38,10 +40,13 @@ import static com.facebook.presto.hive.BucketFunctionType.HIVE_COMPATIBLE; import static com.facebook.presto.hive.HiveStorageFormat.PARQUET; import static com.facebook.presto.hive.HiveTestUtils.SESSION; +import static com.facebook.presto.hive.HiveTestUtils.TEST_CLIENT_TAGS; +import static com.facebook.presto.hive.HiveTestUtils.getAllSessionProperties; import static com.facebook.presto.hive.NestedDirectoryPolicy.IGNORED; import static com.facebook.presto.hive.metastore.PrestoTableType.EXTERNAL_TABLE; import static com.facebook.presto.hive.metastore.StorageFormat.fromHiveStorageFormat; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertThrows; import static org.testng.Assert.assertTrue; @@ -107,6 +112,71 @@ private Table getMockTable() Optional.empty()); } + private Table getMockMORTableWithPartition() + { + return new Table( + "schema", + "hudi_mor_part_update", + "user", + EXTERNAL_TABLE, + new Storage(fromHiveStorageFormat(PARQUET), + getTableBasePath("hudi_mor_part_update"), + Optional.of(new HiveBucketProperty( + ImmutableList.of(), + 1, + ImmutableList.of(), + HIVE_COMPATIBLE, + Optional.empty())), + false, + ImmutableMap.of(), + ImmutableMap.of()), + ImmutableList.of(), + ImmutableList.of(), + ImmutableMap.of(), + Optional.empty(), + Optional.empty()); + } + + @Test + public void testDirectoryListerForMORTableWithPartitionUpdates() + throws IOException + { + Table mockTable = getMockMORTableWithPartition(); + Configuration hadoopConf = getHadoopConfWithCopyOnFirstWriteDisabled(); + try { + ConnectorSession session = new TestingConnectorSession( + getAllSessionProperties( + new HiveClientConfig() + .setHudiMetadataEnabled(true) + .setHudiTablesUseMergedView(mockTable.getSchemaTableName().toString()), + new HiveCommonClientConfig()), + TEST_CLIENT_TAGS); + HudiDirectoryLister directoryLister = new HudiDirectoryLister(hadoopConf, session, mockTable); + HoodieTableMetaClient metaClient = directoryLister.getMetaClient(); + assertEquals(metaClient.getBasePath(), mockTable.getStorage().getLocation()); + Path path = new Path(mockTable.getStorage().getLocation()); + ExtendedFileSystem fs = (ExtendedFileSystem) path.getFileSystem(hadoopConf); + Iterator fileInfoIterator = directoryLister.list(fs, mockTable, path, Optional.empty(), new NamenodeStats(), new HiveDirectoryContext( + IGNORED, + false, + false, + new ConnectorIdentity("test", Optional.empty(), Optional.empty()), + ImmutableMap.of(), + new RuntimeStats())); + while (fileInfoIterator.hasNext()) { + HiveFileInfo fileInfo = fileInfoIterator.next(); + String fileName = fileInfo.getPath().getName(); + // expected to have the latest base file in p1 and p2 partitions + assertTrue(fileName.startsWith("37c2b860-eea6-4142-8bda-257b2562e4b4-0_1-338-594") || fileName.startsWith("7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_1-149-341")); + // not expected to have the older version of the base file in p1 + assertFalse(fileName.startsWith("c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_0-32-192")); + } + } + finally { + hadoopConf = null; + } + } + @Test public void testDirectoryListerForHudiTable() throws IOException diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..6faac7ab3cc503aa0c55275496ebcb13a944f538 GIT binary patch literal 24 fcmYc;N@ieSU}A77I9|wcKc~HlC3)442=-P0S*i$V literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.inflight.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.inflight.crc new file mode 100644 index 0000000000000000000000000000000000000000..b4cea9f0b229edc89046b69b3f3e9accd68963cf GIT binary patch literal 16 XcmYc;N@ieSU}8u(8$9*Jk7J7fD3}JA literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000000000.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000005000.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000005000.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..450a4a10e65ef33fa104180ead9ddb06a949955c GIT binary patch literal 24 gcmYc;N@ieSU}8Ac|D$8ls(aZhHM!Tg$zM1E0B$e}8vpCp0D$!g)Bpeg literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000006000.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000006000.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000007000.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/.19700101000007000.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..02f2449591944d372e8cd7b7c021074be7585bdc GIT binary patch literal 24 fcmYc;N@ieSU}7k!We^sLt%&3JShMg*b5<mZp5GVO2LDdDcAyFZp0kqH`C^T5@ iUtYCEm9IT0QOSWF9gA literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000010.deltacommit.inflight.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000010.deltacommit.inflight.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000010.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000010.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..c257d8c88337a1f43a54c686e6a6e6bccf22008d GIT binary patch literal 72 zcmV-O0Jr~Ra$^7h00ICJ*7wfEB~>4sYnseuv|a=jVzN_DMh3|weF;=t)S-@wopR}# ec1xIe_>owr#FW+HC9`7J=2Kt}qM#TJ3eT%T>mZQ; literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.inflight.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.inflight.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.00000000000000011.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000000000.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000000000.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..6f467a83e193b65152c897508c5d68f02fafde87 GIT binary patch literal 116 zcmV-)0E_=)a$^7h00ICa0GtK0&*O!It|Zm#*HLSdw6de2b~XuDF!_1=EMoKbrzGLI zg$~+EVJLVpuBpTx@+MEma9v!Z_$Rw3@b>)j%qZRh6O#~(J+~1-s*{gVw~AsIUgA4%YhEG3s}R m8Y+1i8WU*Sdxv^qJ^DkVAK)z}!?w2hwvNOg#?~F|^+1KsRVP#c literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000005000.deltacommit.inflight.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000005000.deltacommit.inflight.crc new file mode 100644 index 0000000000000000000000000000000000000000..dd3ef205a05d95e2439dd041bf979a58f8e99383 GIT binary patch literal 20 ccmYc;N@ieSU}AWyv;O7Un|nMz{@MH;08O9@4gdfE literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000005000.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000005000.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..41bec2c82d9b6f8126877ae2051d2f8b0d1672d4 GIT binary patch literal 116 zcmV-)0E_=)a$^7h00ICHzEsbU*Ck}6EphkyWF5A5r=VkbBz6GY(3C}n)23CqcLz`N zpXxK!`6+u(!UdAqMaBh-##DylDC literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.inflight.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.inflight.crc new file mode 100644 index 0000000000000000000000000000000000000000..1e177126bdde8fcdf74e1a80c122834f3575802e GIT binary patch literal 48 zcmV-00MGwpa$^7h00IC?7=I&q{<%60h!q4B@fgC2vs|D2*=kVP=59A6ycftMp%*P` G^rn}fFcZW8 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000006000.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..a478306d06b84fc56800c2fed666c229f7ed920f GIT binary patch literal 100 zcmV-q0Gt0~a$^7h00ID0CRT8-1Ht;nb~{}ehmt8#2FKLL!rSsE6Wbt&&*&9JniWa< zc9LzhP{nOmaV-NdbKQ-BM-Au!sdnRk5mIB8e0(Y1m0z{lPzoMYUB}A27{|kSWU3_e G?eUdY9xf9A literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.inflight.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.inflight.crc new file mode 100644 index 0000000000000000000000000000000000000000..6ed6b4b615cdc106cfe89b6d8dc7607395d20fd0 GIT binary patch literal 40 ycmV+@0N4Lxa$^7h00IC?7=I)F-ToJ9^Zfx7@fgCa-(+h115NXMemJeWmh$#PcM}-^ literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000007000.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000008000.deltacommit.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000008000.deltacommit.crc new file mode 100644 index 0000000000000000000000000000000000000000..4d0e6ca7f7c06a2a8738f3e7474971e239feaa57 GIT binary patch literal 92 zcmV-i0Hgn7a$^7h00IEq7}N(;ZQ1d)7g8-Ia4)p5HeJ;SI75yXaKSKDrcvVDDAFSPYP#DOCoRB>ZZ+J-gQ zm1_`i07L<6aH4)pv1lUoDf{4)1d!<`A0#LXM=4Q5wQ%m)XQbN^MFhl9int6h!XITy ecm4WZI(Xu*f9ywSw)I?(u-=|zv$T$_)tJjK!8(Be literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000009000.deltacommit.inflight.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000009000.deltacommit.inflight.crc new file mode 100644 index 0000000000000000000000000000000000000000..1e177126bdde8fcdf74e1a80c122834f3575802e GIT binary patch literal 48 zcmV-00MGwpa$^7h00IC?7=I&q{<%60h!q4B@fgC2vs|D2*=kVP=59A6ycftMp%*P` G^rn}fFcZW8 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000009000.deltacommit.requested.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.19700101000009000.deltacommit.requested.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b7b044936a890cd8d651d349a752d819d71d22c GIT binary patch literal 8 PcmYc;N@ieSU}69O2$TUk literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.hoodie.properties.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/.hoodie.properties.crc new file mode 100644 index 0000000000000000000000000000000000000000..886bf02f01403a36392ef94656bf2983d57079ef GIT binary patch literal 16 XcmYc;N@ieSU}7-3UNa%tWsf5OBc=rO literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit new file mode 100644 index 000000000000..831a5ac6bae3 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit @@ -0,0 +1,38 @@ +{ + "partitionToWriteStats" : { + "files" : [ { + "fileId" : "files-0000-0", + "path" : "files/files-0000-0_0-5-4_00000000000000010.hfile", + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 1, + "totalWriteBytes" : 6807, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "files", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 6807, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 0, + "totalCreateTime" : 5672 + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "BULK_INSERT" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit.inflight new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000010.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit new file mode 100644 index 000000000000..1e9574803ad6 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit @@ -0,0 +1,8 @@ +{ + "partitionToWriteStats" : { }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "BULK_INSERT" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit.inflight new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/00000000000000011.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit new file mode 100644 index 000000000000..f8e15603b703 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit @@ -0,0 +1,186 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "record-index-0000-0", + "path" : "record_index/.record-index-0000-0_00000000000000011.log.2_0-52-201", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13282, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13282, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 143, + "totalCreateTime" : 0 + }, + "logVersion" : 2, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0000-0_00000000000000011.log.1_0-0-0", ".record-index-0000-0_00000000000000011.log.2_0-52-201" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0001-0", + "path" : "record_index/.record-index-0001-0_00000000000000011.log.2_1-52-202", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13282, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13282, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 135, + "totalCreateTime" : 0 + }, + "logVersion" : 2, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0001-0_00000000000000011.log.1_0-0-0", ".record-index-0001-0_00000000000000011.log.2_1-52-202" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0008-0", + "path" : "record_index/.record-index-0008-0_00000000000000011.log.2_2-52-203", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13281, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13281, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 135, + "totalCreateTime" : 0 + }, + "logVersion" : 2, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0008-0_00000000000000011.log.1_0-0-0", ".record-index-0008-0_00000000000000011.log.2_2-52-203" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0009-0", + "path" : "record_index/.record-index-0009-0_00000000000000011.log.2_3-52-204", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13281, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13281, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 143, + "totalCreateTime" : 0 + }, + "logVersion" : 2, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0009-0_00000000000000011.log.1_0-0-0", ".record-index-0009-0_00000000000000011.log.2_3-52-204" ], + "recordsStats" : { + "val" : null + } + } ], + "files" : [ { + "fileId" : "files-0000-0", + "path" : "files/.files-0000-0_00000000000000010.log.2_4-52-205", + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 2, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 13369, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "files", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13369, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 135, + "totalCreateTime" : 0 + }, + "logVersion" : 2, + "logOffset" : 0, + "baseFile" : "files-0000-0_0-5-4_00000000000000010.hfile", + "logFiles" : [ ".files-0000-0_00000000000000010.log.1_0-0-0", ".files-0000-0_00000000000000010.log.2_4-52-205" ], + "recordsStats" : { + "val" : null + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit.inflight new file mode 100644 index 000000000000..f344dac34fdc --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit.inflight @@ -0,0 +1,177 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0001-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0008-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0009-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ], + "files" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "files-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000000000.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit new file mode 100644 index 000000000000..e3daadfb6313 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit @@ -0,0 +1,45 @@ +{ + "partitionToWriteStats" : { + "files" : [ { + "fileId" : "files-0000-0", + "path" : "files/.files-0000-0_00000000000000010.log.3_0-108-273", + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 2, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 13367, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "files", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13367, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 54, + "totalCreateTime" : 0 + }, + "logVersion" : 3, + "logOffset" : 0, + "baseFile" : "files-0000-0_0-5-4_00000000000000010.hfile", + "logFiles" : [ ".files-0000-0_00000000000000010.log.2_4-52-205", ".files-0000-0_00000000000000010.log.1_0-0-0", ".files-0000-0_00000000000000010.log.3_0-108-273" ], + "recordsStats" : { + "val" : null + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit.inflight new file mode 100644 index 000000000000..6f718ee1a47d --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit.inflight @@ -0,0 +1,56 @@ +{ + "partitionToWriteStats" : { + "files" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "files-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000005000.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit new file mode 100644 index 000000000000..91414fdba33e --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit @@ -0,0 +1,186 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "record-index-0000-0", + "path" : "record_index/.record-index-0000-0_00000000000000011.log.3_0-171-352", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13283, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13283, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 61, + "totalCreateTime" : 0 + }, + "logVersion" : 3, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0000-0_00000000000000011.log.2_0-52-201", ".record-index-0000-0_00000000000000011.log.1_0-0-0", ".record-index-0000-0_00000000000000011.log.3_0-171-352" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0001-0", + "path" : "record_index/.record-index-0001-0_00000000000000011.log.3_1-171-353", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13283, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13283, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 59, + "totalCreateTime" : 0 + }, + "logVersion" : 3, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0001-0_00000000000000011.log.2_1-52-202", ".record-index-0001-0_00000000000000011.log.1_0-0-0", ".record-index-0001-0_00000000000000011.log.3_1-171-353" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0008-0", + "path" : "record_index/.record-index-0008-0_00000000000000011.log.3_2-171-354", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13283, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13283, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 64, + "totalCreateTime" : 0 + }, + "logVersion" : 3, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0008-0_00000000000000011.log.2_2-52-203", ".record-index-0008-0_00000000000000011.log.1_0-0-0", ".record-index-0008-0_00000000000000011.log.3_2-171-354" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0009-0", + "path" : "record_index/.record-index-0009-0_00000000000000011.log.3_3-171-355", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13283, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13283, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 67, + "totalCreateTime" : 0 + }, + "logVersion" : 3, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0009-0_00000000000000011.log.2_3-52-204", ".record-index-0009-0_00000000000000011.log.1_0-0-0", ".record-index-0009-0_00000000000000011.log.3_3-171-355" ], + "recordsStats" : { + "val" : null + } + } ], + "files" : [ { + "fileId" : "files-0000-0", + "path" : "files/.files-0000-0_00000000000000010.log.4_4-171-356", + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 3, + "numDeletes" : 0, + "numUpdateWrites" : 3, + "numInserts" : 0, + "totalWriteBytes" : 13428, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "files", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13428, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 67, + "totalCreateTime" : 0 + }, + "logVersion" : 4, + "logOffset" : 0, + "baseFile" : "files-0000-0_0-5-4_00000000000000010.hfile", + "logFiles" : [ ".files-0000-0_00000000000000010.log.3_0-108-273", ".files-0000-0_00000000000000010.log.2_4-52-205", ".files-0000-0_00000000000000010.log.1_0-0-0", ".files-0000-0_00000000000000010.log.4_4-171-356" ], + "recordsStats" : { + "val" : null + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit.inflight new file mode 100644 index 000000000000..29e4b7ac0002 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit.inflight @@ -0,0 +1,177 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0001-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0008-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0009-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ], + "files" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "files-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 3, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000006000.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit new file mode 100644 index 000000000000..3c112257a476 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit @@ -0,0 +1,116 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "record-index-0008-0", + "path" : "record_index/.record-index-0008-0_00000000000000011.log.4_0-234-440", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 1, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 7264, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 7264, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 41, + "totalCreateTime" : 0 + }, + "logVersion" : 4, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0008-0_00000000000000011.log.3_2-171-354", ".record-index-0008-0_00000000000000011.log.2_2-52-203", ".record-index-0008-0_00000000000000011.log.1_0-0-0", ".record-index-0008-0_00000000000000011.log.4_0-234-440" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0009-0", + "path" : "record_index/.record-index-0009-0_00000000000000011.log.4_1-234-441", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 1, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 7264, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 7264, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 35, + "totalCreateTime" : 0 + }, + "logVersion" : 4, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0009-0_00000000000000011.log.3_3-171-355", ".record-index-0009-0_00000000000000011.log.2_3-52-204", ".record-index-0009-0_00000000000000011.log.1_0-0-0", ".record-index-0009-0_00000000000000011.log.4_1-234-441" ], + "recordsStats" : { + "val" : null + } + } ], + "files" : [ { + "fileId" : "files-0000-0", + "path" : "files/.files-0000-0_00000000000000010.log.5_2-234-442", + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 2, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 13371, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "files", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13371, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 56, + "totalCreateTime" : 0 + }, + "logVersion" : 5, + "logOffset" : 0, + "baseFile" : "files-0000-0_0-5-4_00000000000000010.hfile", + "logFiles" : [ ".files-0000-0_00000000000000010.log.4_4-171-356", ".files-0000-0_00000000000000010.log.3_0-108-273", ".files-0000-0_00000000000000010.log.2_4-52-205", ".files-0000-0_00000000000000010.log.1_0-0-0", ".files-0000-0_00000000000000010.log.5_2-234-442" ], + "recordsStats" : { + "val" : null + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit.inflight new file mode 100644 index 000000000000..e6011815660e --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit.inflight @@ -0,0 +1,129 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0008-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0009-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ], + "files" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "files-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000007000.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit new file mode 100644 index 000000000000..569861b24477 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit @@ -0,0 +1,81 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "record-index-0000-0", + "path" : "record_index/.record-index-0000-0_00000000000000011.log.4_0-297-521", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 1, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 7264, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 7264, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 38, + "totalCreateTime" : 0 + }, + "logVersion" : 4, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0000-0_00000000000000011.log.3_0-171-352", ".record-index-0000-0_00000000000000011.log.2_0-52-201", ".record-index-0000-0_00000000000000011.log.1_0-0-0", ".record-index-0000-0_00000000000000011.log.4_0-297-521" ], + "recordsStats" : { + "val" : null + } + } ], + "files" : [ { + "fileId" : "files-0000-0", + "path" : "files/.files-0000-0_00000000000000010.log.6_1-297-522", + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 2, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 13371, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "files", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13371, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 57, + "totalCreateTime" : 0 + }, + "logVersion" : 6, + "logOffset" : 0, + "baseFile" : "files-0000-0_0-5-4_00000000000000010.hfile", + "logFiles" : [ ".files-0000-0_00000000000000010.log.5_2-234-442", ".files-0000-0_00000000000000010.log.4_4-171-356", ".files-0000-0_00000000000000010.log.3_0-108-273", ".files-0000-0_00000000000000010.log.2_4-52-205", ".files-0000-0_00000000000000010.log.1_0-0-0", ".files-0000-0_00000000000000010.log.6_1-297-522" ], + "recordsStats" : { + "val" : null + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit.inflight new file mode 100644 index 000000000000..73647d2bce65 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit.inflight @@ -0,0 +1,105 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ], + "files" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "files-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 2, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000008000.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit new file mode 100644 index 000000000000..3d18f3b99f06 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit @@ -0,0 +1,186 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "record-index-0000-0", + "path" : "record_index/.record-index-0000-0_00000000000000011.log.5_0-360-605", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13282, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13282, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 56, + "totalCreateTime" : 0 + }, + "logVersion" : 5, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0000-0_00000000000000011.log.4_0-297-521", ".record-index-0000-0_00000000000000011.log.3_0-171-352", ".record-index-0000-0_00000000000000011.log.2_0-52-201", ".record-index-0000-0_00000000000000011.log.1_0-0-0", ".record-index-0000-0_00000000000000011.log.5_0-360-605" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0001-0", + "path" : "record_index/.record-index-0001-0_00000000000000011.log.4_1-360-606", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13282, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13282, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 51, + "totalCreateTime" : 0 + }, + "logVersion" : 4, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0001-0_00000000000000011.log.3_1-171-353", ".record-index-0001-0_00000000000000011.log.2_1-52-202", ".record-index-0001-0_00000000000000011.log.1_0-0-0", ".record-index-0001-0_00000000000000011.log.4_1-360-606" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0008-0", + "path" : "record_index/.record-index-0008-0_00000000000000011.log.5_2-360-607", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13281, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13281, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 49, + "totalCreateTime" : 0 + }, + "logVersion" : 5, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0008-0_00000000000000011.log.4_0-234-440", ".record-index-0008-0_00000000000000011.log.3_2-171-354", ".record-index-0008-0_00000000000000011.log.2_2-52-203", ".record-index-0008-0_00000000000000011.log.1_0-0-0", ".record-index-0008-0_00000000000000011.log.5_2-360-607" ], + "recordsStats" : { + "val" : null + } + }, { + "fileId" : "record-index-0009-0", + "path" : "record_index/.record-index-0009-0_00000000000000011.log.5_3-360-608", + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 1, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 13281, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "record_index", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13281, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 47, + "totalCreateTime" : 0 + }, + "logVersion" : 5, + "logOffset" : 0, + "baseFile" : "", + "logFiles" : [ ".record-index-0009-0_00000000000000011.log.4_1-234-441", ".record-index-0009-0_00000000000000011.log.3_3-171-355", ".record-index-0009-0_00000000000000011.log.2_3-52-204", ".record-index-0009-0_00000000000000011.log.1_0-0-0", ".record-index-0009-0_00000000000000011.log.5_3-360-608" ], + "recordsStats" : { + "val" : null + } + } ], + "files" : [ { + "fileId" : "files-0000-0", + "path" : "files/.files-0000-0_00000000000000010.log.7_4-360-609", + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 3, + "numDeletes" : 0, + "numUpdateWrites" : 3, + "numInserts" : 0, + "totalWriteBytes" : 13432, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : "files", + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 13432, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : { + "totalScanTime" : 0, + "totalUpsertTime" : 54, + "totalCreateTime" : 0 + }, + "logVersion" : 7, + "logOffset" : 0, + "baseFile" : "files-0000-0_0-5-4_00000000000000010.hfile", + "logFiles" : [ ".files-0000-0_00000000000000010.log.6_1-297-522", ".files-0000-0_00000000000000010.log.5_2-234-442", ".files-0000-0_00000000000000010.log.4_4-171-356", ".files-0000-0_00000000000000010.log.3_0-108-273", ".files-0000-0_00000000000000010.log.2_4-52-205", ".files-0000-0_00000000000000010.log.1_0-0-0", ".files-0000-0_00000000000000010.log.7_4-360-609" ], + "recordsStats" : { + "val" : null + } + } ] + }, + "compacted" : false, + "extraMetadata" : { + "schema" : "{\"type\":\"record\",\"name\":\"HoodieMetadataRecord\",\"namespace\":\"org.apache.hudi.avro.model\",\"doc\":\"A record saved within the Metadata Table\",\"fields\":[{\"name\":\"key\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}},{\"name\":\"type\",\"type\":\"int\",\"doc\":\"Type of the metadata record\"},{\"name\":\"filesystemMetadata\",\"type\":[\"null\",{\"type\":\"map\",\"values\":{\"type\":\"record\",\"name\":\"HoodieMetadataFileInfo\",\"fields\":[{\"name\":\"size\",\"type\":\"long\",\"doc\":\"Size of the file\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"True if this file has been deleted\"}]},\"avro.java.string\":\"String\"}],\"doc\":\"Contains information about partitions and files within the dataset\"},{\"name\":\"BloomFilterMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataBloomFilter\",\"doc\":\"Data file bloom filter details\",\"fields\":[{\"name\":\"type\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Bloom filter type code\"},{\"name\":\"timestamp\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"},\"doc\":\"Instant timestamp when this metadata was created/updated\"},{\"name\":\"bloomFilter\",\"type\":\"bytes\",\"doc\":\"Bloom filter binary byte array\"},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Bloom filter entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of bloom filters for all data files in the user table\",\"default\":null},{\"name\":\"ColumnStatsMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieMetadataColumnStats\",\"doc\":\"Data file column statistics\",\"fields\":[{\"name\":\"fileName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"File name for which this column statistics applies\",\"default\":null},{\"name\":\"columnName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Column name for which this column statistics applies\",\"default\":null},{\"name\":\"minValue\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"BooleanWrapper\",\"doc\":\"A record wrapping boolean type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"boolean\"}]},{\"type\":\"record\",\"name\":\"IntWrapper\",\"doc\":\"A record wrapping int type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"LongWrapper\",\"doc\":\"A record wrapping long type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]},{\"type\":\"record\",\"name\":\"FloatWrapper\",\"doc\":\"A record wrapping float type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"float\"}]},{\"type\":\"record\",\"name\":\"DoubleWrapper\",\"doc\":\"A record wrapping double type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"double\"}]},{\"type\":\"record\",\"name\":\"BytesWrapper\",\"doc\":\"A record wrapping bytes type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"bytes\"}]},{\"type\":\"record\",\"name\":\"StringWrapper\",\"doc\":\"A record wrapping string type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"string\",\"avro.java.string\":\"String\"}}]},{\"type\":\"record\",\"name\":\"DateWrapper\",\"doc\":\"A record wrapping Date logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"DecimalWrapper\",\"doc\":\"A record wrapping Decimal logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"bytes\",\"logicalType\":\"decimal\",\"precision\":30,\"scale\":15}}]},{\"type\":\"record\",\"name\":\"TimeMicrosWrapper\",\"doc\":\"A record wrapping Time-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":{\"type\":\"long\",\"logicalType\":\"time-micros\"}}]},{\"type\":\"record\",\"name\":\"TimestampMicrosWrapper\",\"doc\":\"A record wrapping Timestamp-micros logical type to be able to be used it w/in Avro's Union\",\"fields\":[{\"name\":\"value\",\"type\":\"long\"}]}],\"doc\":\"Minimum value in the range. Based on user data table schema, we can convert this to appropriate type\",\"default\":null},{\"name\":\"maxValue\",\"type\":[\"null\",\"BooleanWrapper\",\"IntWrapper\",\"LongWrapper\",\"FloatWrapper\",\"DoubleWrapper\",\"BytesWrapper\",\"StringWrapper\",\"DateWrapper\",\"DecimalWrapper\",\"TimeMicrosWrapper\",\"TimestampMicrosWrapper\"],\"doc\":\"Maximum value in the range. Based on user data table schema, we can convert it to appropriate type\",\"default\":null},{\"name\":\"valueCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of values\",\"default\":null},{\"name\":\"nullCount\",\"type\":[\"null\",\"long\"],\"doc\":\"Total count of null values\",\"default\":null},{\"name\":\"totalSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total storage size on disk\",\"default\":null},{\"name\":\"totalUncompressedSize\",\"type\":[\"null\",\"long\"],\"doc\":\"Total uncompressed storage size on disk\",\"default\":null},{\"name\":\"isDeleted\",\"type\":\"boolean\",\"doc\":\"Column range entry valid/deleted flag\"}]}],\"doc\":\"Metadata Index of column statistics for all data files in the user table\",\"default\":null},{\"name\":\"recordIndexMetadata\",\"type\":[\"null\",{\"type\":\"record\",\"name\":\"HoodieRecordIndexInfo\",\"fields\":[{\"name\":\"partitionName\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Refers to the partition name the record belongs to\",\"default\":null},{\"name\":\"fileIdHighBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to high 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIdLowBits\",\"type\":[\"null\",\"long\"],\"doc\":\"Refers to low 64 bits if the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileIndex\",\"type\":[\"null\",\"int\"],\"doc\":\"Index representing file index which is used to re-construct UUID based fileID. Applicable when the fileId is based on UUID format. \\nA UUID based fileId is stored as 3 pieces in RLI (fileIdHighBits, fileIdLowBits and fileIndex). \\nFileID format is {UUID}-{fileIndex}.\",\"default\":null},{\"name\":\"fileId\",\"type\":[\"null\",{\"type\":\"string\",\"avro.java.string\":\"String\"}],\"doc\":\"Represents fileId of the location where record belongs to. When the encoding is 1, fileID is stored in raw string format.\",\"default\":null},{\"name\":\"instantTime\",\"type\":[\"null\",\"long\"],\"doc\":\"Epoch time in millisecond representing the commit time at which record was added\",\"default\":null},{\"name\":\"fileIdEncoding\",\"type\":\"int\",\"doc\":\"Represents fileId encoding. Possible values are 0 and 1. O represents UUID based fileID, and 1 represents raw string format of the fileId. \\nWhen the encoding is 0, reader can deduce fileID from fileIdLowBits, fileIdLowBits and fileIndex.\",\"default\":0}]}],\"doc\":\"Metadata Index that contains information about record keys and their location in the dataset\",\"default\":null}]}" + }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit.inflight b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit.inflight new file mode 100644 index 000000000000..29e4b7ac0002 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit.inflight @@ -0,0 +1,177 @@ +{ + "partitionToWriteStats" : { + "record_index" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0001-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0008-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "record-index-0009-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000011", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 1, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ], + "files" : [ { + "fileId" : "", + "path" : null, + "cdcStats" : null, + "prevCommit" : "null", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 0, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + }, { + "fileId" : "files-0000-0", + "path" : null, + "cdcStats" : null, + "prevCommit" : "00000000000000010", + "numWrites" : 0, + "numDeletes" : 0, + "numUpdateWrites" : 3, + "numInserts" : 0, + "totalWriteBytes" : 0, + "totalWriteErrors" : 0, + "tempPath" : null, + "partitionPath" : null, + "totalLogRecords" : 0, + "totalLogFilesCompacted" : 0, + "totalLogSizeCompacted" : 0, + "totalUpdatedRecordsCompacted" : 0, + "totalLogBlocks" : 0, + "totalCorruptLogBlock" : 0, + "totalRollbackBlocks" : 0, + "fileSizeInBytes" : 0, + "minEventTime" : null, + "maxEventTime" : null, + "runtimeStats" : null + } ] + }, + "compacted" : false, + "extraMetadata" : { }, + "operationType" : "UPSERT_PREPPED" +} \ No newline at end of file diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit.requested b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/19700101000009000.deltacommit.requested new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/hoodie.properties b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/hoodie.properties new file mode 100644 index 000000000000..2e14f7fcbc88 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/.hoodie/hoodie.properties @@ -0,0 +1,15 @@ +#Properties saved on 2024-10-31T12:17:12.354Z +#Thu Oct 31 17:47:12 IST 2024 +hoodie.datasource.write.drop.partition.columns=false +hoodie.table.type=MERGE_ON_READ +hoodie.archivelog.folder=archived +hoodie.populate.meta.fields=false +hoodie.compaction.payload.class=org.apache.hudi.metadata.HoodieMetadataPayload +hoodie.timeline.layout.version=1 +hoodie.table.version=6 +hoodie.table.base.file.format=HFILE +hoodie.table.recordkey.fields=key +hoodie.table.name=test-trip-table_metadata +hoodie.table.keygenerator.class=org.apache.hudi.metadata.HoodieTableMetadataKeyGenerator +hoodie.compaction.record.merger.strategy=eeb8d96f-b1e4-49fd-bbf8-28ac514178e5 +hoodie.table.checksum=3798427289 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..9f392ca9db2aa8e7b5530e1aa7d948a5e3812489 GIT binary patch literal 12 TcmYc;N@ieSU}D&_RG6B`3J literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.2_4-52-205.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.2_4-52-205.crc new file mode 100644 index 0000000000000000000000000000000000000000..75bb7ba3a2c401ebab9a2eedce57b76367f0239d GIT binary patch literal 116 zcmYc;N@ieSU}7-;7~}T7G_iy0)PiF#4O=^>+)>^8iX->I5w?%FR$o5jrtQ{iDb)V? z+QpmKi>^r)tQS3TctP>6l+E6`E4{BU&gx<`4U$ylH#ckcjX1bzRcQq-yjcC~TL8IM BIzs>e literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.3_0-108-273.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.3_0-108-273.crc new file mode 100644 index 0000000000000000000000000000000000000000..9ede2f530062074356ed73d43e0f491d86a16519 GIT binary patch literal 116 zcmYc;N@ieSU}CtGd86ljX<`T0sRhSg8n$*$xud%G6-VxaBWxdUt-gH5P1~*4QmFm& zwTm~e7hRJqSTB0w@PguBDVq~IOy%X=cLYhO-OZb%_h;^U8PB#&t4b?y;i-qNTm}F^ Cvpm57 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.4_4-171-356.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.4_4-171-356.crc new file mode 100644 index 0000000000000000000000000000000000000000..9969d8e7802103374bf01f6deaa3f5f3a0c6a811 GIT binary patch literal 116 zcmYc;N@ieSU}A_jNHTw4n%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%I3SluZ&h`>|Mzfr*KBWSYq10h{)_st4b?y;g-**xd7Bt BJ7NF; literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.5_2-234-442.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.5_2-234-442.crc new file mode 100644 index 0000000000000000000000000000000000000000..08019e799f3b7bf30cb5b5d720a466b1160a6bc8 GIT binary patch literal 116 zcmYc;N@ieSU}CUfs4sk9n%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%I3x?tqW$Jw=#KFRejqgTI}JmJ3sbqT2)$s3y0aN*8%`G CDLn`P literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.6_1-297-522.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..files-0000-0_00000000000000010.log.6_1-297-522.crc new file mode 100644 index 0000000000000000000000000000000000000000..5ceddc289b44ddfeea64178ebb9d4b81c1a125a9 GIT binary patch literal 116 zcmYc;N@ieSU}Bi}DaPr2X<`T0sRhSg8n$*$xud%G6-VxaBWxdUt-gH5P1~*4QmFm& zwTm~e7hRJqSTB0w@PguBDVw`>UO$+5-pb@zRrPI~Xt9UK?)=!dX;o+)>^8iX->I5w?%FR$o5jrtQ{iDb)V? z+QpmKi>^r)tQS3TctP>6l+C);W$^`{+`d(Q-+j_vO10xlc2>ZqRizcUuv>w`1ppb2 BJTw3R literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..hoodie_partition_metadata.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/..hoodie_partition_metadata.crc new file mode 100644 index 0000000000000000000000000000000000000000..4634193be9aa402ae151dbac0eb6adc136fb7f7f GIT binary patch literal 12 TcmYc;N@ieSU}88>bbdbo6f*<+ literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_0-5-4_00000000000000010.hfile.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_0-5-4_00000000000000010.hfile.crc new file mode 100644 index 0000000000000000000000000000000000000000..8b40472045a3ebf00faa7d15fa24f43305052fa5 GIT binary patch literal 64 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 Z5g0^Z5P?Ai{$C&frq=C)YmSZO{{pZAX$}AY literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.3_0-108-273 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.3_0-108-273 new file mode 100644 index 0000000000000000000000000000000000000000..29ad98b702cbd0934ad8d1ed2b8f07a8a7f2426a GIT binary patch literal 13367 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 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.4_4-171-356 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.4_4-171-356 new file mode 100644 index 0000000000000000000000000000000000000000..bcf8a0ef519f90bc93aaef6ef312f5ac6360e9d4 GIT binary patch literal 13428 zcmeHN2Urx>7G6XNwg?6rC=Lr25LZ^QfG8b7z(Nth5Eym`c4T)3XJ)A)7DTZH1bd7% z3M!&PVnhjIkANB*3eSQKqgYTh#HhS`XLgq+C3*6`_q~tx+fR1q&bjCO=RfD3b7l>l zy&YT(dF;zP82qOO-W|ca1N#+^r!BM?Yi1?{|KMv3cykx^s$%#|R2as$MXJ?WWJT6zWip%zU~r(A zsY2gbd_pdT`_K%96Cr$m<&JP`EEttb8NMZ45^LI&JQ|xrke@{$XJbGp7WG-gg`pIK zGdM{EgrSV&vxp4FrC0##+5ZH z!9a(xT=4=#M95&49Wn*)6!hWO5dcl0qi6<`DJj$lA(d`2Gz?q}N2PKMFiZ7y^IUfV z8@Ld`kQ$9SN#oJAB;-p;Ks}}Yp5T&Ff2d?#rE%H;lVS`8156QcK_n@~P(pRP7bV9K z9GZ{Q2)rMWpfnPMVFUsqioG}1KekzzRY71+5)6tHG=c*=C>aXLgrGsBoIzCNq7jr3 zvm4QM;}S+YjWKnVx08~j44}ebRLhVzk8K@MD#IPXj-0_ka3lC9*a;X7OpwxGSz|BM zBazCjtzn|lS*#+;t)MtW1QJ(Wt6{pK8B_)t#JTJrZRA1#Aq0b{#32z9;8NDhDwan8 zPm3rF1q2x(4+Aa$M5#l078lL|DrNXVQ4ApUC+!Ks36zRL;0gq#C^V|BuvSp99yl1m z09hc0aPbHQ5s_di8o~!`R1r?e3&e#GW05cl>iQD!nWPX@Dn%f>6r59>19BSpno*nq zO=WI-QYx1bo(#&+%AHg|C{F^FcbaEl9Z@RqY8fbEH$s5R7@THs(WmJLqjL&8CY8)+ zq(f_{r~(go7DHfiW?_nu;35gfk4D-cXjqsO=iJ`JA;;bG8MWg8`)vBjaAF3`$4z6` z(0_JZqV%DF@ff9YnyR#jfEPdwfG9F5!iF|;0zKm0x-`Olqy4L z#G3$#5lC#DVc0W6r6XUNtYHRjl4vdj)3TD_#A^!$;X&H0a&F+LYFRsYptXg1>_OSA zeoj&nZ3TS6a9LYu$O>*ALI+X~=+rWZVs>3yD9K4~UQ0W8F0`y9dwjHoj@-G_tgpGU zuw@;&EZPQ2szSImdAeCsz|qkPM!;2wlnlW|sI(2tVaw>|)x<=&43)MFxdXSb4V6`4 z&k@CxufWBN>qEty0wDEbDko@C>%x; zTatt7w}~=HhDLt6%-}aFC+Z#BZuO4I28U9^1E4{wZJ5^T=LSV&)rR1wm@boQ(d3*)HRkw?osb6>j8SYNf&)y| z4qR&lzv65IeFw~jaA7mFfjy*)*clIz*x?L}jb;O?c54Z^0~uqE1cAG_aS>=6Sy>23 zl0nMM>h0~~0NY70`w<{t6SfHZ1$Vi2IpiG3#9;a`3JJq85e6qlh=-dCGPJ&ariwk> z$Ox#eYIMXp!5Hq~1a(ku2~~-KJH`%=VFkgdK&+reI27VrkA{?t_}v*ypLz zEH`YSFqn8ie8V0Xq78fqhcMhA0eFJ#d_k(Gu;JiD1tqUs#5CfAg8;FG!vzuBGAm|O z|3}nn1f{ADZA}lLg4{z1HaDYn0c8v~v6hk|Zp;dxqdt)e1c(ne_rpLc2D3)!EZ`fV zBC;Id2Sqr75Twuu@CiQIPzG@`u>%IZaKs2}helR5IG7#7NH|;qD`B9^aH$lhK{f@0 z;Cd{A$&7pI!mR}@H^(MLhJ*7;R4iu4*-f2`Tmo@a*s4;j-pIc(no4X0$TX6saX7x= zss}L0#1Jz!@dyRT)LMPP6bI(II;qXUlv`GJO(Q^+e&f`H8SIn(F*5~HP%)TM!h#f7 zEEg$)0^~Z1n^uE7u1H+XrpbEg&#YdptbE$R1vDc8cmt<2HNsao0X&W25;5==PJsqS zK|n>V4a;gc$ZuG=_{VY&1^WseY`tvl++0n-=PTfup;3+E1)dt(z%?%iF4u(rgO@DH zeYU!=n^Uj*^3FHK#d?yYv#ZWdbnP50K8prA4}Qkn8lQUEk-l-}&&Bap+lrP{>ud79 zQ49PsORMCU9`=7t3>O`~H8-9YP!nSGotE8sTeWlB67)u3cWhGMm-%(6oRH2JmhbCT zk}z5~v~zBG@09RW1G1J|@;g1$<9k1ve2pyj9-z6VGOhcEDKAzO1nt|>H*WCCInis< z^LHMyPg!C6)~)Z6AB{%@c~q=A;d(H~r*uco`@lbr=+?YlPQOrljjoL`0*^%1-$br) zahT~bb*k4$VAELe9@fxiuUeZ$f%6xQpt{*rRwi0lRCY>q9JFE3hCicDS5|g=Q)4i{ z6Hh(3sB9Pza`E@E;yQBsg0GaXDkYYqYvrmdFY*jiPUkqexH-B^aRLfyEa&n1=QU7B zBdzwvTfVnQJx8q`X?Ev&I`2G&=;!40v7v6IcIXwAC0gfaB*VrVr+Hm}M{J%IeK?f( ztqxtCj5aeH0fg>ccLt5%y|1c%HU^}2M!=Az|i{!Gb>+c$UmpB3fTGe0bU z_j}adxZj>Ir5CphxNR|RT=iBello)dN7tHt^6SqgyvTl+OAK`AVLj3LV_1gu1GT-^ zM$9`g^~065{xOGNVGoIqznV<7{>fzLt0NyGFXPu@w*DNOP||hd3-5^sd+vTi^jJAB z`eoVU(nWc9sacT$7W^+St-7q;XWfOTSNR)*?RCE> zv2aSp5}p7hq2N_U&#%1@%=}1Uhe#`InBYYs_1B`WSHf8?IFGaa<_MJ zyM40P9(Rc)&0oLzQQcVG$?^F- zolz&|Soj1_s7&XppXpe+`o}B9S1y}{SXd?7c?xvO?oQJ2F#2kndcV-s$*$TaRwCzK ze++W65&Cz$qq(!2fyqY4r}p3ImoD5>SULF7&2d)8GpjYXF-PJ)$3V)oA>Zk?Rxv z&TmN!KJWYF;{2|yC%?)7I^n;NQ8t=P#$be3eu+-+OVngT|bpIU8roXKD2I8jfxa{iUaK>Z8eYgvEzx zRW}a><@B;YbQjGxNGplQE9m0G?`PWBKbGi(ZF<{l+o90#r57}$A=P#Q!2x~p`@96K zyg)Ox&v~ct?7sKEIPTU{xAfV*L06|NJT_T>fkeM-(F>t&$*)) z2}=!TF7W9f>zb=?bk^@c%={b9uKAno_WFJMrC!OzyBnN*m%VU7e%C0|+kRuBmhS0? zTAM~{h@J|gorr-*#v>}Vdqr10X>Xml@9pE)j};dI@fS$ zrlTi*HGJyyPqD+?Pryzt##x?5=4b=Rp$r9X%CuDEk{-|_Mxc7n*h zOHQ5pVM*@NWv(*}yD!@nXe3->O%FC7ViS}(Xpgwt5TWG3ejOjv%Wn^;A^DlktN5#q z8uwG1p+D;Jn^&SU_vQrcl3o1i*CV^k@9-W?em2*4Q%3i$v%>m$`aBr-tx4`}UoV4e zrKhj;GWb}*sWqDAlZ>InK?Zlk05!d!-uXsEt zzNqlESuFh~c=KDj?7UW&wF`Bmgt1^>$@K~i(bp6;wkon%NK`J3E0}(vxABe||4B!t z><@Z4!9Bd_;7OOXlL_MrPVBNJM|BN1AF20S@4IRz#XACB`kPU*7sh#2djDFn{fD`~ zy8m@x;ro{Z3akBYKIO-hUQH;;IEQ4Ym6tyod@#a#^s7y2rG4Jgf>qxw>f@C>NqlNU zD1FmHmXaA#>7C-Zn_6L=wbw8up1id1$Y@vh?a%eH$K}SQB)W%&o=i@=W2L*Ge_m$3 zP5Nn@yDlS^FS_-E_Q{?d{wgh;6uItrQOx+XMRTs)Fqo-*w8xJFs|Os7Ht1NSn|}Z0 z^Nnkh|1~|=`nRg^8S1M8_g*c2aAs`M{@mcjmmFOu+paw3COW^hBIc36CV5HXUqyC> z%$vsZ8`nb_CiHXh-0G0s%0!t{q(S%%%SZ?`4YF literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.5_2-234-442 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.5_2-234-442 new file mode 100644 index 0000000000000000000000000000000000000000..4177df0f598e78cd98a70694f9f4f9a251f1b385 GIT binary patch literal 13371 zcmeHN30M=?7LE$2&jnOm5DH^(L4g1QVo@oCT^1p1TA(;d1~QOja54eGhf$LLBqLC{&12D6jQXSu`quLkKd0gM#-Wj3bf@aSj?o5*!I3#Kb_1 zkPv_&4hSO`k)bh|5Q)Vp5iUh25r!xwBmO8~jDZQ^I3^a#*tWq-lq!UYXdS`?ghYZ< zVH6G&Gg0Up%$CZrj z-IPkOaVZ52Msvj<5D_85X?92yyi?GJ-AVx5iY!h>VG<>UIv}LdO@c;)hcT#Fjsa$= zZgE zn(j}^F$9O($7KkdkBCqi!pATv0z8VIn-H4NCCn-(a3rJ@ic4h(4)#GxP)H^O9`dfSZ6!*zaVM}Mvtd452)+d?flY%g zh-F|{M=P`;k;<$+VWQGlv?9u-pg2ST0$1x@!*C;`PzhuZW3s=rkh>HJky40C91<%6 zCZ(;cVtFjEw1C7=KoB!|G%x`mN-N6KxG)A#DZ}Q+QGnF%+z%g@qGTKbM<6IkqH(Q- z^?-_Pz`>*xkOh1Q7n&)Eh=hyL2sU7&if~F^AnsBjwitRrYg+<76C{F)#Rz1Vf^&*< zKrREerW9vDXOY{H5X&V}KMJK}%9T_=C{F^Fb-HF?D^V)&S{Nvx7eau^C|pM2f_Kvo zdZ#x$CY8+SphHinr~(gI7DHfgreTT|;Q|rEj}F=(Xmqp~XUyKoA;-*lkJ>SSy*K?N zxHJ&PY?RAq_`36O%o2qbolF!Y(B(vhtU)-VEhN;G#V)xDD7#OnRvl| zp!J4&^g-FBelB7H?E!q@a9D3>NDJ;7LMK8F=+r%kLV8?pD9K3fT1zfG7rIxHK0bOw zN9J7W($-8`*u9QS6zv5iRW96sn25jysJIulL#NSQtBDD42`cU$ zawleBFDk3To*{|}TY-x|Q-=x}1wiPH1_uEyg8|ys(i{|e06S21T39D^xl@0Twt3+K zlIVdCz_F$hdhmZ^!-{I5?S5fisL+Ak{m$rw^v`UMp3wVy1V#jv5HO4?sqw<4xI`|2 zi6g9Qn4+IVr4bkh;erZ7h=7uWPX6eekj?-R8R#WQP!l8;q~oX*q~y{Vj0E8xmPFtb z2j@IVM3Xr5CORbt*>5LlkOW=)?lgnlA)RP*YWM?=+9wFo6?bx(=|I&5-Ag3#{Mcb{Rs*LIsqICYXN#9U8{6r zE!e2}D}v#??xj;u8(5vI^0_Y6mQe(WMqmgm^&v@xxGW0H?2Ku&^Z+SnQh|Ua1H|t6 zO7d2-K+W-|mhC|qr^wuCr$hc?8P~A{`J1I2liky0;$JQ0cyu$87SU;+M%CtckChM) z3&%)05WxnfY6Ye=g14Bxfw}`mLpZPt+Q1spUFe2Kh`2ZfeWOcLCPx^P#yT-#6cWj zb3s6t%!(e>{}Hu1K&i?@dr||aAm=H;W_q;lAdO)<)?z}yv{?akOei#VF zpw|eE1#DxX@GK|zLE(D4n9 zaIqMdfoKXE!EIOsgBkO!3o{m!+zgu(5f1h%QK67-XLoikG6BR{u~(I1ZCd^v(Nto? zL3{|A42SI-CVK#lObjun1CIp9m@p@rvR~zWV+QLjw=FJmtnF^_%m;lD=WY4U>uqf0la}xI&0x8i~zok zVFEF*7EXc!MnOPDt_{;_*vN06xr8P#UkZ->&B?*vf$Qlp4SY@ouVc-M3wᦩ#g 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 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.6_1-297-522 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/files/.files-0000-0_00000000000000010.log.6_1-297-522 new file mode 100644 index 0000000000000000000000000000000000000000..bc90b3dcd67f8ce121c60223eb68dee223e35976 GIT binary patch literal 13371 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 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..hoodie_partition_metadata.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..hoodie_partition_metadata.crc new file mode 100644 index 0000000000000000000000000000000000000000..0d15d6ecd2fc13028edb98d86d8e094d7bf22e0e GIT binary patch literal 12 TcmYc;N@ieSU}E?of7%oP6Nm#+ literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.2_0-52-201.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.2_0-52-201.crc new file mode 100644 index 0000000000000000000000000000000000000000..100569f194f9169f55649e115e5dc01379417755 GIT binary patch literal 112 zcmYc;N@ieSU}E_9XX>T*rHLI}rxqN0Y1rC1<&Ns!R~)$yj<9{awfgcIH*L3GOQH79 z*Dl_?UUW^eV7=&x!wZUkrEGTd^jj(XZT72qDtqUy`n%h9&zDG>O{+>Pu;J6+r1}9A CFg=q1 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.3_0-171-352.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.3_0-171-352.crc new file mode 100644 index 0000000000000000000000000000000000000000..bd38585e57b07ec39cec891859899fe2d8952e37 GIT binary patch literal 112 zcmYc;N@ieSU}6xqlVW^dn%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%4XrRza=8cMsnQKjo+O0`4ua0AggrKs?rK`ed_uuUryPNg|&B literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.5_0-360-605.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0000-0_00000000000000011.log.5_0-360-605.crc new file mode 100644 index 0000000000000000000000000000000000000000..bcfcb69a65792250f805889317cb7183781c71d6 GIT binary patch literal 112 zcmYc;N@ieSU}BJ-!14cmX<`T0sRhSg8n$*$xud%G6-VxaBWxdUt-gH5P1~*4QmFm& zwTm~e7hRJqSTB0w@PguBDVx`Gbzc(xHv82)mA!LU{oQT5=S!r`rd6dC*zoCZQvCpc CQap43 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.2_1-52-202.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.2_1-52-202.crc new file mode 100644 index 0000000000000000000000000000000000000000..2ba4925f08a0fc261feb9b2caea29b10d3e184c9 GIT binary patch literal 112 zcmYc;N@ieSU}E_9XX>T*rHLI}rxqN0Y1rC1<&Ns!R~)$yj<9{awfgcIH*L3GOQH79 z*Dl_?UUW^eV7=&x!wZUkrEJb#VShVK%JHzr55K-EDjwE*zC_w=T2)$s4WIrd)eivQ C(>x3S literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.3_1-171-353.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0001-0_00000000000000011.log.3_1-171-353.crc new file mode 100644 index 0000000000000000000000000000000000000000..2ee6253f91ef2aa1eb2bba385596f773dd3e8bed GIT binary patch literal 112 zcmYc;N@ieSU}6xqlVW^dn%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%I22|!bwI~`%5#e>}?h^>}(M@kX5>ARcQq_yk@y&DFB9q BHIVQ> Ck~=p5 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0002-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0002-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0003-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0003-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0004-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0004-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0005-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0005-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0006-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0006-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0007-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0007-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.1_0-0-0.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.1_0-0-0.crc new file mode 100644 index 0000000000000000000000000000000000000000..56f7705f9b280fe5cb6c963e67f598d725562332 GIT binary patch literal 12 TcmYc;N@ieSU}9)E`>6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.2_2-52-203.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.2_2-52-203.crc new file mode 100644 index 0000000000000000000000000000000000000000..a6ec839a249ec434c034f5e2a4d6af32e9f36d8b GIT binary patch literal 112 zcmYc;N@ieSU}9kI;xT?-n%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%4S>BsB53sR?OF8YBOKf%Jx{z^yBqSt4b@d;d|3+*8>30 C+Bum3 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.3_2-171-354.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.3_2-171-354.crc new file mode 100644 index 0000000000000000000000000000000000000000..bb828eee94932d64a8894c5246d6a23101072b95 GIT binary patch literal 112 zcmYc;N@ieSU}6xqlVW^dn%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%I2{AKXb2z9Z9x&yzkvXLr+eD16ie;R+Uy@!)umXmI46T C$T^Mx literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.4_0-234-440.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.4_0-234-440.crc new file mode 100644 index 0000000000000000000000000000000000000000..c5eab79757e080e3e1a72ee2cbe3e3fd7c7731eb GIT binary patch literal 68 zcmV-K0K5NVa$^7h00ID+kW`ed^LZkhsIyCP5k literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.5_2-360-607.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0008-0_00000000000000011.log.5_2-360-607.crc new file mode 100644 index 0000000000000000000000000000000000000000..5870419ec5cd7be5f780eeff156ad3ede2999990 GIT binary patch literal 112 zcmYc;N@ieSU}AXoY@*!z(!>s~Qwxs0G;Hmhaz}OVD~{X;N7z2zT7CJ9o3>l8rBM6l zYZq@`FS;gKuwL}U;RVINQZ`>Ho4@w++KTyFOl{`NTG<|}nSQ*!X;o6{66jcNS literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.2_3-52-204.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.2_3-52-204.crc new file mode 100644 index 0000000000000000000000000000000000000000..c9d49b23895c77e30bb7ed2efeca29c3de8fa46f GIT binary patch literal 112 zcmYc;N@ieSU}9kI;xT?-n%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%I1yQ!AqCe>&DJZ*Z1b}eLqFb^yBqSt4b@d;d|3+*8>2t CA2`|o literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.3_3-171-355.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.3_3-171-355.crc new file mode 100644 index 0000000000000000000000000000000000000000..f4201b91f1cf524fe1a8d57d32619800549342d2 GIT binary patch literal 112 zcmYc;N@ieSU}6xqlVW^dn%Kd0YQeFWhOM1b?x^m4#gY5q2;0Y7t1q8%({}5%6l(u` z?c&YrMb{(?){CAvyrB43%H}J%M?N#UaQtbFJ9%sJg&)oW2eL{xttzd+hSw~&ECm4U CPdYUK literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.4_1-234-441.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.4_1-234-441.crc new file mode 100644 index 0000000000000000000000000000000000000000..317f36fc7cbe74552575d1c0b30b3a954ae9d90f GIT binary patch literal 68 zcmV-K0K5NVa$^7h00ID+kW`ed^{4tWY(Q6dun literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.5_3-360-608.crc b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/..record-index-0009-0_00000000000000011.log.5_3-360-608.crc new file mode 100644 index 0000000000000000000000000000000000000000..392e1e57a9e4d68796ceb1d5d79f05e783f71d5f GIT binary patch literal 112 zcmYc;N@ieSU}AXoY@*!z(!>s~Qwxs0G;Hmhaz}OVD~{X;N7z2zT7CJ9o3>l8rBM6l zYZq@`FS;gKuwL}U;RVINQZ`3qOuM(lUN?4Ty1qA$@B1lgrXR0wT2)$s4d0tqyB+{< Cu{!Ah literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.hoodie_partition_metadata b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.hoodie_partition_metadata new file mode 100644 index 000000000000..599cd73023ee --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.hoodie_partition_metadata @@ -0,0 +1,4 @@ +#partition metadata +#Thu Oct 31 17:47:31 IST 2024 +commitTime=00000000000000011 +partitionDepth=1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.1_0-0-0 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.1_0-0-0 new file mode 100644 index 0000000000000000000000000000000000000000..161cafa88e03c27ee57d9d975cf1acb04edf1452 GIT binary patch literal 80 pcmY%P2zBvPW`F=EAjOD;L85{NsKC$=BnkwaK+FupAPsQf0RaDm1x^3} literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.2_0-52-201 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.2_0-52-201 new file mode 100644 index 0000000000000000000000000000000000000000..04221425c171346aa2988eb26abe7b95ad24a7d1 GIT binary patch literal 13282 zcmeHN30M>&w!QS2h{OK;{;gIS$4i&4!IFmUfCL%~N z$A+UoALEloVGWloUgBk`W;qA;Z9gNF0-iRh-EoaXJ;kq_hrUB0?_5sW1u$ zirHxO4dE!%GPsV4B5{R;6RKMgE{#Q^Y8l0u42Q(qG$&7m%~uc~MIf`suqZ6{qliWQN@fDMN>{}*U9%GKVQ%<*N66K`Mynr=EJ zIJkm>2BWzm1VluLNSYmTE$_7S;TQ;jTT#WTC`_)SP!ojoy2()`co>b!)EHov{&ve; z_W%nB6p@e`O*yH;7u1uGBO?Iybo%>(M>_qXl7>p-Djp`oC=5E7*5M)uLWZFV{d6Iz z#tyWpMt$`^0#(7{xX2TJ1A@~-o1U3z}AX9;1 zO|8&?M0&Hfg^4<2(TeDng5nSn2waA{hT%p

oI|#$e{u5eQ0>Xsn^IHc+tv zIGBP0vVafaVmmDnkw_UT;Q%)338&))B2b9280ZCtwgh}8NCcJ15Xdeq=d|a5S_N!P zY0rS>BDWhMQ_B^;6iTUdE9rsIodkO8w9G&QQF`#|87QI`LV(FATt(rc57Q5N=WKXP z>X^|)hqh2r4<4{AhQQ!V!=#boA}Pa^kmb_`%2O+PuV@Q3lZ zdF&e7&y@+30VLQwM(T~GPc1a?0muOmZA3+AccussJ3-6?&@yiU(ZmQ&AsRctJQt9v zj8Y+f3J@59#HJC3J~Q+>a&*BOM&M?NCQwkVD+x}#_D~QWq%A7v3684PwSxy*d#Fbr zlr8G#AtTT>z!wRJwTFhZ;Fcle5o$oE)Msmwqy25jzbtUQJqdjzF&ZQP@ z&7_5`>&QgWc2H99!flDuEp7!I9c^F)9EHdT2`)lq?XVp>jc!>@OoYo(S?iGVn1Su6 ztR8!YC^j4|E<&ab6*CHe(5nOo0j`1pda|QEDD(h!pz3rO7vJJeg&=L4g^Ng{4L$(J z+REv{{}&t9RtpXH3-dy)4xH9^Mkl0yWqb65_TM8gBB+FbVf0DOEL?%h)pD3P!n%ej z`bktF!MKPks4&C`C`st#kIo6{3=mO)UV2x3 z{?f8-DC4x5JMDDH-z?*rmLUIODaT~@beZ^fOF1998A*$1wojvPb9}@~$OntWNIDR~ z2Bv-mrZj@Ln7x6z14ctQum#${8d4zU;}WSWPC?&j(V^;>mVz0`cqb$R%wpO_plqaN zAs|Rb=pw71pMVF;NznV@B6Afk2z`TjTt6Ig4n$(meQ-pSI3~hi#|ZK96dSv=} z!;{cJb@iJ5H?|$Mgp(|UHO7gPhz&%xo$B{#z+ZG?mUN>nVS+u6;Xi%bA<*X~uXSc8^-Q#5tha1n1prNUwR zhRGg4BNIdH>A>T_MZD_u1zj8%>kL90&xRRhIHn1pI=eAy!U*<3``Ft6DX19qC}Bbh zcB~d@odU!eHbqzWwj9{G z-=B4FT$UsnvA&k&AK?KZ`zM8$3V4A&US7hn;NxfD#csT&o8g)X$phwf^RP_)qpsh{ zPORrusZ-ft&d3vGH3nkLz%AWH=~N$AFQ&8ZA*+1J5N{8Gr@LUb2Ux#b8jCfwsL}e} zcGXY39dw%*;@;0IyQjs>_^p*)ElypuOSnJJx2N#_r4_@zSaoRKlbu_Af_^)$Ry@4D zzu@*V5og(=Wz*8%jLnM+`*ZTm<$Zi!Qbij#y}MLGNTSEv4S6tXQC;A>eJ?JQ{%=@~ z>8rAr{&m}be0U_xxp>i=ii(QamET=V&ilizHt$+c{+sP(kKP=M?^js&+~vjMs9KA@ znZCtujiH@0i!?@0~N(RQZkAGY=@fqcBH>Wx+R$OwpwCfL3E%!uT z*^!)ZD#=2UxNGk}z9D>i#NQ3CIzF~{!P6-7?OA7Pj*a<+^iAQoVlmdeRBVngv29e7qhd3?@K$qpUy6|{gbHQK?^ zOiLU5^U*Bpyv=WgtBgcRF&D}oZp87-yrJeZw^^B{DW6&Pv|7FN`^5Bd7tUw*Fxl*| zGp%NT<;dXJ@Oi}A+F^h(kBLqi;T3cma_!}*KVo7@JM z@N6qfd5(Uek4h7Iv1j#|(U0v;<&HFwtaaGtV*1$P>695u_^C$j$0}34+Z!7a^O&u1 zaro+_WN?3Wm()<>2Lp=E^c=XdI>GOs4+6W*AAM}Y7wV91gM_x|)~KQZ{I$Q%P-!OB zdRM>8jW}lFmRo_Ive;dof)RGTyugmJ{eLzwPL+TP}=V!R#M5&`pl6H@3H(B za>=a0$p>GVO|i`HyV74Z>0-Cn|LilqSK1RSC$mV{^M`Ahugv6g$~&Kb^2s;ZSqbwB z@AO}rRH(iX%6@Nmy!gUg^DE(AnV{t7(k$ak#w%|`EoBcrE$GcIus&n5?9db$i~r1e^^PU? z6f-;$)}8CUpzwX>!I-Q}{AQk<+;4ShLPCMh=V8|(qfY;8(A=|EO(tF5G2G^8Gm?NwDnki)X8_T#|4jXXSjViP+jw{FE5{2rFxb$=0!^S zM3tQT`7Zg3S2jh#xmCgy&n3}n@#<%Ng6;Do_Xw`WClA`yml%6+Pu}>UOaHjEqyPEm zi`l)`2KVl=xjJ{^jZn6Ojm3fDOAAvp#t;uzXmO$-%|mHHmi*=9s#EPw|H> z)?7c7et*TI(@Ve3&ttFb5|Ul?*@U7*>d83k6mGCj&!I2IEVoL|{eAs$mb>|=rxSWP z+zZS*_po{m@7O+*8`fvN|4U^b{`Pe%yBh^0eCj&&G>3=R&5Xb-9{Md@+%*!6>|^OZt`C8Xd8M?wD`pN=X>49T;CTs zC(>f;nT>xOS?mfMwq@IdvPDLAxdj7@hO$_jtIxd?`oPnfGs3e+wNXFHjEz(V zk2bPrO*EQr#AkW4g2y)g{S8ilUtZ8n1TORI9X@Qd&GdHztqGJw!J}~a!=R3<1Az_% sIuPhUpaX#p1UeAtK%fJG4g@+7=s=(Yfer-ze;@#w*7bdBmSg$90mCOep8x;= literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.3_0-171-352 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.3_0-171-352 new file mode 100644 index 0000000000000000000000000000000000000000..72309835d0720a290f757742d450f0b1aedb5eed GIT binary patch literal 13283 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 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.4_0-297-521 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.4_0-297-521 new file mode 100644 index 0000000000000000000000000000000000000000..f380cdaafebd1e034f38afa8faf5e4e327c7f88f GIT binary patch literal 7264 zcmds6+in{-5KZ0wKpzSeXbKRUhqi#C*iEl~v#kUX;IxHfHwDtbpmr&X&F)eqxmH|5 zf87u08Int{ZY#yH`Vbp}q+RZCICJLAMGu~x_4*I)xxf1-c>5^4cKo$_pYHwqSr z{^{>0yl?|Izxek$u~%b}>?c~JN@qzYDS1KPpDC3|@myG*am!Ddcg>imv_$EPF30DQ z=#HvPcKM}N-9lv|hnP&ISaQI;TxR&C$k;^Mkt~@V306yHr+knLJTR0Z&rGua>bh3p zeB^XEPgPM!du}BZ>jZsYC1sV#U9cgPZa0a2M` zaAg7NrRN#QlItr*D;U?BUp0ko0L2;Oh|)q9Vn}9>0ub3S=NAdk7y(z~g7wQxyrn2; z`Vx3nn(;hmgsy38I&1>PXgqjUFd}DXrpZXABae>-Z5SVqbLri_BFXt@?oc~# zushSQkmc{h$E$5O@4rJ&lrJ?7FLZQTEG;H<12q5(jLKX%TLta}=fSl8BY>7MY1!lv zkavJmPg{BIy0cyJ+-aJ9M3U-%ndldWy2`xlFa%AO>jd!@@28KMowah1v5` zT^Mvo)}PE3r0;S(_rUhg2q&Twf@5M)^IVp)s0u0^sju-(zvktI=(0m}7#TxL;)*|4 z6S@kJ8O#z2-eD7z!L==-4gWxWyLaJzF_n-McpNwyoTW8%8=2 zE9W$E%yEaE(1{od?TCm5m~jW+8qphJ$evkl9xXu?;uf;=TRFu3`Y8UX(>#_qHE~Kty z4l}9`2wDrKjCJTHJwP=1No{ODqwS-N@e}J@rGCr`)9EEt&}A?E+)sdtF>54e!8dy$ zvU>C-gd;*w^9jDuFB^3bx5N$xy)Ma%8c6c~=?l|0MbID1uI^aS!GoHZ&oGxA@wW^J1;`%M`mX?)|W2MjU=+jYdV z*JZ!n=!+>1ab1JjdL6&4xn{wjwcos &MPv)h3bo?%8w1u0Hkr6DN5b=ps>!Q+9r zT4{2I{&r_-<@(nSAJBFLd&4QKM)<)A_%+58F}x);8khjUP-|0JO@sXT%H{Pm{3!S( c-ap3cvz?utZ+AZTQqLWCd=i$pxBGwm2a@)jy#N3J literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.5_0-360-605 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0000-0_00000000000000011.log.5_0-360-605 new file mode 100644 index 0000000000000000000000000000000000000000..94daee939be8dadfa4f66427772fc29b642137f7 GIT binary patch literal 13282 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 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.1_0-0-0 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.1_0-0-0 new file mode 100644 index 0000000000000000000000000000000000000000..161cafa88e03c27ee57d9d975cf1acb04edf1452 GIT binary patch literal 80 pcmY%P2zBvPW`F=EAjOD;L85{NsKC$=BnkwaK+FupAPsQf0RaDm1x^3} literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.2_1-52-202 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.2_1-52-202 new file mode 100644 index 0000000000000000000000000000000000000000..d5910b520f5865a4ef5ff366dc7c18d1b8211360 GIT binary patch literal 13282 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 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.3_1-171-353 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0001-0_00000000000000011.log.3_1-171-353 new file mode 100644 index 0000000000000000000000000000000000000000..b211c319acdd44ec2383c2cb9939d01024bb23b8 GIT binary patch literal 13283 zcmeHN30M=?_74gaMXRldq98-)LsSR|C<>?$0ul+L2vS6aAsJvGnSsfK2#8W`Wl>RF z@F7+a#iedott~~V3(8ZJDryCJiVJ96Dz=KPb>ZDRlY~u{_R0VIfA3@X@{!Ekd+xcv z^E>CBa}sl}0D;h)!(8@P!9OkV(gv?y%qVBvU?1P z#^T?LxEPe8aT+IykQkJXd@mxyaVZwUSoXgGu=xfx#8DZ*ip!Wk3XMZ~s#{LnS*&rA zni+win_3AjPSDU`3|IUC5fL(+VTVk`I~9Gn%>=-$$m8WSCR07y~ z7+{v>cE?=z1Pcg>a7c}|oRs4UO(f(>NkBcd{~ zj8xEwhFo$4B_zy3^5%XCy&ni*|$=n54z-~r2G2n@~)Ov*@H9Le&djW!4x6C=f0v$u1|v2)&|b}V4; zO+Oh<%!cu}ee7D>kIx3mKniRgqcld-q!vo}0OSCODxxBcJJTeHogn4`XxX=bXc7dc z5v2`ao*PJ2M#_-@0t7}Nv2BE5&J2x?Ty?O95x8BV2?@G$CBcc;9SXvOv_s`Y;Hc_c zJ9waVhkDFG*`a=(QWEU~eBp3dcWB56?ifM=sQ`5997G8-t~-=uC3mbPAD#=HE6E%m z-Jv6UE_G;YHZAO2M>dLfgOVB-?n<2Qa4X>G=mI0)C`3v|;9^wT4clST=#JII#JCKV zb`H6K9oUV^YOrUCV#QVA;?LHh5>^2adSk#rfXiWkcCxnxg&x2TRGnkTC3Uz{e~`BM z;9`pGf)Bv4)-q=B|HXz?)k4et!n{zW1Gn>?F$w8k*&Z{Y`}YWp2r4097)?^+gA=$+ zA%lq{tZUe!pF)WUjEC?+g&{#eNx~$5OisvTfQTIQ5@e_qq6FzUN`RD{h{Grl?qNv; zPH}L~Q)CQnkam%>p&YUs|>cWt=K=XPgfCn`KJ(1g!HkVU}&SP#6q6z`tP)4ABNQgiRQ>kpL{gRK6h8Q+N@i7$>VJq@ZJ^ZTp%xu&B{$0^RfL26N>n0Y+S%=$i);Y#Q0-NtSc{f_TQt?! z@Q@j#T#m!`4VyiHMka>XGJ$6-5Aki%7j$u8tZNq91Xk>@=409bs0izUEo_oS2!lt zbh#e<4=!Nj84 zQ@rfY#(~FsajG6a^Be}|^esGG*G$Y%a7%qD)Vhyr64P7#kn^McoFGr3$U`{Y6RfYB z&fyprw_0C!XVb(RK{v?Z9s_;z`Z zSN~JtKa@rH;%xS(S-rJ>YkRZo{F9`YkED*{y)ImSNyOcAwEyADs;Z+=o2I;ah1V@V z7cu4AMZbhx@%=IQ&GOkhs~5ez^Y+HlrAwXH9~d*B{NWGJf1DF><7V0PJvEPBxIKTn z^MkXd`x{bRLcjU*wC^9g7hnH6x;~(Iugkxt1l2t#J=J&jLSo8hdQQU#OJd8`7fbFP z82$U+68u=T`?lXdeBv_sk4MMe6a~jOZvQQfN;0f?)#y?f`&?48Njx%a{|c9#5A}xK zslV@+u<6UOK9jz}cm5Hua@TUM-S>NEE_e}iVb!Gh+pcBq{h~swrI%2llj(FYAuaFP zd2{jpBwp$ZBjLEUBTTgW8TOl~?^0*{L!r>@dD7CY_2+DBzdsP4N*UGG4 zc#t)Sx96Vh_Ce)$`ssz*lgm;sBDRmGP1x|%diFn)w|}sAw981lRQF3){r6Pc734P&^4^r}MvIbw?H*}580R0c$u3Cu1TZ)S7N_!3CPu-SWefWUh`gw=k z>G7e?r-o3mpEWFa_IjL^bI8=(qcg^Tz3ueSDV*>%7b}Sf>#cDg*9QEiCwQiJO|nq$ z{GO$EYb+^V?m(W;uMPdqNK-;}=Jz>l{XAi{arB8NT4CnaI?BHLq9!>>BVQ#)48ukh zM|`$@_~&G5*elmagAMM|b3<3`EB)E1Fe&-)#x2OBi}4Z)K0WtoGcVIe4HN4dAdlu z@;iQh>8e$s)3uBSE_m)9&rgUcce+b_;#k?+@|CT_$;K~Eojq*(=s@|{y<6wlOmZXc zZVoC~Yx+Zf23+ z+(TZ~r*xCGf8b6`pYUXdMEleD^SSj|ruK%b2HDFJkNA|2%YUhB8yI!J?7CF;Y2}i# ze}2y`jrV_0^rgpOzhm=6D=!T)%E?aRePz*Tbbj*{SNkCzv4&o{Pp@wL^?r(_XLiH& zalD6yAN=n3%e1o8`TWZBE(0z*1_nMlyhT57*^B~%?V)n-SoG?VaL1u{*Q_ntTAGp( zyL{^F;0)@Bm(d$jr*jHw@R)l1>*x%V>3oy%B|(Pc`zPcC6>Q6_N})U*^}`3OBH>^CqsR46ZG$N6%b4H-AV~^^WmZ2oGJn|AZ-|W7@G-yEAJ9H;N0k z$YX1bkLISkSeTd3%_%F#a~3);Kd{ltX}$P$_B@m9PZp*ap5GS~^|7KR_w<8PIU?zt z;Ncm9H}@{-)&3#wuRG0Jx0i21knv;Q%Ar{UD{I0hpDfZQZdSXQtjIa@;feH0_g!y} z*H>QEH;eqq%Opj4?eL1)jE8sAc6@ti*lO+I{9+5o;?L+`#*O)$H^;AURIOszEM2U| zUa6JtGVR}_Vc402;j1n`7@0-~jVTCRaV)>lH2cQHeVHX?!&eK&m<{N)pEK(7h08or zE8cD>ImfTG&Z#iB*uFktGd{TvCI3-eUOsxyw(K)IJm(AZCs3DODEVezO|vw^UAlAwpUfWHV$ypZ^%7(`%)j5jCon%(xFwu%Qqd(pSxLjd#14Z z>g40{z>wP`h2Mn@iq^7yW;ycKzdhbATy}GMqt1u}y$gzsIh>W4%?y7(csz4I5$QE( z4O9#rhTNNDsb$NVpyjIN#hJmGW7qlzI5-J@dckxNcgC?xFf7wM1dw^5=4d5Qk+0&DTZhyBSKUp!@z_X9Fs{DT<5Ua8Wp0Xj1Ey^QZC2o zC>jTfS*!I8;}S|4Tt`7uI1$T@(5wiT#$r&VjOIGSA<5P)$x~nn1o=?}vU`l0fzA9V z;^I+?#%Y`+qT*3n`cXv2;4&#8Df-n#-6!4oyUP>RZm-Al5j^I!0jV zrcr{66Erj!!xbSQB0|P6?2xN@r=|~AM*!T4Vy1$|QX0e-L=2(H|l{BIy zmjXcv3A2zw*Ds;BD==DDc@G&$$^j}gMzsxj>)7gu(r%m&R%ACUf(ya7U?s3=umza{ z3~O$MMkLajwLMJK7>iLvvlJAEh(X}e-8Bq13L2F|2C*jlTMG#YAcUY1tvEy_1tw*z ztYx_hSXxYBC?LovWjrteAc_v<8C+NcXqDlLX3~JvAKZ@!Cs1l80!JVyMWHiwg|&l< zjljVO8pr}ZgiA)LiHO9=&{!^Dqn2Yv}>cg|?Msj*pJekv*4M zwKba-wyh%@MLR%AtqZp&PPe)haCEeT5pWbDBV%zfD(islFllt_YGPtsj>_7GoX-yI zKxMVqvqZ7xs&Nsrb*O|@0EFIna1h`M7@(c)Z9t(1ume@6tz&YlI~9Vo%?}q-WIKES zjvXmy2LE4dSY0hN-Y?7x)jDw7-WijS{*~=96FPp6z=)s{0*28hHGVjO%awANIKsMy zE&3^xh{bq_2dFS42q;OI33Vk*4% z0UI}3)G>I>3f32EAk_LfJ42Qy6fSJhDDlJ$GHfsKk zU^uUB=`_>^R_EG$u2r=aG)bYc7y?UuNKy%|m;q+C#56{FFaerWAYdr~vD?3rQfC&Z zIsVeJ?I`2anLFcj$lomEnwKE|VJXLE_e`1icT2fIrWwhIXt7VDZF79YN+=ME!6+sW z!3L&w1-3MTx7fXbx&uZ-IItDkz#38@@xf!I9ykqsqg97$SXv5ZAWja52+U&JMWAeC zWFa6(iZqcmI9R}k7T_yh<_Mj1PPs;trb&Vy0wP z_o)7hsMQQgZ64a58bAwqpayKVM=Jnn4BN4mkz%&Z3ZSDt5DIum2;29=Kqv;iMrbTx z8(Xz!@!{p@^3DeGQ>0D$3h?jb=TE!Z*{F|ex!G?zfkO~D3 z+c#|X02-MXV#5R;TOKl{L0{0tfw4{}wDGOkVY*|Q0jjYZt0s(KAGD8+HIRZzK#vk8 zq+rKNvDzs>tfSa&HHhQtz}0G)Y!v=%8s*BGZ#!6rrlkOHV3d|x_-Z47Z)4a%46KDy zpny>mP@QYTv>G<@n`SN%$?TVc{j&J(LU#|}$s@q$An@YXt1s}a;RHA)esH=G{0}a1 zbo4DOI=W08?GUrA{&PL+Pow|c^|-IEb=L*HBX_QgJi8&`_ki&i>hecTI~VyfvDVnz z!T<@cul?0TU!OC}JL5hd2uVEtben)bJ#fktp&j^W0bXWJ*Ywm~Gj(3CNCR*2g4gvX z|L(%E9c@%^2Ij=Ro|UR2#uVJrT(m}Y#|AO_nunZg3kL*v3w*r<{@!4HgT)-qz{5?} zH`v-RvGS`*a)6h~l-%y-lasS+x|$cB8I^iFJgD!swWG%+{@_(U?ZEQ6ldzqSE+5QQ z72HW2wQG^}`;qT$ZWfn3On!A=Hq6QA?1fiE;+@gbSc9Ew}-_T~*lqj2k&~8 z<`V7yu4>rZi*E9Y{VzsDO&fGOYsZtiO+n@>N*@$0_uqa~|HK3Pi;-n-gKNHDF=nS~ zwzTeM;f5l^l;pe=mDS+yh2y90D)pFEpEc}CuxtO__YxdMyD|>N?HnOpcqD6bZ9?Kn zhiBWiY^Vxx%;7CQb+>%u<3H?+GF=~*ZTE5BST~(B_j}rXv;U6BoV$IWo?1O4%Qz?5 zJMir0iH3Ufx_X}LG9@_kxA3hduMZcNsW4Nj@`?+8Z2Ako;NyDNraD(u?Ro9Af8myj zr6=d?8no%uz5|o8L@7oGd(XdI^nRRE#iCz&E^)XL-aV=Oy}yt<`1PGi`M$nilq_7n z6!eie+VcvN;h`d*^<&I#61; z_0uq)iI4wWY+xJI^;AuGih;p3k>x5X@J~16$NIQS{>y^L!%t))>DdS4_N3x>YGxP) z8e}ZK@y;^ln`&xT$*ig%FN2J3RbS57N^Z?X&rwO-`CGy*j}~THZuYV8FtocobjT{M zFzMvd5f3M4q>6qqI^5HzzlYEv{c_qNmjhjc*HrtJ>`h2Yjrz0a_<0v@d1SAQK^O4D zY;7H{S*|_$?D+hn!F6WEOUfMvR-Ow8OYOB$u;tr~WDD6!`<0pI7l`AQLtmjTPqqmX zdtf%b_kZWs`>as;gPT52>R@i^F70#v^h)9SsVBcNh{#L(`Gt)+x4%K3+LgU|+waK# zXZMSrjTayMWPI_$GQ{SONn=($9yx7w>Sn_oBV2~rE%ZEpNx1#GU0!xvH~omGD<cl`nhor_e&PO;;e$hHAP*_JSJ{Ry}s`!qZJW*J!z-tamV^m z33Hw$J$>tFJuYfu_Mrf$J)2ILx^ZIuRd$t#9l0^F*X`gZM*OEnS0ryuR)-iC9hrJN ze1duS+N$mSGb(x%c0bfh8g};?GWPP^O8w*Bq1_+$3B5FnzFPKNuhij8;Mb*H1fz|9 zGdb~mPMIYy?do^7reT@q?Ws2$+;P<=S#;FZ=)KujBM&UDot$eTU-DJv`G4fPrrvn? zIP^@nyO-{N;XeFo*s2@3h4p*htShN8|IBGZT-O&y&u6{oEMI-^%Rc#>TknkW66R0J z96Y#ieHT0A@!hm1-_+e&uRK}lL*y9-JhyQ;T0j5T>3uf$e>!KoV`JzjS9hZN`>*m+ z2Jh{Xm1T7B7CNxkkX3`8b4T#jc$)R`EA$cdNV(%H^-nz>Ir-u#Q-4v}sfgjbrf+_L z>Q9&(wQQi*Kvj@kmmMxKWiN^|`==KzT64hly2bBn%fHrNZMFX?CO_b0Ei1%)BbHUW z{8;zyTu%2NZt}LAyt^plY{~e3!OQDEjhPacy(T?pjPX$YmvLubKDAgpHRjjECF#GM zDEw7eP;QsA%EZaO^jO{5O9jenrSq*kEvI)6%sZI-b6#B7-T@g2r%zXwRc{gBsOnk2 za?|>ef!_6g6A$|D64ki+C7#`VOt9_Pf-%KMx44t`#)%Gg1J3{BmfkVRrf9)H8%q9Y z?2)< zn|Q9!_{URXyQ-4?2me@q;B@}pmvN_ag2tZAs<^aFa8xBNysIN4DKZ_lGO z1stzIUp^ddY+F5jZ&7XCa{ezn`d+mP*FSKG69`6Sm;hpZ=g`MsiIV^>@{?<=le8WK4C+wgtwHUuoZw+t;Bl6I)% z&mX-;T-h;wYK(dIiFL0Jq&bAG&Dvxp-8jg>$;Ek2(eC2%jL(M5KDK6g{&&Up!(B$; z1=kFd9^SKhJG9%QtH(n*B`#;WjZrOg%i5TKAw_SS#g#{g2XZ)q0>2BwKzKTHhx!`T z>6y@`W=Kt_rJfCEjNSx2A5H)#)UN68Z*UU)@`7n1@YrAP_`pWnIGmwQQzkh&I)Oj+#XhuXN$1jONf_6KE60SC zT*T#ZNmK?udsCDM$7W(QDne;ASo^6W2^GR2lw86`!Fwsjm!^ntKAI}0_%cd_5kQQH z5`rOa2rCy+psAP$QR1`|ClOkTA!^A;D4IZEV1gLO2$6#85|yr2Ax_HZ5GSN$GMtX1 zaiADarEe6MOd;Sp3R;en5^juoMYuF3MpFoy>jH;l@Vb+yz>-Por3hsA7?+5py%cdt zsGP=WoFe0rP+Iy@M2c|&i(@SNp8%-6K@D+K2H(3nh3p)Lq%bd#Y;;9)9Cq+ozqn%la$ z?gbX`A;pjyT{)@1=e3iNOHhD%YW+jNBenieNo}QZg#aTk8iNj|a<~MFA~2NHOb?Z( zUkAT3dN{f}&&q6&jQG47qM>wM1z)E&waC8%}@=!M9)~uxYRbLIH+# zwL%9HY0TOiCaR6aD572pibI4TaB1%vh8qQq${>SSll`rQd`KXKq!EocL@5O(Wvr}W zxe{1fD92DhkZ~zVzyyFOT9jvSVGW>BhMSN^15&?mKM6RA%F_@y0zu_+G)-GrFR0i7 z9E_xaEZ{@9Xq<|Oh?qbnT);*R;nci9d`J;C7kYuVEdie?If4=d0@1elD*6*Mk>6R1Gee^zR~@Wj1n!n-J|x|6hNn*K@>6L`a(%ovTiNi;knSWlFaeZ7do=%l1^K* zX<^SgvQe}Tl+?IzZ{oDht$?GW7mR?T5Q386LX_x(?J#MyZZ$C>E<=f)As4U%`%qa8 z_AF6&Too>%Y#l0M6#$_(2^<8t0tRRoXGc)z0qj84>GV#9&YgyWv~4CXlvBO%0XWt{ z#ti;%Y*VUj;4CuA}}L;-pUGL(lXK{}3-ASEYLF*ykLup|PfI5_9!RFWKr z-o&KjAp7km4U(aAUz}!eyQC8xj%~jV$7H8Nsq+EQDb#ijYaL^Q%Cp*C@I_38_g-M* zc2v>1FAY_Y3;i`r8B=;tDNN1ImPG2rm$kn}%}|O4fldgA!dift$kZy`SPM34{*GWc zuV?8r)CN}PntV>D+6tPIqY?~(r9LF72v;P6ncXpsksd~ZCKU)+3P9}Muau%S3)CEc zY1v+sajMLnaXRF0mT_H6kpHlhW3zjvO#Hj0Trks&WJGk^r_r=IUScH_jEONh6Nq2~ zQ?mkF8o^ua-ay>}qahrqgEp{+^bvXE5~({*L*LNpQ0+@g!3<>L1SA2>V%tTaY-D61 zAV?;tBWqZgj{ugFp!dT^qDeP|xxqee9}YPOA~EPbI3r0oCd6RJ2nqJ{LF_u}$5XB0 zM=7DYn${6xgfVahFQ|ihNvKLXTrtBToe>1P0vY@s;ZTY1JsJe1{C@=lLe>=sSm$ZN zEZc06V=(Xl|AsX%L>t%;HeuLC0D-!0zTpfn+rmwWLEX4 z{*S2D1xigG+M60c19`9-Y_>=11JW3_V@*&(w#^EllfNJo@R10%?}vd<40?^wSim+; zD$f$Y4=Q&AE+|Kp;1m32L+!*md0tIuqF{3gjD(IZ!wCXcfM^OD z!5vrxgBkm+3p*B++$@_^5f1h%QIUvgXLollvH`?XwO5T|9a{cf(Ntr@M*=B@0*CDz zHhTb#Obl^k0*@0P324_Bba7y;(+X_@9y?5XOcy}ac4O6q5$uKbapVChs0j2ZVL}Ra zoFY^?1&DQWwp$J2xGHez43izgpJRtyS^aGX>(I0m;0=t@T?=1j1n_MP8;F6ma5*So zR0LGz+Ayt#jr`7;OH2m)rQq-afm^7XyPvN;_#6UWf;QC!zBP1(W0KxpJ`nx~moPs5 z3Kk!KN*F&OeoNaBJ)TkgVZ)<-emujE{8|g&mF+*Uzux<;kk-e?;$o}vQ(KIzhv^$X zZ+qyrbfF$6Q!&L_0EFZvMnCrv%nA+&2ptbTjs`FD&TD#TubG+kM(hAD{g0ls86SRy z;}~>9Y!2p3&J`zUi5UTIsV`cs`aA7n^wkeJ=a*UpdinTy`uKZ+^#^2gI3o{sT7N)M z`@~DLFHshr#sQmOwero_*kovRa{kLDf`M|B^`PcvW>FtvHOQyy9 zKf7xC^z3w5UFk#nxNytH!f)=jYznc;slHvY)_?nN`p0fNpN&2BG_0v0XL7MJUE1>7 zk^D_rhu*6_RF*R&z`oG#SBcdRZPjaUZY%hB*8T6yog%zqOT$ek9KBqVL+lG$|YFU;hsw%BEJpG>aR`Hol zS(!%`SxFXty{&>O2^pAiIsSUtc%%Jy5-q>XJJwocf0c9F?ycnH*%_Zl3Tg=N2G@v{ zL88d0%>lcnFTR-VepA@?*5|hbmzH|vCh`rZ;R|f-R}aa!cW2`HWv`2m`kec9+vsP9 zYR2BM*|B1KOsk{Ab;s?&qr&)fd5+})u3TC>wCI+%bar57$(HOhJijq}u7rH#@RjwW zxt>|;x4zOSFPW~dFLPSwJ7w#mLc>Q3Clo|Ijd`^0>Wo#Mr=s7PeR#sXyQTVL^u0Xq z%r|lVF?mXa_}%8MT>Wx`<~5}?`)bZON~TO(?HmpzKpY4S1S^Qd$i|Ol)R~zXsqbmn}7Its%pS9^1 z4Ua{?Qiutp#v@Wk<@r8(bF8218U1k6f?;MyzqmeU+b=S+S%IaC7nVGJ9|_7Gd-76K zi^u8VmCODJH~MMO62m1M=L{>_RULEru266A7n_0(%g#qEK2cI<P{zo{5HqgM@sD5{b}ITL3i!b48BZToH%~|z^d(84VUfY{Ef!^ zna#f#l@m+i4PyuGacG&hYGmS(J9-J$4u;BCi|4%SLP%RPCFa)-x>1US)(q>YvzFqnV^ZK?Q>qU|4???PT;#^?yX9dW<q9er}`#wC~AzyFwHWx_KYQ+qKudRA$1-Qe=?8XL*$$u&-7^U?*CK|jAaW>Z_y zrfA!UU3UvcmtCu^w>gV?5RFIHIZ|l|+IAM{L<-kXLrRu=>=6KMuv`n>rpG$>D^5vUXQ!Fg%>OHhu$J^o;2d=15bd zot`6SvYxA+Hz$x2IllAHZ*U6y@Pg?f@Yx^lc*8!MZ@35OOrUZUJc@_E3+li65$H#t rAAx=Z`Vr_ypdW#L1o{!^N1z{pegygv=ttmx0|C&pZf{$2oa_D#To^;< literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.3_2-171-354 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.3_2-171-354 new file mode 100644 index 0000000000000000000000000000000000000000..ed549604da3581b3548663d843d17c32d66db772 GIT binary patch literal 13283 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 A4FCWD literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.4_0-234-440 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.4_0-234-440 new file mode 100644 index 0000000000000000000000000000000000000000..b8eb309288af0d96556dc124f36c636c1e92f80e GIT binary patch literal 7264 zcmds6+in{-5KZ0wKpzSeXbKRUhqi#C$Ve}!-|Q$s1UPNs*iC^nFsNP1VzawcNv;*w z&|mihdWPguE6G|Zj@5_QFeGcq;c({6nTsAgKkE-3+;czoPw?_d_}lZJ-TQq1=bw7L zef-i7-uCbS55M~NIQ~ne6gQt-6KEL=G{TO0ndSdAZE+OOdguv}0K^I~J^#%ue|*7uYb8BF{{6@cOz| z;e70LI8RkkNPBK26zc?iUngai(>ca!SzaV>>J#Z`G2&HjlLJ~Z>#UP!#NVa56M_DY z=WoT;ors%oZKai}JfCnoz7vrnnTvDh*$**b^MVmL!2zAbx&JSI$-CjBgXE=m&aB}C z2e(>@M3$Bu=CE=KATl*_=qLj20(_E&0J@5~GFB8dgjOsRbu0J;4=;IM2_P$e+>Z5U zIABnY2pX%HH1eN02$Ng^dbR#9@u=3Hlx!+3O<&}~3JS0ga6_eX!OOV)R9AvYy1q1w z_OmfJY$!y@5K(UL?9Hsz%rOX_sM2y-8YXcMU2p;u<3m+h7Qtm0FEe+LX~rc*yAigj z{86q{0jpS{H=DfOwhdA7;(eUxFFd4!=q*mdrE!JaVA-k{7C;o;x(yO*XE{acqevV} zL0rvS6Wtig3qp{0*{u#5ln_!{7R9mY7%p{QjwqkP)2S950C`kR-~s@p0eNQ^?|`UG zGQ6??^^Nx#%986VMk^TCnqM`AZ2`pv(%XV`&>P!&5(~iJ~sA#-70#kPo zgUhTmR;D+@kD~JzN|QA*R&>|~iqUxRtYAdW&P>y>OvfG{E7~wVndH*DeNB?{d+ty> zZ?HSluaM>M#K-Gxx9qODa>qzjo3*2awhQ%K zqHNXgS+4jN<{QznU1;b8x0|r9D!^&85i_@L7fO1`?OGmDUf8UpOCP(?(dVUBU;DCf zvyPrccc5ep;ca-j^(sgmTOfi~v0Poql;=CRjw_?v)fA~Lc)r=>eZO#r%0}CJpmdU8 zms8(|W?lhM?*xfJ8Y1X}$2~N9upPS2{U2tnH$6q!_ClswZ4m>s_F>@`{~s3)-NNF1 zsV)pUB%5#M3exwvp4+hdJHmQ)314XA-e1c9Y)5`lDOi} z)r77BWCpW@f_K;yRkCmRjz0EEm2+g zdjCf?Pn8AHrL>fK0k_fhDr>w&gPPk2rhS{GThfNQ^H|Tds%@;&{6a8l^$DbzG;gtU z9nzfivl2rp5S9V3w?C_X4+UdL|H#)Zn=1s%I(8@Jkmd|)f*t9#cb-nNxHal=R_ zV(pwJjydkI6FLzip&b#?05hK8TO<0&-wk~Su^}yNferPLgY3Dy7#~SXvC$e(^P|Vu z!G8Rn4YA9Qi_kVYSqvmOteN%fY|y8660@H!`?EY`?gRgLzML=zCdTyPF`Gz{3Yr+P zlj8yVc2U1hIOAANN!>U)a!&Y;PIyK-)JKvk*L33S;k6S)Q-N7`qd9{3?X8ik>Bnje zGTEvjsLzWu>xV5`5b+?ssRt%&!-q74@q+|-!gao&dMzFzqoU-kQoDkOewQ86a3OUq zbC^+mM9^9>WvoND=>ek2PikZP8SMaNjGtKND)nPlm`>k71zq;a&;10b7_&xl7JRcG zBCAjTgm6R%YCgq(^vy;c#4WLdK`)IMsdiYoH_l#{7d?SI4R?)-EsXqEty$Zq%YIYFNE+Yx>H&jH!FrB( z_PgxYxxSd<5Z5)Rt>5v>nrl`JTKmnbNep(Qe|jBA;TdL>RFLAvRT_cE7#w4_<*)!*c(n+H^L82z_&4;h~X`%(ZB=%hFY7-Y8vD(S1xa6;Y-1< c@%kzLzS!H_>+OB%rJg(P_$(}OFZciW4|a*1x&QzG literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.5_2-360-607 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0008-0_00000000000000011.log.5_2-360-607 new file mode 100644 index 0000000000000000000000000000000000000000..b212e9424fcdd3bf4618eb2b6e4ec7823675d875 GIT binary patch literal 13281 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 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.4_1-234-441 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.4_1-234-441 new file mode 100644 index 0000000000000000000000000000000000000000..0479562e663e577ad0512e9445b4bfd574e945cc GIT binary patch literal 7264 zcmds6+in{-5KZ0wKpzSeXbKRUhqi#C$Ve}!-|Q$s1UPNs*iC^nFsNP1VzawcNv;*w z&|mihdWPguD@$4_j@5_QFeGcq;c({6nTsAgKkE-3+;czoPw?_d_}lZJ-TQq1=bw7L zef-i7-uCbS55M~NIQ~ne6gQt-6KEL=G{TO0ndSdAZE+OOdguv}0K^I~J^#%ue|*7uYb8BF{{6@cOz| z;e70LI8RkkNPBK26zc?iUngai(>ca!SzaV>>J#Z`G2&HjlLJ~Z>#UP!#NVa56M_DY z=WoT;ors%oZKai}JfCnoz7vrnnTvDh*$**b^MVmL!2zAbx&JSI$-CjBgXE=m&aB}C z2e(>@M3$Bu=CE=KATl*_=qLj20(_E&0J@5~GFB8dgqAE6bu0J;4=;IM2_P$e+>Z5U zIABnY2pY?nH1eN02$Ng^dbR#9@u=3Hlx!+3O<&}~3JS0ga6_eX!OOV)R9AvYy1q1w z_OmfJY$!y@5K(UL?9Hsz%rOX_sM2y-8YXcMU2p;u<3m+h7Qtm0FEe+LX~rc*yAigj z{86q{0jpS{H=DfOwhdA7;(eUxFFd4!=q*mdrE!JaVA--47C;o;x(yO*XE{acqevV} zL0rvS6Wtig3qp{0*{u#5ln_!{7R9mY7%p{QjwqkP)2S950C`kR-~s@p0eNQ^?|`UG zGQ6??^~(DUWy$pwqZN#6&99omwt(V-aYSh$3o#_KM*)azl=F)OXpDfXalr;@d}+Bg^-0kXbtZ`3X-8l~R5ackfvG!) z!DUt&E7R5Rqv-sF(qxT{B^|bbVl*B+D;SZpGt+b|)3L|Lk~WM_Cb{%(Uz6ngo;%de z8|=>XD`fdQ@$q`w-Spp)C(2hEmlrxZEtVEjdVm^$1x95qoUHYn6zyA z2*^7`sq&3sXC;Uc5|=3}|BnlYZej7h zR2K#vlFc`B1?l@-&u!TK9pOZDLU2qhYF@}v7F9uoBlR`D>DRox5M6eJ4kKe|NnG*g zYC=~5GJ{z{!8>eRkCmRjz0EEm2+g zdjCf?Pn8AHrL>fK0k_fhDr>w&gPPk2rhS{GThfNQ^H|Tds%@;&{6a8l^$DbzG;gtU z9nzfivl2rp5S9V3w?C_X4+UdL|H#)Zn=1s%I(8@Jqod|)f*t9#cb-nNxHal=R_ zV(pwJjydkI6FLzip&b#?05hK8TO<0&-wk~Su^}yNferPLgY3Dy7#~SXvC$e(^P|Vu z!G8Rn4YA9Qi_kVYSqvmOteN%fY|y8660@H!`?EY`?gRgLzML=zCdTyPF`Gz{3Yr+P zlj8yVc2U1hIOAANN!>U)a!&Y;PIyK-)JKvk*L33S;k6S)Q-N7`qd9{3?X8ik>Bnje zGTE{rsLzWu>xV5`5b+?ssRt%&!-q74@q+|-!gao&dMzFzqoU-kQoDqQewQ86a3OUq zbC^+mM9^9?WvoND=>ek2PikZP8SMaNjGtKND)nPlm`<;tf-ZaI=Y9fIj9DW&3%=P8 zk=3VvLO3D>HJ{=?`evgJ;+ELKpqECBR68u)@H_l#{7d?SI4R?)-EsXq^ty$Zq%YIYFNE+Yx>H&jH!FrB( z_PgxYxxSd<5Z5)Rt>5v>nroH}TKmnbNes5qKfMm5@C-9bDoAnTDh)vauG4;64IU4~ z)k>2K^w(RcmFsUid_dbV>WL#<6^H4XA_RxWR5;Y-1< c@%kzLzS!H_+u!@rOFeho@mW~nUhe<#A9kmly8r+H literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.5_3-360-608 b/presto-hive/src/test/resources/hudi_mor_part_update/.hoodie/metadata/record_index/.record-index-0009-0_00000000000000011.log.5_3-360-608 new file mode 100644 index 0000000000000000000000000000000000000000..88abb0e83f0be85ba267d8a94eb3b91d3e2045b6 GIT binary patch literal 13281 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 K&9a#*t_T300bMr$ literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/p1/.c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_0-32-192_19700101000000000.parquet.crc b/presto-hive/src/test/resources/hudi_mor_part_update/p1/.c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_0-32-192_19700101000000000.parquet.crc new file mode 100644 index 0000000000000000000000000000000000000000..3b8f33cfe816bad6635b6efe40e3aa6e2aa1a72d GIT binary patch literal 3416 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 R_52@P`0}>k#Mr%q{|^s@9-IIG literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/p1/c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_0-32-192_19700101000000000.parquet b/presto-hive/src/test/resources/hudi_mor_part_update/p1/c0bbff31-67b3-4660-99ba-d388b8bb8c3c-0_0-32-192_19700101000000000.parquet new file mode 100644 index 0000000000000000000000000000000000000000..454fd13ff102a93bcbba8e1424d80d2893dcc3f4 GIT binary patch literal 435904 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 BUwQxl literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.1_0-212-431 b/presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.1_0-212-431 new file mode 100644 index 0000000000000000000000000000000000000000..9c42b732589d39a1ed4065e0c1d998aa480a265f GIT binary patch literal 1017 zcmb_bv1-FG5KZmSu~6vPNm)HOT}rbRIY5lj&v`&l`+qcC}K-Q4wnr zE}Js5)|$2+3uP8;mN02E;-e!8xmastlgeeA^znK4F!m&b&BOUSlqaEcqCkbp8tw!x zPePe14ZN1+KLu2kxIt`XkacS7a1RAZIw<-UZH3b|$kwCQvpbCGh}{##v!yT#;MPGQ z>KfMh?$T~=KY}TApYmLS288|NTb8-C8ic94uP-6^1cRKK?eIB&m4G*~+M8ozXWQ_* bUXzV!UJautjfU>#{343R%_6u|CjR*aIDkAU literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.2_0-275-512 b/presto-hive/src/test/resources/hudi_mor_part_update/p2/.7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_19700101000006000.log.2_0-275-512 new file mode 100644 index 0000000000000000000000000000000000000000..c5baad6c89819c15c7834389750b9f81608ede4f GIT binary patch literal 1008 zcmb_bu};G<5G_eJCd41OYlgN9kPV3eCJ+)+RatI)X)Rpa#8;%K>M!t-One5H#7!er z5tXQ;)5(6m=ev8C(c|00(`Zny_?z5Cu&6m3Tutt7#^VWn)w(4kfWY``%dm97QdU4_ z3&|2@#JbwQh*Dc2@1<}k78+i=xOXC}F0HJU3MeR7prvQ&Y`c%=4aPIOUMu9Nh&2h1 z&6wF}O*WXYir@!CcYv?ReynxWa2ZpByJk1 zil{^!olf@iJ>T8Cj2_<}o<@Ue#oy#Ef<^V&;A%3x8;>XSm1{~y0Dj$z?|r7VZc z=8`4Mh)ubF5rwuw-b>+7EHu2faqmP{URql#6;RMpftH@7v)v({*BH<2W}}d!BGx24 zHe+V1HEliS%B!f6|1>rm_2oyN4p?ug>qT9_4Z>mV0Z z5376+X*aK*!4#%Xc`iW%!m;>AAZ+s U@-f+E6h*hu(A^9JP`UW$7yVm12LJ#7 literal 0 HcmV?d00001 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/p2/.hoodie_partition_metadata b/presto-hive/src/test/resources/hudi_mor_part_update/p2/.hoodie_partition_metadata new file mode 100644 index 000000000000..0cfe218dbbc7 --- /dev/null +++ b/presto-hive/src/test/resources/hudi_mor_part_update/p2/.hoodie_partition_metadata @@ -0,0 +1,4 @@ +#partition metadata +#Thu Oct 31 17:47:43 IST 2024 +commitTime=19700101000006000 +partitionDepth=1 diff --git a/presto-hive/src/test/resources/hudi_mor_part_update/p2/7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_1-149-341_19700101000006000.parquet b/presto-hive/src/test/resources/hudi_mor_part_update/p2/7483ef07-d1f8-4d44-b9b0-cba6df5cd1b8-0_1-149-341_19700101000006000.parquet new file mode 100644 index 0000000000000000000000000000000000000000..f51cd25965cf0438215aae8f1d360e731f659cec GIT binary patch literal 435917 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 Date: Thu, 2 Jan 2025 18:50:29 +0530 Subject: [PATCH 2/2] for MOR table, just consider latest completed compaction --- .../java/com/facebook/presto/hive/HudiDirectoryLister.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java b/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java index 8d483572d8ac..aa8a70644b71 100644 --- a/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java +++ b/presto-hive/src/main/java/com/facebook/presto/hive/HudiDirectoryLister.java @@ -36,6 +36,7 @@ import org.apache.hudi.common.model.HoodieTableType; import org.apache.hudi.common.table.HoodieTableMetaClient; import org.apache.hudi.common.table.timeline.HoodieInstant; +import org.apache.hudi.common.table.timeline.HoodieTimeline; import org.apache.hudi.common.table.view.FileSystemViewManager; import org.apache.hudi.common.table.view.HoodieTableFileSystemView; import org.apache.hudi.common.util.Option; @@ -65,7 +66,6 @@ public class HudiDirectoryLister public HudiDirectoryLister(Configuration conf, ConnectorSession session, Table table) { log.info("Using Hudi Directory Lister."); - // TODO: Just hardcoding for testing. Need to prepare connector session in the test. this.metadataEnabled = isHudiMetadataEnabled(session); this.shouldUseMergedView = SPLITTER.splitToList(getHudiTablesUseMergedView(session)).contains(table.getSchemaTableName().toString()); Configuration actualConfig = ((CachingJobConf) conf).getConfig(); @@ -81,8 +81,9 @@ public HudiDirectoryLister(Configuration conf, ConnectorSession session, Table t .setBasePath(table.getStorage().getLocation()) .build(); this.latestInstant = metaClient.getActiveTimeline() - .getCommitsTimeline() + .getCommitsAndCompactionTimeline() .filterCompletedInstants() + .filter(instant -> !HoodieTableType.MERGE_ON_READ.equals(metaClient.getTableType()) || instant.getAction().equals(HoodieTimeline.COMMIT_ACTION)) .lastInstant() .map(HoodieInstant::getTimestamp).orElseThrow(() -> new RuntimeException("No active instant found")); HoodieEngineContext engineContext = new HoodieLocalEngineContext(actualConfig);