Full Code of delta-io/delta for AI

master cd215cb69353 cached
3757 files
22.5 MB
6.1M tokens
6957 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (24,405K chars total). Download the full file to get everything.
Repository: delta-io/delta
Branch: master
Commit: cd215cb69353
Files: 3757
Total size: 22.5 MB

Directory structure:
gitextract_9jbpsnjv/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-issue.md
│   │   ├── feature-request.md
│   │   └── protocol-rfc.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── build.yaml
│       ├── flink_test.yaml
│       ├── iceberg_test.yaml
│       ├── kernel_docs.yaml
│       ├── kernel_test.yaml
│       ├── kernel_unitycatalog_test.yaml
│       ├── publish_docs.yaml
│       ├── spark_examples_test.yaml
│       ├── spark_python_test.yaml
│       ├── spark_test.yaml
│       └── unidoc.yaml
├── .gitignore
├── .sbtopts
├── .scalafmt.conf
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.txt
├── NOTICE.txt
├── PROTOCOL.md
├── README.md
├── benchmarks/
│   ├── README.md
│   ├── build/
│   │   ├── sbt
│   │   └── sbt-launch-lib.bash
│   ├── build.sbt
│   ├── infrastructure/
│   │   ├── aws/
│   │   │   └── terraform/
│   │   │       ├── .terraform.lock.hcl
│   │   │       ├── README.md
│   │   │       ├── main.tf
│   │   │       ├── modules/
│   │   │       │   ├── networking/
│   │   │       │   │   ├── main.tf
│   │   │       │   │   ├── outputs.tf
│   │   │       │   │   └── variables.tf
│   │   │       │   ├── processing/
│   │   │       │   │   ├── main.tf
│   │   │       │   │   ├── outputs.tf
│   │   │       │   │   └── variables.tf
│   │   │       │   └── storage/
│   │   │       │       ├── main.tf
│   │   │       │       └── variables.tf
│   │   │       ├── outputs.tf
│   │   │       ├── providers.tf
│   │   │       ├── variables.tf
│   │   │       └── versions.tf
│   │   └── gcp/
│   │       └── terraform/
│   │           ├── .terraform.lock.hcl
│   │           ├── README.md
│   │           ├── main.tf
│   │           ├── modules/
│   │           │   ├── processing/
│   │           │   │   ├── data.tf
│   │           │   │   ├── main.tf
│   │           │   │   ├── outputs.tf
│   │           │   │   └── variables.tf
│   │           │   └── storage/
│   │           │       ├── main.tf
│   │           │       └── variables.tf
│   │           ├── outputs.tf
│   │           ├── providers.tf
│   │           ├── variables.tf
│   │           └── versions.tf
│   ├── project/
│   │   ├── build.properties
│   │   └── plugins.sbt
│   ├── run-benchmark.py
│   ├── scripts/
│   │   ├── benchmarks.py
│   │   └── utils.py
│   └── src/
│       └── main/
│           └── scala/
│               ├── benchmark/
│               │   ├── Benchmark.scala
│               │   ├── MergeBenchmark.scala
│               │   ├── MergeDataLoad.scala
│               │   ├── MergeTestCases.scala
│               │   ├── TPCDSBenchmark.scala
│               │   ├── TPCDSBenchmarkQueries.scala
│               │   ├── TPCDSDataLoad.scala
│               │   └── TestBenchmark.scala
│               └── org/
│                   └── apache/
│                       └── spark/
│                           └── SparkUtils.scala
├── build/
│   ├── sbt
│   ├── sbt-config/
│   │   └── repositories
│   └── sbt-launch-lib.bash
├── build.sbt
├── connectors/
│   ├── .gitignore
│   ├── README.md
│   ├── golden-tables/
│   │   └── src/
│   │       ├── main/
│   │       │   ├── resources/
│   │       │   │   └── golden/
│   │       │   │       ├── 124-decimal-decode-bug/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-2abbde89-2d0f-465e-a2f0-3e84f1b84654-c000.snappy.parquet
│   │       │   │       │   └── part-00001-5419c9a2-bb44-454f-a109-6e6c6f000a24-c000.snappy.parquet
│   │       │   │       ├── 125-iterator-bug/
│   │       │   │       │   ├── .part-00000-15088d9b-5348-490b-933d-5bf9b7d0b223-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1b8ea57e-424b-4068-8d0e-707edf853376-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-223768c3-2e58-4e8a-9d15-54fa113e8c21-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-2a248db5-8f96-423c-a0f7-c503fe640c6a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-3f0f0396-41aa-4fa7-954a-c5b22f5b157a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-66d18d0c-8cab-4cfa-a2c6-7e90df860b5a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-93beced9-3a9d-4519-b31a-5602a972ffa4-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c4738537-d851-4caa-9596-d543afa47196-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c855206c-f42a-4b53-a526-08a9a957ad58-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-d8e947c6-4f26-455b-a25f-84acb1240f3a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f0b12818-15f5-4476-8ebc-9235c74408d2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f9490ff6-f374-4b40-9d76-22addae085d1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-15088d9b-5348-490b-933d-5bf9b7d0b223-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-1b8ea57e-424b-4068-8d0e-707edf853376-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-223768c3-2e58-4e8a-9d15-54fa113e8c21-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-2a248db5-8f96-423c-a0f7-c503fe640c6a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-3f0f0396-41aa-4fa7-954a-c5b22f5b157a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-66d18d0c-8cab-4cfa-a2c6-7e90df860b5a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-93beced9-3a9d-4519-b31a-5602a972ffa4-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c4738537-d851-4caa-9596-d543afa47196-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c855206c-f42a-4b53-a526-08a9a957ad58-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d8e947c6-4f26-455b-a25f-84acb1240f3a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f0b12818-15f5-4476-8ebc-9235c74408d2-c000.snappy.parquet
│   │       │   │       │   └── part-00000-f9490ff6-f374-4b40-9d76-22addae085d1-c000.snappy.parquet
│   │       │   │       ├── basic-decimal-table/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=-2342342.23423/
│   │       │   │       │   │   ├── .part-00000-8f850371-9b03-42c4-9d22-f83bc81c9b68.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-8f850371-9b03-42c4-9d22-f83bc81c9b68.c000.snappy.parquet
│   │       │   │       │   ├── part=0.00004/
│   │       │   │       │   │   ├── .part-00000-1cb60e36-6cd4-4191-a318-ae9355f877c3.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-1cb60e36-6cd4-4191-a318-ae9355f877c3.c000.snappy.parquet
│   │       │   │       │   ├── part=234.00000/
│   │       │   │       │   │   ├── .part-00000-ac109189-97e5-49af-947f-335a5e46ee5c.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-ac109189-97e5-49af-947f-335a5e46ee5c.c000.snappy.parquet
│   │       │   │       │   └── part=2342222.23454/
│   │       │   │       │       ├── .part-00000-d5a0c70f-7cd3-4d32-a9c0-7171a06547c6.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00000-d5a0c70f-7cd3-4d32-a9c0-7171a06547c6.c000.snappy.parquet
│   │       │   │       ├── basic-decimal-table-legacy/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=-2342342.23423/
│   │       │   │       │   │   ├── .part-00000-ba2f74ac-7b9b-47b9-a287-97d92bd20efc.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-ba2f74ac-7b9b-47b9-a287-97d92bd20efc.c000.snappy.parquet
│   │       │   │       │   ├── part=0.00004/
│   │       │   │       │   │   ├── .part-00000-3de65390-7061-47d6-8995-cbb632b4b203.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-3de65390-7061-47d6-8995-cbb632b4b203.c000.snappy.parquet
│   │       │   │       │   ├── part=234.00000/
│   │       │   │       │   │   ├── .part-00000-654d80b0-611a-4ff3-a8e6-2328dd21cf11.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-654d80b0-611a-4ff3-a8e6-2328dd21cf11.c000.snappy.parquet
│   │       │   │       │   └── part=2342222.23454/
│   │       │   │       │       ├── .part-00000-fe848a88-0465-4b4f-8414-25e6da7062f8.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00000-fe848a88-0465-4b4f-8414-25e6da7062f8.c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-deletes-checkpoint/
│   │       │   │       │   ├── .part-00000-0869ab64-e69d-407f-80d4-1a2ea1f69d11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1b0098ea-c696-4470-84cc-d43bb7afb833-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-26da113c-2e45-4aba-b1ce-6eb5e46c53f7-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-4b448490-06f4-4c74-9f65-9f36ae68e3b2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-60f14460-c8e0-41b4-a33f-1a83bb59f13c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-7d1a368c-74ea-42df-9527-2c9a7c8292b9-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-b09fdf65-0ae3-44d0-96d0-1d85a121b76a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-b326e43b-3e01-4cf1-b8ff-c73c8abd1616-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-bd8763c3-45e4-435e-acd6-8e599aa840bc-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c92cba9e-6c07-4a93-916a-0a6e115e39b3-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c967edfa-f104-44ea-b0da-8bc1f5402af4-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-ca2d0b26-c15c-454f-a933-fc724e15e5f1-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-da82aeb5-4edb-4cc1-91ef-970c75c965cc-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f80053c6-2b0d-41ed-ab5f-61ef1503cae6-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── .00000000000000000004.json.crc
│   │       │   │       │   │   ├── .00000000000000000005.json.crc
│   │       │   │       │   │   ├── .00000000000000000006.json.crc
│   │       │   │       │   │   ├── .00000000000000000007.json.crc
│   │       │   │       │   │   ├── .00000000000000000008.json.crc
│   │       │   │       │   │   ├── .00000000000000000009.json.crc
│   │       │   │       │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000010.json.crc
│   │       │   │       │   │   ├── .00000000000000000011.json.crc
│   │       │   │       │   │   ├── .00000000000000000012.json.crc
│   │       │   │       │   │   ├── .00000000000000000013.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   ├── 00000000000000000012.json
│   │       │   │       │   │   ├── 00000000000000000013.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-0869ab64-e69d-407f-80d4-1a2ea1f69d11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-1b0098ea-c696-4470-84cc-d43bb7afb833-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-26da113c-2e45-4aba-b1ce-6eb5e46c53f7-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-4b448490-06f4-4c74-9f65-9f36ae68e3b2-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-60f14460-c8e0-41b4-a33f-1a83bb59f13c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-7d1a368c-74ea-42df-9527-2c9a7c8292b9-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b09fdf65-0ae3-44d0-96d0-1d85a121b76a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b326e43b-3e01-4cf1-b8ff-c73c8abd1616-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-bd8763c3-45e4-435e-acd6-8e599aa840bc-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c92cba9e-6c07-4a93-916a-0a6e115e39b3-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c967edfa-f104-44ea-b0da-8bc1f5402af4-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-ca2d0b26-c15c-454f-a933-fc724e15e5f1-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-da82aeb5-4edb-4cc1-91ef-970c75c965cc-c000.snappy.parquet
│   │       │   │       │   └── part-00000-f80053c6-2b0d-41ed-ab5f-61ef1503cae6-c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-merge/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-992247c6-6cf4-45f8-8367-11a5e14b8ea9-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b4335bad-f5f0-4426-9ec4-14ed854f862b-c000.snappy.parquet
│   │       │   │       │   └── part-00001-b80a2dea-5a83-4580-96d5-4977d14195ab-c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-overwrite-restore/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-5e752668-638c-4e95-9521-5e88926e3169-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-79fa68ed-3d70-4f61-95da-9eb676b24a98-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d24c9b15-187d-4542-90ef-7834bfaa4971-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-180c081a-f358-4bf9-8daa-4d04a5aa7f51-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-66f56273-e583-4a88-9da6-2c199bdaf665-c000.snappy.parquet
│   │       │   │       │   └── part-00001-bc9b37c2-a201-499d-b604-93623e2de1d6-c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-updates/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-6dfaec75-bd45-4fd6-b20f-7d58c9341479-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f9886fc2-20a0-42fe-8b30-c3abb5e3c720-c000.snappy.parquet
│   │       │   │       │   └── part-00001-13a6bfd9-3835-44dd-b4f1-465aa95b2bf4-c000.snappy.parquet
│   │       │   │       ├── basic-with-vacuum-protocol-check-feature/
│   │       │   │       │   ├── .part-00000-e719b63b-4142-4bad-9776-45642d5858ae-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-fd905e0a-6d0c-4ce3-bb41-147517448b3b-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-e719b63b-4142-4bad-9776-45642d5858ae-c000.snappy.parquet
│   │       │   │       │   └── part-00001-fd905e0a-6d0c-4ce3-bb41-147517448b3b-c000.snappy.parquet
│   │       │   │       ├── canonicalized-paths-normal-a/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── canonicalized-paths-normal-b/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── canonicalized-paths-special-a/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── canonicalized-paths-special-b/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── commit-info-containing-arbitrary-operationParams-types/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.crc.crc
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.crc.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.crc.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.crc
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.crc
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── month=1/
│   │       │   │       │   │   ├── .part-00000-22d25ea7-a383-44df-ad22-6b06d871b547.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00000-c5babbd8-6013-484c-818f-22d546976866.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-22d25ea7-a383-44df-ad22-6b06d871b547.c000.snappy.parquet
│   │       │   │       │   │   └── part-00000-c5babbd8-6013-484c-818f-22d546976866.c000.snappy.parquet
│   │       │   │       │   └── month=2/
│   │       │   │       │       ├── .part-00000-129a0441-5f41-4e46-be33-fd0289e53614.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00000-cc2a9650-0450-4879-9757-873b7f544510.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-129a0441-5f41-4e46-be33-fd0289e53614.c000.snappy.parquet
│   │       │   │       │       └── part-00000-cc2a9650-0450-4879-9757-873b7f544510.c000.snappy.parquet
│   │       │   │       ├── corrupted-last-checkpoint/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       ├── 00000000000000000003.json
│   │       │   │       │       ├── 00000000000000000004.json
│   │       │   │       │       ├── 00000000000000000005.json
│   │       │   │       │       ├── 00000000000000000006.json
│   │       │   │       │       ├── 00000000000000000007.json
│   │       │   │       │       ├── 00000000000000000008.json
│   │       │   │       │       ├── 00000000000000000009.json
│   │       │   │       │       ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000010.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── corrupted-last-checkpoint-kernel/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-45318b19-5a29-4bb9-b273-1738e817d63e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-45ddfb64-1797-4618-a4e4-58d687ae9d21-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-51f8ff2c-8e81-4031-94c9-93eae615d3e3-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-59a396e0-b0f4-4685-80f1-f58e07601862-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-69f4e384-139f-4b75-b51f-09213866a62a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-82c1686f-287a-4e6f-8a7a-0099d54d7738-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-99f8ecc2-cc99-4e3e-866e-07135df25e52-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-a57ecbd0-7dad-4b6c-a3fe-8ab4f7e73f5a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-bca1b163-25a1-4130-b74c-b905c61018ca-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cbc535a8-3499-4339-be3f-9df89091871e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cd63e6e7-227f-4bae-8ffc-fad3bfea242c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d9d02879-5155-46d4-84a8-41c83c5df9e4-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-400931d7-721c-4dbc-82e6-5c29f1dfcde1-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-4eeaf77f-87b7-45bb-8e1f-1faf9c957918-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-71b04841-d4e6-4cd6-930a-5e33fd1bd7a0-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-81d22bd7-311e-4934-839e-f635ea6f364f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-84978e4c-0e36-40d7-a3e0-c69204409c28-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-89b7b3e6-d076-43af-963f-3a4055a1eca6-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-8e839ba6-38f3-4093-8eb4-bc894159348c-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-a68acb2a-ac4f-46c2-940b-f962480a6517-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-c1199313-5eb1-4d9d-9cec-a43245621024-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-c4cbb8cf-9c18-4bab-bfa7-967faa14e15d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-e471a872-a1ee-4610-9454-062854327ad6-c000.snappy.parquet
│   │       │   │       │   └── part-00001-ef16b167-3dda-4681-bdd0-cd6bb9f07c30-c000.snappy.parquet
│   │       │   │       ├── data-reader-absolute-paths-escaped-chars/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── data-reader-array-complex-objects/
│   │       │   │       │   ├── .part-00000-a7d58b1a-7743-4bb0-b208-438bbe179c93-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-7b211746-0a31-4e77-9822-b0985158cd66-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-a7d58b1a-7743-4bb0-b208-438bbe179c93-c000.snappy.parquet
│   │       │   │       │   └── part-00001-7b211746-0a31-4e77-9822-b0985158cd66-c000.snappy.parquet
│   │       │   │       ├── data-reader-array-primitives/
│   │       │   │       │   ├── .part-00000-182665f0-30df-470d-a5cb-8d9d483ed390-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2e274fe7-eb75-4b73-8c72-423ee747abc0-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-182665f0-30df-470d-a5cb-8d9d483ed390-c000.snappy.parquet
│   │       │   │       │   └── part-00001-2e274fe7-eb75-4b73-8c72-423ee747abc0-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-America/
│   │       │   │       │   └── Los_Angeles/
│   │       │   │       │       ├── .part-00000-e85ca549-604b-4340-b56d-868e9acc78e8-c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-1e808610-ee7f-44e7-be9b-be02c2bc5895-c000.snappy.parquet.crc
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── part-00000-e85ca549-604b-4340-b56d-868e9acc78e8-c000.snappy.parquet
│   │       │   │       │       └── part-00001-1e808610-ee7f-44e7-be9b-be02c2bc5895-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-Asia/
│   │       │   │       │   └── Beirut/
│   │       │   │       │       ├── .part-00000-58828e3c-041e-47b4-80dd-196ae1b1d1a6-c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-8590d66f-6907-40a9-9e97-a4a098321340-c000.snappy.parquet.crc
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── part-00000-58828e3c-041e-47b4-80dd-196ae1b1d1a6-c000.snappy.parquet
│   │       │   │       │       └── part-00001-8590d66f-6907-40a9-9e97-a4a098321340-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-Etc/
│   │       │   │       │   └── GMT+9/
│   │       │   │       │       ├── .part-00000-23e032bb-e586-4573-9fc0-1c9a4c9a5081-c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-d91bf3dd-78c9-4abf-aa54-e89228e8316c-c000.snappy.parquet.crc
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── part-00000-23e032bb-e586-4573-9fc0-1c9a4c9a5081-c000.snappy.parquet
│   │       │   │       │       └── part-00001-d91bf3dd-78c9-4abf-aa54-e89228e8316c-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-Iceland/
│   │       │   │       │   ├── .part-00000-8be8ec9f-d9af-474e-8ec9-35ec76debc6a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-56f07a95-04d4-4c12-bf08-fd89cedc8559-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-8be8ec9f-d9af-474e-8ec9-35ec76debc6a-c000.snappy.parquet
│   │       │   │       │   └── part-00001-56f07a95-04d4-4c12-bf08-fd89cedc8559-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-JST/
│   │       │   │       │   ├── .part-00000-3f9100ce-0b94-43cb-bb23-f0e36dc7af2b-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-dc211b29-0c30-41e8-8700-f8bb374964e1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-3f9100ce-0b94-43cb-bb23-f0e36dc7af2b-c000.snappy.parquet
│   │       │   │       │   └── part-00001-dc211b29-0c30-41e8-8700-f8bb374964e1-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-PST/
│   │       │   │       │   ├── .part-00000-0a103e9a-6236-470c-94f7-5f60926f01da-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-980a117f-027e-4396-81ce-3a5a8ac70815-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-0a103e9a-6236-470c-94f7-5f60926f01da-c000.snappy.parquet
│   │       │   │       │   └── part-00001-980a117f-027e-4396-81ce-3a5a8ac70815-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-UTC/
│   │       │   │       │   ├── .part-00000-803e1cfa-c859-4ce7-977b-ff150d6e138c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0108113a-2933-41b3-b9a6-e68bb9ed25cc-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-803e1cfa-c859-4ce7-977b-ff150d6e138c-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0108113a-2933-41b3-b9a6-e68bb9ed25cc-c000.snappy.parquet
│   │       │   │       ├── data-reader-escaped-chars/
│   │       │   │       │   ├── _2=bar+%2521/
│   │       │   │       │   │   ├── .part-00000-af08f887-922f-4c31-82a7-8e142c4280a6.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-af08f887-922f-4c31-82a7-8e142c4280a6.c000.snappy.parquet
│   │       │   │       │   ├── _2=bar+%2522/
│   │       │   │       │   │   ├── .part-00000-c1bfd944-5e0d-4133-af16-7851061e37aa.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-c1bfd944-5e0d-4133-af16-7851061e37aa.c000.snappy.parquet
│   │       │   │       │   ├── _2=bar+%2523/
│   │       │   │       │   │   ├── .part-00000-92352854-5503-4ba5-8c29-b11777034eb7.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-92352854-5503-4ba5-8c29-b11777034eb7.c000.snappy.parquet
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       └── 00000000000000000002.json
│   │       │   │       ├── data-reader-map/
│   │       │   │       │   ├── .part-00000-d9004e55-077b-4728-9ee6-b3401faa46ba-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-3d30d085-4cde-471e-a396-12af34a70812-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-d9004e55-077b-4728-9ee6-b3401faa46ba-c000.snappy.parquet
│   │       │   │       │   └── part-00001-3d30d085-4cde-471e-a396-12af34a70812-c000.snappy.parquet
│   │       │   │       ├── data-reader-nested-struct/
│   │       │   │       │   ├── .part-00000-f2547b28-9219-4628-8462-cc9c56edfebb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0f755735-3b5b-449a-8f93-92a40d9f065d-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-f2547b28-9219-4628-8462-cc9c56edfebb-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0f755735-3b5b-449a-8f93-92a40d9f065d-c000.snappy.parquet
│   │       │   │       ├── data-reader-nullable-field-invalid-schema-key/
│   │       │   │       │   ├── .part-00000-d1f74401-ecb8-494e-96d6-adb95ec7e1c2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-d6454547-1a50-4f43-910d-2f84c5aedae1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-d1f74401-ecb8-494e-96d6-adb95ec7e1c2-c000.snappy.parquet
│   │       │   │       │   └── part-00001-d6454547-1a50-4f43-910d-2f84c5aedae1-c000.snappy.parquet
│   │       │   │       ├── data-reader-partition-values/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── as_int=0/
│   │       │   │       │   │   └── as_long=0/
│   │       │   │       │   │       └── as_byte=0/
│   │       │   │       │   │           └── as_short=0/
│   │       │   │       │   │               └── as_boolean=true/
│   │       │   │       │   │                   └── as_float=0.0/
│   │       │   │       │   │                       └── as_double=0.0/
│   │       │   │       │   │                           └── as_string=0/
│   │       │   │       │   │                               └── as_string_lit_null=null/
│   │       │   │       │   │                                   └── as_date=2021-09-08/
│   │       │   │       │   │                                       └── as_timestamp=2021-09-08 11%3A11%3A11/
│   │       │   │       │   │                                           └── as_big_decimal=0/
│   │       │   │       │   │                                               ├── .part-00000-b9dc86ae-0134-4363-bd87-19cfb3403e9a.c000.snappy.parquet.crc
│   │       │   │       │   │                                               └── part-00000-b9dc86ae-0134-4363-bd87-19cfb3403e9a.c000.snappy.parquet
│   │       │   │       │   ├── as_int=1/
│   │       │   │       │   │   └── as_long=1/
│   │       │   │       │   │       └── as_byte=1/
│   │       │   │       │   │           └── as_short=1/
│   │       │   │       │   │               └── as_boolean=false/
│   │       │   │       │   │                   └── as_float=1.0/
│   │       │   │       │   │                       └── as_double=1.0/
│   │       │   │       │   │                           └── as_string=1/
│   │       │   │       │   │                               └── as_string_lit_null=null/
│   │       │   │       │   │                                   └── as_date=2021-09-08/
│   │       │   │       │   │                                       └── as_timestamp=2021-09-08 11%3A11%3A11/
│   │       │   │       │   │                                           └── as_big_decimal=1/
│   │       │   │       │   │                                               ├── .part-00001-cb007d48-a9f5-40e7-adbe-60920680770f.c000.snappy.parquet.crc
│   │       │   │       │   │                                               └── part-00001-cb007d48-a9f5-40e7-adbe-60920680770f.c000.snappy.parquet
│   │       │   │       │   └── as_int=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       └── as_long=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │           └── as_byte=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │               └── as_short=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                   └── as_boolean=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                       └── as_float=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                           └── as_double=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                               └── as_string=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                   └── as_string_lit_null=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                       └── as_date=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                           └── as_timestamp=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                               └── as_big_decimal=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                                   ├── .part-00001-9ee474eb-385b-43cf-9acb-0fbed63e011c.c000.snappy.parquet.crc
│   │       │   │       │                                                   └── part-00001-9ee474eb-385b-43cf-9acb-0fbed63e011c.c000.snappy.parquet
│   │       │   │       ├── data-reader-primitives/
│   │       │   │       │   ├── .part-00000-4f2f0b9f-50b3-4e7b-96a1-e2bb0f246b06-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-09e47b80-36c2-4475-a810-fbd8e7994971-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-4f2f0b9f-50b3-4e7b-96a1-e2bb0f246b06-c000.snappy.parquet
│   │       │   │       │   └── part-00001-09e47b80-36c2-4475-a810-fbd8e7994971-c000.snappy.parquet
│   │       │   │       ├── data-reader-timestamp_ntz/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── tsNtzPartition=2013-07-05 17%3A01%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-6240e68e-2304-449a-a1e6-0e24866d3508.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-336e3e5f-a202-4bd9-b117-28d871bbb639.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-6240e68e-2304-449a-a1e6-0e24866d3508.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-336e3e5f-a202-4bd9-b117-28d871bbb639.c000.snappy.parquet
│   │       │   │       │   ├── tsNtzPartition=2021-11-18 02%3A30%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-65fcd5cb-f2f3-44f4-96ef-f43825143ba9.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-65fcd5cb-f2f3-44f4-96ef-f43825143ba9.c000.snappy.parquet
│   │       │   │       │   └── tsNtzPartition=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-53fd3b3b-7773-459a-921c-bb64bf0bbd03.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-53fd3b3b-7773-459a-921c-bb64bf0bbd03.c000.snappy.parquet
│   │       │   │       ├── data-reader-timestamp_ntz-id-mode/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── col-31f31113-4fc7-437c-b8e8-b7bca8a2f698=2013-07-05 17%3A01%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-468b79b5-ef3e-40ee-b077-8d7b48ef8385.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-94a2fe48-a4c5-4d3e-823c-d76b59b9f597.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-468b79b5-ef3e-40ee-b077-8d7b48ef8385.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-94a2fe48-a4c5-4d3e-823c-d76b59b9f597.c000.snappy.parquet
│   │       │   │       │   ├── col-31f31113-4fc7-437c-b8e8-b7bca8a2f698=2021-11-18 02%3A30%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-80e4d2e9-69f2-420e-8152-8d5bb810b259.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-80e4d2e9-69f2-420e-8152-8d5bb810b259.c000.snappy.parquet
│   │       │   │       │   └── col-31f31113-4fc7-437c-b8e8-b7bca8a2f698=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-047834e2-8a38-47ff-9f1c-01f94a618369.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-047834e2-8a38-47ff-9f1c-01f94a618369.c000.snappy.parquet
│   │       │   │       ├── data-reader-timestamp_ntz-name-mode/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── col-805808af-d12a-42e5-a7ec-f1a99abb82ee=2013-07-05 17%3A01%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-19009b69-d0d2-4c9c-9994-770c77ce5c1e.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-459a6750-6f78-44ff-9706-03448c1dde8b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-19009b69-d0d2-4c9c-9994-770c77ce5c1e.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-459a6750-6f78-44ff-9706-03448c1dde8b.c000.snappy.parquet
│   │       │   │       │   ├── col-805808af-d12a-42e5-a7ec-f1a99abb82ee=2021-11-18 02%3A30%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-55eb3e92-fedb-4a0e-a327-d44ee8e356b2.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-55eb3e92-fedb-4a0e-a327-d44ee8e356b2.c000.snappy.parquet
│   │       │   │       │   └── col-805808af-d12a-42e5-a7ec-f1a99abb82ee=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-4325cf1b-146e-4e85-b36f-ab9c4a9d8125.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-4325cf1b-146e-4e85-b36f-ab9c4a9d8125.c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types/
│   │       │   │       │   ├── .part-00000-087fe319-d261-41b4-91b4-0e8412e60b9e-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-93fc8b78-4b92-45c7-ad3f-bb766e6d2e28-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-087fe319-d261-41b4-91b4-0e8412e60b9e-c000.snappy.parquet
│   │       │   │       │   └── part-00001-93fc8b78-4b92-45c7-ad3f-bb766e6d2e28-c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types-checkpoint/
│   │       │   │       │   ├── .part-00000-56a3869e-5a30-4765-9a7d-702537d70c3d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-ed0f17f3-dab5-4131-8ff8-5a5f4399d0ef-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-56a3869e-5a30-4765-9a7d-702537d70c3d-c000.snappy.parquet
│   │       │   │       │   └── part-00001-ed0f17f3-dab5-4131-8ff8-5a5f4399d0ef-c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types-columnmapping-id/
│   │       │   │       │   ├── .part-00000-45eafd89-d2ac-43ee-8ac3-c400d2bc828e-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-4596bea2-786f-404e-bc15-5adc99f00e30-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-45eafd89-d2ac-43ee-8ac3-c400d2bc828e-c000.snappy.parquet
│   │       │   │       │   └── part-00001-4596bea2-786f-404e-bc15-5adc99f00e30-c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types-columnmapping-name/
│   │       │   │       │   ├── .part-00000-23579e01-a3ed-4d10-b208-c34d51bdcd50-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-97ba0cfd-25fe-4911-a28f-29d37288fdd0-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-23579e01-a3ed-4d10-b208-c34d51bdcd50-c000.snappy.parquet
│   │       │   │       │   └── part-00001-97ba0cfd-25fe-4911-a28f-29d37288fdd0-c000.snappy.parquet
│   │       │   │       ├── data-skipping-change-stats-collected-across-versions/
│   │       │   │       │   ├── .part-00000-4deb5922-56af-43f6-9f20-75634a766a96-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-749a71d6-ff8e-4397-a7b0-8d33df259f58-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-fffd95ce-0d67-442e-b3d5-8fb90da5e1dd-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-c09e5ddb-2337-4e49-b8be-83fd96008375-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-cb335794-98b0-43c3-a3a1-a4c86e3da38d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e5d736b6-2ecd-457a-8bb2-947b61f9c67e-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── .00000000000000000004.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   └── 00000000000000000004.json
│   │       │   │       │   ├── part-00000-4deb5922-56af-43f6-9f20-75634a766a96-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-749a71d6-ff8e-4397-a7b0-8d33df259f58-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-fffd95ce-0d67-442e-b3d5-8fb90da5e1dd-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-c09e5ddb-2337-4e49-b8be-83fd96008375-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-cb335794-98b0-43c3-a3a1-a4c86e3da38d-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e5d736b6-2ecd-457a-8bb2-947b61f9c67e-c000.snappy.parquet
│   │       │   │       ├── data-skipping-partition-and-data-column/
│   │       │   │       │   ├── .part-00000-37b9e82e-6e87-4a9b-bc63-bd0bf3681e6e-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-3fbd7548-fc00-4946-bc27-6255b52ef227-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-8a1edea4-0555-4250-a795-8d3bc2d9e2da-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f610738e-af5e-442a-8f5e-e806354ed14a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2822cff2-34ab-4b93-9cbb-4e751084a422-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2c0ee02a-8591-4026-a5ab-952bdb347fc5-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-442a6473-8d9a-41d3-8172-e2248e8be169-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-6dedd756-e903-46d7-9e6c-01b3c4ebeab3-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── 00000000000000000003.json
│   │       │   │       │   ├── part-00000-37b9e82e-6e87-4a9b-bc63-bd0bf3681e6e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-3fbd7548-fc00-4946-bc27-6255b52ef227-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-8a1edea4-0555-4250-a795-8d3bc2d9e2da-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f610738e-af5e-442a-8f5e-e806354ed14a-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-2822cff2-34ab-4b93-9cbb-4e751084a422-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-2c0ee02a-8591-4026-a5ab-952bdb347fc5-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-442a6473-8d9a-41d3-8172-e2248e8be169-c000.snappy.parquet
│   │       │   │       │   └── part-00001-6dedd756-e903-46d7-9e6c-01b3c4ebeab3-c000.snappy.parquet
│   │       │   │       ├── decimal-various-scale-precision/
│   │       │   │       │   ├── .part-00000-bb4b3e59-ddb9-4d26-beaf-de9554e14517-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-bb4b3e59-ddb9-4d26-beaf-de9554e14517-c000.snappy.parquet
│   │       │   │       ├── delete-re-add-same-file-different-transactions/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       └── 00000000000000000003.json
│   │       │   │       ├── deltalog-commit-info/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── deltalog-getChanges/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       └── 00000000000000000002.json
│   │       │   │       ├── deltalog-invalid-protocol-version/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── deltalog-state-reconstruction-from-checkpoint-missing-metadata/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       ├── 00000000000000000003.json
│   │       │   │       │       ├── 00000000000000000004.json
│   │       │   │       │       ├── 00000000000000000005.json
│   │       │   │       │       ├── 00000000000000000006.json
│   │       │   │       │       ├── 00000000000000000007.json
│   │       │   │       │       ├── 00000000000000000008.json
│   │       │   │       │       ├── 00000000000000000009.json
│   │       │   │       │       ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000010.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── deltalog-state-reconstruction-from-checkpoint-missing-protocol/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       ├── 00000000000000000003.json
│   │       │   │       │       ├── 00000000000000000004.json
│   │       │   │       │       ├── 00000000000000000005.json
│   │       │   │       │       ├── 00000000000000000006.json
│   │       │   │       │       ├── 00000000000000000007.json
│   │       │   │       │       ├── 00000000000000000008.json
│   │       │   │       │       ├── 00000000000000000009.json
│   │       │   │       │       ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000010.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── deltalog-state-reconstruction-without-metadata/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── deltalog-state-reconstruction-without-protocol/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── dv-partitioned-with-checkpoint/
│   │       │   │       │   ├── .deletion_vector_0229ec3d-5100-44e1-8e53-702d448da8da.bin.crc
│   │       │   │       │   ├── .deletion_vector_0237686e-c424-4e4c-8337-e8bd1b02ea48.bin.crc
│   │       │   │       │   ├── .deletion_vector_179561f5-946c-40d8-b088-0d890e8c854c.bin.crc
│   │       │   │       │   ├── .deletion_vector_2fc6c93f-f217-47db-8582-b9732a18de04.bin.crc
│   │       │   │       │   ├── .deletion_vector_3cf682dd-5194-4fe8-98ed-d860be48ef78.bin.crc
│   │       │   │       │   ├── .deletion_vector_57eabe30-1981-4c70-85b0-343c24650691.bin.crc
│   │       │   │       │   ├── .deletion_vector_6f6c4302-fd0b-49e9-8877-cf9056f4b3cb.bin.crc
│   │       │   │       │   ├── .deletion_vector_9ab6d39e-2b86-4282-919f-c0813c228da9.bin.crc
│   │       │   │       │   ├── .deletion_vector_aa46415b-60bb-4096-a0c7-de47449cb72e.bin.crc
│   │       │   │       │   ├── .deletion_vector_acb1fa71-86e9-445d-833c-5cda9a64f221.bin.crc
│   │       │   │       │   ├── .deletion_vector_be3f06b1-59b3-4537-b5de-554c3bb2fad9.bin.crc
│   │       │   │       │   ├── .deletion_vector_cc54e26b-ec32-4705-ab80-eccffa88e1e6.bin.crc
│   │       │   │       │   ├── .deletion_vector_db0b9397-6055-4aa6-a8f8-de723719d996.bin.crc
│   │       │   │       │   ├── .deletion_vector_f34fad76-197a-4fd7-9382-f7773fc8eff9.bin.crc
│   │       │   │       │   ├── .deletion_vector_f37f3d8e-af4f-40c0-a5b4-5b3c02c1bdd8.bin.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── .00000000000000000004.json.crc
│   │       │   │       │   │   ├── .00000000000000000005.json.crc
│   │       │   │       │   │   ├── .00000000000000000006.json.crc
│   │       │   │       │   │   ├── .00000000000000000007.json.crc
│   │       │   │       │   │   ├── .00000000000000000008.json.crc
│   │       │   │       │   │   ├── .00000000000000000009.json.crc
│   │       │   │       │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000010.json.crc
│   │       │   │       │   │   ├── .00000000000000000011.json.crc
│   │       │   │       │   │   ├── .00000000000000000012.json.crc
│   │       │   │       │   │   ├── .00000000000000000013.json.crc
│   │       │   │       │   │   ├── .00000000000000000014.json.crc
│   │       │   │       │   │   ├── .00000000000000000015.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   ├── 00000000000000000012.json
│   │       │   │       │   │   ├── 00000000000000000013.json
│   │       │   │       │   │   ├── 00000000000000000014.json
│   │       │   │       │   │   ├── 00000000000000000015.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part=0/
│   │       │   │       │   │   ├── .part-00000-8387c699-30b1-4734-a791-9278d560ec19.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-24cdbe06-d3dc-449f-bd38-575228ca42a7.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-8387c699-30b1-4734-a791-9278d560ec19.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-24cdbe06-d3dc-449f-bd38-575228ca42a7.c000.snappy.parquet
│   │       │   │       │   ├── part=1/
│   │       │   │       │   │   ├── .part-00000-a1586fa1-50e8-4f06-858a-b43b2e83010b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-d7e5d32a-55fa-410a-afee-adcdf46bc859.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-a1586fa1-50e8-4f06-858a-b43b2e83010b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-d7e5d32a-55fa-410a-afee-adcdf46bc859.c000.snappy.parquet
│   │       │   │       │   ├── part=2/
│   │       │   │       │   │   ├── .part-00000-ad58cb56-93db-4374-91ba-e65e7fa68e76.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-ab1247be-1f77-41e6-a392-50a99b2db864.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-ad58cb56-93db-4374-91ba-e65e7fa68e76.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-ab1247be-1f77-41e6-a392-50a99b2db864.c000.snappy.parquet
│   │       │   │       │   ├── part=3/
│   │       │   │       │   │   ├── .part-00000-319bea86-657f-4431-9b26-949dba99cf2c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-afeef1dd-2517-49b9-873e-e9e6e8a74b19.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-319bea86-657f-4431-9b26-949dba99cf2c.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-afeef1dd-2517-49b9-873e-e9e6e8a74b19.c000.snappy.parquet
│   │       │   │       │   ├── part=4/
│   │       │   │       │   │   ├── .part-00000-69ec928d-3737-4eb3-a3d8-9555a6b55ff5.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e63d3db6-9e97-4472-aacc-6af9fa44e73d.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-69ec928d-3737-4eb3-a3d8-9555a6b55ff5.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e63d3db6-9e97-4472-aacc-6af9fa44e73d.c000.snappy.parquet
│   │       │   │       │   ├── part=5/
│   │       │   │       │   │   ├── .part-00000-5c963f16-d5b8-4f8b-8d8a-0e3403228be2.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-f344b457-fbd0-4bc4-9502-2c07025e5bb1.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-5c963f16-d5b8-4f8b-8d8a-0e3403228be2.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-f344b457-fbd0-4bc4-9502-2c07025e5bb1.c000.snappy.parquet
│   │       │   │       │   ├── part=6/
│   │       │   │       │   │   ├── .part-00000-be524334-115d-4d01-8614-e1bc8c630926.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-6fc16401-ac51-4b89-bf08-bb86cecb5cc2.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-be524334-115d-4d01-8614-e1bc8c630926.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-6fc16401-ac51-4b89-bf08-bb86cecb5cc2.c000.snappy.parquet
│   │       │   │       │   ├── part=7/
│   │       │   │       │   │   ├── .part-00000-33cc19fc-3607-4ea7-ab6d-af4e3ebf62c4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-986abb06-e672-4134-83d4-261752b236b8.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-33cc19fc-3607-4ea7-ab6d-af4e3ebf62c4.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-986abb06-e672-4134-83d4-261752b236b8.c000.snappy.parquet
│   │       │   │       │   ├── part=8/
│   │       │   │       │   │   ├── .part-00000-02c66988-3465-4483-9f85-7155e6aee1f4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-7c58de64-d72f-4373-8d86-dfdc00fb264e.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-02c66988-3465-4483-9f85-7155e6aee1f4.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-7c58de64-d72f-4373-8d86-dfdc00fb264e.c000.snappy.parquet
│   │       │   │       │   └── part=9/
│   │       │   │       │       ├── .part-00000-e4012c8c-cc60-44c0-babb-8c5d264a3a31.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-c0430af8-a8e0-4b23-8776-b2fc549b3e4e.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-e4012c8c-cc60-44c0-babb-8c5d264a3a31.c000.snappy.parquet
│   │       │   │       │       └── part-00001-c0430af8-a8e0-4b23-8776-b2fc549b3e4e.c000.snappy.parquet
│   │       │   │       ├── dv-with-columnmapping/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   ├── 00000000000000000012.json
│   │       │   │       │   │   ├── 00000000000000000013.json
│   │       │   │       │   │   ├── 00000000000000000014.json
│   │       │   │       │   │   ├── 00000000000000000015.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=0/
│   │       │   │       │   │   ├── part-00000-d1888b8a-150e-4fe3-a397-1514739499b4.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-0e48fbde-daec-44ff-b579-d5c49b6c827f.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=1/
│   │       │   │       │   │   ├── part-00000-19513938-badc-4bd4-9513-3d043d1491dc.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-fb5e7c74-75ab-4bee-8234-400040ae127a.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=2/
│   │       │   │       │   │   ├── part-00000-3f054c46-7f8f-45f3-a541-25525787b631.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-4825f848-06bb-4b91-94e8-deb40f05feca.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=3/
│   │       │   │       │   │   ├── part-00000-1a0ac64e-0ce2-493e-b1b0-6cf15c1988f5.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-d1fc7b93-6ec3-4c75-8363-ffd8f1f43420.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=4/
│   │       │   │       │   │   ├── part-00000-dbfb557b-b778-454e-bef4-bab9481bcea7.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-ee7c50c6-4119-41ff-9c0a-285f844e7c31.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=5/
│   │       │   │       │   │   ├── part-00000-6d057276-2da0-45c3-86eb-aed7fd3429b8.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-ee535eb0-972e-470f-b705-61884acbbe39.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=6/
│   │       │   │       │   │   ├── part-00000-c0ca807e-59eb-4c84-a67d-c65a2e03c3c5.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-8c38a718-ea0d-4ac1-9515-3a6ec23cc86b.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=7/
│   │       │   │       │   │   ├── part-00000-12e816f9-daa3-4197-98f2-217a983bdafd.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e2c8fd65-f478-4738-89f2-b4f63bdc166f.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=8/
│   │       │   │       │   │   ├── part-00000-ee6122b8-1474-4764-8bdf-8f8b95c734af.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-0878dadb-c875-4347-92a3-8739c303d7bd.c000.snappy.parquet
│   │       │   │       │   └── col-60c949ca-b8bc-4330-b931-b73fb4c60037=9/
│   │       │   │       │       ├── part-00000-f2e5dc2f-b7c6-4772-85d7-23b273a9e54d.c000.snappy.parquet
│   │       │   │       │       └── part-00001-8bbcb266-0863-4b31-adc0-e1c4d1194cec.c000.snappy.parquet
│   │       │   │       ├── hive/
│   │       │   │       │   ├── deltatbl-column-names-case-insensitive/
│   │       │   │       │   │   ├── BarFoo=foo0/
│   │       │   │       │   │   │   ├── .part-00000-36c1f69c-21dc-4374-a89e-1c4468eff784.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-27f5c1f6-2393-4021-9a0f-44d143761f88.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-36c1f69c-21dc-4374-a89e-1c4468eff784.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-27f5c1f6-2393-4021-9a0f-44d143761f88.c000.snappy.parquet
│   │       │   │       │   │   ├── BarFoo=foo1/
│   │       │   │       │   │   │   ├── .part-00000-5c80a439-70eb-435a-92eb-04549d3f220e.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-b6134dd2-aa40-4868-a708-bec69fc562a2.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-5c80a439-70eb-435a-92eb-04549d3f220e.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-b6134dd2-aa40-4868-a708-bec69fc562a2.c000.snappy.parquet
│   │       │   │       │   │   └── _delta_log/
│   │       │   │       │   │       └── 00000000000000000000.json
│   │       │   │       │   ├── deltatbl-deleted-path/
│   │       │   │       │   │   ├── .part-00000-377b2930-7ed7-41e6-bab2-d565a7ca5bfb-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-6537e97d-662a-430d-9ad9-f6d087ae7cb8-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-377b2930-7ed7-41e6-bab2-d565a7ca5bfb-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-6537e97d-662a-430d-9ad9-f6d087ae7cb8-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-incorrect-format-config/
│   │       │   │       │   │   ├── .part-00000-7b3124df-d8a4-4a4a-9d99-e98cfde281cf-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e8582398-602e-4697-a508-fc046c1c57cf-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-7b3124df-d8a4-4a4a-9d99-e98cfde281cf-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e8582398-602e-4697-a508-fc046c1c57cf-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-map-types-correctly/
│   │       │   │       │   │   ├── .part-00000-c9259a22-ce39-45df-8d76-768bd813c3ff-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   └── part-00000-c9259a22-ce39-45df-8d76-768bd813c3ff-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-non-partitioned/
│   │       │   │       │   │   ├── .part-00000-e24c5388-1621-46bd-94eb-fea5209018d0-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-f2126b8d-1594-451b-9c89-c4c2481bfd93-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-e24c5388-1621-46bd-94eb-fea5209018d0-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-f2126b8d-1594-451b-9c89-c4c2481bfd93-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-not-allow-write/
│   │       │   │       │   │   ├── .part-00000-fab61bc4-5175-46ea-ac35-249c0f5750ff-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-6eb569ba-9300-49e7-9b5a-d064e8c5be2d-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-fab61bc4-5175-46ea-ac35-249c0f5750ff-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-6eb569ba-9300-49e7-9b5a-d064e8c5be2d-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-partition-prune/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── date=20180512/
│   │       │   │       │   │   │   └── city=sh/
│   │       │   │       │   │   │       ├── .part-00001-c87aeb63-6d9c-4511-b8b3-71d02178554f.c000.snappy.parquet.crc
│   │       │   │       │   │   │       └── part-00001-c87aeb63-6d9c-4511-b8b3-71d02178554f.c000.snappy.parquet
│   │       │   │       │   │   ├── date=20180520/
│   │       │   │       │   │   │   ├── city=bj/
│   │       │   │       │   │   │   │   ├── .part-00001-4c732f0f-a473-400a-8ba3-1499f599b8f1.c000.snappy.parquet.crc
│   │       │   │       │   │   │   │   └── part-00001-4c732f0f-a473-400a-8ba3-1499f599b8f1.c000.snappy.parquet
│   │       │   │       │   │   │   └── city=hz/
│   │       │   │       │   │   │       ├── .part-00000-de1d5bcd-ad7e-4b88-ba9b-31fb8aeb8093.c000.snappy.parquet.crc
│   │       │   │       │   │   │       └── part-00000-de1d5bcd-ad7e-4b88-ba9b-31fb8aeb8093.c000.snappy.parquet
│   │       │   │       │   │   ├── date=20180718/
│   │       │   │       │   │   │   └── city=hz/
│   │       │   │       │   │   │       ├── .part-00000-f888e95b-c831-43fe-bba8-3dbf43b4eb86.c000.snappy.parquet.crc
│   │       │   │       │   │   │       └── part-00000-f888e95b-c831-43fe-bba8-3dbf43b4eb86.c000.snappy.parquet
│   │       │   │       │   │   └── date=20181212/
│   │       │   │       │   │       └── city=sz/
│   │       │   │       │   │           ├── .part-00001-529ff89b-55c6-4405-a6cc-04759d5f692b.c000.snappy.parquet.crc
│   │       │   │       │   │           └── part-00001-529ff89b-55c6-4405-a6cc-04759d5f692b.c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-partitioned/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── c2=foo0/
│   │       │   │       │   │   │   ├── .part-00000-2bcc9ff6-0551-4401-bd22-d361a60627e3.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-ca647ee7-f1ad-4d70-bf02-5d1872324d6f.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-2bcc9ff6-0551-4401-bd22-d361a60627e3.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-ca647ee7-f1ad-4d70-bf02-5d1872324d6f.c000.snappy.parquet
│   │       │   │       │   │   └── c2=foo1/
│   │       │   │       │   │       ├── .part-00000-786c7455-9587-454f-9a4c-de0b22b62bbd.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── .part-00001-1c702e73-89b5-465a-9c6a-25f7559cd150.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── part-00000-786c7455-9587-454f-9a4c-de0b22b62bbd.c000.snappy.parquet
│   │       │   │       │   │       └── part-00001-1c702e73-89b5-465a-9c6a-25f7559cd150.c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-schema-match/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── b=foo0/
│   │       │   │       │   │   │   ├── .part-00000-531fe778-e359-44c9-8c35-7ed2416c5ff5.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-923b258c-b34c-4cb9-8da9-622005e49f2c.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-531fe778-e359-44c9-8c35-7ed2416c5ff5.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-923b258c-b34c-4cb9-8da9-622005e49f2c.c000.snappy.parquet
│   │       │   │       │   │   └── b=foo1/
│   │       │   │       │   │       ├── .part-00000-7dad1d59-f42c-46c1-992e-35c2fb4d9c09.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── .part-00001-e44bca08-b26b-4f4d-8a22-5bb45a598dcf.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── part-00000-7dad1d59-f42c-46c1-992e-35c2fb4d9c09.c000.snappy.parquet
│   │       │   │       │   │       └── part-00001-e44bca08-b26b-4f4d-8a22-5bb45a598dcf.c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-special-chars-in-partition-column/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── c2=+ %3D%250/
│   │       │   │       │   │   │   ├── .part-00000-88ad45a3-9b80-4e66-b474-1748ba085060.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-aff2b410-c566-4e51-a968-acfa96d6f1e9.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-88ad45a3-9b80-4e66-b474-1748ba085060.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-aff2b410-c566-4e51-a968-acfa96d6f1e9.c000.snappy.parquet
│   │       │   │       │   │   └── c2=+ %3D%251/
│   │       │   │       │   │       ├── .part-00000-180d1a36-4ba9-4321-8145-1e0d73406b02.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── .part-00001-3379bbbf-1ab8-4781-8b7e-29038d983f83.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── part-00000-180d1a36-4ba9-4321-8145-1e0d73406b02.c000.snappy.parquet
│   │       │   │       │   │       └── part-00001-3379bbbf-1ab8-4781-8b7e-29038d983f83.c000.snappy.parquet
│   │       │   │       │   └── deltatbl-touch-files-needed-for-partitioned/
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── c2=foo0/
│   │       │   │       │       │   ├── .part-00000-f1acd078-4e44-4d47-91b2-6568396e2ec3.c000.snappy.parquet.crc
│   │       │   │       │       │   ├── .part-00001-e7f40ed6-fefa-41f5-b8a6-c6e9b78a1448.c000.snappy.parquet.crc
│   │       │   │       │       │   ├── part-00000-f1acd078-4e44-4d47-91b2-6568396e2ec3.c000.snappy.parquet
│   │       │   │       │       │   └── part-00001-e7f40ed6-fefa-41f5-b8a6-c6e9b78a1448.c000.snappy.parquet
│   │       │   │       │       └── c2=foo1/
│   │       │   │       │           ├── .part-00000-1bb7c99b-be0e-4c49-ae73-9baf5a8a08d0.c000.snappy.parquet.crc
│   │       │   │       │           ├── .part-00001-c357f264-a317-4e93-a530-a8b1360ca9f6.c000.snappy.parquet.crc
│   │       │   │       │           ├── part-00000-1bb7c99b-be0e-4c49-ae73-9baf5a8a08d0.c000.snappy.parquet
│   │       │   │       │           └── part-00001-c357f264-a317-4e93-a530-a8b1360ca9f6.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-INT96/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-75ac07ae-d2e8-4030-be59-c490d47c4496.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-75ac07ae-d2e8-4030-be59-c490d47c4496.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-bd889aef-417c-4493-b5f7-a9884ba4b247.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-bd889aef-417c-4493-b5f7-a9884ba4b247.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-57e97070-8fc8-485a-95c6-af55daf5e09b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-bd0c6fb8-aafd-48dc-9bba-331c1c6f137b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-57e97070-8fc8-485a-95c6-af55daf5e09b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-bd0c6fb8-aafd-48dc-9bba-331c1c6f137b.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-7cb5f53e-936c-4d24-bca1-9fa0fc7a66e4.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-7cb5f53e-936c-4d24-bca1-9fa0fc7a66e4.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-PST/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-48d8c27a-3661-4e1e-95cb-02ef244c1cf4.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-48d8c27a-3661-4e1e-95cb-02ef244c1cf4.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-a8be3fd2-1fd5-4dd7-84d2-6899a62d99e8.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-a8be3fd2-1fd5-4dd7-84d2-6899a62d99e8.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-321ea6ca-841e-4654-9844-2d4041b6d0d6.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-b223f8fd-9d33-465b-b139-36c41abb10e8.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-321ea6ca-841e-4654-9844-2d4041b6d0d6.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-b223f8fd-9d33-465b-b139-36c41abb10e8.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-18484b3d-01e6-48bc-9e8b-2a75d36d9f7a.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-18484b3d-01e6-48bc-9e8b-2a75d36d9f7a.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-TIMESTAMP_MICROS/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-2b5694f1-b839-4037-b264-353b31af6e7b.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-2b5694f1-b839-4037-b264-353b31af6e7b.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-3cac2575-d0b4-4647-a7a3-b4a9d910cb32.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-3cac2575-d0b4-4647-a7a3-b4a9d910cb32.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-038fb25c-ca6b-43b6-b0dc-d987f38d0ab9.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-226faf2a-427a-40ee-bfb5-5d53c8642c8a.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-038fb25c-ca6b-43b6-b0dc-d987f38d0ab9.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-226faf2a-427a-40ee-bfb5-5d53c8642c8a.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-107828e6-a4b9-42b1-9f1f-244c0efc1b08.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-107828e6-a4b9-42b1-9f1f-244c0efc1b08.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-TIMESTAMP_MILLIS/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-4c527a95-ca90-4aeb-a61c-8d89b6330772.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-4c527a95-ca90-4aeb-a61c-8d89b6330772.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-4b5188f5-4784-47ce-b4ad-1d3eae80710e.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-4b5188f5-4784-47ce-b4ad-1d3eae80710e.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-086f164a-4d32-4631-b9f9-8aeab485f19c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-94d3f0af-754c-4cde-bc6e-08338a03a32e.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-086f164a-4d32-4631-b9f9-8aeab485f19c.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-94d3f0af-754c-4cde-bc6e-08338a03a32e.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-f81daebf-3993-4686-bf72-470e1fe078d9.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-f81daebf-3993-4686-bf72-470e1fe078d9.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-partition-col-ISO8601/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.crc.crc
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── ts=2024-01-01 10%3A00%3A00/
│   │       │   │       │   │   ├── .part-00000-9630b3f5-7ab4-4688-9822-3ef93a9d0559.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-9630b3f5-7ab4-4688-9822-3ef93a9d0559.c000.snappy.parquet
│   │       │   │       │   └── ts=2024-01-02 12%3A30%3A00/
│   │       │   │       │       ├── .part-00000-17b5fc05-b487-4b8b-82ff-9ef4352767a5.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00000-17b5fc05-b487-4b8b-82ff-9ef4352767a5.c000.snappy.parquet
│   │       │   │       ├── log-replay-dv-key-cases/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── 00000000000000000003.json
│   │       │   │       │   └── part-00000-90177277-75c2-48db-92a2-20dcba39fd06-c000.snappy.parquet
│   │       │   │       ├── log-replay-latest-metadata-protocol/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-66f9221e-0720-45f9-910a-0e81885c93e7-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-fc7f7936-944d-472b-9e1e-2cb7464e668a-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9624cca6-2238-4f36-a6c1-707b86b81b81-c000.snappy.parquet
│   │       │   │       │   └── part-00001-a54b97f9-bd3c-4724-917b-2730fd9b6c3a-c000.snappy.parquet
│   │       │   │       ├── log-replay-special-characters/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── log-replay-special-characters-a/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── log-replay-special-characters-b/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── log-store-listFrom/
│   │       │   │       │   ├── 1
│   │       │   │       │   ├── 2
│   │       │   │       │   └── 3
│   │       │   │       ├── log-store-read/
│   │       │   │       │   ├── 0
│   │       │   │       │   └── 1
│   │       │   │       ├── multi-part-checkpoint/
│   │       │   │       │   ├── .part-00000-7f49f4e3-2c9c-4ea7-b6c3-42c9a6fc6070-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-e3cd9d97-2f4e-40c4-825f-8ecf456540b0-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-a5222079-1b7e-4bab-a747-ccc4f88b9915-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00002-3a12664c-2859-4236-b718-6c9e03f6496f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00003-1bb5a769-f4c6-4672-a94a-68ed6788ca78-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00004-b7080e6d-bc43-43da-becf-7c9bedffee68-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00005-a0ce8d21-d9b6-44b9-803b-a4085a4b43cd-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00006-9093b02c-22e2-4505-bb37-104a4825137f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00007-8cea4b0f-450b-444f-936d-e2695b1adca6-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00008-470c16a2-bd1d-45e5-9cfc-5741ba5b57e1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.checkpoint.0000000001.0000000002.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000001.checkpoint.0000000002.0000000002.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.checkpoint.0000000001.0000000002.parquet
│   │       │   │       │   │   ├── 00000000000000000001.checkpoint.0000000002.0000000002.parquet
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-7f49f4e3-2c9c-4ea7-b6c3-42c9a6fc6070-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-e3cd9d97-2f4e-40c4-825f-8ecf456540b0-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-a5222079-1b7e-4bab-a747-ccc4f88b9915-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-3a12664c-2859-4236-b718-6c9e03f6496f-c000.snappy.parquet
│   │       │   │       │   ├── part-00003-1bb5a769-f4c6-4672-a94a-68ed6788ca78-c000.snappy.parquet
│   │       │   │       │   ├── part-00004-b7080e6d-bc43-43da-becf-7c9bedffee68-c000.snappy.parquet
│   │       │   │       │   ├── part-00005-a0ce8d21-d9b6-44b9-803b-a4085a4b43cd-c000.snappy.parquet
│   │       │   │       │   ├── part-00006-9093b02c-22e2-4505-bb37-104a4825137f-c000.snappy.parquet
│   │       │   │       │   ├── part-00007-8cea4b0f-450b-444f-936d-e2695b1adca6-c000.snappy.parquet
│   │       │   │       │   └── part-00008-470c16a2-bd1d-45e5-9cfc-5741ba5b57e1-c000.snappy.parquet
│   │       │   │       ├── no-delta-log-folder/
│   │       │   │       │   ├── part-00000-d064d3e2-ed60-4836-a9dc-e09964b59c22-c000.snappy.parquet
│   │       │   │       │   └── part-00001-d064d3e2-ed60-4836-a9dc-e09964b59c22-c000.snappy.parquet
│   │       │   │       ├── only-checkpoint-files/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-04e29928-9102-44df-8974-365c864ebd9e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b4e80ee6-4cbd-4cc6-b565-d2c625d0731a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-dfc22a82-c022-4a82-86e5-1893449a9ac9-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-43c03a40-f6fe-4cc7-80d5-b1273adab930-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b50e4584-a496-4a37-a227-f7b3e9705aee-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-896896b5-bff2-4d67-a74a-46dbb9730710-c000.snappy.parquet
│   │       │   │       │   ├── part-00003-885e84c4-be75-485c-8459-257a0a552a2d-c000.snappy.parquet
│   │       │   │       │   ├── part-00004-dcf3f384-2139-4406-af81-89aff10b612d-c000.snappy.parquet
│   │       │   │       │   ├── part-00005-e3a5e9cc-e036-41cb-952d-fd3e374af794-c000.snappy.parquet
│   │       │   │       │   ├── part-00006-c048e558-898c-43b3-b144-47efbbab72d1-c000.snappy.parquet
│   │       │   │       │   ├── part-00007-50c77d47-31b2-4e0a-a43d-2f6be5ff15ee-c000.snappy.parquet
│   │       │   │       │   ├── part-00008-9fcc1da0-688a-4be6-a296-21da16557267-c000.snappy.parquet
│   │       │   │       │   └── part-00009-ac03e5b4-bd86-48e0-a9a0-094180656170-c000.snappy.parquet
│   │       │   │       ├── parquet-all-types/
│   │       │   │       │   ├── .part-00000-bf6680d4-5e83-4fce-8ebb-d2b60d7e69c9-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-bf6680d4-5e83-4fce-8ebb-d2b60d7e69c9-c000.snappy.parquet
│   │       │   │       ├── parquet-all-types-legacy-format/
│   │       │   │       │   ├── .part-00000-5afb67f1-094a-4a15-922e-c1eb96683964-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-5afb67f1-094a-4a15-922e-c1eb96683964-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-dictionaries/
│   │       │   │       │   ├── .part-00000-60b8c840-c0d4-428e-9005-89f02233be85-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-60b8c840-c0d4-428e-9005-89f02233be85-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-dictionaries-v1/
│   │       │   │       │   ├── .part-00000-92f97f0b-304f-4587-9d25-088cb386fa64-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-92f97f0b-304f-4587-9d25-088cb386fa64-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-dictionaries-v2/
│   │       │   │       │   ├── .part-00000-2509b8ef-98ac-42da-98ee-9d2c58ac6031-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-2509b8ef-98ac-42da-98ee-9d2c58ac6031-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-type/
│   │       │   │       │   ├── .part-00000-8c8ffc0f-9259-478b-9b1b-ea6d37ce5889-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-8c8ffc0f-9259-478b-9b1b-ea6d37ce5889-c000.snappy.parquet
│   │       │   │       ├── snapshot-data0/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   └── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       ├── snapshot-data1/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   └── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       ├── snapshot-data2/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-data2-deleted/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   └── 00000000000000000004.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-data3/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── 00000000000000000003.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-repartitioned/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   └── 00000000000000000005.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-vacuumed/
│   │       │   │       │   ├── .part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   └── 00000000000000000005.json
│   │       │   │       │   ├── part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet
│   │       │   │       ├── spark-variant-checkpoint/
│   │       │   │       │   ├── .part-00000-16c852df-ba66-4080-be25-530a05922422-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1e14ba22-3114-46d1-96fb-48b4912507ce-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-9a9c570c-ee32-4322-ad2f-8c837a77d398-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-664313d3-14b4-4dbf-8110-77001b877182-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.checkpoint.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── info.txt
│   │       │   │       │   ├── part-00000-16c852df-ba66-4080-be25-530a05922422-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-1e14ba22-3114-46d1-96fb-48b4912507ce-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-9a9c570c-ee32-4322-ad2f-8c837a77d398-c000.snappy.parquet
│   │       │   │       │   └── part-00001-664313d3-14b4-4dbf-8110-77001b877182-c000.snappy.parquet
│   │       │   │       ├── table-with-columnmapping-mode-id/
│   │       │   │       │   ├── .part-00000-37fc7686-b5a9-432d-8cdc-8caa8cf999e5-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0321adc4-f601-4c9d-bb7c-a0ddf759c7b2-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-37fc7686-b5a9-432d-8cdc-8caa8cf999e5-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0321adc4-f601-4c9d-bb7c-a0ddf759c7b2-c000.snappy.parquet
│   │       │   │       ├── table-with-columnmapping-mode-name/
│   │       │   │       │   ├── .part-00000-2887cf52-61be-4009-afba-00b218602665-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b664b3db-62d8-4e02-9dc5-26dbce3abfc1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-2887cf52-61be-4009-afba-00b218602665-c000.snappy.parquet
│   │       │   │       │   └── part-00001-b664b3db-62d8-4e02-9dc5-26dbce3abfc1-c000.snappy.parquet
│   │       │   │       ├── table-with-icebegCompatV2Enabled/
│   │       │   │       │   ├── .part-00000-cbb3f19e-57e0-4922-a6c3-f211a65d918f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-5bf41539-fbc6-4b96-9f42-946d36a7f4c9-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-cbb3f19e-57e0-4922-a6c3-f211a65d918f-c000.snappy.parquet
│   │       │   │       │   └── part-00001-5bf41539-fbc6-4b96-9f42-946d36a7f4c9-c000.snappy.parquet
│   │       │   │       ├── time-travel-partition-changes-a/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part5=0/
│   │       │   │       │   │   ├── .part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet
│   │       │   │       │   ├── part5=1/
│   │       │   │       │   │   ├── .part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet
│   │       │   │       │   ├── part5=2/
│   │       │   │       │   │   ├── .part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet
│   │       │   │       │   ├── part5=3/
│   │       │   │       │   │   ├── .part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet
│   │       │   │       │   └── part5=4/
│   │       │   │       │       ├── .part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet
│   │       │   │       │       └── part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet
│   │       │   │       ├── time-travel-partition-changes-b/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part2=0/
│   │       │   │       │   │   ├── .part-00000-7bce012e-f358-4a97-91da-55c4d3266fbe.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-2a830e69-78f3-4d09-9b2c-3bfd9debc2f0.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-7bce012e-f358-4a97-91da-55c4d3266fbe.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-2a830e69-78f3-4d09-9b2c-3bfd9debc2f0.c000.snappy.parquet
│   │       │   │       │   ├── part2=1/
│   │       │   │       │   │   ├── .part-00000-82368d1d-588b-487a-be01-16dc85260296.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-0a72544a-fb83-4eaa-8d62-9e6ab59afa8b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-82368d1d-588b-487a-be01-16dc85260296.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-0a72544a-fb83-4eaa-8d62-9e6ab59afa8b.c000.snappy.parquet
│   │       │   │       │   ├── part5=0/
│   │       │   │       │   │   ├── .part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet
│   │       │   │       │   ├── part5=1/
│   │       │   │       │   │   ├── .part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet
│   │       │   │       │   ├── part5=2/
│   │       │   │       │   │   ├── .part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet
│   │       │   │       │   ├── part5=3/
│   │       │   │       │   │   ├── .part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet
│   │       │   │       │   └── part5=4/
│   │       │   │       │       ├── .part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet
│   │       │   │       │       └── part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet
│   │       │   │       ├── time-travel-schema-changes-a/
│   │       │   │       │   ├── .part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet
│   │       │   │       │   └── part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet
│   │       │   │       ├── time-travel-schema-changes-b/
│   │       │   │       │   ├── .part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-a830a49c-6cc8-4caf-80a5-7ff8a959bd53-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-5fdfd303-d5e8-4e77-9b5d-4e831fa723e1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-a830a49c-6cc8-4caf-80a5-7ff8a959bd53-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet
│   │       │   │       │   └── part-00001-5fdfd303-d5e8-4e77-9b5d-4e831fa723e1-c000.snappy.parquet
│   │       │   │       ├── time-travel-start/
│   │       │   │       │   ├── .part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet
│   │       │   │       ├── time-travel-start-start20/
│   │       │   │       │   ├── .part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet
│   │       │   │       ├── time-travel-start-start20-start40/
│   │       │   │       │   ├── .part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-aef3cbc1-92ef-43b1-8258-284d13163fbb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2b364e64-4212-4a35-a95f-ab64504f7c5c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-aef3cbc1-92ef-43b1-8258-284d13163fbb-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-2b364e64-4212-4a35-a95f-ab64504f7c5c-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet
│   │       │   │       ├── type-widening/
│   │       │   │       │   ├── .part-00000-1045efe0-45bb-4b99-9f83-5ffa04a63ab2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cd317895-4ae0-4292-b918-62d4ca832bd7-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-1045efe0-45bb-4b99-9f83-5ffa04a63ab2-c000.snappy.parquet
│   │       │   │       │   └── part-00000-cd317895-4ae0-4292-b918-62d4ca832bd7-c000.snappy.parquet
│   │       │   │       ├── type-widening-nested/
│   │       │   │       │   ├── .part-00000-138244f1-b939-40db-a4bd-d57cf3d214d2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1f777f86-350c-4181-b7ef-73df70847eac-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-138244f1-b939-40db-a4bd-d57cf3d214d2-c000.snappy.parquet
│   │       │   │       │   └── part-00000-1f777f86-350c-4181-b7ef-73df70847eac-c000.snappy.parquet
│   │       │   │       ├── update-deleted-directory/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── .00000000000000000000.checkpoint.parquet.crc
│   │       │   │       │       ├── 00000000000000000000.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── v2-checkpoint-json/
│   │       │   │       │   ├── .part-00000-240b5dd6-323b-4f74-b6bc-ab9fdcacc630-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-534ea355-2edd-4046-8d49-d932469170c7-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00002-4438bc9d-9c60-4dd2-9343-574743ea4ca8-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00003-ae431d66-23d5-4dc7-b961-136ce33e63da-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.checkpoint.6374b053-df23-479b-b2cf-c9c550132b49.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.6374b053-df23-479b-b2cf-c9c550132b49.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── _last_checkpoint
│   │       │   │       │   │   └── _sidecars/
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000001.0000000002.bd1885fd-6ec0-4370-b0f5-43b5162fd4de.parquet.crc
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000002.0000000002.0a8d73ee-aa83-49d0-9583-c99db75b89b2.parquet.crc
│   │       │   │       │   │       ├── 00000000000000000002.checkpoint.0000000001.0000000002.bd1885fd-6ec0-4370-b0f5-43b5162fd4de.parquet
│   │       │   │       │   │       └── 00000000000000000002.checkpoint.0000000002.0000000002.0a8d73ee-aa83-49d0-9583-c99db75b89b2.parquet
│   │       │   │       │   ├── part-00000-240b5dd6-323b-4f74-b6bc-ab9fdcacc630-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-534ea355-2edd-4046-8d49-d932469170c7-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-4438bc9d-9c60-4dd2-9343-574743ea4ca8-c000.snappy.parquet
│   │       │   │       │   └── part-00003-ae431d66-23d5-4dc7-b961-136ce33e63da-c000.snappy.parquet
│   │       │   │       ├── v2-checkpoint-parquet/
│   │       │   │       │   ├── .part-00000-485b0fff-1c7b-4f14-92e9-a72300fcdf88-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-f7a80035-0622-431e-832e-a756c65cb2a5-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00002-5754df9c-5a25-43a6-947b-f27840fddb1a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00003-6ab7bbbb-e14d-4fa3-8767-06b509e0a666-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.checkpoint.e8fa2696-9728-4e9c-b285-634743fdd4fb.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.e8fa2696-9728-4e9c-b285-634743fdd4fb.parquet
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── _last_checkpoint
│   │       │   │       │   │   └── _sidecars/
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000001.0000000002.055454d8-329c-4e0e-864d-7f867075af33.parquet.crc
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000002.0000000002.33321cc1-9c55-4d1f-8511-fafe6d2e1133.parquet.crc
│   │       │   │       │   │       ├── 00000000000000000002.checkpoint.0000000001.0000000002.055454d8-329c-4e0e-864d-7f867075af33.parquet
│   │       │   │       │   │       └── 00000000000000000002.checkpoint.0000000002.0000000002.33321cc1-9c55-4d1f-8511-fafe6d2e1133.parquet
│   │       │   │       │   ├── part-00000-485b0fff-1c7b-4f14-92e9-a72300fcdf88-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-f7a80035-0622-431e-832e-a756c65cb2a5-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-5754df9c-5a25-43a6-947b-f27840fddb1a-c000.snappy.parquet
│   │       │   │       │   └── part-00003-6ab7bbbb-e14d-4fa3-8767-06b509e0a666-c000.snappy.parquet
│   │       │   │       └── versions-not-contiguous/
│   │       │   │           └── _delta_log/
│   │       │   │               ├── 00000000000000000000.json
│   │       │   │               └── 00000000000000000002.json
│   │       │   └── scala/
│   │       │       └── io/
│   │       │           └── delta/
│   │       │               └── golden/
│   │       │                   └── GoldenTableUtils.scala
│   │       └── test/
│   │           └── scala/
│   │               └── io/
│   │                   └── delta/
│   │                       └── golden/
│   │                           └── GoldenTables.scala
│   └── licenses/
│       ├── LICENSE-apache-spark.txt
│       └── LICENSE-parquet4s.txt
├── contribs/
│   └── src/
│       ├── main/
│       │   └── scala/
│       │       └── io/
│       │           └── delta/
│       │               └── storage/
│       │                   ├── IBMCOSLogStore.scala
│       │                   └── OracleCloudLogStore.scala
│       └── test/
│           └── scala/
│               └── io/
│                   └── delta/
│                       └── storage/
│                           ├── IBMCOSLogStoreSuite.scala
│                           └── OracleCloudLogStoreSuite.scala
├── dev/
│   ├── check-delta-connect-codegen-python.py
│   ├── checkstyle-suppressions.xml
│   ├── connectors-checkstyle.xml
│   ├── copyrightHeader
│   ├── delta-connect-gen-protos.sh
│   ├── kernel-checkstyle.xml
│   ├── lint-python
│   ├── pyproject.toml
│   ├── requirements.txt
│   ├── spark_structured_logging_style.py
│   └── tox.ini
├── docs/
│   ├── .gitignore
│   ├── .nvmrc
│   ├── .prettierignore
│   ├── .prettierrc.json
│   ├── README.md
│   ├── apis/
│   │   ├── api-docs.css
│   │   ├── api-docs.js
│   │   ├── api-javadocs.css
│   │   ├── api-javadocs.js
│   │   ├── generate_api_docs.py
│   │   └── python/
│   │       ├── Makefile
│   │       ├── conf.py
│   │       └── index.rst
│   ├── astro.config.mjs
│   ├── environment.yml
│   ├── eslint.config.mjs
│   ├── generate_docs.py
│   ├── package.json
│   ├── scripts/
│   │   ├── download-api-docs
│   │   └── upgrade-dependencies
│   ├── src/
│   │   ├── content/
│   │   │   └── docs/
│   │   │       ├── best-practices.mdx
│   │   │       ├── bigquery-integration.mdx
│   │   │       ├── concurrency-control.mdx
│   │   │       ├── delta-apidoc.mdx
│   │   │       ├── delta-athena-integration.mdx
│   │   │       ├── delta-batch.mdx
│   │   │       ├── delta-catalog-managed-tables.mdx
│   │   │       ├── delta-change-data-feed.mdx
│   │   │       ├── delta-clustering.mdx
│   │   │       ├── delta-column-mapping.mdx
│   │   │       ├── delta-constraints.mdx
│   │   │       ├── delta-default-columns.mdx
│   │   │       ├── delta-deletion-vectors.mdx
│   │   │       ├── delta-drop-feature.mdx
│   │   │       ├── delta-faq.mdx
│   │   │       ├── delta-kernel-java.mdx
│   │   │       ├── delta-kernel-rust.mdx
│   │   │       ├── delta-kernel.mdx
│   │   │       ├── delta-more-connectors.mdx
│   │   │       ├── delta-presto-integration.mdx
│   │   │       ├── delta-resources.mdx
│   │   │       ├── delta-row-tracking.mdx
│   │   │       ├── delta-sharing.mdx
│   │   │       ├── delta-spark-connect.mdx
│   │   │       ├── delta-standalone.mdx
│   │   │       ├── delta-starburst-integration.mdx
│   │   │       ├── delta-storage.mdx
│   │   │       ├── delta-streaming/
│   │   │       │   └── index.mdx
│   │   │       ├── delta-trino-integration.mdx
│   │   │       ├── delta-type-widening.mdx
│   │   │       ├── delta-uniform.mdx
│   │   │       ├── delta-update.mdx
│   │   │       ├── delta-utility/
│   │   │       │   └── index.mdx
│   │   │       ├── flink-integration.mdx
│   │   │       ├── hive-integration.mdx
│   │   │       ├── index.md
│   │   │       ├── integrations.mdx
│   │   │       ├── optimizations-oss/
│   │   │       │   └── index.mdx
│   │   │       ├── porting.mdx
│   │   │       ├── presto-integration.mdx
│   │   │       ├── quick-start.mdx
│   │   │       ├── redshift-spectrum-integration.mdx
│   │   │       ├── releases.mdx
│   │   │       ├── snowflake-integration.mdx
│   │   │       ├── table-properties.mdx
│   │   │       └── versioning.mdx
│   │   ├── content.config.ts
│   │   ├── env.d.ts
│   │   ├── pages/
│   │   │   └── robots.txt.ts
│   │   └── styles/
│   │       └── custom.css
│   └── tsconfig.json
├── examples/
│   ├── README.md
│   ├── python/
│   │   ├── change_data_feed.py
│   │   ├── delta_connect.py
│   │   ├── image_storage.py
│   │   ├── missing_delta_storage_jar.py
│   │   ├── quickstart.py
│   │   ├── quickstart_sql.py
│   │   ├── quickstart_sql_on_paths.py
│   │   ├── streaming.py
│   │   ├── table_exists.py
│   │   ├── using_with_pip.py
│   │   └── utilities.py
│   └── scala/
│       ├── .scalafmt.conf
│       ├── README.md
│       ├── build/
│       │   ├── sbt
│       │   ├── sbt-config/
│       │   │   └── repositories
│       │   └── sbt-launch-lib.bash
│       ├── build.sbt
│       ├── project/
│       │   └── build.properties
│       └── src/
│           └── main/
│               ├── resources/
│               │   └── log4j2.properties
│               └── scala/
│                   └── example/
│                       ├── ChangeDataFeed.scala
│                       ├── Clustering.scala
│                       ├── EvolutionWithMap.scala
│                       ├── IcebergCompatV2.scala
│                       ├── Quickstart.scala
│                       ├── QuickstartSQL.scala
│                       ├── QuickstartSQLOnPaths.scala
│                       ├── Streaming.scala
│                       ├── UniForm.scala
│                       ├── UnityCatalogQuickstart.scala
│                       ├── Utilities.scala
│                       └── Variant.scala
├── flink/
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   ├── .placeholder
│       │   │   └── io/
│       │   │       └── delta/
│       │   │           └── flink/
│       │   │               ├── Conf.java
│       │   │               ├── kernel/
│       │   │               │   ├── CheckpointActionRow.java
│       │   │               │   ├── CheckpointWriter.java
│       │   │               │   └── ColumnVectorUtils.java
│       │   │               └── table/
│       │   │                   ├── AbstractKernelTable.java
│       │   │                   ├── CredentialManager.java
│       │   │                   ├── DeltaCatalog.java
│       │   │                   ├── DeltaTable.java
│       │   │                   ├── ExceptionUtils.java
│       │   │                   ├── MetricListener.java
│       │   │                   ├── SnapshotCacheManager.java
│       │   │                   ├── TableConf.java
│       │   │                   ├── TableEventListener.java
│       │   │                   └── postcommit/
│       │   │                       ├── ChecksumListener.java
│       │   │                       └── MaintenanceListener.java
│       │   └── resources/
│       │       └── delta-flink.properties
│       └── test/
│           ├── java/
│           │   └── io/
│           │       └── delta/
│           │           └── flink/
│           │               ├── DummyHttp.java
│           │               ├── TestHelper.java
│           │               ├── kernel/
│           │               │   └── CheckpointWriterTest.java
│           │               └── table/
│           │                   ├── AbstractKernelTableTest.java
│           │                   ├── CredentialManagerTest.java
│           │                   ├── DataColumnVectorView.java
│           │                   ├── LocalFileSystemCatalog.java
│           │                   └── LocalFileSystemTable.java
│           └── resources/
│               └── log4j2-test.properties
├── hudi/
│   ├── README.md
│   ├── integration_tests/
│   │   └── write_uniform_hudi.py
│   └── src/
│       ├── main/
│       │   └── scala/
│       │       └── org/
│       │           └── apache/
│       │               └── spark/
│       │                   └── sql/
│       │                       └── delta/
│       │                           └── hudi/
│       │                               ├── HudiConversionTransaction.scala
│       │                               ├── HudiConverter.scala
│       │                               ├── HudiSchemaUtils.scala
│       │                               └── HudiTransactionUtils.scala
│       └── test/
│           └── scala/
│               └── org/
│                   └── apache/
│                       └── spark/
│                           └── sql/
│                               └── delta/
│                                   └── hudi/
│                                       └── ConvertToHudiSuite.scala
├── iceberg/
│   ├── integration_tests/
│   │   └── iceberg_converter.py
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── spark/
│       │   │               └── sql/
│       │   │                   └── delta/
│       │   │                       └── serverSidePlanning/
│       │   │                           └── FixedGcsAccessTokenProvider.java
│       │   └── scala/
│       │       └── org/
│       │           └── apache/
│       │               ├── iceberg/
│       │               │   └── transforms/
│       │               │       └── IcebergPartitionUtil.scala
│       │               └── spark/
│       │                   └── sql/
│       │                       ├── catalyst/
│       │                       │   └── analysis/
│       │                       │       └── NoSuchProcedureException.scala
│       │                       └── delta/
│       │                           ├── IcebergFileManifest.scala
│       │                           ├── IcebergPartitionConverter.scala
│       │                           ├── IcebergSchemaUtils.scala
│       │                           ├── IcebergSparkWrappers.scala
│       │                           ├── IcebergStatsUtils.scala
│       │                           ├── IcebergTable.scala
│       │                           ├── TypeToSparkTypeWithCustomCast.scala
│       │                           ├── icebergShaded/
│       │                           │   ├── DeltaToIcebergConvert.scala
│       │                           │   ├── IcebergConversionTransaction.scala
│       │                           │   ├── IcebergConverter.scala
│       │                           │   ├── IcebergSchemaUtils.scala
│       │                           │   ├── IcebergStatsConverter.scala
│       │                           │   └── IcebergTransactionUtils.scala
│       │                           └── serverSidePlanning/
│       │                               ├── IcebergRESTCatalogPlanningClient.scala
│       │                               ├── IcebergRESTCatalogPlanningClientFactory.scala
│       │                               └── SparkToIcebergExpressionConverter.scala
│       └── test/
│           ├── java/
│           │   └── shadedForDelta/
│           │       └── org/
│           │           └── apache/
│           │               └── iceberg/
│           │                   └── rest/
│           │                       ├── IcebergRESTCatalogAdapterWithPlanSupport.java
│           │                       ├── IcebergRESTServer.java
│           │                       └── IcebergRESTServletWithPlanSupport.java
│           ├── resources/
│           │   └── META-INF/
│           │       └── services/
│           │           └── org.apache.spark.sql.sources.DataSourceRegister
│           └── scala/
│               └── org/
│                   └── apache/
│                       └── spark/
│                           └── sql/
│                               └── delta/
│                                   ├── CloneIcebergSuite.scala
│                                   ├── ConvertIcebergToDeltaPartitionSuite.scala
│                                   ├── ConvertIcebergToDeltaSuite.scala
│                                   ├── ConvertToIcebergSuite.scala
│                                   ├── NonSparkIcebergTestUtils.scala
│                                   ├── commands/
│                                   │   └── convert/
│                                   │       ├── IcebergPartitionConverterSuite.scala
│                                   │       └── IcebergStatsUtilsSuite.scala
│                                   ├── serverSidePlanning/
│                                   │   ├── IcebergRESTCatalogPlanningClientSuite.scala
│                                   │   ├── IcebergRESTServerTestUtils.scala
│                                   │   ├── ServerSidePlanningCredentialsSuite.scala
│                                   │   ├── SparkToIcebergExpressionConverterSuite.scala
│                                   │   └── TestSchemas.scala
│                                   └── uniform/
│                                       ├── IcebergCompatV2EnableUniformByAlterTableSuite.scala
│                                       ├── TypeWideningUniformSuite.scala
│                                       ├── UniFormConverterSuite.scala
│                                       ├── UniFormE2EIcebergSuite.scala
│                                       └── UniversalFormatSuite.scala
├── icebergShaded/
│   └── src/
│       └── main/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── iceberg/
│                           ├── MetadataUpdate.java
│                           ├── PartitionSpec.java
│                           ├── TableMetadata.java
│                           ├── hive/
│                           │   ├── HiveCatalog.java
│                           │   └── HiveTableOperations.java
│                           ├── rest/
│                           │   └── RESTFileScanTaskParser.java
│                           └── unityCatalog/
│                               ├── UnityCatalog.java
│                               └── UnityCatalogTableOperations.java
├── kernel/
│   ├── EXCEPTION_PRINCIPLES.md
│   ├── README.md
│   ├── USER_GUIDE.md
│   ├── build/
│   │   ├── sbt
│   │   ├── sbt-config/
│   │   │   └── repositories
│   │   └── sbt-launch-lib.bash
│   ├── examples/
│   │   ├── kernel-examples/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── io/
│   │   │                   └── delta/
│   │   │                       └── kernel/
│   │   │                           ├── examples/
│   │   │                           │   ├── BaseTableReader.java
│   │   │                           │   ├── BaseTableWriter.java
│   │   │                           │   ├── CreateTable.java
│   │   │                           │   ├── CreateTableAndInsertData.java
│   │   │                           │   ├── MultiThreadedTableReader.java
│   │   │                           │   ├── SingleThreadedTableReader.java
│   │   │                           │   └── utils/
│   │   │                           │       ├── RowSerDe.java
│   │   │                           │       └── Utils.java
│   │   │                           └── integration/
│   │   │                               ├── ReadIntegrationTestSuite.java
│   │   │                               └── WriteIntegrationTestSuite.java
│   │   └── run-kernel-examples.py
│   ├── kernel-api/
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── io/
│   │       │           └── delta/
│   │       │               └── kernel/
│   │       │                   ├── CommitActions.java
│   │       │                   ├── CommitRange.java
│   │       │                   ├── CommitRangeBuilder.java
│   │       │                   ├── DataWriteContext.java
│   │       │                   ├── Operation.java
│   │       │                   ├── PaginatedScan.java
│   │       │                   ├── PaginatedScanFilesIterator.java
│   │       │                   ├── Scan.java
│   │       │                   ├── ScanBuilder.java
│   │       │                   ├── Snapshot.java
│   │       │                   ├── SnapshotBuilder.java
│   │       │                   ├── Table.java
│   │       │                   ├── TableManager.java
│   │       │                   ├── Transaction.java
│   │       │                   ├── TransactionBuilder.java
│   │       │                   ├── TransactionCommitResult.java
│   │       │                   ├── annotation/
│   │       │                   │   ├── Evolving.java
│   │       │                   │   └── Experimental.java
│   │       │                   ├── commit/
│   │       │                   │   ├── CatalogCommitter.java
│   │       │                   │   ├── CatalogCommitterUtils.java
│   │       │                   │   ├── CommitFailedException.java
│   │       │                   │   ├── CommitMetadata.java
│   │       │                   │   ├── CommitResponse.java
│   │       │                   │   ├── Committer.java
│   │       │                   │   ├── PublishFailedException.java
│   │       │                   │   └── PublishMetadata.java
│   │       │                   ├── data/
│   │       │                   │   ├── ArrayValue.java
│   │       │                   │   ├── ColumnVector.java
│   │       │                   │   ├── ColumnarBatch.java
│   │       │                   │   ├── FilteredColumnarBatch.java
│   │       │                   │   ├── MapValue.java
│   │       │                   │   ├── Row.java
│   │       │                   │   └── package-info.java
│   │       │                   ├── engine/
│   │       │                   │   ├── Engine.java
│   │       │                   │   ├── ExpressionHandler.java
│   │       │                   │   ├── FileReadRequest.java
│   │       │                   │   ├── FileReadResult.java
│   │       │                   │   ├── FileSystemClient.java
│   │       │                   │   ├── JsonHandler.java
│   │       │                   │   ├── MetricsReporter.java
│   │       │                   │   ├── ParquetHandler.java
│   │       │                   │   └── package-info.java
│   │       │                   ├── exceptions/
│   │       │                   │   ├── CheckpointAlreadyExistsException.java
│   │       │                   │   ├── CommitRangeNotFoundException.java
│   │       │                   │   ├── CommitStateUnknownException.java
│   │       │                   │   ├── ConcurrentTransactionException.java
│   │       │                   │   ├── ConcurrentWriteException.java
│   │       │                   │   ├── DomainDoesNotExistException.java
│   │       │                   │   ├── InvalidConfigurationValueException.java
│   │       │                   │   ├── InvalidTableException.java
│   │       │                   │   ├── KernelEngineException.java
│   │       │                   │   ├── KernelException.java
│   │       │                   │   ├── MaxCommitRetryLimitReachedException.java
│   │       │                   │   ├── MetadataChangedException.java
│   │       │                   │   ├── ProtocolChangedException.java
│   │       │                   │   ├── TableAlreadyExistsException.java
│   │       │                   │   ├── TableNotFoundException.java
│   │       │                   │   ├── UnknownConfigurationException.java
│   │       │                   │   ├── UnsupportedProtocolVersionException.java
│   │       │                   │   └── UnsupportedTableFeatureException.java
│   │       │                   ├── expressions/
│   │       │                   │   ├── AlwaysFalse.java
│   │       │                   │   ├── AlwaysTrue.java
│   │       │                   │   ├── And.java
│   │       │                   │   ├── Column.java
│   │       │                   │   ├── Expression.java
│   │       │                   │   ├── ExpressionEvaluator.java
│   │       │                   │   ├── In.java
│   │       │                   │   ├── Literal.java
│   │       │                   │   ├── Or.java
│   │       │                   │   ├── PartitionValueExpression.java
│   │       │                   │   ├── Predicate.java
│   │       │                   │   ├── PredicateEvaluator.java
│   │       │                   │   ├── ScalarExpression.java
│   │       │                   │   └── package-info.java
│   │       │                   ├── hook/
│   │       │                   │   └── PostCommitHook.java
│   │       │                   ├── internal/
│   │       │                   │   ├── CommitActionsImpl.java
│   │       │                   │   ├── CreateTableTransactionBuilderImpl.java
│   │       │                   │   ├── DataWriteContextImpl.java
│   │       │                   │   ├── DeltaErrors.java
│   │       │                   │   ├── DeltaErrorsInternal.java
│   │       │                   │   ├── DeltaHistoryManager.java
│   │       │                   │   ├── DeltaLogActionUtils.java
│   │       │                   │   ├── InternalScanFileUtils.java
│   │       │                   │   ├── PaginatedScanImpl.java
│   │       │                   │   ├── ReplaceTableTransactionBuilderImpl.java
│   │       │                   │   ├── ReplaceTableTransactionBuilderV2Impl.java
│   │       │                   │   ├── ScanBuilderImpl.java
│   │       │                   │   ├── ScanImpl.java
│   │       │                   │   ├── SnapshotImpl.java
│   │       │                   │   ├── TableChangesUtils.java
│   │       │                   │   ├── TableConfig.java
│   │       │                   │   ├── TableImpl.java
│   │       │                   │   ├── TransactionBuilderImpl.java
│   │       │                   │   ├── TransactionImpl.java
│   │       │                   │   ├── TransactionMetadataFactory.java
│   │       │                   │   ├── UpdateTableTransactionBuilderImpl.java
│   │       │                   │   ├── actions/
│   │       │                   │   │   ├── AddCDCFile.java
│   │       │                   │   │   ├── AddFile.java
│   │       │                   │   │   ├── CommitInfo.java
│   │       │                   │   │   ├── DeletionVectorDescriptor.java
│   │       │                   │   │   ├── DomainMetadata.java
│   │       │                   │   │   ├── Format.java
│   │       │                   │   │   ├── GenerateIcebergCompatActionUtils.java
│   │       │                   │   │   ├── Metadata.java
│   │       │                   │   │   ├── Protocol.java
│   │       │                   │   │   ├── RemoveFile.java
│   │       │                   │   │   ├── RowBackedAction.java
│   │       │                   │   │   ├── SetTransaction.java
│   │       │                   │   │   └── SingleAction.java
│   │       │                   │   ├── annotation/
│   │       │                   │   │   └── VisibleForTesting.java
│   │       │                   │   ├── checkpoints/
│   │       │                   │   │   ├── CheckpointInstance.java
│   │       │                   │   │   ├── CheckpointMetaData.java
│   │       │                   │   │   ├── CheckpointMetadataAction.java
│   │       │                   │   │   ├── Checkpointer.java
│   │       │                   │   │   └── SidecarFile.java
│   │       │                   │   ├── checksum/
│   │       │                   │   │   ├── CRCInfo.java
│   │       │                   │   │   ├── ChecksumReader.java
│   │       │                   │   │   ├── ChecksumUtils.java
│   │       │                   │   │   └── ChecksumWriter.java
│   │       │                   │   ├── clustering/
│   │       │                   │   │   ├── ClusteringMetadataDomain.java
│   │       │                   │   │   └── ClusteringUtils.java
│   │       │                   │   ├── columndefaults/
│   │       │                   │   │   └── ColumnDefaults.java
│   │       │                   │   ├── commit/
│   │       │                   │   │   └── DefaultFileSystemManagedTableOnlyCommitter.java
│   │       │                   │   ├── commitrange/
│   │       │                   │   │   ├── CommitRangeBuilderImpl.java
│   │       │                   │   │   ├── CommitRangeFactory.java
│   │       │                   │   │   └── CommitRangeImpl.java
│   │       │                   │   ├── compaction/
│   │       │                   │   │   └── LogCompactionWriter.java
│   │       │                   │   ├── data/
│   │       │                   │   │   ├── ChildVectorBasedRow.java
│   │       │                   │   │   ├── ColumnarBatchRow.java
│   │       │                   │   │   ├── DelegateRow.java
│   │       │                   │   │   ├── GenericColumnVector.java
│   │       │                   │   │   ├── GenericRow.java
│   │       │                   │   │   ├── ScanStateRow.java
│   │       │                   │   │   ├── SelectionColumnVector.java
│   │       │                   │   │   ├── StructRow.java
│   │       │                   │   │   └── TransactionStateRow.java
│   │       │                   │   ├── deletionvectors/
│   │       │                   │   │   ├── Base85Codec.java
│   │       │                   │   │   ├── DeletionVectorStoredBitmap.java
│   │       │                   │   │   ├── DeletionVectorUtils.java
│   │       │                   │   │   └── RoaringBitmapArray.java
│   │       │                   │   ├── files/
│   │       │                   │   │   ├── LogDataUtils.java
│   │       │                   │   │   ├── ParsedCatalogCommitData.java
│   │       │                   │   │   ├── ParsedCheckpointData.java
│   │       │                   │   │   ├── ParsedChecksumData.java
│   │       │                   │   │   ├── ParsedClassicCheckpointData.java
│   │       │                   │   │   ├── ParsedDeltaData.java
│   │       │                   │   │   ├── ParsedLogCompactionData.java
│   │       │                   │   │   ├── ParsedLogData.java
│   │       │                   │   │   ├── ParsedMultiPartCheckpointData.java
│   │       │                   │   │   ├── ParsedPublishedDeltaData.java
│   │       │                   │   │   └── ParsedV2CheckpointData.java
│   │       │                   │   ├── fs/
│   │       │                   │   │   └── Path.java
│   │       │                   │   ├── hook/
│   │       │                   │   │   ├── CheckpointHook.java
│   │       │                   │   │   ├── ChecksumFullHook.java
│   │       │                   │   │   ├── ChecksumSimpleHook.java
│   │       │                   │   │   └── LogCompactionHook.java
│   │       │                   │   ├── icebergcompat/
│   │       │                   │   │   ├── IcebergCompatMetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergCompatV2MetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergCompatV3MetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergUniversalFormatMetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergWriterCompatMetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergWriterCompatV1MetadataValidatorAndUpdater.java
│   │       │                   │   │   └── IcebergWriterCompatV3MetadataValidatorAndUpdater.java
│   │       │                   │   ├── lang/
│   │       │                   │   │   ├── Lazy.java
│   │       │                   │   │   └── ListUtils.java
│   │       │                   │   ├── metadatadomain/
│   │       │                   │   │   └── JsonMetadataDomain.java
│   │       │                   │   ├── metrics/
│   │       │                   │   │   ├── Counter.java
│   │       │                   │   │   ├── DeltaOperationReportImpl.java
│   │       │                   │   │   ├── MetricsReportSerializer.java
│   │       │                   │   │   ├── ScanMetrics.java
│   │       │                   │   │   ├── ScanReportImpl.java
│   │       │                   │   │   ├── SnapshotMetrics.java
│   │       │                   │   │   ├── SnapshotQueryContext.java
│   │       │                   │   │   ├── SnapshotReportImpl.java
│   │       │                   │   │   ├── Timer.java
│   │       │                   │   │   ├── TransactionMetrics.java
│   │       │                   │   │   └── TransactionReportImpl.java
│   │       │                   │   ├── replay/
│   │       │                   │   │   ├── ActionWrapper.java
│   │       │                   │   │   ├── ActionsIterator.java
│   │       │                   │   │   ├── ActiveAddFilesIterator.java
│   │       │                   │   │   ├── ConflictChecker.java
│   │       │                   │   │   ├── CreateCheckpointIterator.java
│   │       │                   │   │   ├── DeltaLogFile.java
│   │       │                   │   │   ├── LogReplay.java
│   │       │                   │   │   ├── LogReplayUtils.java
│   │       │                   │   │   ├── PageToken.java
│   │       │                   │   │   ├── PaginatedScanFilesIteratorImpl.java
│   │       │                   │   │   ├── PaginationContext.java
│   │       │                   │   │   └── ProtocolMetadataLogReplay.java
│   │       │                   │   ├── rowtracking/
│   │       │                   │   │   ├── MaterializedRowTrackingColumn.java
│   │       │                   │   │   ├── RowTracking.java
│   │       │                   │   │   └── RowTrackingMetadataDomain.java
│   │       │                   │   ├── skipping/
│   │       │                   │   │   ├── DataSkippingPredicate.java
│   │       │                   │   │   ├── DataSkippingUtils.java
│   │       │                   │   │   └── StatsSchemaHelper.java
│   │       │                   │   ├── snapshot/
│   │       │                   │   │   ├── LogSegment.java
│   │       │                   │   │   ├── MetadataCleanup.java
│   │       │                   │   │   └── SnapshotManager.java
│   │       │                   │   ├── stats/
│   │       │                   │   │   └── FileSizeHistogram.java
│   │       │                   │   ├── table/
│   │       │                   │   │   ├── SnapshotBuilderImpl.java
│   │       │                   │   │   └── SnapshotFactory.java
│   │       │                   │   ├── tablefeatures/
│   │       │                   │   │   ├── FeatureAutoEnabledByMetadata.java
│   │       │                   │   │   ├── TableFeature.java
│   │       │                   │   │   └── TableFeatures.java
│   │       │                   │   ├── types/
│   │       │                   │   │   ├── DataTypeJsonSerDe.java
│   │       │                   │   │   └── TypeWideningChecker.java
│   │       │                   │   └── util/
│   │       │                   │       ├── CaseInsensitiveMap.java
│   │       │                   │       ├── Clock.java
│   │       │                   │       ├── ColumnMapping.java
│   │       │                   │       ├── DateTimeConstants.java
│   │       │                   │       ├── DirectoryCreationUtils.java
│   │       │                   │       ├── DomainMetadataUtils.java
│   │       │                   │       ├── ExpressionUtils.java
│   │       │                   │       ├── FileNames.java
│   │       │                   │       ├── InCommitTimestampUtils.java
│   │       │                   │       ├── InternalUtils.java
│   │       │                   │       ├── IntervalParserUtils.java
│   │       │                   │       ├── JsonUtils.java
│   │       │                   │       ├── ManualClock.java
│   │       │                   │       ├── PartitionUtils.java
│   │       │                   │       ├── Preconditions.java
│   │       │                   │       ├── SchemaChanges.java
│   │       │                   │       ├── SchemaIterable.java
│   │       │                   │       ├── SchemaUtils.java
│   │       │                   │       ├── TimestampUtils.java
│   │       │                   │       ├── Tuple2.java
│   │       │                   │       ├── Utils.java
│   │       │                   │       └── VectorUtils.java
│   │       │                   ├── metrics/
│   │       │                   │   ├── DeltaOperationReport.java
│   │       │                   │   ├── FileSizeHistogramResult.java
│   │       │                   │   ├── MetricsReport.java
│   │       │                   │   ├── ScanMetricsResult.java
│   │       │                   │   ├── ScanReport.java
│   │       │                   │   ├── SnapshotMetricsResult.java
│   │       │                   │   ├── SnapshotReport.java
│   │       │                   │   ├── TransactionMetricsResult.java
│   │       │                   │   └── TransactionReport.java
│   │       │                   ├── package-info.java
│   │       │                   ├── statistics/
│   │       │                   │   ├── DataFileStatistics.java
│   │       │                   │   └── SnapshotStatistics.java
│   │       │                   ├── transaction/
│   │       │                   │   ├── CreateTableTransactionBuilder.java
│   │       │                   │   ├── DataLayoutSpec.java
│   │       │                   │   ├── ReplaceTableTransactionBuilder.java
│   │       │                   │   └── UpdateTableTransactionBuilder.java
│   │       │                   ├── types/
│   │       │                   │   ├── ArrayType.java
│   │       │                   │   ├── BasePrimitiveType.java
│   │       │                   │   ├── BinaryType.java
│   │       │                   │   ├── BooleanType.java
│   │       │                   │   ├── ByteType.java
│   │       │                   │   ├── CollationIdentifier.java
│   │       │                   │   ├── DataType.java
│   │       │                   │   ├── DateType.java
│   │       │                   │   ├── DecimalType.java
│   │       │                   │   ├── DoubleType.java
│   │       │                   │   ├── FieldMetadata.java
│   │       │                   │   ├── FloatType.java
│   │       │                   │   ├── GeographyType.java
│   │       │                   │   ├── GeometryType.java
│   │       │                   │   ├── IntegerType.java
│   │       │                   │   ├── LongType.java
│   │       │                   │   ├── MapType.java
│   │       │                   │   ├── MetadataColumnSpec.java
│   │       │                   │   ├── ShortType.java
│   │       │                   │   ├── StringType.java
│   │       │                   │   ├── StructField.java
│   │       │                   │   ├── StructType.java
│   │       │                   │   ├── TimestampNTZType.java
│   │       │                   │   ├── TimestampType.java
│   │       │                   │   ├── TypeChange.java
│   │       │                   │   ├── VariantType.java
│   │       │                   │   └── package-info.java
│   │       │                   └── utils/
│   │       │                       ├── CloseableIterable.java
│   │       │                       ├── CloseableIterator.java
│   │       │                       ├── DataFileStatus.java
│   │       │                       ├── FileStatus.java
│   │       │                       ├── PartitionUtils.java
│   │       │                       └── package-info.java
│   │       └── test/
│   │           ├── resources/
│   │           │   └── log4j2.properties
│   │           └── scala/
│   │               └── io/
│   │                   └── delta/
│   │                       └── kernel/
│   │                           ├── CloseableIteratorSuite.scala
│   │                           ├── TransactionSuite.scala
│   │                           ├── commit/
│   │                           │   └── CatalogCommitterUtilsSuite.scala
│   │                           ├── deletionvectors/
│   │                           │   ├── Base85CodecSuite.scala
│   │                           │   └── RoaringBitmapArraySuite.scala
│   │                           ├── exceptions/
│   │                           │   └── ExceptionSuite.scala
│   │                           ├── expressions/
│   │                           │   ├── ExpressionsSuite.scala
│   │                           │   └── PredicateSuite.scala
│   │                           ├── internal/
│   │                           │   ├── CommitRangeBuilderSuite.scala
│   │                           │   ├── DeltaHistoryManagerSuite.scala
│   │                           │   ├── DeltaLogActionUtilsSuite.scala
│   │                           │   ├── FilteredColumnarBatchSuite.scala
│   │                           │   ├── PageTokenSuite.scala
│   │                           │   ├── PaginationContextSuite.scala
│   │                           │   ├── SnapshotManagerSuite.scala
│   │                           │   ├── TableConfigSuite.scala
│   │                           │   ├── TableImplSuite.scala
│   │                           │   ├── TransactionBuilderImplSuite.scala
│   │                           │   ├── TransactionMetadataFactorySuite.scala
│   │                           │   ├── actions/
│   │                           │   │   ├── AddFileSuite.scala
│   │                           │   │   ├── DeletionVectorDescriptorSuite.scala
│   │                           │   │   ├── GenerateIcebergCompatActionUtilsSuite.scala
│   │                           │   │   ├── MetadataSuite.scala
│   │                           │   │   ├── ProtocolSuite.scala
│   │                           │   │   └── RemoveFileSuite.scala
│   │                           │   ├── catalogManaged/
│   │                           │   │   ├── CatalogManagedLogSegmentSuite.scala
│   │                           │   │   └── SnapshotBuilderSuite.scala
│   │                           │   ├── checkpoints/
│   │                           │   │   ├── CheckpointInstanceSuite.scala
│   │                           │   │   └── CheckpointerSuite.scala
│   │                           │   ├── checksum/
│   │                           │   │   ├── CRCInfoReadCompatSuite.scala
│   │                           │   │   └── ChecksumWriterSuite.scala
│   │                           │   ├── clustering/
│   │                           │   │   └── ClusteringMetadataDomainSuite.scala
│   │                           │   ├── columndefaults/
│   │                           │   │   └── ColumnDefaultsSuite.scala
│   │                           │   ├── commit/
│   │                           │   │   ├── CommitMetadataSuite.scala
│   │                           │   │   ├── DefaultCommitterSuite.scala
│   │                           │   │   └── PublishMetadataSuite.scala
│   │                           │   ├── files/
│   │                           │   │   ├── LogDataUtilsSuite.scala
│   │                           │   │   └── ParsedLogDataSuite.scala
│   │                           │   ├── fs/
│   │                           │   │   ├── PathSuite.scala
│   │                           │   │   └── benchmarks/
│   │                           │   │       └── PathNormalizationBenchmarks.java
│   │                           │   ├── icebergcompat/
│   │                           │   │   ├── IcebergCompatMetadataValidatorAndUpdaterSuiteBase.scala
│   │                           │   │   ├── IcebergCompatV2MetadataValidatorAndUpdaterSuite.scala
│   │                           │   │   ├── IcebergCompatV3MetadataValidatorAndUpdateSuite.scala
│   │                           │   │   ├── IcebergUniversalFormatMetadataValidatorAndUpdaterSuite.scala
│   │                           │   │   ├── IcebergWriterCompatV1MetadataValidatorAndUpdaterSuite.scala
│   │                           │   │   └── IcebergWriterCompatV3MetadataValidatorAndUpdaterSuite.scala
│   │                           │   ├── metadatadomain/
│   │                           │   │   ├── JsonMetadataDomainSuite.scala
│   │                           │   │   └── TestJsonMetadataDomain.java
│   │                           │   ├── metrics/
│   │                           │   │   ├── CounterSuite.scala
│   │                           │   │   ├── MetricsReportSerializerSuite.scala
│   │                           │   │   └── TimerSuite.scala
│   │                           │   ├── replay/
│   │                           │   │   └── ActionsIteratorSuite.scala
│   │                           │   ├── skipping/
│   │                           │   │   ├── DataSkippingUtilsSuite.scala
│   │                           │   │   └── StatsSchemaHelperSuite.scala
│   │                           │   ├── snapshot/
│   │                           │   │   ├── LogSegmentSuite.scala
│   │                           │   │   └── MetadataCleanupSuite.scala
│   │                           │   ├── stats/
│   │                           │   │   └── FileSizeHistogramSuite.scala
│   │                           │   ├── tablefeatures/
│   │                           │   │   └── TableFeaturesSuite.scala
│   │                           │   ├── types/
│   │                           │   │   ├── DataTypeJsonSerDeSuite.scala
│   │                           │   │   └── TypeWideningCheckerSuite.scala
│   │                           │   └── util/
│   │                           │       ├── ColumnMappingSuite.scala
│   │                           │       ├── ColumnMappingSuiteBase.scala
│   │                           │       ├── DataFileStatisticsSuite.scala
│   │                           │       ├── FileNamesSuite.scala
│   │                           │       ├── IntervalParserUtilsSuite.scala
│   │                           │       ├── JsonUtilsSuite.scala
│   │                           │       ├── PartitionUtilsSuite.scala
│   │                           │       ├── SchemaIterableSuite.scala
│   │                           │       ├── SchemaUtilsSuite.scala
│   │                           │       ├── TimestampUtilsSuite.scala
│   │                           │       └── VectorUtilsSuite.scala
│   │                           ├── test/
│   │                           │   ├── ActionUtils.scala
│   │                           │   ├── MockEngineUtils.scala
│   │                           │   ├── MockFileSystemClientUtils.scala
│   │                           │   ├── MockSnapshotUtils.scala
│   │                           │   ├── TestFixtures.scala
│   │                           │   ├── TestUtils.scala
│   │                           │   └── VectorTestUtils.scala
│   │                           ├── transaction/
│   │                           │   └── DataLayoutSpecSuite.scala
│   │                           ├── types/
│   │                           │   ├── CollationIdentifierSuite.scala
│   │                           │   ├── DataTypeSuite.scala
│   │                           │   ├── FieldMetadataSuite.scala
│   │                           │   ├── MetadataColumnSuite.scala
│   │                           │   ├── StringTypeSuite.scala
│   │                           │   ├── StructFieldSuite.scala
│   │                           │   └── TypesSuite.scala
│   │                           └── utils/
│   │                               └── MetadataColumnTestUtils.scala
│   ├── kernel-benchmarks/
│   │   └── src/
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── delta/
│   │           │           └── kernel/
│   │           │               └── benchmarks/
│   │           │                   ├── AbstractBenchmarkState.java
│   │           │                   ├── BenchmarkParallelCheckpointReading.java
│   │           │                   ├── BenchmarkUtils.java
│   │           │                   ├── KernelMetricsProfiler.java
│   │           │                   ├── WorkloadBenchmark.java
│   │           │                   ├── WorkloadOutputFormat.java
│   │           │                   ├── models/
│   │           │                   │   ├── ReadSpec.java
│   │           │                   │   ├── SnapshotConstructionSpec.java
│   │           │                   │   ├── TableInfo.java
│   │           │                   │   ├── UcCatalogInfo.java
│   │           │                   │   ├── WorkloadSpec.java
│   │           │                   │   └── WriteSpec.java
│   │           │                   └── workloadrunners/
│   │           │                       ├── ReadMetadataRunner.java
│   │           │                       ├── SnapshotConstructionRunner.java
│   │           │                       ├── WorkloadRunner.java
│   │           │                       └── WriteRunner.java
│   │           └── resources/
│   │               └── workload_specs/
│   │                   ├── basic_append/
│   │                   │   ├── delta/
│   │                   │   │   ├── .part-00000-a9daef62-5a40-43c5-ac63-3ad4a7d749ae-c000.snappy.parquet.crc
│   │                   │   │   ├── .part-00000-c9f44819-b06d-45dd-b33d-ae9aa1b96909-c000.snappy.parquet.crc
│   │                   │   │   ├── _delta_log/
│   │                   │   │   │   ├── .00000000000000000000.json.crc
│   │                   │   │   │   ├── .00000000000000000001.json.crc
│   │                   │   │   │   ├── 00000000000000000000.json
│   │                   │   │   │   └── 00000000000000000001.json
│   │                   │   │   ├── part-00000-a9daef62-5a40-43c5-ac63-3ad4a7d749ae-c000.snappy.parquet
│   │                   │   │   └── part-00000-c9f44819-b06d-45dd-b33d-ae9aa1b96909-c000.snappy.parquet
│   │                   │   ├── specs/
│   │                   │   │   ├── read_latest/
│   │                   │   │   │   └── spec.json
│   │                   │   │   ├── read_v0/
│   │                   │   │   │   └── spec.json
│   │                   │   │   ├── snapshot_latest/
│   │                   │   │   │   └── spec.json
│   │                   │   │   ├── snapshot_v0/
│   │                   │   │   │   └── spec.json
│   │                   │   │   └── write_appends/
│   │                   │   │       ├── commit_2_adds.json
│   │                   │   │       ├── commit_add.json
│   │                   │   │       └── spec.json
│   │                   │   └── table_info.json
│   │                   └── basic_catalog_managed/
│   │                       ├── catalog_managed_info.json
│   │                       ├── delta/
│   │                       │   ├── _delta_log/
│   │                       │   │   ├── 00000000000000000000.json
│   │                       │   │   ├── 00000000000000000001.json
│   │                       │   │   └── _staged_commits/
│   │                       │   │       ├── 00000000000000000002.a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d.json
│   │                       │   │       └── 00000000000000000003.f7e8d9c0-b1a2-4536-9748-5a6b7c8d9e0f.json
│   │                       │   ├── part-00000-a9daef62-5a40-43c5-ac63-3ad4a7d749ae-c000.snappy.parquet
│   │                       │   └── part-00000-c9f44819-b06d-45dd-b33d-ae9aa1b96909-c000.snappy.parquet
│   │                       ├── specs/
│   │                       │   ├── read_with_staged/
│   │                       │   │   └── spec.json
│   │                       │   └── write_with_staged/
│   │                       │       ├── commit_2.json
│   │                       │       └── spec.json
│   │                       └── table_info.json
│   ├── kernel-defaults/
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── io/
│   │       │           └── delta/
│   │       │               └── kernel/
│   │       │                   └── defaults/
│   │       │                       ├── engine/
│   │       │                       │   ├── DefaultEngine.java
│   │       │                       │   ├── DefaultExpressionHandler.java
│   │       │                       │   ├── DefaultFileSystemClient.java
│   │       │                       │   ├── DefaultJsonHandler.java
│   │       │                       │   ├── DefaultParquetHandler.java
│   │       │                       │   ├── LoggingMetricsReporter.java
│   │       │                       │   ├── fileio/
│   │       │                       │   │   ├── FileIO.java
│   │       │                       │   │   ├── InputFile.java
│   │       │                       │   │   ├── OutputFile.java
│   │       │                       │   │   ├── PositionOutputStream.java
│   │       │                       │   │   └── SeekableInputStream.java
│   │       │                       │   ├── hadoopio/
│   │       │                       │   │   ├── HadoopFileIO.java
│   │       │                       │   │   ├── HadoopInputFile.java
│   │       │                       │   │   ├── HadoopOutputFile.java
│   │       │                       │   │   ├── HadoopPositionOutputStream.java
│   │       │                       │   │   └── HadoopSeekableInputStream.java
│   │       │                       │   └── package-info.java
│   │       │                       └── internal/
│   │       │                           ├── DefaultEngineErrors.java
│   │       │                           ├── DefaultKernelUtils.java
│   │       │                           ├── data/
│   │       │                           │   ├── DefaultColumnarBatch.java
│   │       │                           │   ├── DefaultJsonRow.java
│   │       │                           │   ├── DefaultRowBasedColumnarBatch.java
│   │       │                           │   └── vector/
│   │       │                           │       ├── AbstractColumnVector.java
│   │       │                           │       ├── DefaultArrayVector.java
│   │       │                           │       ├── DefaultBinaryVector.java
│   │       │                           │       ├── DefaultBooleanVector.java
│   │       │                           │       ├── DefaultByteVector.java
│   │       │                           │       ├── DefaultConstantVector.java
│   │       │                           │       ├── DefaultDecimalVector.java
│   │       │                           │       ├── DefaultDoubleVector.java
│   │       │                           │       ├── DefaultFloatVector.java
│   │       │                           │       ├── DefaultGenericVector.java
│   │       │                           │       ├── DefaultIntVector.java
│   │       │                           │       ├── DefaultLongVector.java
│   │       │                           │       ├── DefaultMapVector.java
│   │       │                           │       ├── DefaultShortVector.java
│   │       │                           │       ├── DefaultStructVector.java
│   │       │                           │       ├── DefaultSubFieldVector.java
│   │       │                           │       └── DefaultViewVector.java
│   │       │                           ├── expressions/
│   │       │                           │   ├── DefaultExpressionEvaluator.java
│   │       │                           │   ├── DefaultExpressionUtils.java
│   │       │                           │   ├── DefaultPredicateEvaluator.java
│   │       │                           │   ├── ElementAtEvaluator.java
│   │       │                           │   ├── ExpressionVisitor.java
│   │       │                           │   ├── ImplicitCastExpression.java
│   │       │                           │   ├── InExpressionEvaluator.java
│   │       │                           │   ├── LikeExpressionEvaluator.java
│   │       │                           │   ├── PartitionValueEvaluator.java
│   │       │                           │   ├── StartsWithExpressionEvaluator.java
│   │       │                           │   └── SubstringEvaluator.java
│   │       │                           ├── json/
│   │       │                           │   └── JsonUtils.java
│   │       │                           ├── logstore/
│   │       │                           │   └── LogStoreProvider.java
│   │       │                           └── parquet/
│   │       │                               ├── ArrayColumnReader.java
│   │       │                               ├── DecimalColumnReader.java
│   │       │                               ├── MapColumnReader.java
│   │       │                               ├── ParquetColumnReaders.java
│   │       │                               ├── ParquetColumnWriters.java
│   │       │                               ├── ParquetFileReader.java
│   │       │                               ├── ParquetFileWriter.java
│   │       │                               ├── ParquetFilterUtils.java
│   │       │                               ├── ParquetIOUtils.java
│   │       │                               ├── ParquetSchemaUtils.java
│   │       │                               ├── ParquetStatsReader.java
│   │       │                               ├── RepeatedValueConverter.java
│   │       │                               ├── RowColumnReader.java
│   │       │                               └── TimestampConverters.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── delta/
│   │           │           └── kernel/
│   │           │               └── defaults/
│   │           │                   ├── integration/
│   │           │                   │   └── DataBuilderUtils.java
│   │           │                   └── utils/
│   │           │                       └── DefaultKernelTestUtils.java
│   │           ├── resources/
│   │           │   ├── basic-dv-no-checkpoint/
│   │           │   │   ├── .deletion_vector_899cef78-06b3-4c14-b024-03860e62cd40.bin.crc
│   │           │   │   ├── .part-00000-a489737f-d477-4d9a-8b4a-bd6a6536df5b-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-1c9b5e60-ab86-4017-9ec9-a6fe4150cdd5-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   ├── .00000000000000000001.json.crc
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   └── 00000000000000000001.json
│   │           │   │   ├── part-00000-a489737f-d477-4d9a-8b4a-bd6a6536df5b-c000.snappy.parquet
│   │           │   │   └── part-00001-1c9b5e60-ab86-4017-9ec9-a6fe4150cdd5-c000.snappy.parquet
│   │           │   ├── basic-dv-with-checkpoint/
│   │           │   │   ├── .deletion_vector_03686710-1009-4aba-a2a6-59d866288a1c.bin.crc
│   │           │   │   ├── .deletion_vector_03e6283c-5c18-431e-b43b-5ab5a15b74e5.bin.crc
│   │           │   │   ├── .deletion_vector_0498d0e5-d192-44fc-b2f4-a17f228043e6.bin.crc
│   │           │   │   ├── .deletion_vector_07bc7f84-8d75-48f2-b39c-15632a2fcf2c.bin.crc
│   │           │   │   ├── .deletion_vector_08fa8257-1841-44a7-9660-673f8c92b0ba.bin.crc
│   │           │   │   ├── .deletion_vector_11973cae-328a-4116-acdb-9b9b539c4404.bin.crc
│   │           │   │   ├── .deletion_vector_11e9779e-4890-4d45-a68b-9ee0bc00fb86.bin.crc
│   │           │   │   ├── .deletion_vector_1883ce16-093d-4e9a-8a02-d6d141eab667.bin.crc
│   │           │   │   ├── .deletion_vector_1ad67768-c04d-44df-8107-119c6a4b497c.bin.crc
│   │           │   │   ├── .deletion_vector_1d371e78-ca14-424f-9e01-0d0e4c50759c.bin.crc
│   │           │   │   ├── .deletion_vector_2a78be13-b634-4fc4-9994-fde7d90f8753.bin.crc
│   │           │   │   ├── .deletion_vector_2c2af44e-3021-496d-8596-ae5b3a74cb83.bin.crc
│   │           │   │   ├── .deletion_vector_2cdf4f8c-5b3f-4f55-8047-be1d1c9bb6b5.bin.crc
│   │           │   │   ├── .deletion_vector_44632fee-319a-426f-991d-ad78241e4a3e.bin.crc
│   │           │   │   ├── .deletion_vector_4567487b-ca26-4bee-9f7b-f07af32e83c3.bin.crc
│   │           │   │   ├── .deletion_vector_45768b99-d5f1-4b0c-8f06-9acc55a85928.bin.crc
│   │           │   │   ├── .deletion_vector_4ab2a9ff-9cbd-4391-aebe-5ac8423192e9.bin.crc
│   │           │   │   ├── .deletion_vector_4b2dfb3e-4544-4612-9990-3d956e1d06ee.bin.crc
│   │           │   │   ├── .deletion_vector_55afff88-4865-45d7-ba5f-05ef95ffa35c.bin.crc
│   │           │   │   ├── .deletion_vector_5fb8f71b-f727-494f-8629-6abadbbd4805.bin.crc
│   │           │   │   ├── .deletion_vector_609a831c-6ead-4397-8727-02a6a15de803.bin.crc
│   │           │   │   ├── .deletion_vector_71b8b79f-6604-431b-ad10-437d1c1cc62c.bin.crc
│   │           │   │   ├── .deletion_vector_71f26dca-c66c-41c6-a06f-76fe3809e048.bin.crc
│   │           │   │   ├── .deletion_vector_75df38a2-329f-4f07-b9cb-eef2664bffb2.bin.crc
│   │           │   │   ├── .deletion_vector_78f381a5-4ab5-4d93-8eaa-5906c98550ea.bin.crc
│   │           │   │   ├── .deletion_vector_828143d0-e473-4e79-81c3-7150fc854627.bin.crc
│   │           │   │   ├── .deletion_vector_8e35761b-7c0b-4a9a-8c59-bf5875550854.bin.crc
│   │           │   │   ├── .deletion_vector_a3e8af8a-e7a4-4f52-8eb5-e23a19e856fe.bin.crc
│   │           │   │   ├── .deletion_vector_a73e626d-43fd-4f8b-b448-87bf23ce685e.bin.crc
│   │           │   │   ├── .deletion_vector_abed2f64-7626-4c84-8cb1-d412cd3c6cc9.bin.crc
│   │           │   │   ├── .deletion_vector_b3a6359b-f50b-4db5-a4a5-e05e4641b76f.bin.crc
│   │           │   │   ├── .deletion_vector_bbabaab9-5b28-4320-acb4-e92b34672b54.bin.crc
│   │           │   │   ├── .deletion_vector_bc65fecb-20bf-42f8-b5e3-365ecc988ddd.bin.crc
│   │           │   │   ├── .deletion_vector_be1d9221-e478-4af5-9988-b5aa6bb57b79.bin.crc
│   │           │   │   ├── .deletion_vector_cc322f0c-38e3-4464-945c-ec4e62369941.bin.crc
│   │           │   │   ├── .deletion_vector_ce462c97-7338-4c8a-ba30-542e303ba8b9.bin.crc
│   │           │   │   ├── .deletion_vector_d1a467a4-cd86-4999-8a32-bcd85257602d.bin.crc
│   │           │   │   ├── .deletion_vector_d8940b51-9c96-44bd-8e45-325be665de99.bin.crc
│   │           │   │   ├── .deletion_vector_dd9a754e-63f5-4c5f-a551-ccbda05b02c1.bin.crc
│   │           │   │   ├── .deletion_vector_e3d66788-4fc0-40c6-83a1-5a1bb7ad59c2.bin.crc
│   │           │   │   ├── .deletion_vector_e6e73c4c-2fd7-4c41-b3b8-67517926951e.bin.crc
│   │           │   │   ├── .deletion_vector_ea8f857f-676a-4358-b40f-52220677ba42.bin.crc
│   │           │   │   ├── .deletion_vector_edbe9d1e-bcb3-4b99-adc3-9dc716574ece.bin.crc
│   │           │   │   ├── .deletion_vector_f16b78af-8245-4846-90c0-07e3664b35c1.bin.crc
│   │           │   │   ├── .deletion_vector_f1b41214-fae0-4aab-bdd6-9e8a8a0730a7.bin.crc
│   │           │   │   ├── .deletion_vector_fb01af59-2712-4a87-aa00-4a72099e2a8e.bin.crc
│   │           │   │   ├── .part-00000-87eec267-9acd-4e9a-a216-ec596132203d-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-c94c50bd-c7bb-4c0d-b6cb-958707d77d01-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   ├── .00000000000000000001.json.crc
│   │           │   │   │   ├── .00000000000000000002.json.crc
│   │           │   │   │   ├── .00000000000000000003.json.crc
│   │           │   │   │   ├── .00000000000000000004.json.crc
│   │           │   │   │   ├── .00000000000000000005.json.crc
│   │           │   │   │   ├── .00000000000000000006.json.crc
│   │           │   │   │   ├── .00000000000000000007.json.crc
│   │           │   │   │   ├── .00000000000000000008.json.crc
│   │           │   │   │   ├── .00000000000000000009.json.crc
│   │           │   │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000010.json.crc
│   │           │   │   │   ├── .00000000000000000011.json.crc
│   │           │   │   │   ├── .00000000000000000012.json.crc
│   │           │   │   │   ├── .00000000000000000013.json.crc
│   │           │   │   │   ├── .00000000000000000014.json.crc
│   │           │   │   │   ├── .00000000000000000015.json.crc
│   │           │   │   │   ├── .00000000000000000016.json.crc
│   │           │   │   │   ├── .00000000000000000017.json.crc
│   │           │   │   │   ├── .00000000000000000018.json.crc
│   │           │   │   │   ├── .00000000000000000019.json.crc
│   │           │   │   │   ├── .00000000000000000020.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000020.json.crc
│   │           │   │   │   ├── .00000000000000000021.json.crc
│   │           │   │   │   ├── .00000000000000000022.json.crc
│   │           │   │   │   ├── .00000000000000000023.json.crc
│   │           │   │   │   ├── .00000000000000000024.json.crc
│   │           │   │   │   ├── .00000000000000000025.json.crc
│   │           │   │   │   ├── .00000000000000000026.json.crc
│   │           │   │   │   ├── .00000000000000000027.json.crc
│   │           │   │   │   ├── .00000000000000000028.json.crc
│   │           │   │   │   ├── .00000000000000000029.json.crc
│   │           │   │   │   ├── .00000000000000000030.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000030.json.crc
│   │           │   │   │   ├── .00000000000000000031.json.crc
│   │           │   │   │   ├── .00000000000000000032.json.crc
│   │           │   │   │   ├── .00000000000000000033.json.crc
│   │           │   │   │   ├── .00000000000000000034.json.crc
│   │           │   │   │   ├── .00000000000000000035.json.crc
│   │           │   │   │   ├── .00000000000000000036.json.crc
│   │           │   │   │   ├── .00000000000000000037.json.crc
│   │           │   │   │   ├── .00000000000000000038.json.crc
│   │           │   │   │   ├── .00000000000000000039.json.crc
│   │           │   │   │   ├── .00000000000000000040.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000040.json.crc
│   │           │   │   │   ├── .00000000000000000041.json.crc
│   │           │   │   │   ├── .00000000000000000042.json.crc
│   │           │   │   │   ├── .00000000000000000043.json.crc
│   │           │   │   │   ├── .00000000000000000044.json.crc
│   │           │   │   │   ├── .00000000000000000045.json.crc
│   │           │   │   │   ├── .00000000000000000046.json.crc
│   │           │   │   │   ├── ._last_checkpoint.crc
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   ├── 00000000000000000001.json
│   │           │   │   │   ├── 00000000000000000002.json
│   │           │   │   │   ├── 00000000000000000003.json
│   │           │   │   │   ├── 00000000000000000004.json
│   │           │   │   │   ├── 00000000000000000005.json
│   │           │   │   │   ├── 00000000000000000006.json
│   │           │   │   │   ├── 00000000000000000007.json
│   │           │   │   │   ├── 00000000000000000008.json
│   │           │   │   │   ├── 00000000000000000009.json
│   │           │   │   │   ├── 00000000000000000010.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000010.json
│   │           │   │   │   ├── 00000000000000000011.json
│   │           │   │   │   ├── 00000000000000000012.json
│   │           │   │   │   ├── 00000000000000000013.json
│   │           │   │   │   ├── 00000000000000000014.json
│   │           │   │   │   ├── 00000000000000000015.json
│   │           │   │   │   ├── 00000000000000000016.json
│   │           │   │   │   ├── 00000000000000000017.json
│   │           │   │   │   ├── 00000000000000000018.json
│   │           │   │   │   ├── 00000000000000000019.json
│   │           │   │   │   ├── 00000000000000000020.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000020.json
│   │           │   │   │   ├── 00000000000000000021.json
│   │           │   │   │   ├── 00000000000000000022.json
│   │           │   │   │   ├── 00000000000000000023.json
│   │           │   │   │   ├── 00000000000000000024.json
│   │           │   │   │   ├── 00000000000000000025.json
│   │           │   │   │   ├── 00000000000000000026.json
│   │           │   │   │   ├── 00000000000000000027.json
│   │           │   │   │   ├── 00000000000000000028.json
│   │           │   │   │   ├── 00000000000000000029.json
│   │           │   │   │   ├── 00000000000000000030.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000030.json
│   │           │   │   │   ├── 00000000000000000031.json
│   │           │   │   │   ├── 00000000000000000032.json
│   │           │   │   │   ├── 00000000000000000033.json
│   │           │   │   │   ├── 00000000000000000034.json
│   │           │   │   │   ├── 00000000000000000035.json
│   │           │   │   │   ├── 00000000000000000036.json
│   │           │   │   │   ├── 00000000000000000037.json
│   │           │   │   │   ├── 00000000000000000038.json
│   │           │   │   │   ├── 00000000000000000039.json
│   │           │   │   │   ├── 00000000000000000040.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000040.json
│   │           │   │   │   ├── 00000000000000000041.json
│   │           │   │   │   ├── 00000000000000000042.json
│   │           │   │   │   ├── 00000000000000000043.json
│   │           │   │   │   ├── 00000000000000000044.json
│   │           │   │   │   ├── 00000000000000000045.json
│   │           │   │   │   ├── 00000000000000000046.json
│   │           │   │   │   └── _last_checkpoint
│   │           │   │   ├── part-00000-87eec267-9acd-4e9a-a216-ec596132203d-c000.snappy.parquet
│   │           │   │   └── part-00001-c94c50bd-c7bb-4c0d-b6cb-958707d77d01-c000.snappy.parquet
│   │           │   ├── basic-with-checkpoint/
│   │           │   │   ├── .part-00000-0d9c05f4-8afc-4325-b1e0-ea32e4eff918-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-100e4547-5ff3-4735-9550-7757ca23c61d-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-14b8a37a-107b-455f-ab94-8f55e44c004b-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-1bbb3853-04b4-4539-a112-be7140314153-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-2a210d80-a4e6-4a1c-8716-ee0b542aee08-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-326010e2-01f4-4dfb-90a7-98cbc04a60d1-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-3317387d-183d-4db7-ac3e-596901d90de0-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-5c99dc53-38c0-420f-a91b-6df7a4c27a2b-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-5e9186c7-c7b0-4c4d-9f22-1c0cd403142c-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-6e367682-7cd1-48e6-bc2f-bc94aa94d1a3-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-8d5f08ff-261b-4315-99cb-d289a3191368-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-a65ab59f-72fd-44c9-a73e-e2d09459f836-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-ce6aed75-3e85-4d7c-90de-9d465e9acc04-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-e51a2d2a-d1a3-437e-a428-f5afe93d4619-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-eb1dae3f-8c89-46c3-818f-491cc673936a-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-30432f6b-710f-440c-8145-adbaed187c63-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-39e6196f-2259-4ba4-b1d6-005712cd7784-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-3cd0b397-0ac3-48ac-88ab-3cc21542e303-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-43e387db-3e56-44f3-8965-9187a80fce9a-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-4707caa4-d293-4b4a-aeef-fa4d5815e732-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-4e30e0a7-63d2-4d2f-a028-b92058c3c8cf-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-51925029-c591-4366-b3e9-aeea97594037-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-63b224e2-ba72-4b95-af02-5af2367d4130-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-8be0e82d-ce51-43a6-92eb-df71a9088173-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-a65a81c6-292a-49f2-8eea-82c0299cdfb3-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-a9a33a7f-26fa-447d-8b34-863b5f695f06-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-ba1ceb1e-6a37-4e2e-8e97-a17b9b1bb33d-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-d64b05c7-d80d-4eff-8c58-d209003ee4c0-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-ed427b16-f597-432a-a49e-135b126d38a8-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-fdaa71cc-84b2-43b1-b049-7cd36dbaa0de-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   ├── .00000000000000000001.json.crc
│   │           │   │   │   ├── .00000000000000000002.json.crc
│   │           │   │   │   ├── .00000000000000000003.json.crc
│   │           │   │   │   ├── .00000000000000000004.json.crc
│   │           │   │   │   ├── .00000000000000000005.json.crc
│   │           │   │   │   ├── .00000000000000000006.json.crc
│   │           │   │   │   ├── .00000000000000000007.json.crc
│   │           │   │   │   ├── .00000000000000000008.json.crc
│   │           │   │   │   ├── .00000000000000000009.json.crc
│   │           │   │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000010.json.crc
│   │           │   │   │   ├── .00000000000000000011.json.crc
│   │           │   │   │   ├── .00000000000000000012.json.crc
│   │           │   │   │   ├── .00000000000000000013.json.crc
│   │           │   │   │   ├── .00000000000000000014.json.crc
│   │           │   │   │   ├── ._last_checkpoint.crc
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   ├── 00000000000000000001.json
│   │           │   │   │   ├── 00000000000000000002.json
│   │           │   │   │   ├── 00000000000000000003.json
│   │           │   │   │   ├── 00000000000000000004.json
│   │           │   │   │   ├── 00000000000000000005.json
│   │           │   │   │   ├── 00000000000000000006.json
│   │           │   │   │   ├── 00000000000000000007.json
│   │           │   │   │   ├── 00000000000000000008.json
│   │           │   │   │   ├── 00000000000000000009.json
│   │           │   │   │   ├── 00000000000000000010.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000010.json
│   │           │   │   │   ├── 00000000000000000011.json
│   │           │   │   │   ├── 00000000000000000012.json
│   │           │   │   │   ├── 00000000000000000013.json
│   │           │   │   │   ├── 00000000000000000014.json
│   │           │   │   │   └── _last_checkpoint
│   │           │   │   ├── part-00000-0d9c05f4-8afc-4325-b1e0-ea32e4eff918-c000.snappy.parquet
│   │           │   │   ├── part-00000-100e4547-5ff3-4735-9550-7757ca23c61d-c000.snappy.parquet
│   │           │   │   ├── part-00000-14b8a37a-107b-455f-ab94-8f55e44c004b-c000.snappy.parquet
│   │           │   │   ├── part-00000-1bbb3853-04b4-4539-a112-be7140314153-c000.snappy.parquet
│   │           │   │   ├── part-00000-2a210d80-a4e6-4a1c-8716-ee0b542aee08-c000.snappy.parquet
│   │           │   │   ├── part-00000-326010e2-01f4-4dfb-90a7-98cbc04a60d1-c000.snappy.parquet
│   │           │   │   ├── part-00000-3317387d-183d-4db7-ac3e-596901d90de0-c000.snappy.parquet
│   │           │   │   ├── part-00000-5c99dc53-38c0-420f-a91b-6df7a4c27a2b-c000.snappy.parquet
│   │           │   │   ├── part-00000-5e9186c7-c7b0-4c4d-9f22-1c0cd403142c-c000.snappy.parquet
│   │           │   │   ├── part-00000-6e367682-7cd1-48e6-bc2f-bc94aa94d1a3-c000.snappy.parquet
│   │           │   │   ├── part-00000-8d5f08ff-261b-4315-99cb-d289a3191368-c000.snappy.parquet
│   │           │   │   ├── part-00000-a65ab59f-72fd-44c9-a73e-e2d09459f836-c000.snappy.parquet
│   │           │   │   ├── part-00000-ce6aed75-3e85-4d7c-90de-9d465e9acc04-c000.snappy.parquet
│   │           │   │   ├── part-00000-e51a2d2a-d1a3-437e-a428-f5afe93d4619-c000.snappy.parquet
│   │           │   │   ├── part-00000-eb1dae3f-8c89-46c3-818f-491cc673936a-c000.snappy.parquet
│   │           │   │   ├── part-00001-30432f6b-710f-440c-8145-adbaed187c63-c000.snappy.parquet
│   │           │   │   ├── part-00001-39e6196f-2259-4ba4-b1d6-005712cd7784-c000.snappy.parquet
│   │           │   │   ├── part-00001-3cd0b397-0ac3-48ac-88ab-3cc21542e303-c000.snappy.parquet
│   │           │   │   ├── part-00001-43e387db-3e56-44f3-8965-9187a80fce9a-c000.snappy.parquet
│   │           │   │   ├── part-00001-4707caa4-d293-4b4a-aeef-fa4d5815e732-c000.snappy.parquet
│   │           │   │   ├── part-00001-4e30e0a7-63d2-4d2f-a028-b92058c3c8cf-c000.snappy.parquet
│   │           │   │   ├── part-00001-51925029-c591-4366-b3e9-aeea97594037-c000.snappy.parquet
│   │           │   │   ├── part-00001-63b224e2-ba72-4b95-af02-5af2367d4130-c000.snappy.parquet
│   │           │   │   ├── part-00001-8be0e82d-ce51-43a6-92eb-df71a9088173-c000.snappy.parquet
│   │           │   │   ├── part-00001-a65a81c6-292a-49f2-8eea-82c0299cdfb3-c000.snappy.parquet
│   │           │   │   ├── part-00001-a9a33a7f-26fa-447d-8b34-863b5f695f06-c000.snappy.parquet
│   │           │   │   ├── part-00001-ba1ceb1e-6a37-4e2e-8e97-a17b9b1bb33d-c000.snappy.parquet
│   │           │   │   ├── part-00001-d64b05c7-d80d-4eff-8c58-d209003ee4c0-c000.snappy.parquet
│   │           │   │   ├── part-00001-ed427b16-f597-432a-a49e-135b126d38a8-c000.snappy.parquet
│   │           │   │   └── part-00001-fdaa71cc-84b2-43b1-b049-7cd36dbaa0de-c000.snappy.parquet
│   │           │   ├── catalog-owned-preview/
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   └── _staged_commits/
│   │           │   │   │       ├── 00000000000000000001.4cb9708e-b478-44de-b203-53f9ba9b2876.json
│   │           │   │   │       └── 00000000000000000002.5b9bba4a-0085-430d-a65e-b0d38c1afbe9.json
│   │           │   │   ├── info.txt
│   │           │   │   ├── part1=0/
│   │           │   │   │   └── part-00000-13fefaba-8ec2-4762-b17e-aeda657451c5.c000.snappy.parquet
│   │           │   │   └── part1=1/
│   │           │   │       └── part-00000-8afb1c56-2018-4af2-aa4f-4336c1b39efd.c000.snappy.parquet
│   │           │   ├── column-mapping-id/
│   │           │   │   ├── .part-00000-7f7d554f-a8f2-459f-aaca-9a3b7e8af2dc-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-85082a62-baeb-46c5-8970-c9c6c23dc33c-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   └── 00000000000000000000.json
│   │           │   │   ├── part-00000-7f7d554f-a8f2-459f-aaca-9a3b7e8af2dc-c000.snappy.parquet
│   │           │   │   └── part-00001-85082a62-baeb-46c5-8970-c9c6c23dc33c-c000.snappy.parquet
│   │           │   ├── data-reader-partition-values-column-mapping-name/
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   └── 00000000000000000000.json
│   │           │   │   ├── col-25948c99-9f51-4e05-9f9e-b4f7042f75ed=0/
│   │           │   │   │   └── col-6e87b90d-f5df-4dcc-91a1-7a43fa3173fa=0/
│   │           │   │   │       └── col-e3e3dce4-fbd4-4a52-a0bd-5d54af7a7a08=0/
│   │           │   │   │           └── col-29f826c0-7fff-4e5f-bc11-44a6975c7708=0/
│   │           │   │   │               └── col-7781d665-6951-4244-b9bc-a28e477e2d57=true/
│   │           │   │   │                   └── col-b72a5284-7c06-47f9-9e37-c88c3b54c6ae=0.0/
│   │           │   │   │                       └── col-3463c48b-4b94-4500-b14f-4a554284b94f=0.0/
│   │           │   │   │                           └── col-05f332c4-ebdb-4437-9e80-e23f92bee4a2=0/
│   │           │   │   │                               └── col-c025b8f8-481c-4db2-8932-f37129146ceb=2021-09-08/
│   │           │   │   │                                   └── col-bd963d5f-2199-4700-b5d6-0759bd7a9d90=2021-09-08 11%3A11%3A11/
│   │           │   │   │                                       └── col-01ec4063-ed54-41db-805e-ebfd9b9a6e67=0/

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
*.bat text eol=crlf
*.cmd text eol=crlf
*.bin binary


================================================
FILE: .github/CODEOWNERS
================================================
# CODEOWNERS file for Delta Lake
# This file defines code owners who must approve changes to specific files/directories.
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

# Build configuration files and directories
/build/                         @tdas
/build.sbt                      @tdas
/project/                       @tdas
/version.sbt                    @tdas

# Spark V2 and Unified modules
/spark/v2/                      @tdas @huan233usc @TimothyW553 @raveeram-db @murali-db
/spark-unified/                 @tdas @huan233usc @TimothyW553 @raveeram-db @murali-db

# All files in the root directory
/*                              @tdas


================================================
FILE: .github/ISSUE_TEMPLATE/bug-issue.md
================================================
---
name: Bug Issue
about: Use this template for reporting a bug
labels: 'bug'
title: '[BUG]'

---

## Bug

#### Which Delta project/connector is this regarding?
<!--
Please add the component selected below to the beginning of the issue title
For example: [BUG][Spark] Title of my issue
-->

- [ ] Spark
- [ ] Standalone
- [ ] Flink
- [ ] Kernel
- [ ] Other (fill in here)

### Describe the problem

#### Steps to reproduce

<!--
Please include copy-pastable code snippets if possible.
1. _____
2. _____
3. _____
-->

#### Observed results

<!-- What happened?  This could be a description, log output, etc. -->

#### Expected results

<!-- What did you expect to happen? -->

#### Further details

<!--
Include any additional details that may be useful for diagnosing the problem here. If including tracebacks, please include the full traceback. Large logs and files should be attached.
-->

### Environment information

* Delta Lake version:
* Spark version:
* Scala version:

### Willingness to contribute

The Delta Lake Community encourages bug fix contributions. Would you or another member of your organization be willing to contribute a fix for this bug to the Delta Lake code base?

- [ ] Yes. I can contribute a fix for this bug independently.
- [ ] Yes. I would be willing to contribute a fix for this bug with guidance from the Delta Lake community.
- [ ] No. I cannot contribute a bug fix at this time.


================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.md
================================================
---
name: Feature Request
about: Use this template for raising a feature request
labels: 'enhancement'
title: '[Feature Request]'

---

## Feature request

#### Which Delta project/connector is this regarding?
<!--
Please add the component selected below to the beginning of the issue title
For example: [Feature Request][Spark] Title of my issue
-->

- [ ] Spark
- [ ] Standalone
- [ ] Flink
- [ ] Kernel
- [ ] Other (fill in here)

### Overview

<!-- Provide a high-level description of the feature request. -->

### Motivation

<!-- How will this feature be used? Why is it important? Which users will benefit from it? -->

### Further details

<!--
Use this section to include any additional information about the feature. If you have a proposal for how to implement this feature, please include it here. For implementation guidelines, please read our contributor guidelines: https://github.com/delta-io/delta/blob/master/CONTRIBUTING.md
If there are any specific requirements for this feature that are not immediately obvious please outline them here.
-->

### Willingness to contribute

The Delta Lake Community encourages new feature contributions. Would you or another member of your organization be willing to contribute an implementation of this feature?

- [ ] Yes. I can contribute this feature independently.
- [ ] Yes. I would be willing to contribute this feature with guidance from the Delta Lake community.
- [ ] No. I cannot contribute this feature at this time.

================================================
FILE: .github/ISSUE_TEMPLATE/protocol-rfc.md
================================================
---
name: Protocol Change Request
about: Use this template to propose a new feature that impacts the Delta protocol specification
labels: 'protocol'
title: '[PROTOCOL RFC]'

---

## Protocol Change Request

### Description of the protocol change

<!--
Please describe the motivation and high-level description of the protocol change you are proposing.
For a fairly large protocol change, it is recommended that you provide a design doc - (e.g., a google doc, preferably with the ability to comment in the doc). 
For the next steps on how to proceed with the request, see the protocol RFC process in https://github.com/delta-io/delta/tree/master/protocol_rfcs
--> 


### Willingness to contribute

The Delta Lake Community encourages protocol innovations. Would you or another member of your organization be willing to contribute this feature to the Delta Lake code base?

- [ ] Yes. I can contribute.
- [ ] Yes. I would be willing to contribute with guidance from the Delta Lake community.
- [ ] No. I cannot contribute at this time.




================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Thanks for sending a pull request!  Here are some tips for you:
  1. If this is your first time, please read our contributor guidelines: https://github.com/delta-io/delta/blob/master/CONTRIBUTING.md
  2. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP] Your PR title ...'.
  3. Be sure to keep the PR description updated to reflect all changes.
  4. Please write your PR title to summarize what this PR proposes.
  5. If possible, provide a concise example to reproduce the issue for a faster review.
  6. If applicable, include the corresponding issue number in the PR title and link it in the body.
-->

#### Which Delta project/connector is this regarding?
<!--
Please add the component selected below to the beginning of the pull request title
For example: [Spark] Title of my pull request
-->

- [ ] Spark
- [ ] Standalone
- [ ] Flink
- [ ] Kernel
- [ ] Other (fill in here)

## Description

<!--
- Describe what this PR changes.
- Describe why we need the change.
 
If this PR resolves an issue be sure to include "Resolves #XXX" to correctly link and close the issue upon merge.
-->

## How was this patch tested?

<!--
If tests were added, say they were added here. Please make sure to test the changes thoroughly including negative and positive cases if possible.
If the changes were tested in any way other than unit tests, please clarify how you tested step by step (ideally copy and paste-able, so that other reviewers can test and check, and descendants can verify in the future).
If the changes were not tested, please explain why.
-->

## Does this PR introduce _any_ user-facing changes?

<!--
If yes, please clarify the previous behavior and the change this PR proposes - provide the console output, description and/or an example to show the behavior difference if possible.
If possible, please also clarify if this is a user-facing change compared to the released Delta Lake versions or within the unreleased branches such as master.
If no, write 'No'.
-->


================================================
FILE: .github/workflows/build.yaml
================================================
name: "Delta Build"
on:
  push:
    paths-ignore:
      - '**.md'
      - '**.txt'
  pull_request:
    paths-ignore:
      - '**.md'
      - '**.txt'
jobs:
  test:
    name: "Build Test"
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v3

      - name: Install Java 17
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "17"

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.9'

      - name: Cache Scala, SBT
        uses: actions/cache@v3
        with:
          path: |
            ~/.sbt
            ~/.ivy2
            ~/.cache/coursier
          key: delta-sbt-cache-cross-spark

      - name: Run cross-Spark build test
        run: python project/tests/test_cross_spark_publish.py


================================================
FILE: .github/workflows/flink_test.yaml
================================================
name: "Delta Flink"

on: [push, pull_request]

# Cancel previous runs when new commits are pushed
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  # Point SBT to our cache directories for consistency
  SBT_OPTS: "-Dsbt.coursier.home-dir=/home/runner/.cache/coursier -Dsbt.ivy.home=/home/runner/.ivy2"

jobs:
  test:
    name: "DF"
    runs-on: ubuntu-24.04
    steps:
      - name: Show runner specs
        run: |
          echo "=== GitHub Runner Specs ==="
          echo "CPU cores: $(nproc)"
          echo "CPU info: $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)"
          echo "Total RAM: $(free -h | grep '^Mem:' | awk '{print $2}')"
          echo "Available RAM: $(free -h | grep '^Mem:' | awk '{print $7}')"
          echo "Disk space: $(df -h / | tail -1 | awk '{print $2 " total, " $4 " available"}')"
          echo "Runner OS: ${{ runner.os }}"
          echo "Runner arch: ${{ runner.arch }}"
      - name: Checkout code
        uses: actions/checkout@v4
      # Run unit tests with JDK 17. These unit tests depend on Spark, and Spark 4.0+ is JDK 17.
      - name: install java
        uses: actions/setup-java@v4
        with:
          distribution: "zulu"
          java-version: "17"
      - name: Cache SBT and dependencies
        id: cache-sbt
        uses: actions/cache@v4
        with:
          path: |
            ~/.sbt
            ~/.ivy2/cache
            ~/.coursier/cache
            ~/.cache/coursier
          key: sbt-flink
      - name: Check cache status
        run: |
          if [ "${{ steps.cache-sbt.outputs.cache-hit }}" == "true" ]; then
            echo "✅ Cache HIT - using cached dependencies"
          else
            echo "❌ Cache MISS - will download dependencies"
          fi
      - name: Run unit tests
        run: |
          build/sbt flinkGroup/test


================================================
FILE: .github/workflows/iceberg_test.yaml
================================================
name: "Delta Iceberg Latest"
on:
  push:
    paths-ignore:
      - '**.md'
      - '**.txt'
  pull_request:
    paths-ignore:
      - '**.md'
      - '**.txt'
jobs:
  test:
    name: "DIL: Scala ${{ matrix.scala }}"
    runs-on: ubuntu-24.04
    strategy:
      matrix:
        # These Scala versions must match those in the build.sbt
        scala: [2.13.16]
    env:
      SCALA_VERSION: ${{ matrix.scala }}
    steps:
      - uses: actions/checkout@v3
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "17"
      - name: Cache Scala, SBT
        uses: actions/cache@v3
        with:
          path: |
            ~/.sbt
            ~/.ivy2
            ~/.cache/coursier
          # Change the key if dependencies are changed. For each key, GitHub Actions will cache the
          # the above directories when we use the key for the first time. After that, each run will
          # just use the cache. The cache is immutable so we need to use a new key when trying to
          # cache new stuff.
          key: delta-sbt-cache-spark4.0-scala${{ matrix.scala }}
      - name: Install Job dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
          sudo apt install libedit-dev
          curl -LO https://github.com/bufbuild/buf/releases/download/v1.28.1/buf-Linux-x86_64.tar.gz
          mkdir -p ~/buf
          tar -xvzf buf-Linux-x86_64.tar.gz -C ~/buf --strip-components 1
          rm buf-Linux-x86_64.tar.gz
          sudo apt install python3-pip --fix-missing
          sudo pip3 install pipenv==2024.4.1
          curl https://pyenv.run | bash
          export PATH="~/.pyenv/bin:$PATH"
          eval "$(pyenv init -)"
          eval "$(pyenv virtualenv-init -)"
          pyenv install 3.8.18
          pyenv global system 3.8.18
          pipenv --python 3.8.18 install
      - name: Run Scala/Java and Python tests
        # when changing TEST_PARALLELISM_COUNT make sure to also change it in spark_master_test.yaml
        run: |
          TEST_PARALLELISM_COUNT=4 pipenv run python run-tests.py --group iceberg --spark-version 4.0


================================================
FILE: .github/workflows/kernel_docs.yaml
================================================
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages

on:
  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  # Single deploy job since we're just deploying
  deploy_docs:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "11"
      - name: Generate docs
        run: |
          build/sbt kernelGroup/unidoc
          mkdir -p kernel/docs/snapshot/kernel-api/java
          mkdir -p kernel/docs/snapshot/kernel-defaults/java
          cp -r kernel/kernel-api/target/javaunidoc/. kernel/docs/snapshot/kernel-api/java/
          cp -r kernel/kernel-defaults/target/javaunidoc/. kernel/docs/snapshot/kernel-defaults/java/
      - name: Setup Pages
        uses: actions/configure-pages@v3
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v1
        with:
          # Upload kernel docs
          path: kernel/docs
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v2


================================================
FILE: .github/workflows/kernel_test.yaml
================================================
name: "Delta Kernel"

on:
  push:
    paths-ignore:
      - '**.md'
      - '**.txt'
  pull_request:
    paths-ignore:
      - '**.md'
      - '**.txt'

# Cancel previous runs when new commits are pushed
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  # Point SBT to our cache directories for consistency
  SBT_OPTS: "-Dsbt.coursier.home-dir=/home/runner/.cache/coursier -Dsbt.ivy.home=/home/runner/.ivy2"

jobs:
  test:
    name: "DK: Shard ${{ matrix.shard }}"
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false # Allow all shards to run even if one fails
      matrix:
        shard: [0, 1, 2, 3]
    env:
      SCALA_VERSION: 2.13.16
      NUM_SHARDS: 4
      DISABLE_UNIDOC: true # Another unidoc workflow will test unidoc.
      TEST_PARALLELISM_COUNT: 4
    steps:
      - name: Show runner specs
        run: |
          echo "=== GitHub Runner Specs ==="
          echo "CPU cores: $(nproc)"
          echo "CPU info: $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)"
          echo "Total RAM: $(free -h | grep '^Mem:' | awk '{print $2}')"
          echo "Available RAM: $(free -h | grep '^Mem:' | awk '{print $7}')"
          echo "Disk space: $(df -h / | tail -1 | awk '{print $2 " total, " $4 " available"}')"
          echo "Runner OS: ${{ runner.os }}"
          echo "Runner arch: ${{ runner.arch }}"
      - name: Checkout code
        uses: actions/checkout@v4
      # Run unit tests with JDK 17. These unit tests depend on Spark, and Spark 4.0+ is JDK 17.
      - name: install java
        uses: actions/setup-java@v4
        with:
          distribution: "zulu"
          java-version: "17"
      - name: Cache SBT and dependencies
        id: cache-sbt
        uses: actions/cache@v4
        with:
          path: |
            ~/.sbt
            ~/.ivy2/cache
            ~/.coursier/cache
            ~/.cache/coursier
          key: sbt-kernel-${{ runner.os }}-scala${{ env.SCALA_VERSION }}
      - name: Check cache status
        run: |
          if [ "${{ steps.cache-sbt.outputs.cache-hit }}" == "true" ]; then
            echo "✅ Cache HIT - using cached dependencies"
          else
            echo "❌ Cache MISS - will download dependencies"
          fi
      - name: Run unit tests
        run: |
          python run-tests.py --group kernel --coverage --shard ${{ matrix.shard }}

  integration-test:
    name: "DK: Integration"
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v3
      # Run integration tests with JDK 11, as they have no Spark dependency
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "11"
      - name: Run integration tests
        run: |
          cd kernel/examples && python run-kernel-examples.py --use-local


================================================
FILE: .github/workflows/kernel_unitycatalog_test.yaml
================================================
name: "Kernel Unity Catalog"
on:
  push:
    paths:
      - 'build.sbt'
      - 'version.sbt'
      - 'kernel/**/*.scala'
      - 'kernel/**/*.java'
      - 'storage/**/*.scala'
      - 'storage/**/*.java'
      - '.github/workflows/kernel_unitycatalog_test.yaml'
  pull_request:
    paths:
      - 'build.sbt'
      - 'version.sbt'
      - 'kernel/**/*.scala'
      - 'kernel/**/*.java'
      - 'storage/**/*.scala'
      - 'storage/**/*.java'
      - '.github/workflows/kernel_unitycatalog_test.yaml'
jobs:
  test:
    name: "Kernel Unity Catalog Tests"
    runs-on: ubuntu-24.04
    env:
      SCALA_VERSION: 2.13.16
    steps:
      - uses: actions/checkout@v3
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "17"
      - name: Run Unity tests with coverage
        run: |
          ./build/sbt "++ ${{ env.SCALA_VERSION }}" clean coverage kernelUnityCatalog/test coverageAggregate coverageOff -v


================================================
FILE: .github/workflows/publish_docs.yaml
================================================
name: Publish Docs

on:
  push:
    branches:
      - master
    paths:
      - docs/**
  release:
    types:
      - published
  workflow_dispatch:

jobs:
  build_api_docs:
    name: Build API docs (${{ matrix.version.name }})
    runs-on: ubuntu-latest

    strategy:
      matrix:
        version:
          - name: latest
            ref: v4.0.1
            java: 17
            out_dir: docs/apis/_site/api
          - name: 3.3.2
            ref: v3.3.2
            java: 8
            out_dir: docs/apis/_site/api

    steps:
      - uses: actions/checkout@v4
        with:
          repository: delta-io/delta
          ref: ${{ matrix.version.ref }}

      - uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: ${{ matrix.version.java }}

      - name: Setup python environment
        uses: conda-incubator/setup-miniconda@v3
        with:
          activate-environment: delta_docs
          environment-file: docs/environment.yml

      - name: Fix generate_api_docs script
        if: contains(matrix.version.ref, 'v4')
        run: |
          sed -i 's|scala-2\.12|scala-2.13|g' docs/apis/generate_api_docs.py
          sed -i '/standalone_javadoc_gen_dir,/d' docs/apis/generate_api_docs.py
          sed -i '/flink_javadoc_gen_dir,/d' docs/apis/generate_api_docs.py

      - name: Generate API docs
        shell: bash -el {0}
        run: python3 docs/generate_docs.py --api-docs
        env:
          _DELTA_LAKE_RELEASE_VERSION_: ${{ matrix.version.name }}

      - name: Move doc contents up one level
        run: |
          find docs/apis/_site/api -type d \( -name "unidoc" -o -name "javaunidoc" -o -name "html" \) | while read dir; do
            echo "Processing $dir"
            parent="$(dirname "$dir")"
            # Move all files (including hidden ones) using find
            find "$dir" -maxdepth 1 -type f -exec mv {} "$parent"/ \;
            # Move all subdirectories
            find "$dir" -maxdepth 1 -type d ! -path "$dir" -exec mv {} "$parent"/ \;
            rmdir "$dir"
          done

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: ${{ github.run_id }}-apidocs-${{ matrix.version.name }}
          path: ${{ matrix.version.out_dir }}

  build_site:
    name: Build site
    needs: build_api_docs
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: docs/.nvmrc

      - uses: pnpm/action-setup@v4
        name: Install pnpm
        with:
          package_json_file: docs/package.json

      - name: Install Node.js dependencies
        run: pnpm install
        working-directory: docs

      - name: Download API docs artifacts
        uses: actions/download-artifact@v4
        with:
          pattern: ${{ github.run_id }}-apidocs-*
          path: docs/public/api

      - name: Rename API docs artifact folders
        run: |
          for d in docs/public/api/${{ github.run_id }}-apidocs-*; do
            [ -d "$d" ] || continue
            new_name="$(echo "$d" | sed "s|docs/public/api/${{ github.run_id }}-apidocs-||")"
            mv "$d" "docs/public/api/$new_name"
          done

      - name: Generate docs site
        run: python3 docs/generate_docs.py

      - name: Install Netlify CLI
        run: pnpm i -g netlify-cli

      - name: Publish site to Netlify
        run: netlify deploy --dir=docs/dist --prod
        env:
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
          NETLIFY_SITE_ID: ${{ vars.NETLIFY_SITE_ID }}


================================================
FILE: .github/workflows/spark_examples_test.yaml
================================================
name: "Delta Spark Publishing and Examples"
on:
  push:
    paths-ignore:
      - '**.md'
      - '**.txt'
  pull_request:
    paths-ignore:
      - '**.md'
      - '**.txt'
jobs:
  # Generate Spark versions matrix from CrossSparkVersions.scala
  # This workflow tests against released versions only (no snapshots)
  generate-matrix:
    name: "Generate Released Spark Versions Matrix"
    runs-on: ubuntu-24.04
    outputs:
      spark_versions: ${{ steps.generate.outputs.spark_versions }}
    steps:
      - uses: actions/checkout@v3
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "17"
      - name: Generate released Spark versions matrix
        id: generate
        run: |
          # Get only released versions (exclude snapshots)
          SPARK_VERSIONS=$(python3 project/scripts/get_spark_version_info.py --released-spark-versions)
          echo "spark_versions=$SPARK_VERSIONS" >> $GITHUB_OUTPUT
          echo "Generated released Spark versions: $SPARK_VERSIONS"

  test:
    name: "DSP&E: Spark ${{ matrix.spark_version }}, Scala ${{ matrix.scala }}"
    runs-on: ubuntu-24.04
    needs: generate-matrix
    strategy:
      matrix:
        # Spark versions are dynamically generated - released versions only
        spark_version: ${{ fromJson(needs.generate-matrix.outputs.spark_versions) }}
        # These Scala versions must match those in the build.sbt
        scala: [2.13.17]
    env:
      SCALA_VERSION: ${{ matrix.scala }}
    steps:
      - uses: actions/checkout@v3
      - name: Get Spark version details
        id: spark-details
        run: |
          # Get JVM version, package suffix, iceberg support, and full version for this Spark version
          JVM_VERSION=$(python3 project/scripts/get_spark_version_info.py --get-field "${{ matrix.spark_version }}" targetJvm | jq -r)
          SPARK_PACKAGE_SUFFIX=$(python3 project/scripts/get_spark_version_info.py --get-field "${{ matrix.spark_version }}" packageSuffix | jq -r)
          SUPPORT_ICEBERG=$(python3 project/scripts/get_spark_version_info.py --get-field "${{ matrix.spark_version }}" supportIceberg | jq -r)
          SPARK_FULL_VERSION=$(python3 project/scripts/get_spark_version_info.py --get-field "${{ matrix.spark_version }}" fullVersion | jq -r)
          echo "jvm_version=$JVM_VERSION" >> $GITHUB_OUTPUT
          echo "spark_package_suffix=$SPARK_PACKAGE_SUFFIX" >> $GITHUB_OUTPUT
          echo "support_iceberg=$SUPPORT_ICEBERG" >> $GITHUB_OUTPUT
          echo "spark_full_version=$SPARK_FULL_VERSION" >> $GITHUB_OUTPUT
          echo "Using JVM $JVM_VERSION for Spark $SPARK_FULL_VERSION, package suffix: '$SPARK_PACKAGE_SUFFIX', support iceberg: '$SUPPORT_ICEBERG'"
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: ${{ steps.spark-details.outputs.jvm_version }}
      - name: Cache Scala, SBT
        uses: actions/cache@v3
        with:
          path: |
            ~/.sbt
            ~/.ivy2
            ~/.cache/coursier
          # Change the key if dependencies are changed. For each key, GitHub Actions will cache the
          # the above directories when we use the key for the first time. After that, each run will
          # just use the cache. The cache is immutable so we need to use a new key when trying to
          # cache new stuff.
          key: delta-sbt-cache-spark${{ matrix.spark_version }}-scala${{ matrix.scala }}
      - name: Install Job dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
          sudo apt install libedit-dev
      - name: Run Delta Spark Local Publishing and Examples Compilation
        # examples/scala/build.sbt will compile against the local Delta release version (e.g. 3.2.0-SNAPSHOT).
        # Thus, we need to publishM2 first so those jars are locally accessible.
        # -DsparkVersion is for the Delta project's publishM2 (which Spark version to compile Delta against).
        # SPARK_VERSION/SPARK_PACKAGE_SUFFIX/SUPPORT_ICEBERG are for examples/scala/build.sbt (dependency resolution).
        env:
          SPARK_PACKAGE_SUFFIX: ${{ steps.spark-details.outputs.spark_package_suffix }}
          SUPPORT_ICEBERG: ${{ steps.spark-details.outputs.support_iceberg }}
          SPARK_VERSION: ${{ steps.spark-details.outputs.spark_full_version }}
        run: |
          build/sbt clean
          build/sbt -DsparkVersion=${{ steps.spark-details.outputs.spark_full_version }} publishM2
          cd examples/scala && build/sbt "++ $SCALA_VERSION compile"
      - name: Run UC Delta Integration Test
        # Verifies that delta-spark resolved from Maven local includes all kernel module
        # dependencies transitively by running a real UC-backed Delta workload.
        env:
          SPARK_PACKAGE_SUFFIX: ${{ steps.spark-details.outputs.spark_package_suffix }}
          SPARK_VERSION: ${{ steps.spark-details.outputs.spark_full_version }}
        run: |
          cd examples/scala && build/sbt "++ $SCALA_VERSION runMain example.UnityCatalogQuickstart"


================================================
FILE: .github/workflows/spark_python_test.yaml
================================================
name: "Delta Spark Python"
on:
  push:
    paths-ignore:
      - '**.md'
      - '**.txt'
  pull_request:
    paths-ignore:
      - '**.md'
      - '**.txt'
jobs:
  # Generate Spark versions matrix from CrossSparkVersions.scala
  # This workflow tests against released versions only (no snapshots)
  generate-matrix:
    name: "Generate Released Spark Versions Matrix"
    runs-on: ubuntu-24.04
    outputs:
      spark_versions: ${{ steps.generate.outputs.spark_versions }}
    steps:
      - uses: actions/checkout@v3
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "17"
      - name: Generate released Spark versions matrix
        id: generate
        run: |
          # Get only released versions (exclude snapshots)
          SPARK_VERSIONS=$(python3 project/scripts/get_spark_version_info.py --released-spark-versions)
          echo "spark_versions=$SPARK_VERSIONS" >> $GITHUB_OUTPUT
          echo "Generated released Spark versions: $SPARK_VERSIONS"

  test:
    name: "DSP (${{ matrix.spark_version }})"
    runs-on: ubuntu-24.04
    needs: generate-matrix
    strategy:
      matrix:
        # Spark versions are dynamically generated - released versions only
        spark_version: ${{ fromJson(needs.generate-matrix.outputs.spark_versions) }}
        # These Scala versions must match those in the build.sbt
        scala: [2.13.16]
    env:
      SCALA_VERSION: ${{ matrix.scala }}
      SPARK_VERSION: ${{ matrix.spark_version }}
    steps:
      - uses: actions/checkout@v3
      - name: Get Spark version details
        id: spark-details
        run: |
          # Get JVM version and full Spark version for this matrix entry
          JVM_VERSION=$(python3 project/scripts/get_spark_version_info.py --get-field "${{ matrix.spark_version }}" targetJvm | jq -r)
          FULL_VERSION=$(python3 project/scripts/get_spark_version_info.py --get-field "${{ matrix.spark_version }}" fullVersion | jq -r)
          echo "jvm_version=$JVM_VERSION" >> $GITHUB_OUTPUT
          echo "spark_full_version=$FULL_VERSION" >> $GITHUB_OUTPUT
          echo "Using JVM $JVM_VERSION for Spark ${{ matrix.spark_version }} (full: $FULL_VERSION)"
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: ${{ steps.spark-details.outputs.jvm_version }}
      - name: Cache Scala, SBT
        uses: actions/cache@v3
        with:
          path: |
            ~/.sbt
            ~/.ivy2
            ~/.cache/coursier
          # Change the key if dependencies are changed. For each key, GitHub Actions will cache the
          # the above directories when we use the key for the first time. After that, each run will
          # just use the cache. The cache is immutable so we need to use a new key when trying to
          # cache new stuff.
          key: delta-sbt-cache-spark${{ matrix.spark_version }}-scala${{ matrix.scala }}
      - name: Install Job dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
          sudo apt install libedit-dev
          curl -LO https://github.com/bufbuild/buf/releases/download/v1.28.1/buf-Linux-x86_64.tar.gz
          mkdir -p ~/buf
          tar -xvzf buf-Linux-x86_64.tar.gz -C ~/buf --strip-components 1
          rm buf-Linux-x86_64.tar.gz
          sudo apt install python3-pip --fix-missing
          sudo pip3 install pipenv==2024.4.1
          curl https://pyenv.run | bash
          export PATH="~/.pyenv/bin:$PATH"
          eval "$(pyenv init -)"
          eval "$(pyenv virtualenv-init -)"
          pyenv install 3.10
          pyenv global system 3.10
          pipenv --python 3.10 install
          # Update the pip version to 24.0. By default `pyenv.run` installs the latest pip version
          # available. From version 24.1, `pip` doesn't allow installing python packages
          # with version string containing `-`. In Delta-Spark case, the pypi package generated has
          # `-SNAPSHOT` in version (e.g. `3.3.0-SNAPSHOT`) as the version is picked up from
          # the`version.sbt` file.
          pipenv run pip install pip==24.0 setuptools==69.5.1 wheel==0.43.0
          # Install pyspark matching the full spark version
          pipenv run pip install pyspark==${{ steps.spark-details.outputs.spark_full_version }}
          pipenv run pip install flake8==3.9.0
          pipenv run pip install black==23.12.1
          pipenv run pip install importlib_metadata==3.10.0
          pipenv run pip install mypy==1.8.0
          pipenv run pip install mypy-protobuf==3.3.0
          pipenv run pip install cryptography==37.0.4
          pipenv run pip install twine==4.0.1
          pipenv run pip install wheel==0.33.4
          pipenv run pip install setuptools==41.1.0
          pipenv run pip install pydocstyle==3.0.0
          pipenv run pip install pandas==2.2.0
          pipenv run pip install pyarrow==15.0.0
          pipenv run pip install pypandoc==1.3.3
          pipenv run pip install numpy==1.22.4
          pipenv run pip install googleapis-common-protos-stubs==2.2.0
          pipenv run pip install grpc-stubs==1.24.11
          # Version-specific dependencies for Spark Connect compatibility
          if [[ "${{ matrix.spark_version }}" == "4.0" ]]; then
            pipenv run pip install grpcio==1.67.0
            pipenv run pip install grpcio-status==1.67.0
            pipenv run pip install googleapis-common-protos==1.65.0
            pipenv run pip install protobuf==5.29.1
          else
            # Spark 4.1+ requirements from https://github.com/apache/spark/blob/branch-4.1/dev/requirements.txt
            pipenv run pip install grpcio==1.76.0
            pipenv run pip install grpcio-status==1.76.0
            pipenv run pip install googleapis-common-protos==1.71.0
            pipenv run pip install protobuf==6.33.0
            pipenv run pip install zstandard==0.25.0
          fi
      - name: Run Python tests
        # when changing TEST_PARALLELISM_COUNT make sure to also change it in spark_test.yaml
        run: |
          TEST_PARALLELISM_COUNT=4 pipenv run python run-tests.py --group spark-python --spark-version ${{ matrix.spark_version }}


================================================
FILE: .github/workflows/spark_test.yaml
================================================
name: "Delta Spark"
on:
  push:
    paths-ignore:
      - '**.md'
      - '**.txt'
  pull_request:
    paths-ignore:
      - '**.md'
      - '**.txt'
jobs:
  # Generate Spark versions matrix from CrossSparkVersions.scala
  # This ensures the workflow always uses the versions defined in the build
  generate-matrix:
    name: "Generate Spark Versions Matrix"
    runs-on: ubuntu-24.04
    outputs:
      spark_versions: ${{ steps.generate.outputs.spark_versions }}
    steps:
      - uses: actions/checkout@v3
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: "17"
      - name: Generate Spark versions matrix
        id: generate
        run: |
          # The script automatically generates spark-versions.json from CrossSparkVersions.scala
          SPARK_VERSIONS=$(python3 project/scripts/get_spark_version_info.py --all-spark-versions)
          echo "spark_versions=$SPARK_VERSIONS" >> $GITHUB_OUTPUT
          echo "Generated Spark versions: $SPARK_VERSIONS"

  test:
    name: "DS: Spark ${{ matrix.spark_version }}, Scala ${{ matrix.scala }}, Shard ${{ matrix.shard }}"
    runs-on: ubuntu-24.04
    needs: generate-matrix
    strategy:
      fail-fast: false
      matrix:
        # Spark versions are dynamically generated from CrossSparkVersions.scala
        # DO NOT hardcode versions here - they are automatically loaded from the build configuration
        spark_version: ${{ fromJson(needs.generate-matrix.outputs.spark_versions) }}
        # These Scala versions must match those in the build.sbt
        scala: [2.13.16]
        # Important: This list of shards must be [0..NUM_SHARDS - 1]
        shard: [0, 1, 2, 3, 4, 5, 6, 7]
    env:
      SCALA_VERSION: ${{ matrix.scala }}
      SPARK_VERSION: ${{ matrix.spark_version }}
      # Important: This must be the same as the length of shards in matrix
      NUM_SHARDS: 8
    steps:
      - uses: actions/checkout@v3
      - name: Get Spark version details
        id: spark-details
        run: |
          # The script automatically generates spark-versions.json if needed
          JVM_VERSION=$(python3 project/scripts/get_spark_version_info.py --get-field "${{ matrix.spark_version }}" targetJvm | jq -r)
          echo "jvm_version=$JVM_VERSION" >> $GITHUB_OUTPUT
          echo "Using JVM version: $JVM_VERSION for Spark ${{ matrix.spark_version }}"
      - name: install java
        uses: actions/setup-java@v3
        with:
          distribution: "zulu"
          java-version: ${{ steps.spark-details.outputs.jvm_version }}
      - name: Cache Scala, SBT
        uses: actions/cache@v3
        with:
          path: |
            ~/.sbt
            ~/.ivy2
            ~/.cache/coursier
          # Change the key if dependencies are changed. For each key, GitHub Actions will cache the
          # the above directories when we use the key for the first time. After that, each run will
          # just use the cache. The cache is immutable so we need to use a new key when trying to
          # cache new stuff.
          key: delta-sbt-cache-spark${{ matrix.spark_version }}-scala${{ matrix.scala }}
      - name: Install Job dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git
          sudo apt install libedit-dev
          curl -LO https://github.com/bufbuild/buf/releases/download/v1.28.1/buf-Linux-x86_64.tar.gz
          mkdir -p ~/buf
          tar -xvzf buf-Linux-x86_64.tar.gz -C ~/buf --strip-components 1
          rm buf-Linux-x86_64.tar.gz
          sudo apt install python3-pip --fix-missing
          sudo pip3 install pipenv==2024.4.1
          curl https://pyenv.run | bash
          export PATH="~/.pyenv/bin:$PATH"
          eval "$(pyenv init -)"
          eval "$(pyenv virtualenv-init -)"
          pyenv install 3.9
          pyenv global system 3.9
          pipenv --python 3.9 install
          # Update the pip version to 24.0. By default `pyenv.run` installs the latest pip version
          # available. From version 24.1, `pip` doesn't allow installing python packages
          # with version string containing `-`. In Delta-Spark case, the pypi package generated has
          # `-SNAPSHOT` in version (e.g. `3.3.0-SNAPSHOT`) as the version is picked up from
          # the`version.sbt` file.
          pipenv run pip install pip==24.0 setuptools==69.5.1 wheel==0.43.0
          pipenv run pip install flake8==3.9.0
          pipenv run pip install black==23.12.1
          pipenv run pip install importlib_metadata==3.10.0
          pipenv run pip install mypy==1.8.0
          pipenv run pip install mypy-protobuf==3.3.0
          pipenv run pip install cryptography==37.0.4
          pipenv run pip install twine==4.0.1
          pipenv run pip install wheel==0.33.4
          pipenv run pip install setuptools==41.1.0
          pipenv run pip install pydocstyle==3.0.0
          pipenv run pip install pandas==2.2.0
          pipenv run pip install pyarrow==11.0.0
          pipenv run pip install pypandoc==1.3.3
          pipenv run pip install numpy==1.22.4
          pipenv run pip install grpcio==1.67.0
          pipenv run pip install grpcio-status==1.67.0
          pipenv run pip install googleapis-common-protos==1.65.0
          pipenv run pip install protobuf==5.29.1
          pipenv run pip install googleapis-common-protos-stubs==2.2.0
          pipenv run pip install grpc-stubs==1.24.11
      - name: Scala structured logging style check
        run: |
          if [ -f ./dev/spark_structured_logging_style.py ]; then
              python3 ./dev/spark_structured_logging_style.py
          fi
      - name: Run Scala/Java tests
        # when changing TEST_PARALLELISM_COUNT make sure to also change it in spark_python_test.yaml
        run: |
          TEST_PARALLELISM_COUNT=4 pipenv run python run-tests.py --group spark --shard ${{ matrix.shard }} --spark-version ${{ matrix.spark_version }}
      - name: Upload test reports
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: test-reports-spark${{ matrix.spark_version }}-shard${{ matrix.shard }}
          path: "**/target/test-reports/*.xml"
          retention-days: 7


================================================
FILE: .github/workflows/unidoc.yaml
================================================
  name: "Unidoc"
  on: [push, pull_request]
  jobs:
    build:
      name: "U: Scala ${{ matrix.scala }}"
      runs-on: ubuntu-24.04
      strategy:
        matrix:
          # These Scala versions must match those in the build.sbt
          scala: [2.13.16]
      steps:
        - name: install java
          uses: actions/setup-java@v3
          with:
            distribution: "zulu"
            java-version: "17"
        - uses: actions/checkout@v3
        - name: generate unidoc
          run: build/sbt "++ ${{ matrix.scala }}" unidoc


================================================
FILE: .gitignore
================================================
*#*#
*.#*
*.iml
*.ipr
*.iws
*.pyc
*.pyo
*.swp
*~
.DS_Store
.ammonite
.bloop
.bsp
.cache
.classpath
.ensime
.ensime_cache/
.ensime_lucene
.generated-mima*
.idea/
.idea_modules/
.metals
.project
.pydevproject
.scala_dependencies
.settings
/lib/
R-unit-tests.log
R/unit-tests.out
R/cran-check.out
R/pkg/vignettes/sparkr-vignettes.html
R/pkg/tests/fulltests/Rplots.pdf
build/*.jar
build/apache-maven*
build/scala*
build/zinc*
cache
checkpoint
conf/*.cmd
conf/*.conf
conf/*.properties
conf/*.sh
conf/*.xml
conf/java-opts
dependency-reduced-pom.xml
derby.log
dev/create-release/*final
dev/create-release/*txt
dev/pr-deps/
dist/
docs/_site
docs/api
sql/docs
sql/site
lib_managed/
lint-r-report.log
log/
logs/
metals.sbt
out/
project/boot/
project/build/target/
project/plugins/lib_managed/
project/plugins/project/build.properties
project/plugins/src_managed/
project/plugins/target/
python/lib/pyspark.zip
python/deps
docs/python/_static/
docs/python/_templates/
docs/python/_build/
python/test_coverage/coverage_data
python/test_coverage/htmlcov
python/pyspark/python
reports/
scalastyle-on-compile.generated.xml
scalastyle-output.xml
scalastyle.txt
spark-*-bin-*.tgz
spark-tests.log
src_managed/
streaming-tests.log
target/
unit-tests.log
work/
docs/.jekyll-metadata

# For Hive
TempStatsStore/
metastore/
metastore_db/
sql/hive-thriftserver/test_warehouses
warehouse/
spark-warehouse/

# For R session data
.RData
.RHistory
.Rhistory
*.Rproj
*.Rproj.*

.Rproj.user

**/src/main/resources/js

# For SBT
.jvmopts
sbt-launch-*.jar

# For Python linting
pep8*.py
pycodestyle*.py

# For IDE settings
.vscode

# For Terraform
**/.terraform/*
*.tfstate
*.tfstate.*
crash.log
crash.*.log
*.tfvars
*.tfvars.json
override.tf
override.tf.json
*_override.tf
*_override.tf.json
.terraformrc
.terraform.rc

# Local Netlify folder
.netlify

# Ignore kernel benchmark report
kernel/kernel-benchmarks/benchmark_report.json

# Unity Catalog test artifacts
spark/unitycatalog/etc/
.scala-build/



================================================
FILE: .sbtopts
================================================
-J-Xmx4G


================================================
FILE: .scalafmt.conf
================================================
# Copyright (2025) The Delta Lake Project Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

align = none
align.openParenDefnSite = false
align.openParenCallSite = false
align.tokens = []
importSelectors = "singleLine"
optIn.configStyleArguments = false
continuationIndent {
  callSite = 2
  defnSite = 4
}
danglingParentheses {
  defnSite = false
  callSite = false
}
docstrings {
  style = Asterisk
  wrap = no
}
literals.hexDigits = upper
maxColumn = 100
newlines {
  beforeCurlyLambdaParams = false
  source = keep
}
rewrite.rules = [Imports]
rewrite.imports.sort = scalastyle
rewrite.imports.groups = [
  ["java\\..*"],
  ["scala\\..*"],
  ["io\\.delta\\..*"],
  ["org\\.apache\\.spark\\.sql\\.delta.*"]
]
runner.dialect = scala212
version = 3.8.6


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Delta Lake Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:
shipit
* The use of sexualized language or imagery and unwelcome sexual attention or
 advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
 address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
 professional setting
shipit
## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the Technical Steering Committee defined [here](https://github.com/delta-io/delta/blob/master/CONTRIBUTING.md#governance). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

## Linux Foundation Code of Conduct
Your use is additionally subject to the [Linux Foundation Code of Conduct](https://lfprojects.org/policies/code-of-conduct/)


================================================
FILE: CONTRIBUTING.md
================================================
We happily welcome contributions to Delta Lake. We use [GitHub Issues](/../../issues/) to track community reported issues and [GitHub Pull Requests ](/../../pulls/) for accepting changes.

# Governance
Delta Lake is an independent open-source project and not controlled by any single company. To emphasize this we joined the [Delta Lake Project](https://community.linuxfoundation.org/delta-lake/) in 2019, which is a sub-project of the Linux Foundation Projects. Within the project, we make decisions based on [these rules](https://delta.io/pdfs/delta-charter.pdf).

Delta Lake is supported by a wide set of developers from over 50 organizations across multiple repositories.  Since 2019, more than 190 developers have contributed to Delta Lake!  The Delta Lake community is growing by leaps and bounds with more than 6000 members in the [Delta Users slack](https://go.delta.io/slack)).

For more information, please refer to the [founding technical charter](https://delta.io/pdfs/delta-charter.pdf).

# Communication
- Before starting work on a major feature, please reach out to us via [GitHub](https://github.com/delta-io/delta/issues), [Slack](https://go.delta.io/slack), [email](https://groups.google.com/g/delta-users), etc. We will make sure no one else is already working on it and ask you to open a GitHub issue.
- A "major feature" is defined as any change that is > 100 LOC altered (not including tests), or changes any user-facing behavior.
- We will use the GitHub issue to discuss the feature and come to agreement.
- This is to prevent your time being wasted, as well as ours.
- The GitHub review process for major features is also important so that organizations with commit access can come to agreement on design.
- If it is appropriate to write a design document, the document must be hosted either in the GitHub tracking issue, or linked to from the issue and hosted in a world-readable location. Examples of design documents include [sample 1](https://docs.google.com/document/d/16S7xoAmXpSax7W1OWYYHo5nZ71t5NvrQ-F79pZF6yb8), [sample 2](https://docs.google.com/document/d/1MJhmW_H7doGWY2oty-I78vciziPzBy_nzuuB-Wv5XQ8), and [sample 3](https://docs.google.com/document/d/19CU4eJuBXOwW7FC58uSqyCbcLTsgvQ5P1zoPOPgUSpI).
- Specifically, if the goal is to add a new extension, please read the extension policy.
- Small patches and bug fixes don't need prior communication. If you have identified a bug and have ways to solve it, please create an [issue](https://github.com/delta-io/delta/issues) or create a [pull request](https://github.com/delta-io/delta/pulls).
- If you have an example code that explains a use case or a feature, create a pull request to post under [examples](https://github.com/delta-io/delta/tree/master/examples). 


# Coding style
We generally follow the [Apache Spark Scala Style Guide](https://spark.apache.org/contributing.html).

# Sign your work
The sign-off is a simple line at the end of the explanation for the patch. Your signature certifies that you wrote the patch or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify the below (from developercertificate.org):

```
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
```

Then you just add a line to every git commit message:

```
Signed-off-by: Jane Smith <jane.smith@email.com>
Use your real name (sorry, no pseudonyms or anonymous contributions.)
```

If you set your `user.name` and `user.email` git configs, you can sign your commit automatically with `git commit -s`.


================================================
FILE: Dockerfile
================================================
#
# Copyright (2021) The Delta Lake Project Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
FROM ubuntu:focal-20221019

ENV DEBIAN_FRONTEND noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN true

RUN apt-get update
RUN apt-get install -y software-properties-common
RUN apt-get install -y curl
RUN apt-get install -y wget
RUN apt-get install -y openjdk-8-jdk
RUN apt-get install -y python3.8
RUN apt-get install -y python3-pip
RUN apt-get install -y git

# Upgrade pip. This is needed to use prebuilt wheels for packages cffi (dep of cryptography) and
# cryptography. Otherwise, building wheels for these packages fails.
RUN pip3 install --upgrade pip

# Update the pip version to 24.0. By default `pyenv.run` installs the latest pip version
# available. From version 24.1, `pip` doesn't allow installing python packages
# with version string containing `-`. In Delta-Spark case, the pypi package generated has
# `-SNAPSHOT` in version (e.g. `3.3.0-SNAPSHOT`) as the version is picked up from
# the`version.sbt` file.
RUN pip install pip==24.0 setuptools==69.5.1 wheel==0.43.0

RUN pip3 install pyspark==3.5.3

RUN pip3 install mypy==0.982

RUN pip3 install pydocstyle==3.0.0

RUN pip3 install pandas==1.0.5

RUN pip3 install pyarrow==8.0.0

RUN pip3 install numpy==1.20.3

RUN pip3 install importlib_metadata==3.10.0

RUN pip3 install cryptography==37.0.4

# We must install cryptography before twine. Else, twine will pull a newer version of
# cryptography that requires a newer version of Rust and may break tests.
RUN pip3 install twine==4.0.1

RUN pip3 install wheel==0.33.4

RUN pip3 install setuptools==41.0.1

# Do not add any non-deterministic changes (e.g., copy from files 
# from repo) in this Dockerfile, so that the  docker image 
# generated from this can be reused across builds.


================================================
FILE: LICENSE.txt
================================================
Copyright (2021) The Delta Lake Project Authors.  All rights reserved.


                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS



-------------------------------------------------------------------------
This project includes code derived from the Apache Spark project.
The individual files containing this code carry the original Apache Spark
license, which is reproduced here as well:

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: NOTICE.txt
================================================
Delta Lake
Copyright (2021) The Delta Lake Project Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

This project includes software licensed by the Apache Software Foundation (Apache 2.0)
from the Apache Spark project (www.github.com/apache/spark)

----------------------------------------------------------
Apache Spark
Copyright 2014 and onwards The Apache Software Foundation.

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).


================================================
FILE: PROTOCOL.md
================================================
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
# Delta Transaction Log Protocol

- [Overview](#overview)
- [Delta Table Specification](#delta-table-specification)
  - [File Types](#file-types)
    - [Data Files](#data-files)
    - [Deletion Vector Files](#deletion-vector-files)
    - [Change Data Files](#change-data-files)
    - [Delta Log Entries](#delta-log-entries)
    - [Checkpoints](#checkpoints)
      - [Sidecar Files](#sidecar-files)
    - [Log Compaction Files](#log-compaction-files)
    - [Last Checkpoint File](#last-checkpoint-file)
    - [Version Checksum File](#version-checksum-file)
      - [File Size Histogram Schema](#file-size-histogram-schema)
  - [Actions](#actions)
    - [Change Metadata](#change-metadata)
      - [Format Specification](#format-specification)
    - [Add File and Remove File](#add-file-and-remove-file)
    - [Add CDC File](#add-cdc-file)
      - [Writer Requirements for AddCDCFile](#writer-requirements-for-addcdcfile)
      - [Reader Requirements for AddCDCFile](#reader-requirements-for-addcdcfile)
    - [Transaction Identifiers](#transaction-identifiers)
    - [Protocol Evolution](#protocol-evolution)
    - [Commit Provenance Information](#commit-provenance-information)
    - [Domain Metadata](#domain-metadata)
      - [Reader Requirements for Domain Metadata](#reader-requirements-for-domain-metadata)
      - [Writer Requirements for Domain Metadata](#writer-requirements-for-domain-metadata)
    - [Sidecar File Information](#sidecar-file-information)
      - [Checkpoint Metadata](#checkpoint-metadata)
- [Action Reconciliation](#action-reconciliation)
- [Table Features](#table-features)
  - [Table Features for New and Existing Tables](#table-features-for-new-and-existing-tables)
  - [Supported Features](#supported-features)
  - [Active Features](#active-features)
- [Column Mapping](#column-mapping)
  - [Writer Requirements for Column Mapping](#writer-requirements-for-column-mapping)
  - [Reader Requirements for Column Mapping](#reader-requirements-for-column-mapping)
- [Deletion Vectors](#deletion-vectors)
  - [Deletion Vector Descriptor Schema](#deletion-vector-descriptor-schema)
    - [Derived Fields](#derived-fields)
    - [JSON Example 1 — On Disk with Relative Path (with Random Prefix)](#json-example-1--on-disk-with-relative-path-with-random-prefix)
    - [JSON Example 2 — On Disk with Absolute Path](#json-example-2--on-disk-with-absolute-path)
    - [JSON Example 3 — Inline](#json-example-3--inline)
  - [Reader Requirements for Deletion Vectors](#reader-requirements-for-deletion-vectors)
  - [Writer Requirement for Deletion Vectors](#writer-requirement-for-deletion-vectors)
- [Iceberg Compatibility V1](#iceberg-compatibility-v1)
  - [Writer Requirements for IcebergCompatV1](#writer-requirements-for-icebergcompatv1)
- [Iceberg Compatibility V2](#iceberg-compatibility-v2)
  - [Writer Requirement for IcebergCompatV2](#iceberg-compatibility-v2)
- [Timestamp without timezone (TimestampNtz)](#timestamp-without-timezone-timestampntz)
- [V2 Checkpoint Table Feature](#v2-checkpoint-table-feature)
- [Row Tracking](#row-tracking)
  - [Row IDs](#row-ids)
  - [Row Commit Versions](#row-commit-versions)
  - [Reader Requirements for Row Tracking](#reader-requirements-for-row-tracking)
  - [Writer Requirements for Row Tracking](#writer-requirements-for-row-tracking)
- [VACUUM Protocol Check](#vacuum-protocol-check)
  - [Writer Requirements for Vacuum Protocol Check](#writer-requirements-for-vacuum-protocol-check)
  - [Reader Requirements for Vacuum Protocol Check](#reader-requirements-for-vacuum-protocol-check)
- [Clustered Table](#clustered-table)
  - [Writer Requirements for Clustered Table](#writer-requirements-for-clustered-table)
- [Variant Data Type](#variant-data-type)
  - [Variant data in Parquet](#variant-data-in-parquet)
  - [Writer Requirements for Variant Type](#writer-requirements-for-variant-type)
  - [Reader Requirements for Variant Data Type](#reader-requirements-for-variant-data-type)
  - [Compatibility with other Delta Features](#compatibility-with-other-delta-features)
- [Catalog-managed tables](#catalog-managed-tables)
  - [Terminology: Commits](#terminology-commits)
  - [Terminology: Delta Client](#terminology-delta-client)
  - [Terminology: Catalogs](#terminology-catalogs)
  - [Catalog Responsibilities](#catalog-responsibilities)
  - [Reading Catalog-managed Tables](#reading-catalog-managed-tables)
  - [Commit Protocol](#commit-protocol)
  - [Getting Ratified Commits from the Catalog](#getting-ratified-commits-from-the-catalog)
  - [Publishing Commits](#publishing-commits)
  - [Maintenance Operations on Catalog-managed Tables](#maintenance-operations-on-catalog-managed-tables)
  - [Creating and Dropping Catalog-managed Tables](#creating-and-dropping-catalog-managed-tables)
  - [Catalog-managed Table Enablement](#catalog-managed-table-enablement)
  - [Writer Requirements for Catalog-managed tables](#writer-requirements-for-catalog-managed-tables)
  - [Reader Requirements for Catalog-managed tables](#reader-requirements-for-catalog-managed-tables)
  - [Table Discovery](#table-discovery)
  - [Sample Catalog Client API](#sample-catalog-client-api)
- [Requirements for Writers](#requirements-for-writers)
  - [Creation of New Log Entries](#creation-of-new-log-entries)
  - [Consistency Between Table Metadata and Data Files](#consistency-between-table-metadata-and-data-files)
  - [Delta Log Entries](#delta-log-entries-1)
  - [Checkpoints](#checkpoints-1)
    - [Checkpoint Specs](#checkpoint-specs)
      - [V2 Spec](#v2-spec)
      - [V1 Spec](#v1-spec)
    - [Checkpoint Naming Scheme](#checkpoint-naming-scheme)
      - [UUID-named checkpoint](#uuid-named-checkpoint)
      - [Classic checkpoint](#classic-checkpoint)
      - [Multi-part checkpoint](#multi-part-checkpoint)
        - [Problems with multi-part checkpoints](#problems-with-multi-part-checkpoints)
    - [Handling Backward compatibility while moving to UUID-named v2 Checkpoints](#handling-backward-compatibility-while-moving-to-uuid-named-v2-checkpoints)
    - [Allowed combinations for `checkpoint spec` <-> `checkpoint file naming`](#allowed-combinations-for-checkpoint-spec---checkpoint-file-naming)
    - [Metadata Cleanup](#metadata-cleanup)
  - [Data Files](#data-files-1)
  - [Append-only Tables](#append-only-tables)
  - [Column Invariants](#column-invariants)
  - [CHECK Constraints](#check-constraints)
  - [Generated Columns](#generated-columns)
  - [Default Columns](#default-columns)
  - [Identity Columns](#identity-columns)
  - [Writer Version Requirements](#writer-version-requirements)
- [Requirements for Readers](#requirements-for-readers)
  - [Reader Version Requirements](#reader-version-requirements)
- [Appendix](#appendix)
  - [Valid Feature Names in Table Features](#valid-feature-names-in-table-features)
  - [Deletion Vector Format](#deletion-vector-format)
    - [Deletion Vector File Storage Format](#deletion-vector-file-storage-format)
  - [Per-file Statistics](#per-file-statistics)
  - [Partition Value Serialization](#partition-value-serialization)
  - [Schema Serialization Format](#schema-serialization-format)
    - [Primitive Types](#primitive-types)
    - [Struct Type](#struct-type)
    - [Struct Field](#struct-field)
    - [Array Type](#array-type)
    - [Map Type](#map-type)
    - [Variant Type](#variant-type)
    - [Column Metadata](#column-metadata)
    - [Example](#example)
  - [Checkpoint Schema](#checkpoint-schema)
  - [Last Checkpoint File Schema](#last-checkpoint-file-schema)
    - [JSON checksum](#json-checksum)
      - [How to URL encode keys and string values](#how-to-url-encode-keys-and-string-values)
  - [Delta Data Type to Parquet Type Mappings](#delta-data-type-to-parquet-type-mappings)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

# Overview
This document is a specification for the Delta Transaction Protocol, which brings [ACID](https://en.wikipedia.org/wiki/ACID) properties to large collections of data, stored as files, in a distributed file system or object store. The protocol was designed with the following goals in mind:

- **Serializable ACID Writes** - multiple writers can concurrently modify a Delta table while maintaining ACID semantics.
- **Snapshot Isolation for Reads** - readers can read a consistent snapshot of a Delta table, even in the face of concurrent writes.
- **Scalability to billions of partitions or files** - queries against a Delta table can be planned on a single machine or in parallel.
- **Self describing** - all metadata for a Delta table is stored alongside the data. This design eliminates the need to maintain a separate metastore just to read the data and also allows static tables to be copied or moved using standard filesystem tools.
- **Support for incremental processing** - readers can tail the Delta log to determine what data has been added in a given period of time, allowing for efficient streaming.

Delta's transactions are implemented using multi-version concurrency control (MVCC).
As a table changes, Delta's MVCC algorithm keeps multiple copies of the data around rather than immediately replacing files that contain records that are being updated or removed.

Readers of the table ensure that they only see one consistent _snapshot_ of a table at time by using the _transaction log_ to selectively choose which _data files_ to process.

Writers modify the table in two phases:
First, they optimistically write out new data files or updated copies of existing ones.
Then, they _commit_, creating the latest _atomic version_ of the table by adding a new entry to the log.
In this log entry they record which data files to logically add and remove, along with changes to other metadata about the table.

Data files that are no longer present in the latest version of the table can be lazily deleted by the vacuum command after a user-specified retention period (default 7 days).

# Delta Table Specification
A table has a single serial history of atomic versions, which are named using contiguous, monotonically-increasing integers.
The state of a table at a given version is called a _snapshot_ and is defined by the following properties:
 - **Delta log protocol** consists of two **protocol versions**, and if applicable, corresponding **table features**, that are required to correctly read or write the table
   - **Reader features** only exists when Reader Version is 3
   - **Writer features** only exists when Writer Version is 7
 - **Metadata** of the table (e.g., the schema, a unique identifier, partition columns, and other configuration properties)
 - **Set of files** present in the table, along with metadata about those files
 - **Set of tombstones** for files that were recently deleted
 - **Set of applications-specific transactions** that have been successfully committed to the table

## File Types
A Delta table is stored within a directory and is composed of the following different types of files.

Here is an example of a Delta table with four entries in the commit log, stored in the directory `mytable`.
```
/mytable/_delta_log/00000000000000000042.json
/mytable/_delta_log/00000000000000000042.checkpoint.parquet
/mytable/_delta_log/00000000000000000043.json
/mytable/_delta_log/00000000000000000044.json
/mytable/_delta_log/00000000000000000045.json
/mytable/_delta_log/_last_checkpoint
/mytable/_change_data/cdc-00000-924d9ac7-21a9-4121-b067-a0a6517aa8ed.c000.snappy.parquet
/mytable/part-00000-3935a07c-416b-4344-ad97-2a38342ee2fc.c000.snappy.parquet
/mytable/deletion_vector-0c6cbaaf-5e04-4c9d-8959-1088814f58ef.bin
```

This example represents a table after [metadata cleanup](#metadata-cleanup) has removed older log entries. The checkpoint at version 42 contains the complete table state, while versions 43-45 are subsequent commits. Each file type is described in the sections below.

### Data Files
Data files can be stored in the root directory of the table or in any non-hidden subdirectory (i.e., one whose name does not start with an `_`).
By default, the reference implementation stores data files in directories that are named based on the partition values for data in that file (i.e. `part1=value1/part2=value2/...`).
This directory format is only used to follow existing conventions and is not required by the protocol.
Actual partition values for a file must be read from the transaction log.

### Deletion Vector Files
Deletion Vector (DV) files are stored in the root directory of the table alongside the data files. A DV file contains one or more serialised DV, each describing the set of *invalidated* (or "soft deleted") rows for a particular data file it is associated with.
For data with partition values, DV files are *not* kept in the same directory hierarchy as data files, as each one can contain DVs for files from multiple partitions.
DV files store DVs in a [binary format](#deletion-vector-format).

### Change Data Files
Change data files are stored in a directory at the root of the table named `_change_data`, and represent the changes for the table version they are in. For data with partition values, it is recommended that the change data files are stored within the `_change_data` directory in their respective partitions (i.e. `_change_data/part1=value1/...`). Writers can _optionally_ produce these change data files as a consequence of operations that change underlying data, like `UPDATE`, `DELETE`, and `MERGE` operations to a Delta Lake table. If an operation only adds new data or removes existing data without updating any existing rows, a writer can write only data files and commit them in `add` or `remove` actions without duplicating the data into change data files. When available, change data readers should use the change data files instead of computing changes from the underlying data files.

In addition to the data columns, change data files contain additional columns that identify the type of change event:

Field Name | Data Type | Description
-|-|-
_change_type|`String`| `insert`, `update_preimage` , `update_postimage`, `delete` __(1)__

__(1)__ `preimage` is the value before the update, `postimage` is the value after the update.

### Delta Log Entries

Delta Log Entries, also known as Delta files, are JSON files stored in the `_delta_log`
directory at the root of the table. Together with checkpoints, they make up the log of all changes
that have occurred to a table. Delta files are the unit of atomicity for a table, and are named
using the next available version number, zero-padded to 20 digits.

For example:

```
./_delta_log/00000000000000000000.json
```

Delta files use newline-delimited JSON format, where every action is stored as a single-line
JSON document. A Delta file, corresponding to version `v`, contains an atomic set of
[_actions_](#actions) that should be applied to the previous table state corresponding to version
`v-1`, in order to construct the `v`th snapshot of the table. An action changes one aspect of the
table's state, for example, adding or removing a file.

**Note:** If the [catalogManaged table feature](#catalog-managed-tables) is enabled on the table,
recently [ratified commits](#ratified-commit) may not yet be published to the `_delta_log` directory as normal Delta
files - they may be stored directly by the catalog or reside in the `_delta_log/_staged_commits`
directory. Delta clients must contact the table's managing catalog in order to find the information
about these [ratified, potentially-unpublished commits](#publishing-commits).

The `_delta_log/_staged_commits` directory is the staging area for [staged](#staged-commit)
commits. Delta files in this directory have a UUID embedded into them and follow the pattern
`<version>.<uuid>.json`, where the version corresponds to the proposed commit version, zero-padded
to 20 digits.

For example:

```
./_delta_log/_staged_commits/00000000000000000000.3a0d65cd-4056-49b8-937b-95f9e3ee90e5.json
./_delta_log/_staged_commits/00000000000000000001.7d17ac10-5cc3-401b-bd1a-9c82dd2ea032.json
./_delta_log/_staged_commits/00000000000000000001.016ae953-37a9-438e-8683-9a9a4a79a395.json
./_delta_log/_staged_commits/00000000000000000002.3ae45b72-24e1-865a-a211-34987ae02f2a.json
```

NOTE: The (proposed) version number of a staged commit is authoritative - file
`00000000000000000100.<uuid>.json` always corresponds to a commit attempt for version 100. Besides
simplifying implementations, it also acknowledges the fact that commit files cannot safely be reused
for multiple commit attempts. For example, resolving conflicts in a table with [row
tracking](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#row-tracking) enabled requires
rewriting all file actions to update their `baseRowId` field.

The [catalog](#terminology-catalogs) is the source of truth about which staged commit files in
the `_delta_log/_staged_commits` directory correspond to ratified versions, and Delta clients should
not attempt to directly interpret the contents of that directory. Refer to
[catalog-managed tables](#catalog-managed-tables) for more details.

### Checkpoints
Checkpoints are also stored in the `_delta_log` directory, and can be created at any time, for any committed version of the table.
For performance reasons, readers should prefer to use the newest complete checkpoint possible.
For time travel, the checkpoint used must not be newer than the time travel version.

A checkpoint contains the complete replay of all actions, up to and including the checkpointed table version, with invalid actions removed.
Invalid actions are those that have been canceled out by subsequent ones (for example removing a file that has been added), using the [rules for reconciliation](#Action-Reconciliation).
In addition to above, checkpoint also contains the [_remove tombstones_](#add-file-and-remove-file) until they are expired.
Checkpoints allow readers to short-cut the cost of reading the log up-to a given point in order to reconstruct a snapshot, and they also allow [Metadata cleanup](#metadata-cleanup) to delete expired JSON Delta log entries.

Readers SHOULD NOT make any assumptions about the existence or frequency of checkpoints, with one exception:
[Metadata cleanup](#metadata-cleanup) MUST provide a checkpoint for the oldest kept table version, to cover all deleted [Delta log entries](#delta-log-entries).
That said, writers are encouraged to checkpoint reasonably frequently, so that readers do not pay excessive log replay costs due to reading large numbers of delta files.

The checkpoint file name is based on the version of the table that the checkpoint contains.

Delta supports three kinds of checkpoints:

1. UUID-named Checkpoints: These follow [V2 spec](#v2-spec) which uses the following file name: `n.checkpoint.u.{json/parquet}`, where `u` is a UUID and `n` is the
snapshot version that this checkpoint represents. Here `n` must be zero padded to have length 20. The UUID-named V2 Checkpoint may be in json or parquet format, and references zero or more checkpoint sidecars
in the `_delta_log/_sidecars` directory. A checkpoint sidecar is a uniquely-named parquet file: `{unique}.parquet` where `unique` is some unique
string such as a UUID.

For example:

```
00000000000000000010.checkpoint.80a083e8-7026-4e79-81be-64bd76c43a11.json
_sidecars/3a0d65cd-4056-49b8-937b-95f9e3ee90e5.parquet
_sidecars/016ae953-37a9-438e-8683-9a9a4a79a395.parquet
_sidecars/7d17ac10-5cc3-401b-bd1a-9c82dd2ea032.parquet
```

2. A [classic checkpoint](#classic-checkpoint) for version `n` of the table consists of a file named `n.checkpoint.parquet`. Here `n` must be zero padded to have length 20.
These could follow either [V1 spec](#v1-spec) or [V2 spec](#v2-spec).
For example:

```
00000000000000000010.checkpoint.parquet
```


3. A [multi-part checkpoint](#multi-part-checkpoint) for version `n` consists of `p` "part" files (`p > 1`), where
part `o` of `p` is named `n.checkpoint.o.p.parquet`. Here `n` must be zero padded to have length 20, while `o` and `p` must be zero padded to have length 10. These are always [V1 checkpoints](#v1-spec).
For example:

```
00000000000000000010.checkpoint.0000000001.0000000003.parquet
00000000000000000010.checkpoint.0000000002.0000000003.parquet
00000000000000000010.checkpoint.0000000003.0000000003.parquet
```

A writer can choose to write checkpoints with following constraints:
- Writers are always allowed create a [classic checkpoint](#classic-checkpoint) following [v1 spec](#v1-spec).
- Writers are forbidden to create [multi-part checkpoints](#multi-part-checkpoint) if [v2 checkpoints](#v2-checkpoint-table-feature) are enabled.
- Writers are allowed to create v2 spec checkpoints (either [classic](#classic-checkpoint) or [uuid-named](#uuid-named-checkpoint)) if [v2 checkpoint table feature](#v2-checkpoint-table-feature) is enabled.

Multi-part checkpoints are [deprecated](#problems-with-multi-part-checkpoints), and writers should avoid creating them. Use uuid-named [V2 spec](#v2-spec) checkpoints instead of these.

Multiple checkpoints could exist for the same table version, e.g. if two clients race to create checkpoints at the same time, but with different formats.
In such cases, a client can choose which checkpoint to use.

Because a multi-part checkpoint cannot be created atomically (e.g. vulnerable to slow and/or failed writes), readers must ignore multi-part checkpoints with missing parts.

Checkpoints for a given version must only be created after the associated delta file has been successfully written.

#### Sidecar Files

A sidecar file contains file actions. These files are in parquet format and they must have unique names.
These are then [linked](#sidecar-file-information) to checkpoints. Refer to [V2 checkpoint spec](#v2-spec)
for more detail. The sidecar files can have only [add file and remove file](#Add-File-and-Remove-File) entries
as of now. The add and remove file actions are stored as their individual columns in parquet as struct fields.

These files reside in the `_delta_log/_sidecars` directory.

### Log Compaction Files

Log compaction files reside in the `_delta_log` directory. A log compaction
file from a start version `x` to an end version `y` (`y` must be _greater_ than `x`)
will have the following name:
`<x>.<y>.compacted.json`. This contains the aggregated
actions for commit range `[x, y]`. Similar to commits, each row in the log
compaction file represents an [action](#actions).
The commit files for a given range are created by doing [Action Reconciliation](#action-reconciliation)
of the corresponding commits.
Instead of reading the individual commit files in range `[x, y]`, an implementation could choose to read
the log compaction file `<x>.<y>.compacted.json` to speed up the snapshot construction.

Example:
Suppose we have `00000000000000000004.json` as:
```
{"commitInfo":{...}}
{"add":{"path":"f2",...}}
{"remove":{"path":"f1",...}}
```
`00000000000000000005.json` as:
```
{"commitInfo":{...}}
{"add":{"path":"f3",...}}
{"add":{"path":"f4",...}}
{"txn":{"appId":"3ae45b72-24e1-865a-a211-34987ae02f2a","version":4389}}
```
`00000000000000000006.json` as:
```
{"commitInfo":{...}}
{"remove":{"path":"f3",...}}
{"txn":{"appId":"3ae45b72-24e1-865a-a211-34987ae02f2a","version":4390}}
```

Then `00000000000000000004.00000000000000000006.compacted.json` will have the following content:
```
{"add":{"path":"f2",...}}
{"add":{"path":"f4",...}}
{"remove":{"path":"f1",...}}
{"remove":{"path":"f3",...}}
{"txn":{"appId":"3ae45b72-24e1-865a-a211-34987ae02f2a","version":4390}}
```

Writers:
- Can optionally produce log compactions for any given commit range

Readers:
- Can optionally consume log compactions, if available
- The compaction replaces the corresponding commits during action reconciliation

### Last Checkpoint File
The Delta transaction log will often contain many (e.g. 10,000+) files.
Listing such a large directory can be prohibitively expensive.
The last checkpoint file can help reduce the cost of constructing the latest snapshot of the table by providing a pointer to near the end of the log.

Rather than list the entire directory, readers can locate a recent checkpoint by looking at the `_delta_log/_last_checkpoint` file.
Due to the zero-padded encoding of the files in the log, the version id of this recent checkpoint can be used on storage systems that support lexicographically-sorted, paginated directory listing to enumerate any delta files or newer checkpoints that comprise more recent versions of the table.

### Version Checksum File

The Delta transaction log must remain an append-only log. To enable the detection of non-compliant modifications to Delta files, writers can optionally emit an auxiliary file with every commit, which contains important information about the state of the table as of that version. This file is referred to as the **Version Checksum** and can be used to validate the integrity of the table.

### Version Checksum File Schema

A Version Checksum file must have the following properties:
- Be named `{version}.crc` where `version` is zero-padded to 20 digits (e.g., `00000000000000000001.crc`)
- Be stored directly in the `_delta_log` directory alongside Delta log files
- Contain exactly one JSON object with the following schema:

Field Name | Data Type | Description | optional/required
-|-|-|-
txnId | String | A unique identifier for the transaction that produced this commit. | optional
tableSizeBytes | Long | Total size of the table in bytes, calculated as the sum of the `size` field of all live `add` actions. | required
numFiles | Long | Number of live `add` actions in this table version after Action Reconciliation. | required
numMetadata | Long | Number of `metaData` actions. Must be 1. | required
numProtocol | Long | Number of `protocol` actions. Must be 1. | required
inCommitTimestampOpt | Long | The in-commit timestamp of this version. Present if and only if [In-Commit Timestamps](#in-commit-timestamps) are enabled. | optional
setTransactions | Array[`txn`] | Live [Transaction Identifier](#transaction-identifiers) actions at this version. | optional
domainMetadata | Array[`domainMetadata`] | Live [Domain Metadata](#domain-metadata) actions at this version, excluding tombstones. | optional
metadata | Metadata | The table [metadata](#change-metadata) at this version. | required
protocol | Protocol | The table [protocol](#protocol-evolution) at this version. | required
fileSizeHistogram | FileSizeHistogram | Size distribution information of files remaining after [Action Reconciliation](#action-reconciliation). See [FileSizeHistogram](#file-size-histogram-schema) for more details. | optional
allFiles | Array[`add`] | All live [Add File](#add-file-and-remove-file) actions at this version. | optional
numDeletedRecordsOpt | Long | Number of records deleted through Deletion Vectors in this table version. | optional
numDeletionVectorsOpt | Long | Number of Deletion Vectors active in this table version. | optional
deletedRecordCountsHistogramOpt | DeletedRecordCountsHistogram | Distribution of deleted record counts across files. See [this](#deleted-record-counts-histogram-schema) section for more details. | optional

##### File Size Histogram Schema

The `FileSizeHistogram` object represents a histogram tracking file counts and total bytes across different size ranges. It has the following schema:

Field Name | Data Type | Description | optional/required
-|-|-|-
sortedBinBoundaries | Array[Long] | A sorted array of bin boundaries where each element represents the start of a bin (inclusive) and the next element represents the end of the bin (exclusive). The first element must be 0. | required
fileCounts | Array[Long] | Count of files in each bin. Length must match `sortedBinBoundaries`. | required
totalBytes | Array[Long] | Total bytes of files in each bin. Length must match `sortedBinBoundaries`. | required

Each index `i` in these arrays corresponds to a size range from `sortedBinBoundaries[i]` (inclusive) up to but not including `sortedBinBoundaries[i+1]`. The last bin ends at positive infinity. For example, given boundaries `[0, 1024, 4096]`:
- Bin 0 contains files of size [0, 1024) bytes
- Bin 1 contains files of size [1024, 4096) bytes
- Bin 2 contains files of size [4096, ∞) bytes

The arrays `fileCounts` and `totalBytes` store the number of files and their total size respectively that fall into each bin. This data structure enables efficient analysis of file size distributions in Delta tables.

### Deleted Record Counts Histogram Schema

The `DeletedRecordCountsHistogram` object represents a histogram tracking the distribution of deleted record counts across files in the table. Each bin in the histogram represents a range of deletion counts and stores the number of files having that many deleted records.

Field Name | Data Type | Description | optional/required
-|-|-|-
deletedRecordCounts | Array[Long] | Array of size 10 where each element represents the count of files falling into a specific deletion count range. | required

The histogram bins correspond to the following ranges:
- Bin 0: [0, 0] (files with no deletions)
- Bin 1: [1, 9] (files with 1-9 deleted records)
- Bin 2: [10, 99] (files with 10-99 deleted records)
- Bin 3: [100, 999] (files with 100-999 deleted records) 
- Bin 4: [1000, 9999] (files with 1,000-9,999 deleted records)
- Bin 5: [10000, 99999] (files with 10,000-99,999 deleted records)
- Bin 6: [100000, 999999] (files with 100,000-999,999 deleted records)
- Bin 7: [1000000, 9999999] (files with 1,000,000-9,999,999 deleted records)
- Bin 8: [10000000, 2147483646] (files with 10,000,000 to 2147483646 (i.e. Int.MaxValue-1 in Java) deleted records)
- Bin 9: [2147483647, ∞) (files with 2147483647 or more deleted records)

This histogram allows analyzing the distribution of deleted records across files in a Delta table, which can be useful for monitoring and optimizing deletion patterns.

#### State Validation

Readers can validate table state integrity at a particular version by:
1. Reading the Version Checksum file for that version
2. Independently computing the same metrics by performing [Action Reconciliation](#action-reconciliation) on the table state
3. Comparing the computed values against those recorded in the Version Checksum

If any discrepancy is found between computed and recorded values, the table state at that version should be considered potentially corrupted.

### Writer Requirements

- Writers SHOULD produce a Version Checksum file for each commit
- Writers MUST ensure all metrics in the Version Checksum accurately reflect table state after Action Reconciliation
- Writers MUST write the Version Checksum file only after successfully writing the corresponding Delta log entry
- Writers MUST NOT overwrite existing Version Checksum files

### Reader Requirements

- Readers MAY use Version Checksums to validate table state integrity
- If performing validation, readers SHOULD verify all required fields match computed values
- If validation fails, readers SHOULD surface the discrepancy to users via error messaging
- Readers MUST continue functioning if Version Checksum files are missing


## Actions
Actions modify the state of the table and they are stored both in delta files and in checkpoints.
This section lists the space of available actions as well as their schema.

### Change Metadata
The `metaData` action changes the current metadata of the table.
The first version of a table must contain a `metaData` action.
Subsequent` metaData` actions completely overwrite the current metadata of the table.

There can be at most one metadata action in a given version of the table.

Every metadata action **must** include required fields at a minimum.

The schema of the `metaData` action is as follows:

Field Name | Data Type | Description | optional/required
-|-|-|-
id|`GUID`|Unique identifier for this table | required
name|`String`| User-provided identifier for this table | optional
description|`String`| User-provided description for this table | optional
format|[Format Struct](#Format-Specification)| Specification of the encoding for the files stored in the table | required
schemaString|[Schema Struct](#Schema-Serialization-Format)| Schema of the table | required
partitionColumns|`Array[String]`| An array containing the names of columns by which the data should be partitioned | required
createdTime|`Option[Long]`| The time when this metadata action is created, in milliseconds since the Unix epoch | optional
configuration|`Map[String, String]`| A map containing configuration options for the metadata action | required

#### Format Specification
Field Name | Data Type | Description
-|-|-
provider|`String`|Name of the encoding for files in this table
options|`Map[String, String]`|A map containing configuration options for the format

In the reference implementation, the provider field is used to instantiate a Spark SQL [`FileFormat`](https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormat.scala). As of Spark 2.4.3 there is built-in `FileFormat` support for `parquet`, `csv`, `orc`, `json`, and `text`.

As of Delta Lake 0.3.0, user-facing APIs only allow the creation of tables where `format = 'parquet'` and `options = {}`. Support for reading other formats is present both for legacy reasons and to enable possible support for other formats in the future (See [#87](https://github.com/delta-io/delta/issues/87)).

The following is an example `metaData` action:
```json
{
  "metaData":{
    "id":"af23c9d7-fff1-4a5a-a2c8-55c59bd782aa",
    "format":{"provider":"parquet","options":{}},
    "schemaString":"...",
    "partitionColumns":[],
    "configuration":{
      "appendOnly": "true"
    }
  }
}
```

<!-- TODO: forward references configuration options -->

### Add File and Remove File
The `add` and `remove` actions are used to modify the data in a table by adding or removing individual _logical files_ respectively.

Every _logical file_ of the table is represented by a path to a data file, combined with an optional Deletion Vector (DV) that indicates which rows of the data file are no longer in the table. Deletion Vectors are an optional feature, see their [reader requirements](#deletion-vectors) for details.

When an `add` action is encountered for a logical file that is already present in the table, statistics and other information from the latest version should replace that from any previous version.
The primary key for the entry of a logical file in the set of files is a tuple of the data file's `path` and a unique id describing the DV. If no DV is part of this logical file, then its primary key is `(path, NULL)` instead.

The `remove` action includes a timestamp that indicates when the removal occurred.
Physical deletion of physical files can happen lazily after some user-specified expiration time threshold.
This delay allows concurrent readers to continue to execute against a stale snapshot of the data.
A `remove` action should remain in the state of the table as a _tombstone_ until it has expired.
A tombstone expires when *current time* (according to the node performing the cleanup) exceeds the expiration threshold added to the `remove` action timestamp.

In the following statements, `dvId` can refer to either the unique id of a specific Deletion Vector (`deletionVector.uniqueId`) or to `NULL`, indicating that no rows are invalidated. Since actions within a given Delta commit are not guaranteed to be applied in order, a **valid** version is restricted to contain at most one file action *of the same type* (i.e. `add`/`remove`) for any one combination of `path` and `dvId`. Moreover, for simplicity it is required that there is at most one file action of the same type for any `path` (regardless of `dvId`).
That means specifically that for any commit…

 - it is **legal** for the same `path` to occur in an `add` action and a `remove` action, but with two different `dvId`s.
 - it is **legal** for the same `path` to be added and/or removed and also occur in a `cdc` action.
 - it is **illegal** for the same `path` to occur twice with different `dvId`s within each set of `add` or `remove` actions.
 - it is **illegal** for a `path` to occur in an `add` action that already occurs with a different `dvId` in the list of `add` actions from the snapshot of the version immediately preceeding the commit, unless the commit also contains a remove for the later combination.
 - it is **legal** to commit an existing `path` and `dvId` combination again (this allows metadata updates).

The `dataChange` flag on either an `add` or a `remove` can be set to `false` to indicate that an action when combined with other actions in the same atomic version only rearranges existing data or adds new statistics.
For example, streaming queries that are tailing the transaction log can use this flag to skip actions that would not affect the final results.

The schema of the `add` action is as follows:

Field Name | Data Type | Description | optional/required
-|-|-|-
path| String | A relative path to a data file from the root of the table or an absolute path to a file that should be added to the table. The path is a URI as specified by [RFC 2396 URI Generic Syntax](https://www.ietf.org/rfc/rfc2396.txt), which needs to be decoded to get the data file path. | required
partitionValues| Map[String, String] | A map from partition column to value for this logical file. See also [Partition Value Serialization](#Partition-Value-Serialization) | required
size| Long | The size of this data file in bytes | required
modificationTime | Long | The time this logical file was created, as milliseconds since the epoch | required
dataChange | Boolean | When `false` the logical file must already be present in the table or the records in the added file must be contained in one or more `remove` actions in the same version | required
stats | [Statistics Struct](#Per-file-Statistics) | Contains statistics (e.g., count, min/max values for columns) about the data in this logical file | optional
tags | Map[String, String] | Map containing metadata about this logical file | optional
deletionVector | [DeletionVectorDescriptor Struct](#Deletion-Vectors) | Either null (or absent in JSON) when no DV is associated with this data file, or a struct (described below) that contains necessary information about the DV that is part of this logical file. | optional
baseRowId | Long  | Default generated Row ID of the first row in the file. The default generated Row IDs of the other rows in the file can be reconstructed by adding the physical index of the row within the file to the base Row ID. See also [Row IDs](#row-ids) | optional
defaultRowCommitVersion | Long | First commit version in which an `add` action with the same `path` was committed to the table. | optional
clusteringProvider | String | The name of the clustering implementation. See also [Clustered Table](#clustered-table)| optional

The following is an example `add` action for a partitioned table:
```json
{
  "add": {
    "path": "date=2017-12-10/part-000...c000.gz.parquet",
    "partitionValues": {"date": "2017-12-10"},
    "size": 841454,
    "modificationTime": 1512909768000,
    "dataChange": true,
    "baseRowId": 4071,
    "defaultRowCommitVersion": 41,
    "stats": "{\"numRecords\":1,\"minValues\":{\"val..."
  }
}
```

The following is an example `add` action for a clustered table:
```json
{
  "add": {
    "path": "date=2017-12-10/part-000...c000.gz.parquet",
    "partitionValues": {},
    "size": 841454,
    "modificationTime": 1512909768000,
    "dataChange": true,
    "baseRowId": 4071,
    "defaultRowCommitVersion": 41,
    "clusteringProvider": "liquid",
    "stats": "{\"numRecords\":1,\"minValues\":{\"val..."
  }
}
```

The schema of the `remove` action is as follows:

Field Name | Data Type | Description | optional/required
-|-|-|-
path| String | A relative path to a file from the root of the table or an absolute path to a file that should be removed from the table. The path is a URI as specified by [RFC 2396 URI Generic Syntax](https://www.ietf.org/rfc/rfc2396.txt), which needs to be decoded to get the data file path. | required
deletionTimestamp | Option[Long] | The time the deletion occurred, represented as milliseconds since the epoch | optional
dataChange | Boolean | When `false` the records in the removed file must be contained in one or more `add` file actions in the same version | required
extendedFileMetadata | Boolean | When `true` the fields `partitionValues`, `size`, and `tags` are present | optional
partitionValues| Map[String, String] | A map from partition column to value for this file. See also [Partition Value Serialization](#Partition-Value-Serialization) | optional
size| Long | The size of this data file in bytes | optional
stats | [Statistics Struct](#Per-file-Statistics) | Contains statistics (e.g., count, min/max values for columns) about the data in this logical file | optional
tags | Map[String, String] | Map containing metadata about this file | optional
deletionVector | [DeletionVectorDescriptor Struct](#Deletion-Vectors) | Either null (or absent in JSON) when no DV is associated with this data file, or a struct (described below) that contains necessary information about the DV that is part of this logical file. | optional
baseRowId | Long | Default generated Row ID of the first row in the file. The default generated Row IDs of the other rows in the file can be reconstructed by adding the physical index of the row within the file to the base Row ID. See also [Row IDs](#row-ids) | optional
defaultRowCommitVersion | Long | First commit version in which an `add` action with the same `path` was committed to the table | optional

The following is an example `remove` action.
```json
{
  "remove": {
    "path": "part-00001-9…..snappy.parquet",
    "deletionTimestamp": 1515488792485,
    "baseRowId": 4071,
    "defaultRowCommitVersion": 41,
    "dataChange": true
  }
}
```

### Add CDC File
The `cdc` action is used to add a [file](#change-data-files) containing only the data that was changed as part of the transaction. The `cdc` action is allowed to add a [Data File](#data-files) that is also added by an `add` action, when it does not contain any copied rows and the `_change_type` column is filled for all rows.

When change data readers encounter a `cdc` action in a particular Delta table version, they must read the changes made in that version exclusively using the `cdc` files. If a version has no `cdc` action, then the data in `add` and `remove` actions are read as inserted and deleted rows, respectively.

The schema of the `cdc` action is as follows:

Field Name | Data Type | Description
-|-|-
path| String | A relative path to a change data file from the root of the table or an absolute path to a change data file that should be added to the table. The path is a URI as specified by [RFC 2396 URI Generic Syntax](https://www.ietf.org/rfc/rfc2396.txt), which needs to be decoded to get the file path.
partitionValues| Map[String, String] | A map from partition column to value for this file. See also [Partition Value Serialization](#Partition-Value-Serialization)
size| Long | The size of this file in bytes
dataChange | Boolean | Should always be set to `false` for `cdc` actions because they _do not_ change the underlying data of the table
tags | Map[String, String] | Map containing metadata about this file

The following is an example of `cdc` action.

```json
{
  "cdc": {
    "path": "_change_data/cdc-00001-c…..snappy.parquet",
    "partitionValues": {},
    "size": 1213,
    "dataChange": false
  }
}
```

#### Writer Requirements for AddCDCFile

For [Writer Versions 4 up to 6](#Writer-Version-Requirements), all writers must respect the `delta.enableChangeDataFeed` configuration flag in the metadata of the table. When `delta.enableChangeDataFeed` is `true`, writers must produce the relevant `AddCDCFile`'s for any operation that changes data, as specified in [Change Data Files](#change-data-files).

For Writer Version 7, all writers must respect the `delta.enableChangeDataFeed` configuration flag in the metadata of the table only if the feature `changeDataFeed` exists in the table `protocol`'s `writerFeatures`.

#### Reader Requirements for AddCDCFile

When available, change data readers should use the `cdc` actions in a given table version instead of computing changes from the underlying data files referenced by the `add` and `remove` actions.
Specifically, to read the row-level changes made in a version, the following strategy should be used:
1. If there are `cdc` actions in this version, then read only those to get the row-level changes, and skip the remaining `add` and `remove` actions in this version.
2. Otherwise, if there are no `cdc` actions in this version, read and treat all the rows in the `add` and `remove` actions as inserted and deleted rows, respectively.
3. Change data readers should return the following extra columns:

    Field Name | Data Type | Description
    -|-|-
    _commit_version|`Long`| The table version containing the change. This can be derived from the name of the Delta log file that contains actions.
    _commit_timestamp|`Timestamp`| The timestamp associated when the commit was created. Depending on whether [In-Commit Timestamps](#in-commit-timestamps) are enabled, this is derived from either the `inCommitTimestamp` field of the `commitInfo` action of the version's Delta log file, or from the Delta log file's modification time.

##### Note for non-change data readers

In a table with Change Data Feed enabled, the data Parquet files referenced by `add` and `remove` actions are allowed to contain an extra column `_change_type`. This column is not present in the table's schema. When accessing these files, readers should disregard this column and only process columns defined within the table's schema.

### Transaction Identifiers
Incremental processing systems (e.g., streaming systems) that track progress using their own application-specific versions need to record what progress has been made, in order to avoid duplicating data in the face of failures and retries during a write.
Transaction identifiers allow this information to be recorded atomically in the transaction log of a delta table along with the other actions that modify the contents of the table.

Transaction identifiers are stored in the form of `appId` `version` pairs, where `appId` is a unique identifier for the process that is modifying the table and `version` is an indication of how much progress has been made by that application.
The atomic recording of this information along with modifications to the table enables these external system to make their writes into a Delta table _idempotent_.

For example, the [Delta Sink for Apache Spark's Structured Streaming](https://github.com/delta-io/delta/blob/master/core/src/main/scala/org/apache/spark/sql/delta/sources/DeltaSink.scala) ensures exactly-once semantics when writing a stream into a table using the following process:
 1. Record in a write-ahead-log the data that will be written, along with a monotonically increasing identifier for this batch.
 2. Check the current version of the transaction with `appId = streamId` in the target table. If this value is greater than or equal to the batch being written, then this data has already been added to the table and processing can skip to the next batch.
 3. Write the data optimistically into the table.
 4. Attempt to commit the transaction containing both the addition of the data written out and an updated `appId` `version` pair.

The semantics of the application-specific `version` are left up to the external system.
Delta only ensures that the latest `version` for a given `appId` is available in the table snapshot.
The Delta transaction protocol does not, for example, assume monotonicity of the `version` and it would be valid for the `version` to decrease, possibly representing a "rollback" of an earlier transaction.

The schema of the `txn` action is as follows:

Field Name | Data Type | Description | optional/required
-|-|-|-
appId | String | A unique identifier for the application performing the transaction | required
version | Long | An application-specific numeric identifier for this transaction | required
lastUpdated | Option[Long] | The time when this transaction action is created, in milliseconds since the Unix epoch | optional

The following is an example `txn` action:
```json
{
  "txn": {
    "appId":"3ba13872-2d47-4e17-86a0-21afd2a22395",
    "version":364475
  }
}
```

### Protocol Evolution
The `protocol` action is used to increase the version of the Delta protocol that is required to read or write a given table.
Protocol versioning allows a newer client to exclude older readers and/or writers that are missing features required to correctly interpret the transaction log.
The _protocol version_ will be increased whenever non-forward-compatible changes are made to this specification.
In the case where a client is running an invalid protocol version, an error should be thrown instructing the user to upgrade to a newer protocol version of their Delta client library.

Since breaking changes must be accompanied by an increase in the protocol version recorded in a table or by the addition of a table feature, clients can assume that unrecognized actions, fields, and/or metadata domains are never required in order to correctly interpret the transaction log. Clients must ignore such unrecognized fields, and should not produce an error when reading a table that contains unrecognized fields.

Reader Version 3 and Writer Version 7 add two lists of table features to the protocol action. The capability for readers and writers to operate on such a table is not only dependent on their supported protocol versions, but also on whether they support all features listed in `readerFeatures` and `writerFeatures`. See [Table Features](#table-features) section for more information.

The schema of the `protocol` action is as follows:

Field Name | Data Type | Description | optional/required
-|-|-|-
minReaderVersion | Int | The minimum version of the Delta read protocol that a client must implement in order to correctly *read* this table | required
minWriterVersion | Int | The minimum version of the Delta write protocol that a client must implement in order to correctly *write* this table | required
readerFeatures | Array[String] | A collection of features that a client must implement in order to correctly read this table (exist only when `minReaderVersion` is set to `3`) | optional
writerFeatures | Array[String] | A collection of features that a client must implement in order to correctly write this table (exist only when `minWriterVersion` is set to `7`) | optional

Some example Delta protocols:
```json
{
  "protocol":{
    "minReaderVersion":1,
    "minWriterVersion":2
  }
}
```

A table that is using table features only for writers:
```json
{
  "protocol":{
    "readerVersion":2,
    "writerVersion":7,
    "writerFeatures":["columnMapping","identityColumns"]
  }
}
```
Reader version 2 in the above example does not support listing reader features but supports Column Mapping. This example is equivalent to the next one, where Column Mapping is represented as a reader table feature.

A table that is using table features for both readers and writers:
```json
{
  "protocol": {
    "readerVersion":3,
    "writerVersion":7,
    "readerFeatures":["columnMapping"],
    "writerFeatures":["columnMapping","identityColumns"]
  }
}
```

### Commit Provenance Information
A delta file can optionally contain additional provenance information about what higher-level operation was being performed as well as who executed it.

When the `catalogManaged` table feature is enabled, the `commitInfo` action must have a field
`txnId` that stores a unique transaction identifier string.

Implementations are free to store any valid JSON-formatted data via the `commitInfo` action.

When [In-Commit Timestamps](#in-commit-timestamps) are enabled, writers are required to include a `commitInfo` action with every commit, which must include the `inCommitTimestamp` field. Also, the `commitInfo` action must be first action in the commit.

An example of storing provenance information related to an `INSERT` operation:
```json
{
  "commitInfo":{
    "timestamp":1515491537026,
    "userId":"100121",
    "userName":"michael@databricks.com",
    "operation":"INSERT",
    "operationParameters":{"mode":"Append","partitionBy":"[]"},
    "notebook":{
      "notebookId":"4443029",
      "notebookPath":"Users/michael@databricks.com/actions"},
      "clusterId":"1027-202406-pooh991"
  }  
}
```

### Domain Metadata
The domain metadata action contains a configuration (string) for a named metadata domain. Two overlapping transactions conflict if they both contain a domain metadata action for the same metadata domain.

There are two types of metadata domains:
1. **User-controlled metadata domains** have names that start with anything other than the `delta.` prefix. Any Delta client implementation or user application can modify these metadata domains, and can allow users to modify them arbitrarily. Delta clients and user applications are encouraged to use a naming convention designed to avoid conflicts with other clients' or users' metadata domains (e.g. `com.databricks.*` or `org.apache.*`).
2. **System-controlled metadata domains** have names that start with the `delta.` prefix. This prefix is reserved for metadata domains defined by the Delta spec, and Delta client implementations must not allow users to modify the metadata for system-controlled domains. A Delta client implementation should only update metadata for system-controlled domains that it knows about and understands. System-controlled metadata domains are used by various table features and each table feature may impose additional semantics on the metadata domains it uses.

The schema of the `domainMetadata` action is as follows:

Field Name | Data Type | Description
-|-|-
domain | String | Identifier for this domain (system- or user-provided)
configuration | String | String containing configuration for the metadata domain
removed | Boolean | When `true`, the action serves as a tombstone to logically delete a metadata domain. Writers should preserve an accurate pre-image of the configuration.

To support this feature:
- The table must be on Writer Version 7.
- A feature name `domainMetadata` must exist in the table's `writerFeatures`.

#### Reader Requirements for Domain Metadata
- Readers are not required to support domain metadata.
- Readers who choose not to support domain metadata should ignore metadata domain actions as unrecognized (see [Protocol Evolution](#protocol-evolution)) and snapshots should not include any metadata domains.
- Readers who choose to support domain metadata must apply [Action Reconciliation](#action-reconciliation) to all metadata domains and snapshots must include them -- even if the reader does not understand them.
- Any system-controlled domain that imposes any requirements on readers is a [breaking change](#protocol-evolution), and must be part of a reader-writer table feature that specifies the desired behavior.

#### Writer Requirements for Domain Metadata
- Writers must preserve all domains even if they don't understand them.
- Writers must not allow users to modify or delete system-controlled domains.
- Writers must only modify or delete system-controlled domains they understand.
- Any system-controlled domain that imposes additional requirements on the writer is a [breaking change](#protocol-evolution), and must be part of a writer table feature that specifies the desired behavior.

The following is an example `domainMetadata` action:
```json
{
  "domainMetadata": {
    "domain": "delta.deltaTableFeatureX",
    "configuration": "{\"key1\":\"value1\"}",
    "removed": false
  }
}
```

### Sidecar File Information
The `sidecar` action references a [sidecar file](#sidecar-files) which provides some of the checkpoint's file actions.
This action is only allowed in checkpoints following [V2 spec](#v2-spec).
The schema of `sidecar` action is as follows:

Field Name | Data Type | Description | optional/required
-|-|-|-
path | String | URI-encoded path to the sidecar file. Because sidecar files must always reside in the table's own _delta_log/_sidecars directory, implementations are encouraged to store only the file's name (without scheme or parent directories). | required
sizeInBytes | Long | Size of the sidecar file. | required
modificationTime | Long | The time this logical file was created, as milliseconds since the epoch. | required
tags|`Map[String, String]`|Map containing any additional metadata about the checkpoint sidecar file. | optional

The following is an example `sidecar` action:
```json
{
  "sidecar":{
    "path": "016ae953-37a9-438e-8683-9a9a4a79a395.parquet",
    "sizeInBytes": 2304522,
    "modificationTime": 1512909768000,
    "tags": {}
  }
}
```

#### Checkpoint Metadata
This action is only allowed in checkpoints following [V2 spec](#v2-spec).
It describes the details about the checkpoint. It has the following schema:

Field Name | Data Type | Description | optional/required
-|-|-|-
version|`Long`|The checkpoint version.| required
tags|`Map[String, String]`|Map containing any additional metadata about the v2 spec checkpoint.| optional

E.g.
```json
{
  "checkpointMetadata":{
    "version":1,
    "tags":{}
  }
}
```

# Action Reconciliation
A given snapshot of the table can be computed by replaying the events committed to the table in ascending order by commit version. A given snapshot of a Delta table consists of:

 - A single `protocol` action
 - A single `metaData` action
 - A collection of `txn` actions with unique `appId`s
 - A collection of `domainMetadata` actions with unique `domain`s.
 - A collection of `add` actions with unique path keys, corresponding to the newest (path, deletionVector.uniqueId) pair encountered for each path.
 - A collection of `remove` actions with unique `(path, deletionVector.uniqueId)` keys. The intersection of the primary keys in the `add` collection and `remove` collection must be empty. That means a logical file cannot exist in both the `remove` and `add` collections at the same time; however, the same *data file* can exist with *different* DVs in the `remove` collection, as logically they represent different content. The `remove` actions act as _tombstones_, and only exist for the benefit of the VACUUM command. Snapshot reads only return `add` actions on the read path.
 
To achieve the requirements above, related actions from different delta files need to be reconciled with each other:
 
 - The latest `protocol` action seen wins
 - The latest `metaData` action seen wins
 - For `txn` actions, the latest `version` seen for a given `appId` wins
 - For `domainMetadata`, the latest `domainMetadata` seen for a given `domain` wins. The actions with `removed=true` act as tombstones to suppress earlier versions. Snapshot reads do _not_ return removed `domainMetadata` actions.
 - For `commitInfo` actions, only the `commitInfo` from the commit at the snapshot version is included in the snapshot. [Checkpoints](#checkpoints) and [log compaction files](#log-compaction-files) do not preserve `commitInfo` actions, so this information must be read from the JSON commit file at the snapshot version.
 - Logical files in a table are identified by their `(path, deletionVector.uniqueId)` primary key. File actions (`add` or `remove`) reference logical files, and a log can contain any number of references to a single file.
 - To replay the log, scan all file actions and keep only the newest reference for each logical file.
 - `add` actions in the result identify logical files currently present in the table (for queries). `remove` actions in the result identify tombstones of logical files no longer present in the table (for VACUUM).
 - [v2 checkpoint spec](#v2-spec) actions are not allowed in normal commit files, and do not participate in log replay.

# Table Features
Table features must only exist on tables that have a supported protocol version. When the table's Reader Version is 3, `readerFeatures` must exist in the `protocol` action, and when the Writer Version is 7, `writerFeatures` must exist in the `protocol` action. `readerFeatures` and `writerFeatures` define the features that readers and writers must implement in order to read and write this table.

Readers and writers must not ignore table features when they are present:
 - to read a table, readers must implement and respect all features listed in `readerFeatures`;
 - to write a table, writers must implement and respect all features listed in `writerFeatures`. Because writers have to read the table (or only the Delta log) before write, they must implement and respect all reader features as well.

## Table Features for New and Existing Tables
It is possible to create a new table or upgrade an existing table to the protocol versions that supports the use of table features. A table must support either the use of writer features or both reader and writer features. It is illegal to support reader but not writer features.

For new tables, when a new table is created with a Reader Version up to 2 and Writer Version 7, its `protocol` action must only contain `writerFeatures`. When a new table is created with Reader Version 3 and Writer Version 7, its `protocol` action must contain both `readerFeatures` and `writerFeatures`. Creating a table with a Reader Version 3 and Writer Version less than 7 is not allowed.

When upgrading an existing table to Reader Version 3 and/or Writer Version 7, the client should, on a best effort basis, determine which features supported by the original protocol version are used in any historical version of the table, and add only used features to reader and/or writer feature sets. The client must assume a feature has been used, unless it can prove that the feature is *definitely* not used in any historical version of the table that is reachable by time travel. 

For example, given a table on Reader Version 1 and Writer Version 4, along with four versions:
 1. Table property change: set `delta.enableChangeDataFeed` to `true`.
 2. Data change: three rows updated.
 3. Table property change: unset `delta.enableChangeDataFeed`.
 4. Table protocol change: upgrade protocol to Reader Version 3 and Writer Version 7.

To produce Version 4, a writer could look at only Version 3 and discover that Change Data Feed has not been used. But in fact, this feature has been used and the table does contain some Change Data Files for Version 2. This means that, to determine all features that have ever been used by the table, a writer must either scan the whole history (which is very time-consuming) or assume the worst case: all features supported by protocol `(1, 4)` has been used.

## Supported Features
A feature is supported by a table when its name is in the `protocol` action’s `readerFeatures` and/or `writerFeatures`. Subsequent read and/or write operations on this table must respect the feature. Clients must not remove the feature from the `protocol` action.

Writers are allowed to add support of a feature to the table by adding its name to `readerFeatures` or `writerFeatures`. Reader features should be listed in both `readerFeatures` and `writerFeatures` simultaneously, while writer features should be listed only in `writerFeatures`. It is not allowed to list a feature only in `readerFeatures` but not in `writerFeatures`.

A feature being supported does not imply that it is active. For example, a table may have the [Append-only Tables](#append-only-tables) feature (feature name `appendOnly`) listed in `writerFeatures`, but it does not have a table property `delta.appendOnly` that is set to `true`. In such a case the table is not append-only, and writers are allowed to change, remove, and rearrange data. However, writers must know that the table property `delta.appendOnly` should be checked before writing the table.

## Active Features
A feature is active on a table when it is supported *and* its metadata requirements are satisfied. Each feature defines its own metadata requirements, as stated in the corresponding sections of this document. For example, the Append-only feature is active when the `appendOnly` feature name is present in a `protocol`'s `writerFeatures` *and* a table property `delta.appendOnly` set to `true`.

# Column Mapping
Delta can use column mapping to avoid any column naming restrictions, and to support the renaming and dropping of columns without having to rewrite all the data. There are two modes of column mapping, by `name` and by `id`. In both modes, every column - nested or leaf - is assigned a unique _physical_ name, and a unique 32-bit integer as an id. The physical name is stored as part of the column metadata with the key `delta.columnMapping.physicalName`. The column id is stored within the metadata with the key `delta.columnMapping.id`.

The column mapping is governed by the table property `delta.columnMapping.mode` being one of `none`, `id`, and `name`. The table property should only be honored if the table's protocol has reader and writer versions and/or table features that support the `columnMapping` table feature. For readers this is Reader Version 2, or Reader Version 3 with the `columnMapping` table feature listed as supported. For writers this is Writer Version 5 or 6, or Writer Version 7 with the `columnMapping` table feature supported.

The following is an example for the column definition of a table that leverages column mapping. See the [appendix](#schema-serialization-format) for a more complete schema definition.
```json
{
    "name" : "e",
    "type" : {
      "type" : "array",
      "elementType" : {
        "type" : "struct",
        "fields" : [ {
          "name" : "d",
          "type" : "integer",
          "nullable" : false,
          "metadata" : { 
            "delta.columnMapping.id": 5,
            "delta.columnMapping.physicalName": "col-a7f4159c-53be-4cb0-b81a-f7e5240cfc49"
          }
        } ]
      },
      "containsNull" : true
    },
    "nullable" : true,
    "metadata" : { 
      "delta.columnMapping.id": 4,
      "delta.columnMapping.physicalName": "col-5f422f40-de70-45b2-88ab-1d5c90e94db1"
    }
  }
```

## Writer Requirements for Column Mapping
In order to support column mapping, writers must:
 - Write `protocol` and `metaData` actions when Column Mapping is turned on for the first time:
   - If the table is on Writer Version 5 or 6: write a `metaData` action to add the `delta.columnMapping.mode` table property;
   - If the table is on Writer Version 7:
     - write a `protocol` action to add the feature `columnMapping` to both `readerFeatures` and `writerFeatures`, and
     - write a `metaData` action to add the `delta.columnMapping.mode` table property.
 - Write data files by using the _physical name_ that is chosen for each column. The physical name of the column is static and can be different than the _display name_ of the column, which is changeable.
 - Write the 32 bit integer column identifier as part of the `field_id` field of the `SchemaElement` struct in the [Parquet Thrift specification](https://github.com/apache/parquet-format/blob/master/src/main/thrift/parquet.thrift).
 - Track partition values, column level statistics, and [clustering column](#clustered-table) names with the physical name of the column in the transaction log.
 - Assign a globally unique identifier as the physical name for each new column that is added to the schema. This is especially important for supporting cheap column deletions in `name` mode. In addition, column identifiers need to be assigned to each column. The maximum id that is assigned to a column is tracked as the table property `delta.columnMapping.maxColumnId`. This is an internal table property that cannot be configured by users. This value must increase monotonically as new columns are introduced and committed to the table alongside the introduction of the new columns to the schema.

## Reader Requirements for Column Mapping
If the table is on Reader Version 2, or if the table is on Reader Version 3 and the feature `columnMapping` is present in `readerFeatures`, readers and writers must read the table property `delta.columnMapping.mode` and do one of the following.

In `none` mode, or if the table property is not present, readers must read the parquet files by using the display names (the `name` field of the column definition) of the columns in the schema.

In `id ` mode, readers must resolve columns by using the `field_id` in the parquet metadata for each file, as given by the column metadata property `delta.columnMapping.id` in the Delta schema. Partition values and column level statistics must be resolved by their *physical names* for each `add` entry in the transaction log. If a data file does not contain field ids, readers must refuse to read that file or return nulls for each column. For ids that cannot be found in a file, readers must return `null` values for those columns.

In `name` mode, readers must resolve columns in the data files by their physical names as given by the column metadata property `delta.columnMapping.physicalName` in the Delta schema. Partition values and column level statistics will also be resolved by their physical names. For columns that are not found in the files, `null`s need to be returned. Column ids are not used in this mode for resolution purposes.

# Deletion Vectors
To support this feature:
 - To support Deletion Vectors, a table must have Reader Version 3 and Writer Version 7. A feature name `deletionVectors` must exist in the table's `readerFeatures` and `writerFeatures`.

When supported:
 - A table may have a metadata property `delta.enableDeletionVectors` in the Delta schema set to `true`. Writers must only write new Deletion Vectors (DVs) when this property is set to `true`.
 - A table's `add` and `remove` actions can optionally include a DV that provides information about logically deleted rows, that are however still physically present in the underlying data file and must thus be skipped during processing. Readers must read the table considering the existence of DVs, even when the `delta.enableDeletionVectors` table property is not set.

DVs can be stored and accessed in different ways, indicated by the `storageType` field. The Delta protocol currently supports inline or on-disk storage, where the latter can be accessed either by a relative path derived from a UUID or an absolute path.

## Deletion Vector Descriptor Schema

The schema of the `DeletionVectorDescriptor` struct is as follows:

Field Name | Data Type | Description
-|-|-
storageType | String | A single character to indicate how to access the DV. Legal options are: `['u', 'i', 'p']`.
pathOrInlineDv | String | Three format options are currently proposed:<ul><li>If `storageType = 'u'` then  `<random prefix - optional><base85 encoded uuid>`: The deletion vector is stored in a file with a path relative to the data directory of this Delta table, and the  file name can be reconstructed from the UUID. See Derived Fields for how to reconstruct the file name. The random prefix is recovered as the extra characters before the (20 characters fixed length) uuid.</li><li>If `storageType = 'i'` then `<base85 encoded bytes>`: The deletion vector is stored inline in the log. The format used is the `RoaringBitmapArray` format also used when the DV is stored on disk and described in [Deletion Vector Format](#Deletion-Vector-Format).</li><li>If `storageType = 'p'` then `<absolute path>`: The DV is stored in a file with an absolute path given by this path, which has the same format as the `path` field in the `add`/`remove` actions.</li></ul>
offset | Option[Int] | Start of the data for this DV in number of bytes from the beginning of the file it is stored in. Always `None` (absent in JSON) when `storageType = 'i'`.
sizeInBytes | Int | Size of the serialized DV in bytes (raw data size, i.e. before base85 encoding, if inline).
cardinality | Long | Number of rows the given DV logically removes from the file.

The concrete Base85 variant used is [Z85](https://rfc.zeromq.org/spec/32/), because it is JSON-friendly.

### Derived Fields

Some fields that are necessary to use the DV are not stored explicitly but can be derived in code from the stored fields.

Field Name | Data Type | Description | Computed As
-|-|-|-
uniqueId | String | Uniquely identifies a DV for a given file. This is used for snapshot reconstruction to differentiate the same file with different DVs in successive versions. | If `offset` is `None` then `<storageType><pathOrInlineDv>`. <br> Otherwise `<storageType><pathOrInlineDv>@<offset>`.
absolutePath | String/URI/Path | The absolute path of the DV file. Can be calculated for relative path DVs by providing a parent directory path. | If `storageType='p'`, just use the already absolute path. If `storageType='u'`, the DV is stored at `<parent path>/<random prefix>/deletion_vector_<uuid in canonical textual representation>.bin`. This is not a legal field if `storageType='i'`, as an inline DV has no absolute path.

### JSON Example 1 — On Disk with Relative Path (with Random Prefix)
```json
{
  "storageType" : "u",
  "pathOrInlineDv" : "ab^-aqEH.-t@S}K{vb[*k^",
  "offset" : 4,
  "sizeInBytes" : 40,
  "cardinality" : 6
}
```
Assuming that this DV is stored relative to an `s3://mytable/` directory, the absolute path to be resolved here would be: `s3://mytable/ab/deletion_vector_d2c639aa-8816-431a-aaf6-d3fe2512ff61.bin`.

### JSON Example 2 — On Disk with Absolute Path
```json
{
  "storageType" : "p",
  "pathOrInlineDv" : "s3://mytable/deletion_vector_d2c639aa-8816-431a-aaf6-d3fe2512ff61.bin",
  "offset" : 4,
  "sizeInBytes" : 40,
  "cardinality" : 6
}
```

### JSON Example 3 — Inline
```json
{
  "storageType" : "i",
  "pathOrInlineDv" : "wi5b=000010000siXQKl0rr91000f55c8Xg0@@D72lkbi5=-{L",
  "sizeInBytes" : 40,
  "cardinality" : 6
}
```
The row indexes encoded in this DV are: 3, 4, 7, 11, 18, 29.

## Reader Requirements for Deletion Vectors
If a snapshot contains logical files with records that are invalidated by a DV, then these records *must not* be returned in the output.

## Writer Requirement for Deletion Vectors
When adding a logical file with a deletion vector, then that logical file must have correct `numRecords` information for the data file in the `stats` field.

# Catalog-managed tables

With this feature enabled, the [catalog](#terminology-catalogs) that manages the table becomes the
source of truth for whether a given commit attempt succeeded.

The table feature defines the parts of the [commit protocol](#commit-protocol) that directly impact
the Delta table (e.g. atomicity requirements, publishing, etc). The Delta client and catalog
together are responsible for implementing the Delta-specific aspects of commit as defined by this
spec, but are otherwise free to define their own APIs and protocols for communication with each
other.

**NOTE**: Filesystem-based access to catalog-managed tables is not supported. Delta clients are
expected to discover and access catalog-managed tables through the managing catalog, not by direct
listing in the filesystem. This feature is primarily designed to warn filesystem-based readers that
might attempt to access a catalog-managed table's storage location without going through the catalog
first, and to block filesystem-based writers who could otherwise corrupt both the table and the
catalog by failing to commit through the catalog.

Before we can go into details of this protocol feature, we must first align our terminology.

## Terminology: Commits

A commit is a set of [actions](#actions) that transform a Delta table from version `v - 1` to `v`.
It contains the same kind of content as is stored in a [Delta file](#delta-log-entries).

A commit may be stored in the file system as a Delta file - either _published_ or _staged_ - or
stored _inline_ in the managing catalog, using whatever format the catalog prefers.

There are several types of commits:

1. **Proposed commit**:  A commit that a Delta client has proposed for the next version of the
   table. It could be _staged_ or _inline_. It will either become _ratified_ or be rejected.

2. <a name="staged-commit">**Staged commit**</a>: A commit that is written to disk at
   `_delta_log/_staged_commits/<v>.<uuid>.json`. It has the same content and format as a published
   Delta file.
    - Here, the `uuid` is a random UUID that is generated for each commit and `v` is the version
      which is proposed to be committed, zero-padded to 20 digits.
    - The mere existence of a staged commit does not mean that the file has been ratified or even
      proposed. It might correspond to a failed or in-progress commit attempt.
    - The catalog is the source of truth around which staged commits are ratified.
    - The catalog stores only the location, not the content, of a staged (and ratified) commit.

3. <a name="inline-commit">**Inline commit**</a>: A proposed commit that is not written to disk but
   rather has its content sent to the catalog for the catalog to store directly.

4. <a name="ratified-commit">**Ratified commit**</a>: A proposed commit that a catalog has
   determined has won the commit at the desired version of the table.
    - The catalog must store ratified commits (that is, the staged commit's location or the inline
      commit's content) until they are published to the `_delta_log` directory.
    - A ratified commit may or may not yet be published.
    - A ratified commit may or may not even be stored by the catalog at all - the catalog may
      have just atomically published it to the filesystem directly, relying on PUT-if-absent
      primitives to facilitate the ratification and publication all in one step.

5. <a name="published-commit">**Published commit**</a>: A ratified commit that has been copied into
   the `_delta_log` as a normal Delta file, i.e. `_delta_log/<v>.json`.
    - Here, the `v` is the version which is being committed, zero-padded to 20 digits.
    - The existence of a `<v>.json` file proves that the corresponding version `v` is ratified,
      regardless of whether the table is catalog-managed or filesystem-based. The catalog is allowed
      to return information about published commits, but Delta clients can also use filesystem
      listing operations to directly discover them.
    - Published commits do not need to be stored by the catalog.

## Terminology: Delta Client

This is the component that implements support for reading and writing Delta tables, and implements
the logic required by the `catalogManaged` table feature. Among other things, it
- triggers the filesystem listing, if needed, to discover published commits
- generates the commit content (the set of [actions](#actions))
- works together with the query engine to trigger the commit process and invoke the client-side
  catalog component with the commit content

The Delta client is also responsible for defining the client-side API that catalogs should target.
That is, there must be _some_ API that the [catalog client](#catalog-client) can use to communicate
to the Delta client the subset of catalog-managed information that the Delta client cares about.
This protocol feature is concerned with what information Delta cares about, but leaves to Delta
clients the design of the API they use to obtain that information from catalog clients.

## Terminology: Catalogs

1. **Catalog**: A catalog is an entity which manages a Delta table, including its creation, writes,
   reads, and eventual deletion.
    - It could be backed by a database, a filesystem, or any other persistence mechanism.
    - Each catalog has its own spec around how catalog clients should interact with them, and how
      they perform a commit.

2. <a name="catalog-client">**Catalog Client**</a>: The catalog always has a client-side component
   which the Delta client interacts with directly. This client-side component has two primary
   responsibilities:
    - implement any client-side catalog-specific logic (such as staging or
      [publishing](#publishing-commits) commits)
    - communicate with the Catalog Server, if any

3. **Catalog Server**: The catalog may also involve a server-side component which the client-side
   component would be responsible to communicate with.
    - This server is responsible for coordinating commits and potentially persisting table metadata
      and enforcing authorization policies.
    - Not all catalogs require a server; some may be entirely client-side, e.g. filesystem-backed
      catalogs, or they may make use of a generic database server and implement all of the catalog's
      business logic client-side.

**NOTE**: This specification outlines the responsibilities and actions that catalogs must implement.
This spec does its best not to assume any specific catalog _implementation_, though it does call out
likely client-side and server-side responsibilities. Nonetheless, what a given catalog does
client-side or server-side is up to each catalog implementation to decide for itself.

## Catalog Responsibilities

When the `catalogManaged` table feature is enabled, a catalog performs commits to the table on behalf
of the Delta client.

As stated above, the Delta spec does not mandate any particular client-server design or API for
catalogs that manage Delta tables. However, the catalog does need to provide certain capabilities
for reading and writing Delta tables:

- Atomically commit a version `v` with a given set of `actions`. This is explained in detail in the
  [commit protocol](#commit-protocol) section.
- Retrieve information about recent ratified commits and the latest ratified version on the table.
  This is explained in detail in the [Getting Ratified Commits from the Catalog](#getting-ratified-commits-from-the-catalog) section.
- Though not required, it is encouraged that catalogs also return the latest table-level metadata,
  such as the latest Protocol and Metadata actions, for the table. This can provide significant
  performance advantages to conforming Delta clients, who may forgo log replay and instead trust
  the information provided by the catalog during query planning.

## Reading Catalog-managed Tables

A catalog-managed table can have a mix of (a) published and (b) ratified but non-published commits.
The catalog is the source of truth for ratified commits. Also recall that ratified commits can be
[staged commits](#staged-commit) that are persisted to the `_delta_log/_staged_commits` directory,
or [inline commits](#inline-commit) whose content the catalog stores directly.

For example, suppose the `_delta_log` directory contains the following files:

```
00000000000000000000.json
00000000000000000001.json
00000000000000000002.checkpoint.parquet
00000000000000000002.json
00000000000000000003.00000000000000000005.compacted.json
00000000000000000003.json
00000000000000000004.json
00000000000000000005.json
00000000000000000006.json
00000000000000000007.json
_staged_commits/00000000000000000007.016ae953-37a9-438e-8683-9a9a4a79a395.json // ratified and published
_staged_commits/00000000000000000008.7d17ac10-5cc3-401b-bd1a-9c82dd2ea032.json // ratified
_staged_commits/00000000000000000008.b91807ba-fe18-488c-a15e-c4807dbd2174.json // rejected
_staged_commits/00000000000000000010.0f707846-cd18-4e01-b40e-84ee0ae987b0.json // not yet ratified
_staged_commits/00000000000000000010.7a980438-cb67-4b89-82d2-86f73239b6d6.json // partial file
```

Further, suppose the catalog stores the following ratified commits:
```
{
  7  -> "00000000000000000007.016ae953-37a9-438e-8683-9a9a4a79a395.json",
  8  -> "00000000000000000008.7d17ac10-5cc3-401b-bd1a-9c82dd2ea032.json",
  9  -> <inline commit: content stored by the catalog directly>
}
```

Some things to note are:
- the catalog isn't aware that commit 7 was already published - perhaps the response from the
  filesystem was dropped
- commit 9 is an inline commit
- neither of the two staged commits for version 10 have been ratified

To read such tables, Delta clients must first contact the catalog to get the ratified commits. This
informs the Delta client of commits [7, 9] as well as the latest ratified version, 9.

If this information is insufficient to construct a complete snapshot of the table, Delta clients
must LIST the `_delta_log` directory to get information about the published commits. For commits
that are both returned by the catalog and already published, Delta clients must treat the catalog's
version as authoritative and read the commit returned by the catalog. Additionally, Delta clients
must ignore any files with versions greater than the latest ratified commit version returned by the
catalog.

Combining these two sets of files and commits enables Delta clients to generate a snapshot at the
latest version of the table.

**NOTE**: This spec prescribes the _minimum_ required interactions between Delta clients and
catalogs for commits. Catalogs may very well expose APIs and work with Delta clients to be
informed of other non-commit [file types](#file-types), such as checkpoint, log
compaction, and version checksum files. This would allow catalogs to return additional
information to Delta clients during query and scan planning, potentially allowing Delta
clients to avoid LISTing the filesystem altogether.

## Commit Protocol

To start, Delta Clients send the desired actions to be committed to the client-side component of the
catalog.

This component then has several options for proposing, ratifying, and publishing the commit,
detailed below.

- Option 1: Write the actions (likely client-side) to a [staged commit file](#staged-commit) in the
  `_delta_log/_staged_commits` directory and then ratify the staged commit (likely server-side) by
  atomically recording (in persistent storage of some kind) that the file corresponds to version `v`.
- Option 2: Treat this as an [inline commit](#inline-commit) (i.e. likely that the client-side
  component sends the contents to the server-side component) and atomically record (in persistent
  storage of some kind) the content of the commit as version `v` of the table.
- Option 3: Catalog implementations that use PUT-if-absent (client- or server-side) can ratify and
  publish all-in-one by atomically writing a [published commit file](#published-commit)
  in the `_delta_log` directory. Note that this commit will be considered to have succeeded as soon
  as the file becomes visible in the filesystem, regardless of when or whether the catalog is made
  aware of the successful publish. The catalog does not need to store these files.

A catalog must not ratify version `v` until it has ratified version `v - 1`, and it must ratify
version `v` at most once.

The catalog must store both flavors of ratified commits (staged or inline) and make them available
to readers until they are [published](#publishing-commits).

For performance reasons, Delta clients are encouraged to establish an API contract where the catalog
provides the latest ratified commit information whenever a commit fails due to version conflict.

## Getting Ratified Commits from the Catalog

Even after a commit is ratified, it is not discoverable through filesystem operations until it is
[published](#publishing-commits).

The catalog-client is responsible to implement an API (defined by the Delta client) that Delta clients can
use to retrieve the latest ratified commit version (authoritative), as well as the set of ratified
commits the catalog is still storing for the table. If some commits needed to complete the snapshot
are not stored by the catalog, as they are already published, Delta clients can issue a filesystem
LIST operation to retrieve them.

Delta clients must establish an API contract where the catalog provides ratified commit information
as part of the standard table resolution process performed at query planning time.

## Publishing Commits

Publishing is the process of copying the ratified commit with version `<v>` to
`_delta_log/<v>.json`. The ratified commit may be a staged commit located in
`_delta_log/_staged_commits/<v>.<uuid>.json`, or it may be an inline commit whose content the
catalog stores itself. Because the content of a ratified commit is immutable, it does not matter
whether the client-side, server-side, or both catalog components initiate publishing.

Implementations are strongly encouraged to publish commits promptly. This reduces the number of
commits the catalog needs to store internally (and serve up to readers).

Commits must be published _in order_. That is, version `v - 1` must be published _before_ version
`v`.

**NOTE**: Because commit publishing can happen at any time after the commit succeeds, the file
modification timestamp of the published file will not accurately reflect the original commit time.
For this reason, catalog-managed tables must use [in-commit-timestamps](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#in-commit-timestamps)
to ensure stability of time travel reads. Refer to [Writer Requirements for Catalog-managed Tables](#writer-requirements-for-catalog-managed-tables)
section for more details.

## Maintenance Operations on Catalog-managed Tables

[Checkpoints](#checkpoints-1) and [Log Compaction Files](#log-compaction-files) can only be created
for versions that are already published in the `_delta_log`. In other words, in order to checkpoint
version `v` or produce a log compaction file for commit range `x <= v <= y`, `_delta_log/<v>.json`
must exist.

Notably, the [Version Checksum File](#version-checksum-file) for version `v` _can_ be created in the
`_delta_log` even if the commit for version `v` is not published.

By default, maintenance operations are prohibited unless the managing catalog explicitly permits
the client to run them. The only exceptions are checkpoints, log compaction, and version checksum,
as they are essential for all basic table operations (e.g. reads and writes) to operate reliably.
All other maintenance operations such as the following are not allowed by default.
- [Log and other metadata files clean up](#metadata-cleanup).
- Data files cleanup, for example VACUUM.
- Data layout changes, for example OPTIMIZE and REORG.

## Creating and Dropping Catalog-managed Tables

The catalog and query engine ultimately dictate how to create and drop catalog-managed tables.

As one example, table creation often works in three phases:

1. An initial catalog operation to obtain a unique storage location which serves as an unnamed
   "staging" table
2. A table operation that physically initializes a new `catalogManaged`-enabled table at the staging
   location.
3. A final catalog operation that registers the new table with its intended name.

Delta clients would primarily be involved with the second step, but an implementation could choose
to combine the second and third steps so that a single catalog call registers the table as part of
the table's first commit.

As another example, dropping a table can be as simple as removing its name from the catalog (a "soft
delete"), followed at some later point by a "hard delete" that physically purges the data. The Delta
client would not be involved at all in this process, because no commits are made to the table.

## Catalog-managed Table Enablement

The `catalogManaged` table feature is supported and active when:
- The table is on Reader Version 3 and Writer Version 7.
- The table has a `protocol` action with `readerFeatures` and `writerFeatures` both containing the
  feature `catalogManaged`.

## Writer Requirements for Catalog-managed tables

When supported and active:

- Writers must discover and access the table using catalog calls, which happens _before_ the table's
  protocol is known. See [Table Discovery](#table-discovery) for more details.
- The [in-commit-timestamps](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#in-commit-timestamps)
  table feature must be supported and active.
- The `commitInfo` action must also contain a field `txnId` that stores a unique transaction
  identifier string
- Writers must follow the catalog's [commit protocol](#commit-protocol) and must not perform
  ordinary filesystem-based commits against the table.
- Writers must follow the catalog's [maintenance operation protocol](#maintenance-operations-on-catalog-managed-tables)

## Reader Requirements for Catalog-managed tables

When supported and active:

- Readers must discover the table using catalog calls, which happens before the table's protocol
  is known. See [Table Discovery](#table-discovery) for more details.
- Readers must contact the catalog for information about unpublished ratified commits.
- Readers must follow the rules described in the [Reading Catalog-managed Tables](#reading-catalog-managed-tables)
  section above. Notably
  - If the catalog said `v` is the latest version, clients must ignore any later versions that may
    have been published
  - When the catalog returns a ratified commit for version `v`, readers must use that
    catalog-supplied commit and ignore any published Delta file for version `v` that might also be
    present.

## Table Discovery

The requirements above state that readers and writers must discover and access the table using
catalog calls, which occurs _before_ the table's protocol is known. This raises an important
question: how can a client discover a `catalogManaged` Delta table without first knowing that it
_is_, in fact, `catalogManaged` (according to the protocol)?

To solve this, first note that, in practice, catalog-integrated engines already ask the catalog to
resolve a table name to its storage location during the name resolution step. This protocol
therefore encourages that the same name resolution step also indicate whether the table is
catalog-managed. Surfacing this at the very moment the catalog returns the path imposes no extra
round-trips, yet it lets the client decide — early and unambiguously — whether to follow the
`catalogManaged` read and write rules.

## Sample Catalog Client API

The following is an example of a possible API which a Java-based Delta client might require catalog
implementations to target:

```scala

interface CatalogManagedTable {
    /**
     * Commits the given set of `actions` to the given commit `version`.
     *
     * @param version The version we want to commit.
     * @param actions Actions that need to be committed.
     *
     * @return CommitResponse which has details around the new committed delta file.
     */
    def commit(
        version: Long,
        actions: Iterator[String]): CommitResponse

    /**
     * Retrieves a (possibly empty) suffix of ratified commits in the range [startVersion,
     * endVersion] for this table.
     * 
     * Some of these ratified commits may already have been published. Some of them may be staged,
     * in which case the staged commit file path is returned; others may be inline, in which case
     * the inline commit content is returned.
     * 
     * The returned commits are sorted in ascending version number and are contiguous.
     *
     * If neither start nor end version is specified, the catalog will return all available ratified
     * commits (possibly empty, if all commits have been published).
     *
     * In all cases, the response also includes the table's latest ratified commit version.
     *
     * @return GetCommitsResponse which contains an ordered list of ratified commits
     *         stored by the catalog, as well as table's latest commit version.
     */
    def getRatifiedCommits(
        startVersion: Option[Long],
        endVersion: Option[Long]): GetCommitsResponse
}
```

Note that the above is only one example of a possible Catalog Client API. It is also _NOT_ a catalog
API (no table discovery, ACL, create/drop, etc). The Delta protocol is agnostic to API details, and
the API surface Delta clients define should only cover the specific catalog capabilities that Delta
client needs to correctly read and write catalog-managed tables.

# Iceberg Compatibility V1

This table feature (`icebergCompatV1`) ensures that Delta tables can be converted to Apache Iceberg™ format, though this table feature does not implement or specify that conversion.

To support this feature:
- Since this table feature depends on Column Mapping, the table must be on Reader Version = 2, or it must be on Reader Version >= 3 and the feature `columnMapping` must exist in the `protocol`'s `readerFeatures`.
- The table must be on Writer Version 7.
- The feature `icebergCompatV1` must exist in the table `protocol`'s `writerFeatures`.

This table feature is enabled when the table property `delta.enableIcebergCompatV1` is set to `true`.

## Writer Requirements for IcebergCompatV1

When supported and active, writers must:
- Require that Column Mapping be enabled and set to either `name` or `id` mode
- Require that Deletion Vectors are not supported (and, consequently, not active, either). i.e., the `deletionVectors` table feature is not present in the table `protocol`.
- Require that partition column values are materialized into any Parquet data file that is present in the table, placed *after* the data columns in the parquet schema
- Require that all `AddFile`s committed to the table have the `numRecords` statistic populated in their `stats` field
- Block adding `Map`/`Array`/`Void` types to the table schema (and, thus, block writing them, too)
- Block replacing partitioned tables with a differently-named partition spec
  - e.g. replacing a table partitioned by `part_a INT` with partition spec `part_b INT` must be blocked
  - e.g. replacing a table partitioned by `part_a INT` with partition spec `part_a LONG` is allowed
- When the [Type Widening](#type-widening) table feature is supported, require that all type changes applied on the table are supported by [Iceberg V2](https://iceberg.apache.org/spec/#schema-evolution), based on the [Type Change Metadata](#type-change-metadata) recorded in the table schema.

# Iceberg Compatibility V2

This table feature (`icebergCompatV2`) ensures that Delta tables can be converted to Apache Iceberg™ format, though this table feature does not implement or specify that conversion.

To support this feature:
- Since this table feature depends on Column Mapping, the table must be on Reader Version = 2, or it must be on Reader Version >= 3 and the feature `columnMapping` must exist in the `protocol`'s `readerFeatures`.
- The table must be on Writer Version 7.
- The feature `icebergCompatV2` must exist in the table protocol's `writerFeatures`.

This table feature is enabled when the table property `delta.enableIcebergCompatV2` is set to `true`. 

## Writer Requirements for IcebergCompatV2

When this feature is supported and enabled, writers must:
- Require that Column Mapping be enabled and set to either `name` or `id` mode
- Require that the nested `element` field of ArrayTypes and the nested `key` and `value` fields of MapTypes be assigned 32 bit integer identifiers. These identifiers must be unique and different from those used in [Column Mapping](#column-mapping), and must be stored in the metadata of their nearest ancestor [StructField](#struct-field) of the Delta table schema. Identifiers belonging to the same `StructField` must be organized as a `Map[String, Long]` and stored in metadata with key `parquet.field.nested.ids`. The keys of the map are "element", "key", or "value", prefixed by the name of the nearest ancestor StructField, separated by dots. The values are the identifiers. The keys for fields in nested arrays or nested maps are prefixed by their parents' key, separated by dots. An [example](#example-of-storing-identifiers-for-nested-fields-in-arraytype-and-maptype) is provided below to demonstrate how the identifiers are stored. These identifiers must be also written to the `field_id` field of the `SchemaElement` struct in the [Parquet Thrift specification](https://github.com/apache/parquet-format/blob/master/src/main/thrift/parquet.thrift) when writing parquet files.
- Require that IcebergCompatV1 is not active, which means either the `icebergCompatV1` table feature is not present in the table protocol or the table property `delta.enableIcebergCompatV1` is not set to `true`
- Require that Deletion Vectors are not active, which means either the `deletionVectors` table feature is not present in the table protocol or the table property `delta.enableDeletionVectors` is not set to `true`
- Require that partition column values be materialized when writing Parquet data files
- Require that all new `AddFile`s committed to the table have the `numRecords` statistic populated in their `stats` field
- Require writing timestamp columns as int64
- Require that the table schema contains only data types in the following allow-list: [`byte`, `short`, `integer`, `long`, `float`, `double`, `decimal`, `string`, `binary`, `boolean`, `timestamp`, `timestampNTZ`, `date`, `array`, `map`, `struct`].
- Block replacing partitioned tables with a differently-named partition spec
  - e.g. replacing a table partitioned by `part_a INT` with partition spec `part_b INT` must be blocked
  - e.g. replacing a table partitioned by `part_a INT` with partition spec `part_a LONG` is allowed
- When the [Type Widening](#type-widening) table feature is supported, require that all type changes applied on the table are supported by [Iceberg V2](https://iceberg.apache.org/spec/#schema-evolution), based on the [Type Change Metadata](#type-change-metadata) recorded in the table schema.

### Example of storing identifiers for nested fields in ArrayType and MapType
The following is an example of storing the identifiers for nested fields in `ArrayType` and `MapType`, of a table with the following schema,
```
|-- col1: array[array[int]] 
|-- col2: map[int, array[int]]    
|-- col3: map[int, struct]
                     |-- subcol1: array[int]
```
The identifiers for the nested fields are stored in the metadata as follows: 
```json
[
  {
    "name": "col1",
    "type": {
      "type": "array",
      "elementType": {
        "type": "array",
        "elementType": "int"
      }
    },
    "metadata": {
      "parquet.field.nested.ids": {
        "col1.element": 100,
        "col1.element.element": 101
      }
    }
  },
  {
    "name": "col2",
    "type": {
      "type": "map",
      "keyType": "int",
      "valueType": {
        "type": "array",
        "elementType": "int"
      }
    },
    "metadata": {
      "parquet.field.nested.ids": {
        "col2.key": 102,
        "col2.value": 103,
        "col2.value.element": 104
      }
    }
  },
  {
    "name": "col3",
    "type": {
      "type": "map",
      "keyType": "int",
      "valueType": {
        "type": "struct",
        "fields": [
          {
            "name": "subcol1",
            "type": {
              "type": "array",
              "elementType": "int"
            },
            "metadata": {
              "parquet.field.nested.ids": {
                "subcol1.element": 107
              }
            }
          }
        ]
      }
    },
    "metadata": {
      "parquet.field.nested.ids": {
        "col3.key": 105,
        "col3.value": 106
      }
    }
  }
]
```
# Timestamp without timezone (TimestampNtz)
This feature introduces a new data type to support timestamps without timezone information. For example: `1970-01-01 00:00:00`, or `1970-01-01 00:00:00.123456`.
The serialization method is described in Sections [Partition Value Serialization](#partition-value-serialization) and [Schema Serialization Format](#schema-serialization-format).

To support this feature:
- To have a column of TimestampNtz type in a table, the table must have Reader Version 3 and Writer Version 7. A feature name `timestampNtz` must exist in the table's `readerFeatures` and `writerFeatures`.


# V2 Checkpoint Table Feature
To support this feature:
- To add [V2 Checkpoints](#v2-spec) support to a table, the table must have Reader Version 3 and Writer Version 7. A feature name `v2Checkpoint` must exist in the table's `readerFeatures` and `writerFeatures`.

When supported:
- A table could use [uuid-named](#uuid-named-checkpoint) [V2 spec Checkpoints](#v2-spec) which must have [checkpoint metadata](#checkpoint-metadata) and may have [sidecar files](#sidecar-files) OR
- A table could use [classic](#classic-checkpoint) checkpoints which can follow [V1](#v1-spec) or [V2](#v2-spec) spec.
- A table must not use [multi-part checkpoints](#multi-part-checkpoint)

# Row Tracking

Row Tracking is a feature that allows the tracking of rows across multiple versions of a Delta table.
It enables this by exposing two metadata columns: Row IDs, which uniquely identify a row across multiple versions of a table,
and Row Commit Versions, which make it possible to check whether two rows with the same ID in two different versions of the table represent the same version of the row.

Row Tracking is defined to be **supported** or **enabled** on a table as follows:
- When the feature `rowTracking` exists in the table `protocol`'s `writerFeatures`, then we say that Row Tracking is **supported**.
  In this situation, writers must assign Row IDs and Commit Versions as long as `delta.rowTrackingSuspended` table property is absent or set to false. However, they cannot yet be relied upon to be present in the table.
  When Row Tracking is supported but not yet enabled writers cannot preserve Row IDs and Commit Versions.
- When additionally the table property `delta.enableRowTracking` is set to `true`, then we say that Row Tracking is **enabled**.
  In this situation, Row IDs and Row Commit versions can be relied upon to be present in the table for all rows.
  When Row Tracking is enabled writers are expected to preserve Row IDs and Commit Versions.
- When the table property `delta.rowTrackingSuspended` is set to true, writers should suspend the assignment of Row IDs and Commit Versions.
  Table property `delta.rowTrackingSuspended` should not be enabled together with table property `delta.enableRowTracking`.

Enablement:
- The table must be on Writer Version 7.
- The feature `rowTracking` must exist in the table `protocol`'s `writerFeatures`. The feature `domainMetadata` is required in the table `protocol`'s `writerFeatures`.
- The table property `delta.enableRowTracking` must be set to `true`.
- The table property `delta.rowTrackingSuspended` should be absent or set to `false`.

## Row IDs

Delta provides Row IDs. Row IDs are integers that are used to uniquely identify rows within a table.
Every row has two Row IDs:

- A **fresh** or unstable **Row ID**.
  This ID uniquely identifies the row within one version of the table.
  The fresh ID of a row may change every time the table is updated, even for rows that are not modified. E.g. when a row is copied unchanged during an update operation, it will get a new fresh ID. Fresh IDs can be used to identify rows within one version of the table, e.g. for identifying matching rows in self joins.
- A **stable Row ID**.
  This ID uniquely identifies the row across versions of the table and across updates.
  When a row is inserted, it is assigned a new stable Row ID that is equal to the fresh Row ID.
  When a row is updated or copied, the stable Row ID for this row is preserved.
  When a row is restored (i.e. the table is restored to an earlier version), its stable Row ID is restored as well.

The fresh and stable Row IDs are not required to be equal.

Row IDs are stored in two ways:

- **Default generated Row IDs** use the `baseRowId` field stored in `add` and `remove` actions to generate fresh Row IDs.
  The default generated Row IDs for data files are calculated by adding the `baseRowId` of the file in which a row is contained to the (physical) position (index) of the row within the file.
  Default generated Row IDs require little storage overhead but are reassigned every time a row is updated or moved to a different file (for instance when a row is contained in a file that is compacted by OPTIMIZE).

- **Materialized Row IDs** are stored in a column in the data files.
  This column is hidden from readers and writers, i.e. it is not part of the `schemaString` in the table's `metaData`.
  Instead, the name of this column can be found in the value for the `delta.rowTracking.materializedRowIdColumnName` key in the `configuration` of the table's `metaData` action.
  This column may contain `null` values meaning that the corresponding row has no materialized Row ID. This column may be omitted if all its values are `null` in the file.
  Materialized Row IDs provide a mechanism for writers to preserve stable Row IDs for rows that are updated or copied.

The fresh Row ID of a row is equal to the default generated Row ID. The stable Row ID of a row is equal to the materialized Row ID of the row when that column is present and the value is not NULL, otherwise it is equal to the default generated Row ID.

When Row Tracking is enabled:
- Default generated Row IDs must be assigned to all existing rows.
  This means in particular that all files that are part of the table version that sets the table property `delta.enableRowTracking` to `true` must have `baseRowId` set.
  A backfill operation may be required to commit `add` and `remove` actions with the `baseRowId` field set for all data files before the table property `delta.enableRowTracking` can be set to `true`.

## Row Commit Versions

Row Commit Versions provide versioning of rows.

- **Fresh** or unstable **Row Commit Versions** can be used to identify the first commit version in which the `add` action containing the row was committed.
  The fresh Commit Version of a row may change every time the table is updated, even for rows that are not modified. E.g. when a row is copied unchanged during an update operation, it will get a new fresh Commit Version.
- **Stable Row Commit Versions** identify the last commit version in which the row (with the same ID) was either inserted or updated.
  When a row is inserted or updated, it is assigned the commit version number of the log entry containing the `add` entry with the new row.
  When a row is copied, the stable Row Commit Version for this row is preserved.
  When a row is restored (i.e. the table is restored to an earlier version), its stable Row Commit Version is restored as well.

The fresh and stable Row Commit Versions are not required to be equal.

Commit Versions are stored in two ways:

- **Default generated Row Commit Versions** use the `defaultRowCommitVersion` field in `add` and `remove` actions.
  Default generated Row Commit Versions require little storage overhead but are reassigned every time a row is updated or moved to a different file (for instance when a row is contained in a file that is compacted by OPTIMIZE).

- **Materialized Row Commit Versions** are stored in a column in the data files.
  This column is hidden from readers and writers, i.e. it is not part of the `schemaString` in the table's `metaData`.
  Instead, the name of this column can be found in the value for the `delta.rowTracking.materializedRowCommitVersionColumnName` key in the `configuration` of the table's `metaData` action.
  This column may contain `null` values meaning that the corresponding row has no materialized Row Commit Version. This column may be omitted if all its values are `null` in the file.
  Materialized Row Commit Versions provide a mechanism for writers to preserve Row Commit Versions for rows that are copied.

The fresh Row Commit Version of a row is equal to the default generated Row Commit version.
The stable Row Commit Version of a row is equal to the materialized Row Commit Version of the row when that column is present and the value is not NULL, otherwise it is equal to the default generated Commit Version.

## Reader Requirements for Row Tracking

When Row Tracking is enabled (when the table property `delta.enableRowTracking` is set to `true`), then:
- When Row IDs are requested, readers must reconstruct stable Row IDs as follows:
  1. Readers must use the materialized Row ID if the column determined by `delta.rowTracking.materializedRowIdColumnName` is present in the data file and the column contains a non `null` value for a row.
  2. Otherwise, readers must use the default generated Row ID of the `add` or `remove` action containing the row in all other cases.
     I.e. readers must add the index of the row in the file to the `baseRowId` of the `add` or `remove` action for the file containing the row.
- When Row Commit Versions are requested, readers must reconstruct them as follows:
  1. Readers must use the materialized Row Commit Versions if the column determined by `delta.rowTracking.materializedRowCommitVersionColumnName` is present in the data file and the column contains a non `null` value for a row.
  2. Otherwise, Readers must use the default generated Row Commit Versions of the `add` or `remove` action containing the row in all other cases.
     I.e. readers must use the `defaultRowCommitVersion` of the `add` or `remove` action for the file containing the row.
- Readers cannot read Row IDs and Row Commit Versions while reading change data files from `cdc` actions.

## Writer Requirements for Row Tracking

When Row Tracking is supported (when the `writerFeatures` field of a table's `protocol` action contains `rowTracking`) and Row Tracking is not suspended (when `delta.rowTrackingSuspended` table property is absent or set to false), then:
- Writers must assign unique fresh Row IDs to all rows that they commit.
  - Writers must set the `baseRowId` field in all `add` actions that they commit so that all default generated Row IDs are unique in the table version.
    Writers must never commit duplicate Row IDs in the table in any version.
  - Writers must set the `baseRowId` field in recommitted and checkpointed `add` actions and `remove` actions to the `baseRowId` value (if present) of the last committed `add` action with the same `path`.
  - Writers must track the high water mark, i.e. the highest fresh row id assigned.
    - The high water mark must be stored in a `domainMetadata` action with `delta.rowTracking` as the `domain`
      and a `configuration` containing a single key-value pair with `rowIdHighWaterMark` as the key and the highest assigned fresh row id as the value.
    - Writers must include a `domainMetadata` for `delta.rowTracking` whenever they assign new fresh Row IDs that are higher than `rowIdHighWaterMark` value of the current `domainMetadata` for `delta.rowTracking`.
      The `rowIdHighWaterMark` value in the `configuration` of this `domainMetadata` action must always be equal to or greater than the highest fresh Row ID committed so far.
      Writers can either commit this `domainMetadata` in the same commit, or they can reserve the fresh Row IDs in an earlier commit.
    - Writers must set the `baseRowId` field to a value that is higher than the row id high water mark.
- Writer must assign fresh Row Commit Versions to all rows that they commit.
  - Writers must set the `defaultRowCommitVersion` field in new `add` actions to the version number of the log enty containing the `add` action.
  - Writers must set the `defaultRowCommitVersion` field in recommitted and checkpointed `add` actions and `remove` actions to the `defaultRowCommitVersion` of the last committed `add` action with the same `path`.

On the other hand, when Row Tracking is supported but suspended (table property `delta.rowTrackingSuspended` is set to `true`), writers should not assign the `baseRowId` or the `defaultRowCommitVersion`.

Writers can enable Row Tracking by setting `delta.enableRowTracking` to `true` in the `configuration` of the table's `metaData`.
This is only allowed if the following requirements are satisfied:
- The feature `rowTracking` has been added to the `writerFeatures` field of a table's `protocol` action either in the same version of the table or in an earlier version of the table.
- The column name for the materialized Row IDs and Row Commit Versions have been assigned and added to the `configuration` in the table's `metaData` action using the keys `delta.rowTracking.materializedRowIdColumnName` and `delta.rowTracking.materializedRowCommitVersionColumnName` respectively.
  - The assigned column names must be unique. They must not be equal to the name of any other column in the table's schema.
    The assigned column names must remain unique in all future versions of the table.
    If [Column Mapping](#column-mapping) is enabled, then the assigned column name must be distinct from the physical column names of the table.
- The `baseRowId` and `defaultRowCommitVersion` fields are set for all active `add` actions in the version of the table in which `delta.enableRowTracking` is set to `true`.
- If the `baseRowId` and `defaultRowCommitVersion` fields are not set in some active `add` action in the table, then writers must first commit new `add` actions that set these fields to replace the `add` actions that do not have these fields set.
  This can be done in the commit that sets `delta.enableRowTracking` to `true` or in an earlier commit.
  The assigned `baseRowId` and `defaultRowCommitVersion` values must satisfy the same requirements as when assigning fresh Row IDs and fresh Row Commit Versions respectively.
Furthermore, writers should also verify table property `delta.rowTrackingSuspended` is absent or set to false before enabling Row Tracking.

When Row Tracking is enabled (when the table property `delta.enableRowTracking` is set to `true`), then:
- Writers must assign stable Row IDs to all rows.
  - Stable Row IDs must be unique within a version of the table and must not be equal to the fresh Row IDs of other rows in the same version of the table.
  - Writers should preserve the stable Row IDs of rows that are updated or copied using materialized Row IDs.
    - The preserved stable Row ID (i.e. a stable Row ID that is not equal to the fresh Row ID of the same physical row) should be equal to the stable Row ID of the same logical row before it was updated or copied.
    - Materialized Row IDs must be written to the column determined by `delta.rowTracking.materializedRowIdColumnName` in the `configuration` of the table's `metaData` action.
      The value in this column must be set to `NULL` for stable Row IDs that are not preserved.
- Writers must assign stable Row Commit Versions to all rows.
  - Writers should preserve the stable Row Commit Versions of rows that are copied (but not updated) using materialized Row Commit Versions.
    - The preserved stable Row Commit Version (i.e. a stable Row Commit Version that is not equal to the fresh Row Commit Version of the same physical row) should be equal to the stable Commit Version of the same logical row before it was copied.
    - Materialized Row Commit Versions must be written to the column determined by `delta.rowTracking.materializedRowCommitVersionColumnName` in the `configuration` of the table's `metaData` action.
      The value in this column must be set to `NULL` for stable Row Commit Versions that are not preserved (i.e. that are equal to the fresh Row Commit Version).
- Writers should set `delta.rowTracking.preserved` in the `tags` of the `commitInfo` action to `true` whenever all the stable Row IDs of rows that are updated or copied and all the stable Row Commit Versions of rows that are copied were
Download .txt
Showing preview only (332K chars total). Download the full file or copy to clipboard to get everything.
gitextract_9jbpsnjv/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug-issue.md
│   │   ├── feature-request.md
│   │   └── protocol-rfc.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── build.yaml
│       ├── flink_test.yaml
│       ├── iceberg_test.yaml
│       ├── kernel_docs.yaml
│       ├── kernel_test.yaml
│       ├── kernel_unitycatalog_test.yaml
│       ├── publish_docs.yaml
│       ├── spark_examples_test.yaml
│       ├── spark_python_test.yaml
│       ├── spark_test.yaml
│       └── unidoc.yaml
├── .gitignore
├── .sbtopts
├── .scalafmt.conf
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.txt
├── NOTICE.txt
├── PROTOCOL.md
├── README.md
├── benchmarks/
│   ├── README.md
│   ├── build/
│   │   ├── sbt
│   │   └── sbt-launch-lib.bash
│   ├── build.sbt
│   ├── infrastructure/
│   │   ├── aws/
│   │   │   └── terraform/
│   │   │       ├── .terraform.lock.hcl
│   │   │       ├── README.md
│   │   │       ├── main.tf
│   │   │       ├── modules/
│   │   │       │   ├── networking/
│   │   │       │   │   ├── main.tf
│   │   │       │   │   ├── outputs.tf
│   │   │       │   │   └── variables.tf
│   │   │       │   ├── processing/
│   │   │       │   │   ├── main.tf
│   │   │       │   │   ├── outputs.tf
│   │   │       │   │   └── variables.tf
│   │   │       │   └── storage/
│   │   │       │       ├── main.tf
│   │   │       │       └── variables.tf
│   │   │       ├── outputs.tf
│   │   │       ├── providers.tf
│   │   │       ├── variables.tf
│   │   │       └── versions.tf
│   │   └── gcp/
│   │       └── terraform/
│   │           ├── .terraform.lock.hcl
│   │           ├── README.md
│   │           ├── main.tf
│   │           ├── modules/
│   │           │   ├── processing/
│   │           │   │   ├── data.tf
│   │           │   │   ├── main.tf
│   │           │   │   ├── outputs.tf
│   │           │   │   └── variables.tf
│   │           │   └── storage/
│   │           │       ├── main.tf
│   │           │       └── variables.tf
│   │           ├── outputs.tf
│   │           ├── providers.tf
│   │           ├── variables.tf
│   │           └── versions.tf
│   ├── project/
│   │   ├── build.properties
│   │   └── plugins.sbt
│   ├── run-benchmark.py
│   ├── scripts/
│   │   ├── benchmarks.py
│   │   └── utils.py
│   └── src/
│       └── main/
│           └── scala/
│               ├── benchmark/
│               │   ├── Benchmark.scala
│               │   ├── MergeBenchmark.scala
│               │   ├── MergeDataLoad.scala
│               │   ├── MergeTestCases.scala
│               │   ├── TPCDSBenchmark.scala
│               │   ├── TPCDSBenchmarkQueries.scala
│               │   ├── TPCDSDataLoad.scala
│               │   └── TestBenchmark.scala
│               └── org/
│                   └── apache/
│                       └── spark/
│                           └── SparkUtils.scala
├── build/
│   ├── sbt
│   ├── sbt-config/
│   │   └── repositories
│   └── sbt-launch-lib.bash
├── build.sbt
├── connectors/
│   ├── .gitignore
│   ├── README.md
│   ├── golden-tables/
│   │   └── src/
│   │       ├── main/
│   │       │   ├── resources/
│   │       │   │   └── golden/
│   │       │   │       ├── 124-decimal-decode-bug/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-2abbde89-2d0f-465e-a2f0-3e84f1b84654-c000.snappy.parquet
│   │       │   │       │   └── part-00001-5419c9a2-bb44-454f-a109-6e6c6f000a24-c000.snappy.parquet
│   │       │   │       ├── 125-iterator-bug/
│   │       │   │       │   ├── .part-00000-15088d9b-5348-490b-933d-5bf9b7d0b223-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1b8ea57e-424b-4068-8d0e-707edf853376-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-223768c3-2e58-4e8a-9d15-54fa113e8c21-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-2a248db5-8f96-423c-a0f7-c503fe640c6a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-3f0f0396-41aa-4fa7-954a-c5b22f5b157a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-66d18d0c-8cab-4cfa-a2c6-7e90df860b5a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-93beced9-3a9d-4519-b31a-5602a972ffa4-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c4738537-d851-4caa-9596-d543afa47196-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c855206c-f42a-4b53-a526-08a9a957ad58-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-d8e947c6-4f26-455b-a25f-84acb1240f3a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f0b12818-15f5-4476-8ebc-9235c74408d2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f9490ff6-f374-4b40-9d76-22addae085d1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-15088d9b-5348-490b-933d-5bf9b7d0b223-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-1b8ea57e-424b-4068-8d0e-707edf853376-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-223768c3-2e58-4e8a-9d15-54fa113e8c21-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-2a248db5-8f96-423c-a0f7-c503fe640c6a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-3f0f0396-41aa-4fa7-954a-c5b22f5b157a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-66d18d0c-8cab-4cfa-a2c6-7e90df860b5a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-93beced9-3a9d-4519-b31a-5602a972ffa4-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c4738537-d851-4caa-9596-d543afa47196-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c855206c-f42a-4b53-a526-08a9a957ad58-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d8e947c6-4f26-455b-a25f-84acb1240f3a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f0b12818-15f5-4476-8ebc-9235c74408d2-c000.snappy.parquet
│   │       │   │       │   └── part-00000-f9490ff6-f374-4b40-9d76-22addae085d1-c000.snappy.parquet
│   │       │   │       ├── basic-decimal-table/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=-2342342.23423/
│   │       │   │       │   │   ├── .part-00000-8f850371-9b03-42c4-9d22-f83bc81c9b68.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-8f850371-9b03-42c4-9d22-f83bc81c9b68.c000.snappy.parquet
│   │       │   │       │   ├── part=0.00004/
│   │       │   │       │   │   ├── .part-00000-1cb60e36-6cd4-4191-a318-ae9355f877c3.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-1cb60e36-6cd4-4191-a318-ae9355f877c3.c000.snappy.parquet
│   │       │   │       │   ├── part=234.00000/
│   │       │   │       │   │   ├── .part-00000-ac109189-97e5-49af-947f-335a5e46ee5c.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-ac109189-97e5-49af-947f-335a5e46ee5c.c000.snappy.parquet
│   │       │   │       │   └── part=2342222.23454/
│   │       │   │       │       ├── .part-00000-d5a0c70f-7cd3-4d32-a9c0-7171a06547c6.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00000-d5a0c70f-7cd3-4d32-a9c0-7171a06547c6.c000.snappy.parquet
│   │       │   │       ├── basic-decimal-table-legacy/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=-2342342.23423/
│   │       │   │       │   │   ├── .part-00000-ba2f74ac-7b9b-47b9-a287-97d92bd20efc.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-ba2f74ac-7b9b-47b9-a287-97d92bd20efc.c000.snappy.parquet
│   │       │   │       │   ├── part=0.00004/
│   │       │   │       │   │   ├── .part-00000-3de65390-7061-47d6-8995-cbb632b4b203.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-3de65390-7061-47d6-8995-cbb632b4b203.c000.snappy.parquet
│   │       │   │       │   ├── part=234.00000/
│   │       │   │       │   │   ├── .part-00000-654d80b0-611a-4ff3-a8e6-2328dd21cf11.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-654d80b0-611a-4ff3-a8e6-2328dd21cf11.c000.snappy.parquet
│   │       │   │       │   └── part=2342222.23454/
│   │       │   │       │       ├── .part-00000-fe848a88-0465-4b4f-8414-25e6da7062f8.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00000-fe848a88-0465-4b4f-8414-25e6da7062f8.c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-deletes-checkpoint/
│   │       │   │       │   ├── .part-00000-0869ab64-e69d-407f-80d4-1a2ea1f69d11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1b0098ea-c696-4470-84cc-d43bb7afb833-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-26da113c-2e45-4aba-b1ce-6eb5e46c53f7-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-4b448490-06f4-4c74-9f65-9f36ae68e3b2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-60f14460-c8e0-41b4-a33f-1a83bb59f13c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-7d1a368c-74ea-42df-9527-2c9a7c8292b9-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-b09fdf65-0ae3-44d0-96d0-1d85a121b76a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-b326e43b-3e01-4cf1-b8ff-c73c8abd1616-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-bd8763c3-45e4-435e-acd6-8e599aa840bc-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c92cba9e-6c07-4a93-916a-0a6e115e39b3-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c967edfa-f104-44ea-b0da-8bc1f5402af4-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-ca2d0b26-c15c-454f-a933-fc724e15e5f1-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-da82aeb5-4edb-4cc1-91ef-970c75c965cc-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f80053c6-2b0d-41ed-ab5f-61ef1503cae6-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── .00000000000000000004.json.crc
│   │       │   │       │   │   ├── .00000000000000000005.json.crc
│   │       │   │       │   │   ├── .00000000000000000006.json.crc
│   │       │   │       │   │   ├── .00000000000000000007.json.crc
│   │       │   │       │   │   ├── .00000000000000000008.json.crc
│   │       │   │       │   │   ├── .00000000000000000009.json.crc
│   │       │   │       │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000010.json.crc
│   │       │   │       │   │   ├── .00000000000000000011.json.crc
│   │       │   │       │   │   ├── .00000000000000000012.json.crc
│   │       │   │       │   │   ├── .00000000000000000013.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   ├── 00000000000000000012.json
│   │       │   │       │   │   ├── 00000000000000000013.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-0869ab64-e69d-407f-80d4-1a2ea1f69d11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-1b0098ea-c696-4470-84cc-d43bb7afb833-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-26da113c-2e45-4aba-b1ce-6eb5e46c53f7-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-4b448490-06f4-4c74-9f65-9f36ae68e3b2-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-60f14460-c8e0-41b4-a33f-1a83bb59f13c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-7d1a368c-74ea-42df-9527-2c9a7c8292b9-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b09fdf65-0ae3-44d0-96d0-1d85a121b76a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b326e43b-3e01-4cf1-b8ff-c73c8abd1616-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-bd8763c3-45e4-435e-acd6-8e599aa840bc-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c92cba9e-6c07-4a93-916a-0a6e115e39b3-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c967edfa-f104-44ea-b0da-8bc1f5402af4-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-ca2d0b26-c15c-454f-a933-fc724e15e5f1-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-da82aeb5-4edb-4cc1-91ef-970c75c965cc-c000.snappy.parquet
│   │       │   │       │   └── part-00000-f80053c6-2b0d-41ed-ab5f-61ef1503cae6-c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-merge/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-992247c6-6cf4-45f8-8367-11a5e14b8ea9-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b4335bad-f5f0-4426-9ec4-14ed854f862b-c000.snappy.parquet
│   │       │   │       │   └── part-00001-b80a2dea-5a83-4580-96d5-4977d14195ab-c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-overwrite-restore/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-5e752668-638c-4e95-9521-5e88926e3169-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-79fa68ed-3d70-4f61-95da-9eb676b24a98-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d24c9b15-187d-4542-90ef-7834bfaa4971-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-180c081a-f358-4bf9-8daa-4d04a5aa7f51-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-66f56273-e583-4a88-9da6-2c199bdaf665-c000.snappy.parquet
│   │       │   │       │   └── part-00001-bc9b37c2-a201-499d-b604-93623e2de1d6-c000.snappy.parquet
│   │       │   │       ├── basic-with-inserts-updates/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-6dfaec75-bd45-4fd6-b20f-7d58c9341479-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f9886fc2-20a0-42fe-8b30-c3abb5e3c720-c000.snappy.parquet
│   │       │   │       │   └── part-00001-13a6bfd9-3835-44dd-b4f1-465aa95b2bf4-c000.snappy.parquet
│   │       │   │       ├── basic-with-vacuum-protocol-check-feature/
│   │       │   │       │   ├── .part-00000-e719b63b-4142-4bad-9776-45642d5858ae-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-fd905e0a-6d0c-4ce3-bb41-147517448b3b-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-e719b63b-4142-4bad-9776-45642d5858ae-c000.snappy.parquet
│   │       │   │       │   └── part-00001-fd905e0a-6d0c-4ce3-bb41-147517448b3b-c000.snappy.parquet
│   │       │   │       ├── canonicalized-paths-normal-a/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── canonicalized-paths-normal-b/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── canonicalized-paths-special-a/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── canonicalized-paths-special-b/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── commit-info-containing-arbitrary-operationParams-types/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.crc.crc
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.crc.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.crc.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.crc
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.crc
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── month=1/
│   │       │   │       │   │   ├── .part-00000-22d25ea7-a383-44df-ad22-6b06d871b547.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00000-c5babbd8-6013-484c-818f-22d546976866.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-22d25ea7-a383-44df-ad22-6b06d871b547.c000.snappy.parquet
│   │       │   │       │   │   └── part-00000-c5babbd8-6013-484c-818f-22d546976866.c000.snappy.parquet
│   │       │   │       │   └── month=2/
│   │       │   │       │       ├── .part-00000-129a0441-5f41-4e46-be33-fd0289e53614.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00000-cc2a9650-0450-4879-9757-873b7f544510.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-129a0441-5f41-4e46-be33-fd0289e53614.c000.snappy.parquet
│   │       │   │       │       └── part-00000-cc2a9650-0450-4879-9757-873b7f544510.c000.snappy.parquet
│   │       │   │       ├── corrupted-last-checkpoint/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       ├── 00000000000000000003.json
│   │       │   │       │       ├── 00000000000000000004.json
│   │       │   │       │       ├── 00000000000000000005.json
│   │       │   │       │       ├── 00000000000000000006.json
│   │       │   │       │       ├── 00000000000000000007.json
│   │       │   │       │       ├── 00000000000000000008.json
│   │       │   │       │       ├── 00000000000000000009.json
│   │       │   │       │       ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000010.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── corrupted-last-checkpoint-kernel/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-45318b19-5a29-4bb9-b273-1738e817d63e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-45ddfb64-1797-4618-a4e4-58d687ae9d21-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-51f8ff2c-8e81-4031-94c9-93eae615d3e3-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-59a396e0-b0f4-4685-80f1-f58e07601862-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-69f4e384-139f-4b75-b51f-09213866a62a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-82c1686f-287a-4e6f-8a7a-0099d54d7738-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-99f8ecc2-cc99-4e3e-866e-07135df25e52-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-a57ecbd0-7dad-4b6c-a3fe-8ab4f7e73f5a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-bca1b163-25a1-4130-b74c-b905c61018ca-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cbc535a8-3499-4339-be3f-9df89091871e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cd63e6e7-227f-4bae-8ffc-fad3bfea242c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d9d02879-5155-46d4-84a8-41c83c5df9e4-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-400931d7-721c-4dbc-82e6-5c29f1dfcde1-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-4eeaf77f-87b7-45bb-8e1f-1faf9c957918-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-71b04841-d4e6-4cd6-930a-5e33fd1bd7a0-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-81d22bd7-311e-4934-839e-f635ea6f364f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-84978e4c-0e36-40d7-a3e0-c69204409c28-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-89b7b3e6-d076-43af-963f-3a4055a1eca6-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-8e839ba6-38f3-4093-8eb4-bc894159348c-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-a68acb2a-ac4f-46c2-940b-f962480a6517-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-c1199313-5eb1-4d9d-9cec-a43245621024-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-c4cbb8cf-9c18-4bab-bfa7-967faa14e15d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-e471a872-a1ee-4610-9454-062854327ad6-c000.snappy.parquet
│   │       │   │       │   └── part-00001-ef16b167-3dda-4681-bdd0-cd6bb9f07c30-c000.snappy.parquet
│   │       │   │       ├── data-reader-absolute-paths-escaped-chars/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── data-reader-array-complex-objects/
│   │       │   │       │   ├── .part-00000-a7d58b1a-7743-4bb0-b208-438bbe179c93-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-7b211746-0a31-4e77-9822-b0985158cd66-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-a7d58b1a-7743-4bb0-b208-438bbe179c93-c000.snappy.parquet
│   │       │   │       │   └── part-00001-7b211746-0a31-4e77-9822-b0985158cd66-c000.snappy.parquet
│   │       │   │       ├── data-reader-array-primitives/
│   │       │   │       │   ├── .part-00000-182665f0-30df-470d-a5cb-8d9d483ed390-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2e274fe7-eb75-4b73-8c72-423ee747abc0-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-182665f0-30df-470d-a5cb-8d9d483ed390-c000.snappy.parquet
│   │       │   │       │   └── part-00001-2e274fe7-eb75-4b73-8c72-423ee747abc0-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-America/
│   │       │   │       │   └── Los_Angeles/
│   │       │   │       │       ├── .part-00000-e85ca549-604b-4340-b56d-868e9acc78e8-c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-1e808610-ee7f-44e7-be9b-be02c2bc5895-c000.snappy.parquet.crc
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── part-00000-e85ca549-604b-4340-b56d-868e9acc78e8-c000.snappy.parquet
│   │       │   │       │       └── part-00001-1e808610-ee7f-44e7-be9b-be02c2bc5895-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-Asia/
│   │       │   │       │   └── Beirut/
│   │       │   │       │       ├── .part-00000-58828e3c-041e-47b4-80dd-196ae1b1d1a6-c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-8590d66f-6907-40a9-9e97-a4a098321340-c000.snappy.parquet.crc
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── part-00000-58828e3c-041e-47b4-80dd-196ae1b1d1a6-c000.snappy.parquet
│   │       │   │       │       └── part-00001-8590d66f-6907-40a9-9e97-a4a098321340-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-Etc/
│   │       │   │       │   └── GMT+9/
│   │       │   │       │       ├── .part-00000-23e032bb-e586-4573-9fc0-1c9a4c9a5081-c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-d91bf3dd-78c9-4abf-aa54-e89228e8316c-c000.snappy.parquet.crc
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── part-00000-23e032bb-e586-4573-9fc0-1c9a4c9a5081-c000.snappy.parquet
│   │       │   │       │       └── part-00001-d91bf3dd-78c9-4abf-aa54-e89228e8316c-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-Iceland/
│   │       │   │       │   ├── .part-00000-8be8ec9f-d9af-474e-8ec9-35ec76debc6a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-56f07a95-04d4-4c12-bf08-fd89cedc8559-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-8be8ec9f-d9af-474e-8ec9-35ec76debc6a-c000.snappy.parquet
│   │       │   │       │   └── part-00001-56f07a95-04d4-4c12-bf08-fd89cedc8559-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-JST/
│   │       │   │       │   ├── .part-00000-3f9100ce-0b94-43cb-bb23-f0e36dc7af2b-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-dc211b29-0c30-41e8-8700-f8bb374964e1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-3f9100ce-0b94-43cb-bb23-f0e36dc7af2b-c000.snappy.parquet
│   │       │   │       │   └── part-00001-dc211b29-0c30-41e8-8700-f8bb374964e1-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-PST/
│   │       │   │       │   ├── .part-00000-0a103e9a-6236-470c-94f7-5f60926f01da-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-980a117f-027e-4396-81ce-3a5a8ac70815-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-0a103e9a-6236-470c-94f7-5f60926f01da-c000.snappy.parquet
│   │       │   │       │   └── part-00001-980a117f-027e-4396-81ce-3a5a8ac70815-c000.snappy.parquet
│   │       │   │       ├── data-reader-date-types-UTC/
│   │       │   │       │   ├── .part-00000-803e1cfa-c859-4ce7-977b-ff150d6e138c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0108113a-2933-41b3-b9a6-e68bb9ed25cc-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-803e1cfa-c859-4ce7-977b-ff150d6e138c-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0108113a-2933-41b3-b9a6-e68bb9ed25cc-c000.snappy.parquet
│   │       │   │       ├── data-reader-escaped-chars/
│   │       │   │       │   ├── _2=bar+%2521/
│   │       │   │       │   │   ├── .part-00000-af08f887-922f-4c31-82a7-8e142c4280a6.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-af08f887-922f-4c31-82a7-8e142c4280a6.c000.snappy.parquet
│   │       │   │       │   ├── _2=bar+%2522/
│   │       │   │       │   │   ├── .part-00000-c1bfd944-5e0d-4133-af16-7851061e37aa.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-c1bfd944-5e0d-4133-af16-7851061e37aa.c000.snappy.parquet
│   │       │   │       │   ├── _2=bar+%2523/
│   │       │   │       │   │   ├── .part-00000-92352854-5503-4ba5-8c29-b11777034eb7.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-92352854-5503-4ba5-8c29-b11777034eb7.c000.snappy.parquet
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       └── 00000000000000000002.json
│   │       │   │       ├── data-reader-map/
│   │       │   │       │   ├── .part-00000-d9004e55-077b-4728-9ee6-b3401faa46ba-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-3d30d085-4cde-471e-a396-12af34a70812-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-d9004e55-077b-4728-9ee6-b3401faa46ba-c000.snappy.parquet
│   │       │   │       │   └── part-00001-3d30d085-4cde-471e-a396-12af34a70812-c000.snappy.parquet
│   │       │   │       ├── data-reader-nested-struct/
│   │       │   │       │   ├── .part-00000-f2547b28-9219-4628-8462-cc9c56edfebb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0f755735-3b5b-449a-8f93-92a40d9f065d-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-f2547b28-9219-4628-8462-cc9c56edfebb-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0f755735-3b5b-449a-8f93-92a40d9f065d-c000.snappy.parquet
│   │       │   │       ├── data-reader-nullable-field-invalid-schema-key/
│   │       │   │       │   ├── .part-00000-d1f74401-ecb8-494e-96d6-adb95ec7e1c2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-d6454547-1a50-4f43-910d-2f84c5aedae1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-d1f74401-ecb8-494e-96d6-adb95ec7e1c2-c000.snappy.parquet
│   │       │   │       │   └── part-00001-d6454547-1a50-4f43-910d-2f84c5aedae1-c000.snappy.parquet
│   │       │   │       ├── data-reader-partition-values/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── as_int=0/
│   │       │   │       │   │   └── as_long=0/
│   │       │   │       │   │       └── as_byte=0/
│   │       │   │       │   │           └── as_short=0/
│   │       │   │       │   │               └── as_boolean=true/
│   │       │   │       │   │                   └── as_float=0.0/
│   │       │   │       │   │                       └── as_double=0.0/
│   │       │   │       │   │                           └── as_string=0/
│   │       │   │       │   │                               └── as_string_lit_null=null/
│   │       │   │       │   │                                   └── as_date=2021-09-08/
│   │       │   │       │   │                                       └── as_timestamp=2021-09-08 11%3A11%3A11/
│   │       │   │       │   │                                           └── as_big_decimal=0/
│   │       │   │       │   │                                               ├── .part-00000-b9dc86ae-0134-4363-bd87-19cfb3403e9a.c000.snappy.parquet.crc
│   │       │   │       │   │                                               └── part-00000-b9dc86ae-0134-4363-bd87-19cfb3403e9a.c000.snappy.parquet
│   │       │   │       │   ├── as_int=1/
│   │       │   │       │   │   └── as_long=1/
│   │       │   │       │   │       └── as_byte=1/
│   │       │   │       │   │           └── as_short=1/
│   │       │   │       │   │               └── as_boolean=false/
│   │       │   │       │   │                   └── as_float=1.0/
│   │       │   │       │   │                       └── as_double=1.0/
│   │       │   │       │   │                           └── as_string=1/
│   │       │   │       │   │                               └── as_string_lit_null=null/
│   │       │   │       │   │                                   └── as_date=2021-09-08/
│   │       │   │       │   │                                       └── as_timestamp=2021-09-08 11%3A11%3A11/
│   │       │   │       │   │                                           └── as_big_decimal=1/
│   │       │   │       │   │                                               ├── .part-00001-cb007d48-a9f5-40e7-adbe-60920680770f.c000.snappy.parquet.crc
│   │       │   │       │   │                                               └── part-00001-cb007d48-a9f5-40e7-adbe-60920680770f.c000.snappy.parquet
│   │       │   │       │   └── as_int=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       └── as_long=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │           └── as_byte=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │               └── as_short=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                   └── as_boolean=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                       └── as_float=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                           └── as_double=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                               └── as_string=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                   └── as_string_lit_null=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                       └── as_date=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                           └── as_timestamp=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                               └── as_big_decimal=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │                                                   ├── .part-00001-9ee474eb-385b-43cf-9acb-0fbed63e011c.c000.snappy.parquet.crc
│   │       │   │       │                                                   └── part-00001-9ee474eb-385b-43cf-9acb-0fbed63e011c.c000.snappy.parquet
│   │       │   │       ├── data-reader-primitives/
│   │       │   │       │   ├── .part-00000-4f2f0b9f-50b3-4e7b-96a1-e2bb0f246b06-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-09e47b80-36c2-4475-a810-fbd8e7994971-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-4f2f0b9f-50b3-4e7b-96a1-e2bb0f246b06-c000.snappy.parquet
│   │       │   │       │   └── part-00001-09e47b80-36c2-4475-a810-fbd8e7994971-c000.snappy.parquet
│   │       │   │       ├── data-reader-timestamp_ntz/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── tsNtzPartition=2013-07-05 17%3A01%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-6240e68e-2304-449a-a1e6-0e24866d3508.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-336e3e5f-a202-4bd9-b117-28d871bbb639.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-6240e68e-2304-449a-a1e6-0e24866d3508.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-336e3e5f-a202-4bd9-b117-28d871bbb639.c000.snappy.parquet
│   │       │   │       │   ├── tsNtzPartition=2021-11-18 02%3A30%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-65fcd5cb-f2f3-44f4-96ef-f43825143ba9.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-65fcd5cb-f2f3-44f4-96ef-f43825143ba9.c000.snappy.parquet
│   │       │   │       │   └── tsNtzPartition=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-53fd3b3b-7773-459a-921c-bb64bf0bbd03.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-53fd3b3b-7773-459a-921c-bb64bf0bbd03.c000.snappy.parquet
│   │       │   │       ├── data-reader-timestamp_ntz-id-mode/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── col-31f31113-4fc7-437c-b8e8-b7bca8a2f698=2013-07-05 17%3A01%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-468b79b5-ef3e-40ee-b077-8d7b48ef8385.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-94a2fe48-a4c5-4d3e-823c-d76b59b9f597.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-468b79b5-ef3e-40ee-b077-8d7b48ef8385.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-94a2fe48-a4c5-4d3e-823c-d76b59b9f597.c000.snappy.parquet
│   │       │   │       │   ├── col-31f31113-4fc7-437c-b8e8-b7bca8a2f698=2021-11-18 02%3A30%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-80e4d2e9-69f2-420e-8152-8d5bb810b259.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-80e4d2e9-69f2-420e-8152-8d5bb810b259.c000.snappy.parquet
│   │       │   │       │   └── col-31f31113-4fc7-437c-b8e8-b7bca8a2f698=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-047834e2-8a38-47ff-9f1c-01f94a618369.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-047834e2-8a38-47ff-9f1c-01f94a618369.c000.snappy.parquet
│   │       │   │       ├── data-reader-timestamp_ntz-name-mode/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── col-805808af-d12a-42e5-a7ec-f1a99abb82ee=2013-07-05 17%3A01%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-19009b69-d0d2-4c9c-9994-770c77ce5c1e.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-459a6750-6f78-44ff-9706-03448c1dde8b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-19009b69-d0d2-4c9c-9994-770c77ce5c1e.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-459a6750-6f78-44ff-9706-03448c1dde8b.c000.snappy.parquet
│   │       │   │       │   ├── col-805808af-d12a-42e5-a7ec-f1a99abb82ee=2021-11-18 02%3A30%3A00.123456/
│   │       │   │       │   │   ├── .part-00000-55eb3e92-fedb-4a0e-a327-d44ee8e356b2.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-55eb3e92-fedb-4a0e-a327-d44ee8e356b2.c000.snappy.parquet
│   │       │   │       │   └── col-805808af-d12a-42e5-a7ec-f1a99abb82ee=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-4325cf1b-146e-4e85-b36f-ab9c4a9d8125.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-4325cf1b-146e-4e85-b36f-ab9c4a9d8125.c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types/
│   │       │   │       │   ├── .part-00000-087fe319-d261-41b4-91b4-0e8412e60b9e-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-93fc8b78-4b92-45c7-ad3f-bb766e6d2e28-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-087fe319-d261-41b4-91b4-0e8412e60b9e-c000.snappy.parquet
│   │       │   │       │   └── part-00001-93fc8b78-4b92-45c7-ad3f-bb766e6d2e28-c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types-checkpoint/
│   │       │   │       │   ├── .part-00000-56a3869e-5a30-4765-9a7d-702537d70c3d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-ed0f17f3-dab5-4131-8ff8-5a5f4399d0ef-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-56a3869e-5a30-4765-9a7d-702537d70c3d-c000.snappy.parquet
│   │       │   │       │   └── part-00001-ed0f17f3-dab5-4131-8ff8-5a5f4399d0ef-c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types-columnmapping-id/
│   │       │   │       │   ├── .part-00000-45eafd89-d2ac-43ee-8ac3-c400d2bc828e-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-4596bea2-786f-404e-bc15-5adc99f00e30-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-45eafd89-d2ac-43ee-8ac3-c400d2bc828e-c000.snappy.parquet
│   │       │   │       │   └── part-00001-4596bea2-786f-404e-bc15-5adc99f00e30-c000.snappy.parquet
│   │       │   │       ├── data-skipping-basic-stats-all-types-columnmapping-name/
│   │       │   │       │   ├── .part-00000-23579e01-a3ed-4d10-b208-c34d51bdcd50-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-97ba0cfd-25fe-4911-a28f-29d37288fdd0-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-23579e01-a3ed-4d10-b208-c34d51bdcd50-c000.snappy.parquet
│   │       │   │       │   └── part-00001-97ba0cfd-25fe-4911-a28f-29d37288fdd0-c000.snappy.parquet
│   │       │   │       ├── data-skipping-change-stats-collected-across-versions/
│   │       │   │       │   ├── .part-00000-4deb5922-56af-43f6-9f20-75634a766a96-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-749a71d6-ff8e-4397-a7b0-8d33df259f58-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-fffd95ce-0d67-442e-b3d5-8fb90da5e1dd-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-c09e5ddb-2337-4e49-b8be-83fd96008375-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-cb335794-98b0-43c3-a3a1-a4c86e3da38d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e5d736b6-2ecd-457a-8bb2-947b61f9c67e-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── .00000000000000000004.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   └── 00000000000000000004.json
│   │       │   │       │   ├── part-00000-4deb5922-56af-43f6-9f20-75634a766a96-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-749a71d6-ff8e-4397-a7b0-8d33df259f58-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-fffd95ce-0d67-442e-b3d5-8fb90da5e1dd-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-c09e5ddb-2337-4e49-b8be-83fd96008375-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-cb335794-98b0-43c3-a3a1-a4c86e3da38d-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e5d736b6-2ecd-457a-8bb2-947b61f9c67e-c000.snappy.parquet
│   │       │   │       ├── data-skipping-partition-and-data-column/
│   │       │   │       │   ├── .part-00000-37b9e82e-6e87-4a9b-bc63-bd0bf3681e6e-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-3fbd7548-fc00-4946-bc27-6255b52ef227-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-8a1edea4-0555-4250-a795-8d3bc2d9e2da-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f610738e-af5e-442a-8f5e-e806354ed14a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2822cff2-34ab-4b93-9cbb-4e751084a422-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2c0ee02a-8591-4026-a5ab-952bdb347fc5-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-442a6473-8d9a-41d3-8172-e2248e8be169-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-6dedd756-e903-46d7-9e6c-01b3c4ebeab3-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── 00000000000000000003.json
│   │       │   │       │   ├── part-00000-37b9e82e-6e87-4a9b-bc63-bd0bf3681e6e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-3fbd7548-fc00-4946-bc27-6255b52ef227-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-8a1edea4-0555-4250-a795-8d3bc2d9e2da-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f610738e-af5e-442a-8f5e-e806354ed14a-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-2822cff2-34ab-4b93-9cbb-4e751084a422-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-2c0ee02a-8591-4026-a5ab-952bdb347fc5-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-442a6473-8d9a-41d3-8172-e2248e8be169-c000.snappy.parquet
│   │       │   │       │   └── part-00001-6dedd756-e903-46d7-9e6c-01b3c4ebeab3-c000.snappy.parquet
│   │       │   │       ├── decimal-various-scale-precision/
│   │       │   │       │   ├── .part-00000-bb4b3e59-ddb9-4d26-beaf-de9554e14517-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-bb4b3e59-ddb9-4d26-beaf-de9554e14517-c000.snappy.parquet
│   │       │   │       ├── delete-re-add-same-file-different-transactions/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       └── 00000000000000000003.json
│   │       │   │       ├── deltalog-commit-info/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── deltalog-getChanges/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       └── 00000000000000000002.json
│   │       │   │       ├── deltalog-invalid-protocol-version/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── deltalog-state-reconstruction-from-checkpoint-missing-metadata/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       ├── 00000000000000000003.json
│   │       │   │       │       ├── 00000000000000000004.json
│   │       │   │       │       ├── 00000000000000000005.json
│   │       │   │       │       ├── 00000000000000000006.json
│   │       │   │       │       ├── 00000000000000000007.json
│   │       │   │       │       ├── 00000000000000000008.json
│   │       │   │       │       ├── 00000000000000000009.json
│   │       │   │       │       ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000010.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── deltalog-state-reconstruction-from-checkpoint-missing-protocol/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       ├── 00000000000000000001.json
│   │       │   │       │       ├── 00000000000000000002.json
│   │       │   │       │       ├── 00000000000000000003.json
│   │       │   │       │       ├── 00000000000000000004.json
│   │       │   │       │       ├── 00000000000000000005.json
│   │       │   │       │       ├── 00000000000000000006.json
│   │       │   │       │       ├── 00000000000000000007.json
│   │       │   │       │       ├── 00000000000000000008.json
│   │       │   │       │       ├── 00000000000000000009.json
│   │       │   │       │       ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000010.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── deltalog-state-reconstruction-without-metadata/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── deltalog-state-reconstruction-without-protocol/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── dv-partitioned-with-checkpoint/
│   │       │   │       │   ├── .deletion_vector_0229ec3d-5100-44e1-8e53-702d448da8da.bin.crc
│   │       │   │       │   ├── .deletion_vector_0237686e-c424-4e4c-8337-e8bd1b02ea48.bin.crc
│   │       │   │       │   ├── .deletion_vector_179561f5-946c-40d8-b088-0d890e8c854c.bin.crc
│   │       │   │       │   ├── .deletion_vector_2fc6c93f-f217-47db-8582-b9732a18de04.bin.crc
│   │       │   │       │   ├── .deletion_vector_3cf682dd-5194-4fe8-98ed-d860be48ef78.bin.crc
│   │       │   │       │   ├── .deletion_vector_57eabe30-1981-4c70-85b0-343c24650691.bin.crc
│   │       │   │       │   ├── .deletion_vector_6f6c4302-fd0b-49e9-8877-cf9056f4b3cb.bin.crc
│   │       │   │       │   ├── .deletion_vector_9ab6d39e-2b86-4282-919f-c0813c228da9.bin.crc
│   │       │   │       │   ├── .deletion_vector_aa46415b-60bb-4096-a0c7-de47449cb72e.bin.crc
│   │       │   │       │   ├── .deletion_vector_acb1fa71-86e9-445d-833c-5cda9a64f221.bin.crc
│   │       │   │       │   ├── .deletion_vector_be3f06b1-59b3-4537-b5de-554c3bb2fad9.bin.crc
│   │       │   │       │   ├── .deletion_vector_cc54e26b-ec32-4705-ab80-eccffa88e1e6.bin.crc
│   │       │   │       │   ├── .deletion_vector_db0b9397-6055-4aa6-a8f8-de723719d996.bin.crc
│   │       │   │       │   ├── .deletion_vector_f34fad76-197a-4fd7-9382-f7773fc8eff9.bin.crc
│   │       │   │       │   ├── .deletion_vector_f37f3d8e-af4f-40c0-a5b4-5b3c02c1bdd8.bin.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── .00000000000000000003.json.crc
│   │       │   │       │   │   ├── .00000000000000000004.json.crc
│   │       │   │       │   │   ├── .00000000000000000005.json.crc
│   │       │   │       │   │   ├── .00000000000000000006.json.crc
│   │       │   │       │   │   ├── .00000000000000000007.json.crc
│   │       │   │       │   │   ├── .00000000000000000008.json.crc
│   │       │   │       │   │   ├── .00000000000000000009.json.crc
│   │       │   │       │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000010.json.crc
│   │       │   │       │   │   ├── .00000000000000000011.json.crc
│   │       │   │       │   │   ├── .00000000000000000012.json.crc
│   │       │   │       │   │   ├── .00000000000000000013.json.crc
│   │       │   │       │   │   ├── .00000000000000000014.json.crc
│   │       │   │       │   │   ├── .00000000000000000015.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   ├── 00000000000000000012.json
│   │       │   │       │   │   ├── 00000000000000000013.json
│   │       │   │       │   │   ├── 00000000000000000014.json
│   │       │   │       │   │   ├── 00000000000000000015.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part=0/
│   │       │   │       │   │   ├── .part-00000-8387c699-30b1-4734-a791-9278d560ec19.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-24cdbe06-d3dc-449f-bd38-575228ca42a7.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-8387c699-30b1-4734-a791-9278d560ec19.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-24cdbe06-d3dc-449f-bd38-575228ca42a7.c000.snappy.parquet
│   │       │   │       │   ├── part=1/
│   │       │   │       │   │   ├── .part-00000-a1586fa1-50e8-4f06-858a-b43b2e83010b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-d7e5d32a-55fa-410a-afee-adcdf46bc859.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-a1586fa1-50e8-4f06-858a-b43b2e83010b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-d7e5d32a-55fa-410a-afee-adcdf46bc859.c000.snappy.parquet
│   │       │   │       │   ├── part=2/
│   │       │   │       │   │   ├── .part-00000-ad58cb56-93db-4374-91ba-e65e7fa68e76.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-ab1247be-1f77-41e6-a392-50a99b2db864.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-ad58cb56-93db-4374-91ba-e65e7fa68e76.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-ab1247be-1f77-41e6-a392-50a99b2db864.c000.snappy.parquet
│   │       │   │       │   ├── part=3/
│   │       │   │       │   │   ├── .part-00000-319bea86-657f-4431-9b26-949dba99cf2c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-afeef1dd-2517-49b9-873e-e9e6e8a74b19.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-319bea86-657f-4431-9b26-949dba99cf2c.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-afeef1dd-2517-49b9-873e-e9e6e8a74b19.c000.snappy.parquet
│   │       │   │       │   ├── part=4/
│   │       │   │       │   │   ├── .part-00000-69ec928d-3737-4eb3-a3d8-9555a6b55ff5.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e63d3db6-9e97-4472-aacc-6af9fa44e73d.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-69ec928d-3737-4eb3-a3d8-9555a6b55ff5.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e63d3db6-9e97-4472-aacc-6af9fa44e73d.c000.snappy.parquet
│   │       │   │       │   ├── part=5/
│   │       │   │       │   │   ├── .part-00000-5c963f16-d5b8-4f8b-8d8a-0e3403228be2.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-f344b457-fbd0-4bc4-9502-2c07025e5bb1.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-5c963f16-d5b8-4f8b-8d8a-0e3403228be2.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-f344b457-fbd0-4bc4-9502-2c07025e5bb1.c000.snappy.parquet
│   │       │   │       │   ├── part=6/
│   │       │   │       │   │   ├── .part-00000-be524334-115d-4d01-8614-e1bc8c630926.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-6fc16401-ac51-4b89-bf08-bb86cecb5cc2.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-be524334-115d-4d01-8614-e1bc8c630926.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-6fc16401-ac51-4b89-bf08-bb86cecb5cc2.c000.snappy.parquet
│   │       │   │       │   ├── part=7/
│   │       │   │       │   │   ├── .part-00000-33cc19fc-3607-4ea7-ab6d-af4e3ebf62c4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-986abb06-e672-4134-83d4-261752b236b8.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-33cc19fc-3607-4ea7-ab6d-af4e3ebf62c4.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-986abb06-e672-4134-83d4-261752b236b8.c000.snappy.parquet
│   │       │   │       │   ├── part=8/
│   │       │   │       │   │   ├── .part-00000-02c66988-3465-4483-9f85-7155e6aee1f4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-7c58de64-d72f-4373-8d86-dfdc00fb264e.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-02c66988-3465-4483-9f85-7155e6aee1f4.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-7c58de64-d72f-4373-8d86-dfdc00fb264e.c000.snappy.parquet
│   │       │   │       │   └── part=9/
│   │       │   │       │       ├── .part-00000-e4012c8c-cc60-44c0-babb-8c5d264a3a31.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-c0430af8-a8e0-4b23-8776-b2fc549b3e4e.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-e4012c8c-cc60-44c0-babb-8c5d264a3a31.c000.snappy.parquet
│   │       │   │       │       └── part-00001-c0430af8-a8e0-4b23-8776-b2fc549b3e4e.c000.snappy.parquet
│   │       │   │       ├── dv-with-columnmapping/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   ├── 00000000000000000005.json
│   │       │   │       │   │   ├── 00000000000000000006.json
│   │       │   │       │   │   ├── 00000000000000000007.json
│   │       │   │       │   │   ├── 00000000000000000008.json
│   │       │   │       │   │   ├── 00000000000000000009.json
│   │       │   │       │   │   ├── 00000000000000000010.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000010.json
│   │       │   │       │   │   ├── 00000000000000000011.json
│   │       │   │       │   │   ├── 00000000000000000012.json
│   │       │   │       │   │   ├── 00000000000000000013.json
│   │       │   │       │   │   ├── 00000000000000000014.json
│   │       │   │       │   │   ├── 00000000000000000015.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=0/
│   │       │   │       │   │   ├── part-00000-d1888b8a-150e-4fe3-a397-1514739499b4.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-0e48fbde-daec-44ff-b579-d5c49b6c827f.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=1/
│   │       │   │       │   │   ├── part-00000-19513938-badc-4bd4-9513-3d043d1491dc.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-fb5e7c74-75ab-4bee-8234-400040ae127a.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=2/
│   │       │   │       │   │   ├── part-00000-3f054c46-7f8f-45f3-a541-25525787b631.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-4825f848-06bb-4b91-94e8-deb40f05feca.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=3/
│   │       │   │       │   │   ├── part-00000-1a0ac64e-0ce2-493e-b1b0-6cf15c1988f5.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-d1fc7b93-6ec3-4c75-8363-ffd8f1f43420.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=4/
│   │       │   │       │   │   ├── part-00000-dbfb557b-b778-454e-bef4-bab9481bcea7.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-ee7c50c6-4119-41ff-9c0a-285f844e7c31.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=5/
│   │       │   │       │   │   ├── part-00000-6d057276-2da0-45c3-86eb-aed7fd3429b8.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-ee535eb0-972e-470f-b705-61884acbbe39.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=6/
│   │       │   │       │   │   ├── part-00000-c0ca807e-59eb-4c84-a67d-c65a2e03c3c5.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-8c38a718-ea0d-4ac1-9515-3a6ec23cc86b.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=7/
│   │       │   │       │   │   ├── part-00000-12e816f9-daa3-4197-98f2-217a983bdafd.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e2c8fd65-f478-4738-89f2-b4f63bdc166f.c000.snappy.parquet
│   │       │   │       │   ├── col-60c949ca-b8bc-4330-b931-b73fb4c60037=8/
│   │       │   │       │   │   ├── part-00000-ee6122b8-1474-4764-8bdf-8f8b95c734af.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-0878dadb-c875-4347-92a3-8739c303d7bd.c000.snappy.parquet
│   │       │   │       │   └── col-60c949ca-b8bc-4330-b931-b73fb4c60037=9/
│   │       │   │       │       ├── part-00000-f2e5dc2f-b7c6-4772-85d7-23b273a9e54d.c000.snappy.parquet
│   │       │   │       │       └── part-00001-8bbcb266-0863-4b31-adc0-e1c4d1194cec.c000.snappy.parquet
│   │       │   │       ├── hive/
│   │       │   │       │   ├── deltatbl-column-names-case-insensitive/
│   │       │   │       │   │   ├── BarFoo=foo0/
│   │       │   │       │   │   │   ├── .part-00000-36c1f69c-21dc-4374-a89e-1c4468eff784.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-27f5c1f6-2393-4021-9a0f-44d143761f88.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-36c1f69c-21dc-4374-a89e-1c4468eff784.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-27f5c1f6-2393-4021-9a0f-44d143761f88.c000.snappy.parquet
│   │       │   │       │   │   ├── BarFoo=foo1/
│   │       │   │       │   │   │   ├── .part-00000-5c80a439-70eb-435a-92eb-04549d3f220e.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-b6134dd2-aa40-4868-a708-bec69fc562a2.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-5c80a439-70eb-435a-92eb-04549d3f220e.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-b6134dd2-aa40-4868-a708-bec69fc562a2.c000.snappy.parquet
│   │       │   │       │   │   └── _delta_log/
│   │       │   │       │   │       └── 00000000000000000000.json
│   │       │   │       │   ├── deltatbl-deleted-path/
│   │       │   │       │   │   ├── .part-00000-377b2930-7ed7-41e6-bab2-d565a7ca5bfb-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-6537e97d-662a-430d-9ad9-f6d087ae7cb8-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-377b2930-7ed7-41e6-bab2-d565a7ca5bfb-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-6537e97d-662a-430d-9ad9-f6d087ae7cb8-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-incorrect-format-config/
│   │       │   │       │   │   ├── .part-00000-7b3124df-d8a4-4a4a-9d99-e98cfde281cf-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e8582398-602e-4697-a508-fc046c1c57cf-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-7b3124df-d8a4-4a4a-9d99-e98cfde281cf-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e8582398-602e-4697-a508-fc046c1c57cf-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-map-types-correctly/
│   │       │   │       │   │   ├── .part-00000-c9259a22-ce39-45df-8d76-768bd813c3ff-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   └── part-00000-c9259a22-ce39-45df-8d76-768bd813c3ff-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-non-partitioned/
│   │       │   │       │   │   ├── .part-00000-e24c5388-1621-46bd-94eb-fea5209018d0-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-f2126b8d-1594-451b-9c89-c4c2481bfd93-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-e24c5388-1621-46bd-94eb-fea5209018d0-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-f2126b8d-1594-451b-9c89-c4c2481bfd93-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-not-allow-write/
│   │       │   │       │   │   ├── .part-00000-fab61bc4-5175-46ea-ac35-249c0f5750ff-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-6eb569ba-9300-49e7-9b5a-d064e8c5be2d-c000.snappy.parquet.crc
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── part-00000-fab61bc4-5175-46ea-ac35-249c0f5750ff-c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-6eb569ba-9300-49e7-9b5a-d064e8c5be2d-c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-partition-prune/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── date=20180512/
│   │       │   │       │   │   │   └── city=sh/
│   │       │   │       │   │   │       ├── .part-00001-c87aeb63-6d9c-4511-b8b3-71d02178554f.c000.snappy.parquet.crc
│   │       │   │       │   │   │       └── part-00001-c87aeb63-6d9c-4511-b8b3-71d02178554f.c000.snappy.parquet
│   │       │   │       │   │   ├── date=20180520/
│   │       │   │       │   │   │   ├── city=bj/
│   │       │   │       │   │   │   │   ├── .part-00001-4c732f0f-a473-400a-8ba3-1499f599b8f1.c000.snappy.parquet.crc
│   │       │   │       │   │   │   │   └── part-00001-4c732f0f-a473-400a-8ba3-1499f599b8f1.c000.snappy.parquet
│   │       │   │       │   │   │   └── city=hz/
│   │       │   │       │   │   │       ├── .part-00000-de1d5bcd-ad7e-4b88-ba9b-31fb8aeb8093.c000.snappy.parquet.crc
│   │       │   │       │   │   │       └── part-00000-de1d5bcd-ad7e-4b88-ba9b-31fb8aeb8093.c000.snappy.parquet
│   │       │   │       │   │   ├── date=20180718/
│   │       │   │       │   │   │   └── city=hz/
│   │       │   │       │   │   │       ├── .part-00000-f888e95b-c831-43fe-bba8-3dbf43b4eb86.c000.snappy.parquet.crc
│   │       │   │       │   │   │       └── part-00000-f888e95b-c831-43fe-bba8-3dbf43b4eb86.c000.snappy.parquet
│   │       │   │       │   │   └── date=20181212/
│   │       │   │       │   │       └── city=sz/
│   │       │   │       │   │           ├── .part-00001-529ff89b-55c6-4405-a6cc-04759d5f692b.c000.snappy.parquet.crc
│   │       │   │       │   │           └── part-00001-529ff89b-55c6-4405-a6cc-04759d5f692b.c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-partitioned/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── c2=foo0/
│   │       │   │       │   │   │   ├── .part-00000-2bcc9ff6-0551-4401-bd22-d361a60627e3.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-ca647ee7-f1ad-4d70-bf02-5d1872324d6f.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-2bcc9ff6-0551-4401-bd22-d361a60627e3.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-ca647ee7-f1ad-4d70-bf02-5d1872324d6f.c000.snappy.parquet
│   │       │   │       │   │   └── c2=foo1/
│   │       │   │       │   │       ├── .part-00000-786c7455-9587-454f-9a4c-de0b22b62bbd.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── .part-00001-1c702e73-89b5-465a-9c6a-25f7559cd150.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── part-00000-786c7455-9587-454f-9a4c-de0b22b62bbd.c000.snappy.parquet
│   │       │   │       │   │       └── part-00001-1c702e73-89b5-465a-9c6a-25f7559cd150.c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-schema-match/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── b=foo0/
│   │       │   │       │   │   │   ├── .part-00000-531fe778-e359-44c9-8c35-7ed2416c5ff5.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-923b258c-b34c-4cb9-8da9-622005e49f2c.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-531fe778-e359-44c9-8c35-7ed2416c5ff5.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-923b258c-b34c-4cb9-8da9-622005e49f2c.c000.snappy.parquet
│   │       │   │       │   │   └── b=foo1/
│   │       │   │       │   │       ├── .part-00000-7dad1d59-f42c-46c1-992e-35c2fb4d9c09.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── .part-00001-e44bca08-b26b-4f4d-8a22-5bb45a598dcf.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── part-00000-7dad1d59-f42c-46c1-992e-35c2fb4d9c09.c000.snappy.parquet
│   │       │   │       │   │       └── part-00001-e44bca08-b26b-4f4d-8a22-5bb45a598dcf.c000.snappy.parquet
│   │       │   │       │   ├── deltatbl-special-chars-in-partition-column/
│   │       │   │       │   │   ├── _delta_log/
│   │       │   │       │   │   │   └── 00000000000000000000.json
│   │       │   │       │   │   ├── c2=+ %3D%250/
│   │       │   │       │   │   │   ├── .part-00000-88ad45a3-9b80-4e66-b474-1748ba085060.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── .part-00001-aff2b410-c566-4e51-a968-acfa96d6f1e9.c000.snappy.parquet.crc
│   │       │   │       │   │   │   ├── part-00000-88ad45a3-9b80-4e66-b474-1748ba085060.c000.snappy.parquet
│   │       │   │       │   │   │   └── part-00001-aff2b410-c566-4e51-a968-acfa96d6f1e9.c000.snappy.parquet
│   │       │   │       │   │   └── c2=+ %3D%251/
│   │       │   │       │   │       ├── .part-00000-180d1a36-4ba9-4321-8145-1e0d73406b02.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── .part-00001-3379bbbf-1ab8-4781-8b7e-29038d983f83.c000.snappy.parquet.crc
│   │       │   │       │   │       ├── part-00000-180d1a36-4ba9-4321-8145-1e0d73406b02.c000.snappy.parquet
│   │       │   │       │   │       └── part-00001-3379bbbf-1ab8-4781-8b7e-29038d983f83.c000.snappy.parquet
│   │       │   │       │   └── deltatbl-touch-files-needed-for-partitioned/
│   │       │   │       │       ├── _delta_log/
│   │       │   │       │       │   └── 00000000000000000000.json
│   │       │   │       │       ├── c2=foo0/
│   │       │   │       │       │   ├── .part-00000-f1acd078-4e44-4d47-91b2-6568396e2ec3.c000.snappy.parquet.crc
│   │       │   │       │       │   ├── .part-00001-e7f40ed6-fefa-41f5-b8a6-c6e9b78a1448.c000.snappy.parquet.crc
│   │       │   │       │       │   ├── part-00000-f1acd078-4e44-4d47-91b2-6568396e2ec3.c000.snappy.parquet
│   │       │   │       │       │   └── part-00001-e7f40ed6-fefa-41f5-b8a6-c6e9b78a1448.c000.snappy.parquet
│   │       │   │       │       └── c2=foo1/
│   │       │   │       │           ├── .part-00000-1bb7c99b-be0e-4c49-ae73-9baf5a8a08d0.c000.snappy.parquet.crc
│   │       │   │       │           ├── .part-00001-c357f264-a317-4e93-a530-a8b1360ca9f6.c000.snappy.parquet.crc
│   │       │   │       │           ├── part-00000-1bb7c99b-be0e-4c49-ae73-9baf5a8a08d0.c000.snappy.parquet
│   │       │   │       │           └── part-00001-c357f264-a317-4e93-a530-a8b1360ca9f6.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-INT96/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-75ac07ae-d2e8-4030-be59-c490d47c4496.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-75ac07ae-d2e8-4030-be59-c490d47c4496.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-bd889aef-417c-4493-b5f7-a9884ba4b247.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-bd889aef-417c-4493-b5f7-a9884ba4b247.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-57e97070-8fc8-485a-95c6-af55daf5e09b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-bd0c6fb8-aafd-48dc-9bba-331c1c6f137b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-57e97070-8fc8-485a-95c6-af55daf5e09b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-bd0c6fb8-aafd-48dc-9bba-331c1c6f137b.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-7cb5f53e-936c-4d24-bca1-9fa0fc7a66e4.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-7cb5f53e-936c-4d24-bca1-9fa0fc7a66e4.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-PST/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-48d8c27a-3661-4e1e-95cb-02ef244c1cf4.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-48d8c27a-3661-4e1e-95cb-02ef244c1cf4.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-a8be3fd2-1fd5-4dd7-84d2-6899a62d99e8.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-a8be3fd2-1fd5-4dd7-84d2-6899a62d99e8.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-321ea6ca-841e-4654-9844-2d4041b6d0d6.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-b223f8fd-9d33-465b-b139-36c41abb10e8.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-321ea6ca-841e-4654-9844-2d4041b6d0d6.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-b223f8fd-9d33-465b-b139-36c41abb10e8.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-18484b3d-01e6-48bc-9e8b-2a75d36d9f7a.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-18484b3d-01e6-48bc-9e8b-2a75d36d9f7a.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-TIMESTAMP_MICROS/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-2b5694f1-b839-4037-b264-353b31af6e7b.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-2b5694f1-b839-4037-b264-353b31af6e7b.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-3cac2575-d0b4-4647-a7a3-b4a9d910cb32.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-3cac2575-d0b4-4647-a7a3-b4a9d910cb32.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-038fb25c-ca6b-43b6-b0dc-d987f38d0ab9.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-226faf2a-427a-40ee-bfb5-5d53c8642c8a.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-038fb25c-ca6b-43b6-b0dc-d987f38d0ab9.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-226faf2a-427a-40ee-bfb5-5d53c8642c8a.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-107828e6-a4b9-42b1-9f1f-244c0efc1b08.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-107828e6-a4b9-42b1-9f1f-244c0efc1b08.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-TIMESTAMP_MILLIS/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part=1969-01-01 00%3A00%3A00/
│   │       │   │       │   │   ├── .part-00001-4c527a95-ca90-4aeb-a61c-8d89b6330772.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00001-4c527a95-ca90-4aeb-a61c-8d89b6330772.c000.snappy.parquet
│   │       │   │       │   ├── part=2020-01-01 08%3A09%3A10.001/
│   │       │   │       │   │   ├── .part-00000-4b5188f5-4784-47ce-b4ad-1d3eae80710e.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-4b5188f5-4784-47ce-b4ad-1d3eae80710e.c000.snappy.parquet
│   │       │   │       │   ├── part=2021-10-01 08%3A09%3A20/
│   │       │   │       │   │   ├── .part-00000-086f164a-4d32-4631-b9f9-8aeab485f19c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-94d3f0af-754c-4cde-bc6e-08338a03a32e.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-086f164a-4d32-4631-b9f9-8aeab485f19c.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-94d3f0af-754c-4cde-bc6e-08338a03a32e.c000.snappy.parquet
│   │       │   │       │   └── part=__HIVE_DEFAULT_PARTITION__/
│   │       │   │       │       ├── .part-00001-f81daebf-3993-4686-bf72-470e1fe078d9.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00001-f81daebf-3993-4686-bf72-470e1fe078d9.c000.snappy.parquet
│   │       │   │       ├── kernel-timestamp-partition-col-ISO8601/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.crc.crc
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── ts=2024-01-01 10%3A00%3A00/
│   │       │   │       │   │   ├── .part-00000-9630b3f5-7ab4-4688-9822-3ef93a9d0559.c000.snappy.parquet.crc
│   │       │   │       │   │   └── part-00000-9630b3f5-7ab4-4688-9822-3ef93a9d0559.c000.snappy.parquet
│   │       │   │       │   └── ts=2024-01-02 12%3A30%3A00/
│   │       │   │       │       ├── .part-00000-17b5fc05-b487-4b8b-82ff-9ef4352767a5.c000.snappy.parquet.crc
│   │       │   │       │       └── part-00000-17b5fc05-b487-4b8b-82ff-9ef4352767a5.c000.snappy.parquet
│   │       │   │       ├── log-replay-dv-key-cases/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── 00000000000000000003.json
│   │       │   │       │   └── part-00000-90177277-75c2-48db-92a2-20dcba39fd06-c000.snappy.parquet
│   │       │   │       ├── log-replay-latest-metadata-protocol/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-66f9221e-0720-45f9-910a-0e81885c93e7-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-fc7f7936-944d-472b-9e1e-2cb7464e668a-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9624cca6-2238-4f36-a6c1-707b86b81b81-c000.snappy.parquet
│   │       │   │       │   └── part-00001-a54b97f9-bd3c-4724-917b-2730fd9b6c3a-c000.snappy.parquet
│   │       │   │       ├── log-replay-special-characters/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── log-replay-special-characters-a/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── 00000000000000000001.json
│   │       │   │       ├── log-replay-special-characters-b/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       └── 00000000000000000000.json
│   │       │   │       ├── log-store-listFrom/
│   │       │   │       │   ├── 1
│   │       │   │       │   ├── 2
│   │       │   │       │   └── 3
│   │       │   │       ├── log-store-read/
│   │       │   │       │   ├── 0
│   │       │   │       │   └── 1
│   │       │   │       ├── multi-part-checkpoint/
│   │       │   │       │   ├── .part-00000-7f49f4e3-2c9c-4ea7-b6c3-42c9a6fc6070-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-e3cd9d97-2f4e-40c4-825f-8ecf456540b0-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-a5222079-1b7e-4bab-a747-ccc4f88b9915-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00002-3a12664c-2859-4236-b718-6c9e03f6496f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00003-1bb5a769-f4c6-4672-a94a-68ed6788ca78-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00004-b7080e6d-bc43-43da-becf-7c9bedffee68-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00005-a0ce8d21-d9b6-44b9-803b-a4085a4b43cd-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00006-9093b02c-22e2-4505-bb37-104a4825137f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00007-8cea4b0f-450b-444f-936d-e2695b1adca6-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00008-470c16a2-bd1d-45e5-9cfc-5741ba5b57e1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.checkpoint.0000000001.0000000002.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000001.checkpoint.0000000002.0000000002.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.checkpoint.0000000001.0000000002.parquet
│   │       │   │       │   │   ├── 00000000000000000001.checkpoint.0000000002.0000000002.parquet
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-7f49f4e3-2c9c-4ea7-b6c3-42c9a6fc6070-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-e3cd9d97-2f4e-40c4-825f-8ecf456540b0-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-a5222079-1b7e-4bab-a747-ccc4f88b9915-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-3a12664c-2859-4236-b718-6c9e03f6496f-c000.snappy.parquet
│   │       │   │       │   ├── part-00003-1bb5a769-f4c6-4672-a94a-68ed6788ca78-c000.snappy.parquet
│   │       │   │       │   ├── part-00004-b7080e6d-bc43-43da-becf-7c9bedffee68-c000.snappy.parquet
│   │       │   │       │   ├── part-00005-a0ce8d21-d9b6-44b9-803b-a4085a4b43cd-c000.snappy.parquet
│   │       │   │       │   ├── part-00006-9093b02c-22e2-4505-bb37-104a4825137f-c000.snappy.parquet
│   │       │   │       │   ├── part-00007-8cea4b0f-450b-444f-936d-e2695b1adca6-c000.snappy.parquet
│   │       │   │       │   └── part-00008-470c16a2-bd1d-45e5-9cfc-5741ba5b57e1-c000.snappy.parquet
│   │       │   │       ├── no-delta-log-folder/
│   │       │   │       │   ├── part-00000-d064d3e2-ed60-4836-a9dc-e09964b59c22-c000.snappy.parquet
│   │       │   │       │   └── part-00001-d064d3e2-ed60-4836-a9dc-e09964b59c22-c000.snappy.parquet
│   │       │   │       ├── only-checkpoint-files/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── part-00000-04e29928-9102-44df-8974-365c864ebd9e-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-b4e80ee6-4cbd-4cc6-b565-d2c625d0731a-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-dfc22a82-c022-4a82-86e5-1893449a9ac9-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-43c03a40-f6fe-4cc7-80d5-b1273adab930-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b50e4584-a496-4a37-a227-f7b3e9705aee-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-896896b5-bff2-4d67-a74a-46dbb9730710-c000.snappy.parquet
│   │       │   │       │   ├── part-00003-885e84c4-be75-485c-8459-257a0a552a2d-c000.snappy.parquet
│   │       │   │       │   ├── part-00004-dcf3f384-2139-4406-af81-89aff10b612d-c000.snappy.parquet
│   │       │   │       │   ├── part-00005-e3a5e9cc-e036-41cb-952d-fd3e374af794-c000.snappy.parquet
│   │       │   │       │   ├── part-00006-c048e558-898c-43b3-b144-47efbbab72d1-c000.snappy.parquet
│   │       │   │       │   ├── part-00007-50c77d47-31b2-4e0a-a43d-2f6be5ff15ee-c000.snappy.parquet
│   │       │   │       │   ├── part-00008-9fcc1da0-688a-4be6-a296-21da16557267-c000.snappy.parquet
│   │       │   │       │   └── part-00009-ac03e5b4-bd86-48e0-a9a0-094180656170-c000.snappy.parquet
│   │       │   │       ├── parquet-all-types/
│   │       │   │       │   ├── .part-00000-bf6680d4-5e83-4fce-8ebb-d2b60d7e69c9-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-bf6680d4-5e83-4fce-8ebb-d2b60d7e69c9-c000.snappy.parquet
│   │       │   │       ├── parquet-all-types-legacy-format/
│   │       │   │       │   ├── .part-00000-5afb67f1-094a-4a15-922e-c1eb96683964-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-5afb67f1-094a-4a15-922e-c1eb96683964-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-dictionaries/
│   │       │   │       │   ├── .part-00000-60b8c840-c0d4-428e-9005-89f02233be85-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-60b8c840-c0d4-428e-9005-89f02233be85-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-dictionaries-v1/
│   │       │   │       │   ├── .part-00000-92f97f0b-304f-4587-9d25-088cb386fa64-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-92f97f0b-304f-4587-9d25-088cb386fa64-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-dictionaries-v2/
│   │       │   │       │   ├── .part-00000-2509b8ef-98ac-42da-98ee-9d2c58ac6031-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-2509b8ef-98ac-42da-98ee-9d2c58ac6031-c000.snappy.parquet
│   │       │   │       ├── parquet-decimal-type/
│   │       │   │       │   ├── .part-00000-8c8ffc0f-9259-478b-9b1b-ea6d37ce5889-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   └── part-00000-8c8ffc0f-9259-478b-9b1b-ea6d37ce5889-c000.snappy.parquet
│   │       │   │       ├── snapshot-data0/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   └── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       ├── snapshot-data1/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   └── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       ├── snapshot-data2/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-data2-deleted/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   └── 00000000000000000004.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-data3/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── 00000000000000000003.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-repartitioned/
│   │       │   │       │   ├── .part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   └── 00000000000000000005.json
│   │       │   │       │   ├── part-00000-0441e99a-c421-400e-83a1-212aa6c84c73-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-64680d94-9e18-4fa1-9ca9-f0cd8a9cfd11-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-842017c2-3e02-44b5-a3d6-5b9ae1745045-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-cb078bc1-0aeb-46ed-9cf8-74a843b32c8c-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-d83dafd8-c344-49f0-ab1c-acd944e32493-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-34c8c673-3f44-4fa7-b94e-07357ec28a7d-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-9bf4b8f8-1b95-411b-bf10-28dc03aa9d2f-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-b8249b87-0b7a-4461-8a8a-fa958802b523-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e62ca5a1-923c-4ee6-998b-c61d1cfb0b1c-c000.snappy.parquet
│   │       │   │       ├── snapshot-vacuumed/
│   │       │   │       │   ├── .part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── 00000000000000000003.json
│   │       │   │       │   │   ├── 00000000000000000004.json
│   │       │   │       │   │   └── 00000000000000000005.json
│   │       │   │       │   ├── part-00000-f95c1140-7256-4bfa-b651-e7a7eb6208bb-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0b5675f1-d9b2-4240-914f-250ae37e8fa4-c000.snappy.parquet
│   │       │   │       ├── spark-variant-checkpoint/
│   │       │   │       │   ├── .part-00000-16c852df-ba66-4080-be25-530a05922422-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1e14ba22-3114-46d1-96fb-48b4912507ce-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-9a9c570c-ee32-4322-ad2f-8c837a77d398-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-664313d3-14b4-4dbf-8110-77001b877182-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.checkpoint.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.parquet
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   └── _last_checkpoint
│   │       │   │       │   ├── info.txt
│   │       │   │       │   ├── part-00000-16c852df-ba66-4080-be25-530a05922422-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-1e14ba22-3114-46d1-96fb-48b4912507ce-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-9a9c570c-ee32-4322-ad2f-8c837a77d398-c000.snappy.parquet
│   │       │   │       │   └── part-00001-664313d3-14b4-4dbf-8110-77001b877182-c000.snappy.parquet
│   │       │   │       ├── table-with-columnmapping-mode-id/
│   │       │   │       │   ├── .part-00000-37fc7686-b5a9-432d-8cdc-8caa8cf999e5-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-0321adc4-f601-4c9d-bb7c-a0ddf759c7b2-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-37fc7686-b5a9-432d-8cdc-8caa8cf999e5-c000.snappy.parquet
│   │       │   │       │   └── part-00001-0321adc4-f601-4c9d-bb7c-a0ddf759c7b2-c000.snappy.parquet
│   │       │   │       ├── table-with-columnmapping-mode-name/
│   │       │   │       │   ├── .part-00000-2887cf52-61be-4009-afba-00b218602665-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-b664b3db-62d8-4e02-9dc5-26dbce3abfc1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-2887cf52-61be-4009-afba-00b218602665-c000.snappy.parquet
│   │       │   │       │   └── part-00001-b664b3db-62d8-4e02-9dc5-26dbce3abfc1-c000.snappy.parquet
│   │       │   │       ├── table-with-icebegCompatV2Enabled/
│   │       │   │       │   ├── .part-00000-cbb3f19e-57e0-4922-a6c3-f211a65d918f-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-5bf41539-fbc6-4b96-9f42-946d36a7f4c9-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-cbb3f19e-57e0-4922-a6c3-f211a65d918f-c000.snappy.parquet
│   │       │   │       │   └── part-00001-5bf41539-fbc6-4b96-9f42-946d36a7f4c9-c000.snappy.parquet
│   │       │   │       ├── time-travel-partition-changes-a/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part5=0/
│   │       │   │       │   │   ├── .part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet
│   │       │   │       │   ├── part5=1/
│   │       │   │       │   │   ├── .part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet
│   │       │   │       │   ├── part5=2/
│   │       │   │       │   │   ├── .part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet
│   │       │   │       │   ├── part5=3/
│   │       │   │       │   │   ├── .part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet
│   │       │   │       │   └── part5=4/
│   │       │   │       │       ├── .part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet
│   │       │   │       │       └── part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet
│   │       │   │       ├── time-travel-partition-changes-b/
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part2=0/
│   │       │   │       │   │   ├── .part-00000-7bce012e-f358-4a97-91da-55c4d3266fbe.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-2a830e69-78f3-4d09-9b2c-3bfd9debc2f0.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-7bce012e-f358-4a97-91da-55c4d3266fbe.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-2a830e69-78f3-4d09-9b2c-3bfd9debc2f0.c000.snappy.parquet
│   │       │   │       │   ├── part2=1/
│   │       │   │       │   │   ├── .part-00000-82368d1d-588b-487a-be01-16dc85260296.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-0a72544a-fb83-4eaa-8d62-9e6ab59afa8b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-82368d1d-588b-487a-be01-16dc85260296.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-0a72544a-fb83-4eaa-8d62-9e6ab59afa8b.c000.snappy.parquet
│   │       │   │       │   ├── part5=0/
│   │       │   │       │   │   ├── .part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-67b6882e-f49f-4df5-9850-b5e8a72f4917.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-4f02a740-31dc-46c6-bc0e-c19d164ac82d.c000.snappy.parquet
│   │       │   │       │   ├── part5=1/
│   │       │   │       │   │   ├── .part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-8a40c3d2-f658-4131-a17f-388265ab04b7.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-3dcad520-b001-4829-a6e5-3d578b0964f4.c000.snappy.parquet
│   │       │   │       │   ├── part5=2/
│   │       │   │       │   │   ├── .part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-ec6e3a2e-ecbf-4d39-9076-37e523cd62f1.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-e20bae81-3f27-4c5c-aeca-5cfa6b38615c.c000.snappy.parquet
│   │       │   │       │   ├── part5=3/
│   │       │   │       │   │   ├── .part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── .part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet.crc
│   │       │   │       │   │   ├── part-00000-eaf1edf4-b9da-4df8-b957-08583e2a1d1b.c000.snappy.parquet
│   │       │   │       │   │   └── part-00001-b9c6b926-a274-4d8e-b882-31c4aac05038.c000.snappy.parquet
│   │       │   │       │   └── part5=4/
│   │       │   │       │       ├── .part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet.crc
│   │       │   │       │       ├── .part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet.crc
│   │       │   │       │       ├── part-00000-ce66c2ca-8fdf-48d3-a6e7-5980a370461a.c000.snappy.parquet
│   │       │   │       │       └── part-00001-5705917d-d837-4d7f-b8c4-f0ada8cf9663.c000.snappy.parquet
│   │       │   │       ├── time-travel-schema-changes-a/
│   │       │   │       │   ├── .part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet
│   │       │   │       │   └── part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet
│   │       │   │       ├── time-travel-schema-changes-b/
│   │       │   │       │   ├── .part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-a830a49c-6cc8-4caf-80a5-7ff8a959bd53-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-5fdfd303-d5e8-4e77-9b5d-4e831fa723e1-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-83680aa8-547c-40bc-8ca9-5c10997e307b-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-a830a49c-6cc8-4caf-80a5-7ff8a959bd53-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-3c1f89ce-a996-4d44-a79c-21a6f3d53138-c000.snappy.parquet
│   │       │   │       │   └── part-00001-5fdfd303-d5e8-4e77-9b5d-4e831fa723e1-c000.snappy.parquet
│   │       │   │       ├── time-travel-start/
│   │       │   │       │   ├── .part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   └── 00000000000000000000.json
│   │       │   │       │   ├── part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet
│   │       │   │       ├── time-travel-start-start20/
│   │       │   │       │   ├── .part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   └── 00000000000000000001.json
│   │       │   │       │   ├── part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet
│   │       │   │       ├── time-travel-start-start20-start40/
│   │       │   │       │   ├── .part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-aef3cbc1-92ef-43b1-8258-284d13163fbb-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-2b364e64-4212-4a35-a95f-ab64504f7c5c-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-632e29c6-fedf-4822-9223-233d6d8d9086-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-aef3cbc1-92ef-43b1-8258-284d13163fbb-c000.snappy.parquet
│   │       │   │       │   ├── part-00000-c6271e23-2077-455c-94f9-52866f930213-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-2b364e64-4212-4a35-a95f-ab64504f7c5c-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-90fee26a-1483-44e3-b239-805343fec254-c000.snappy.parquet
│   │       │   │       │   └── part-00001-e6177404-aaf5-4e07-8dc0-543a90f4657f-c000.snappy.parquet
│   │       │   │       ├── type-widening/
│   │       │   │       │   ├── .part-00000-1045efe0-45bb-4b99-9f83-5ffa04a63ab2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-cd317895-4ae0-4292-b918-62d4ca832bd7-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-1045efe0-45bb-4b99-9f83-5ffa04a63ab2-c000.snappy.parquet
│   │       │   │       │   └── part-00000-cd317895-4ae0-4292-b918-62d4ca832bd7-c000.snappy.parquet
│   │       │   │       ├── type-widening-nested/
│   │       │   │       │   ├── .part-00000-138244f1-b939-40db-a4bd-d57cf3d214d2-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00000-1f777f86-350c-4181-b7ef-73df70847eac-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   └── 00000000000000000002.json
│   │       │   │       │   ├── part-00000-138244f1-b939-40db-a4bd-d57cf3d214d2-c000.snappy.parquet
│   │       │   │       │   └── part-00000-1f777f86-350c-4181-b7ef-73df70847eac-c000.snappy.parquet
│   │       │   │       ├── update-deleted-directory/
│   │       │   │       │   └── _delta_log/
│   │       │   │       │       ├── .00000000000000000000.checkpoint.parquet.crc
│   │       │   │       │       ├── 00000000000000000000.checkpoint.parquet
│   │       │   │       │       ├── 00000000000000000000.json
│   │       │   │       │       └── _last_checkpoint
│   │       │   │       ├── v2-checkpoint-json/
│   │       │   │       │   ├── .part-00000-240b5dd6-323b-4f74-b6bc-ab9fdcacc630-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-534ea355-2edd-4046-8d49-d932469170c7-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00002-4438bc9d-9c60-4dd2-9343-574743ea4ca8-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00003-ae431d66-23d5-4dc7-b961-136ce33e63da-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.checkpoint.6374b053-df23-479b-b2cf-c9c550132b49.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.6374b053-df23-479b-b2cf-c9c550132b49.json
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── _last_checkpoint
│   │       │   │       │   │   └── _sidecars/
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000001.0000000002.bd1885fd-6ec0-4370-b0f5-43b5162fd4de.parquet.crc
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000002.0000000002.0a8d73ee-aa83-49d0-9583-c99db75b89b2.parquet.crc
│   │       │   │       │   │       ├── 00000000000000000002.checkpoint.0000000001.0000000002.bd1885fd-6ec0-4370-b0f5-43b5162fd4de.parquet
│   │       │   │       │   │       └── 00000000000000000002.checkpoint.0000000002.0000000002.0a8d73ee-aa83-49d0-9583-c99db75b89b2.parquet
│   │       │   │       │   ├── part-00000-240b5dd6-323b-4f74-b6bc-ab9fdcacc630-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-534ea355-2edd-4046-8d49-d932469170c7-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-4438bc9d-9c60-4dd2-9343-574743ea4ca8-c000.snappy.parquet
│   │       │   │       │   └── part-00003-ae431d66-23d5-4dc7-b961-136ce33e63da-c000.snappy.parquet
│   │       │   │       ├── v2-checkpoint-parquet/
│   │       │   │       │   ├── .part-00000-485b0fff-1c7b-4f14-92e9-a72300fcdf88-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00001-f7a80035-0622-431e-832e-a756c65cb2a5-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00002-5754df9c-5a25-43a6-947b-f27840fddb1a-c000.snappy.parquet.crc
│   │       │   │       │   ├── .part-00003-6ab7bbbb-e14d-4fa3-8767-06b509e0a666-c000.snappy.parquet.crc
│   │       │   │       │   ├── _delta_log/
│   │       │   │       │   │   ├── .00000000000000000000.json.crc
│   │       │   │       │   │   ├── .00000000000000000001.json.crc
│   │       │   │       │   │   ├── .00000000000000000002.checkpoint.e8fa2696-9728-4e9c-b285-634743fdd4fb.parquet.crc
│   │       │   │       │   │   ├── .00000000000000000002.json.crc
│   │       │   │       │   │   ├── ._last_checkpoint.crc
│   │       │   │       │   │   ├── 00000000000000000000.json
│   │       │   │       │   │   ├── 00000000000000000001.json
│   │       │   │       │   │   ├── 00000000000000000002.checkpoint.e8fa2696-9728-4e9c-b285-634743fdd4fb.parquet
│   │       │   │       │   │   ├── 00000000000000000002.json
│   │       │   │       │   │   ├── _last_checkpoint
│   │       │   │       │   │   └── _sidecars/
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000001.0000000002.055454d8-329c-4e0e-864d-7f867075af33.parquet.crc
│   │       │   │       │   │       ├── .00000000000000000002.checkpoint.0000000002.0000000002.33321cc1-9c55-4d1f-8511-fafe6d2e1133.parquet.crc
│   │       │   │       │   │       ├── 00000000000000000002.checkpoint.0000000001.0000000002.055454d8-329c-4e0e-864d-7f867075af33.parquet
│   │       │   │       │   │       └── 00000000000000000002.checkpoint.0000000002.0000000002.33321cc1-9c55-4d1f-8511-fafe6d2e1133.parquet
│   │       │   │       │   ├── part-00000-485b0fff-1c7b-4f14-92e9-a72300fcdf88-c000.snappy.parquet
│   │       │   │       │   ├── part-00001-f7a80035-0622-431e-832e-a756c65cb2a5-c000.snappy.parquet
│   │       │   │       │   ├── part-00002-5754df9c-5a25-43a6-947b-f27840fddb1a-c000.snappy.parquet
│   │       │   │       │   └── part-00003-6ab7bbbb-e14d-4fa3-8767-06b509e0a666-c000.snappy.parquet
│   │       │   │       └── versions-not-contiguous/
│   │       │   │           └── _delta_log/
│   │       │   │               ├── 00000000000000000000.json
│   │       │   │               └── 00000000000000000002.json
│   │       │   └── scala/
│   │       │       └── io/
│   │       │           └── delta/
│   │       │               └── golden/
│   │       │                   └── GoldenTableUtils.scala
│   │       └── test/
│   │           └── scala/
│   │               └── io/
│   │                   └── delta/
│   │                       └── golden/
│   │                           └── GoldenTables.scala
│   └── licenses/
│       ├── LICENSE-apache-spark.txt
│       └── LICENSE-parquet4s.txt
├── contribs/
│   └── src/
│       ├── main/
│       │   └── scala/
│       │       └── io/
│       │           └── delta/
│       │               └── storage/
│       │                   ├── IBMCOSLogStore.scala
│       │                   └── OracleCloudLogStore.scala
│       └── test/
│           └── scala/
│               └── io/
│                   └── delta/
│                       └── storage/
│                           ├── IBMCOSLogStoreSuite.scala
│                           └── OracleCloudLogStoreSuite.scala
├── dev/
│   ├── check-delta-connect-codegen-python.py
│   ├── checkstyle-suppressions.xml
│   ├── connectors-checkstyle.xml
│   ├── copyrightHeader
│   ├── delta-connect-gen-protos.sh
│   ├── kernel-checkstyle.xml
│   ├── lint-python
│   ├── pyproject.toml
│   ├── requirements.txt
│   ├── spark_structured_logging_style.py
│   └── tox.ini
├── docs/
│   ├── .gitignore
│   ├── .nvmrc
│   ├── .prettierignore
│   ├── .prettierrc.json
│   ├── README.md
│   ├── apis/
│   │   ├── api-docs.css
│   │   ├── api-docs.js
│   │   ├── api-javadocs.css
│   │   ├── api-javadocs.js
│   │   ├── generate_api_docs.py
│   │   └── python/
│   │       ├── Makefile
│   │       ├── conf.py
│   │       └── index.rst
│   ├── astro.config.mjs
│   ├── environment.yml
│   ├── eslint.config.mjs
│   ├── generate_docs.py
│   ├── package.json
│   ├── scripts/
│   │   ├── download-api-docs
│   │   └── upgrade-dependencies
│   ├── src/
│   │   ├── content/
│   │   │   └── docs/
│   │   │       ├── best-practices.mdx
│   │   │       ├── bigquery-integration.mdx
│   │   │       ├── concurrency-control.mdx
│   │   │       ├── delta-apidoc.mdx
│   │   │       ├── delta-athena-integration.mdx
│   │   │       ├── delta-batch.mdx
│   │   │       ├── delta-catalog-managed-tables.mdx
│   │   │       ├── delta-change-data-feed.mdx
│   │   │       ├── delta-clustering.mdx
│   │   │       ├── delta-column-mapping.mdx
│   │   │       ├── delta-constraints.mdx
│   │   │       ├── delta-default-columns.mdx
│   │   │       ├── delta-deletion-vectors.mdx
│   │   │       ├── delta-drop-feature.mdx
│   │   │       ├── delta-faq.mdx
│   │   │       ├── delta-kernel-java.mdx
│   │   │       ├── delta-kernel-rust.mdx
│   │   │       ├── delta-kernel.mdx
│   │   │       ├── delta-more-connectors.mdx
│   │   │       ├── delta-presto-integration.mdx
│   │   │       ├── delta-resources.mdx
│   │   │       ├── delta-row-tracking.mdx
│   │   │       ├── delta-sharing.mdx
│   │   │       ├── delta-spark-connect.mdx
│   │   │       ├── delta-standalone.mdx
│   │   │       ├── delta-starburst-integration.mdx
│   │   │       ├── delta-storage.mdx
│   │   │       ├── delta-streaming/
│   │   │       │   └── index.mdx
│   │   │       ├── delta-trino-integration.mdx
│   │   │       ├── delta-type-widening.mdx
│   │   │       ├── delta-uniform.mdx
│   │   │       ├── delta-update.mdx
│   │   │       ├── delta-utility/
│   │   │       │   └── index.mdx
│   │   │       ├── flink-integration.mdx
│   │   │       ├── hive-integration.mdx
│   │   │       ├── index.md
│   │   │       ├── integrations.mdx
│   │   │       ├── optimizations-oss/
│   │   │       │   └── index.mdx
│   │   │       ├── porting.mdx
│   │   │       ├── presto-integration.mdx
│   │   │       ├── quick-start.mdx
│   │   │       ├── redshift-spectrum-integration.mdx
│   │   │       ├── releases.mdx
│   │   │       ├── snowflake-integration.mdx
│   │   │       ├── table-properties.mdx
│   │   │       └── versioning.mdx
│   │   ├── content.config.ts
│   │   ├── env.d.ts
│   │   ├── pages/
│   │   │   └── robots.txt.ts
│   │   └── styles/
│   │       └── custom.css
│   └── tsconfig.json
├── examples/
│   ├── README.md
│   ├── python/
│   │   ├── change_data_feed.py
│   │   ├── delta_connect.py
│   │   ├── image_storage.py
│   │   ├── missing_delta_storage_jar.py
│   │   ├── quickstart.py
│   │   ├── quickstart_sql.py
│   │   ├── quickstart_sql_on_paths.py
│   │   ├── streaming.py
│   │   ├── table_exists.py
│   │   ├── using_with_pip.py
│   │   └── utilities.py
│   └── scala/
│       ├── .scalafmt.conf
│       ├── README.md
│       ├── build/
│       │   ├── sbt
│       │   ├── sbt-config/
│       │   │   └── repositories
│       │   └── sbt-launch-lib.bash
│       ├── build.sbt
│       ├── project/
│       │   └── build.properties
│       └── src/
│           └── main/
│               ├── resources/
│               │   └── log4j2.properties
│               └── scala/
│                   └── example/
│                       ├── ChangeDataFeed.scala
│                       ├── Clustering.scala
│                       ├── EvolutionWithMap.scala
│                       ├── IcebergCompatV2.scala
│                       ├── Quickstart.scala
│                       ├── QuickstartSQL.scala
│                       ├── QuickstartSQLOnPaths.scala
│                       ├── Streaming.scala
│                       ├── UniForm.scala
│                       ├── UnityCatalogQuickstart.scala
│                       ├── Utilities.scala
│                       └── Variant.scala
├── flink/
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   ├── .placeholder
│       │   │   └── io/
│       │   │       └── delta/
│       │   │           └── flink/
│       │   │               ├── Conf.java
│       │   │               ├── kernel/
│       │   │               │   ├── CheckpointActionRow.java
│       │   │               │   ├── CheckpointWriter.java
│       │   │               │   └── ColumnVectorUtils.java
│       │   │               └── table/
│       │   │                   ├── AbstractKernelTable.java
│       │   │                   ├── CredentialManager.java
│       │   │                   ├── DeltaCatalog.java
│       │   │                   ├── DeltaTable.java
│       │   │                   ├── ExceptionUtils.java
│       │   │                   ├── MetricListener.java
│       │   │                   ├── SnapshotCacheManager.java
│       │   │                   ├── TableConf.java
│       │   │                   ├── TableEventListener.java
│       │   │                   └── postcommit/
│       │   │                       ├── ChecksumListener.java
│       │   │                       └── MaintenanceListener.java
│       │   └── resources/
│       │       └── delta-flink.properties
│       └── test/
│           ├── java/
│           │   └── io/
│           │       └── delta/
│           │           └── flink/
│           │               ├── DummyHttp.java
│           │               ├── TestHelper.java
│           │               ├── kernel/
│           │               │   └── CheckpointWriterTest.java
│           │               └── table/
│           │                   ├── AbstractKernelTableTest.java
│           │                   ├── CredentialManagerTest.java
│           │                   ├── DataColumnVectorView.java
│           │                   ├── LocalFileSystemCatalog.java
│           │                   └── LocalFileSystemTable.java
│           └── resources/
│               └── log4j2-test.properties
├── hudi/
│   ├── README.md
│   ├── integration_tests/
│   │   └── write_uniform_hudi.py
│   └── src/
│       ├── main/
│       │   └── scala/
│       │       └── org/
│       │           └── apache/
│       │               └── spark/
│       │                   └── sql/
│       │                       └── delta/
│       │                           └── hudi/
│       │                               ├── HudiConversionTransaction.scala
│       │                               ├── HudiConverter.scala
│       │                               ├── HudiSchemaUtils.scala
│       │                               └── HudiTransactionUtils.scala
│       └── test/
│           └── scala/
│               └── org/
│                   └── apache/
│                       └── spark/
│                           └── sql/
│                               └── delta/
│                                   └── hudi/
│                                       └── ConvertToHudiSuite.scala
├── iceberg/
│   ├── integration_tests/
│   │   └── iceberg_converter.py
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── apache/
│       │   │           └── spark/
│       │   │               └── sql/
│       │   │                   └── delta/
│       │   │                       └── serverSidePlanning/
│       │   │                           └── FixedGcsAccessTokenProvider.java
│       │   └── scala/
│       │       └── org/
│       │           └── apache/
│       │               ├── iceberg/
│       │               │   └── transforms/
│       │               │       └── IcebergPartitionUtil.scala
│       │               └── spark/
│       │                   └── sql/
│       │                       ├── catalyst/
│       │                       │   └── analysis/
│       │                       │       └── NoSuchProcedureException.scala
│       │                       └── delta/
│       │                           ├── IcebergFileManifest.scala
│       │                           ├── IcebergPartitionConverter.scala
│       │                           ├── IcebergSchemaUtils.scala
│       │                           ├── IcebergSparkWrappers.scala
│       │                           ├── IcebergStatsUtils.scala
│       │                           ├── IcebergTable.scala
│       │                           ├── TypeToSparkTypeWithCustomCast.scala
│       │                           ├── icebergShaded/
│       │                           │   ├── DeltaToIcebergConvert.scala
│       │                           │   ├── IcebergConversionTransaction.scala
│       │                           │   ├── IcebergConverter.scala
│       │                           │   ├── IcebergSchemaUtils.scala
│       │                           │   ├── IcebergStatsConverter.scala
│       │                           │   └── IcebergTransactionUtils.scala
│       │                           └── serverSidePlanning/
│       │                               ├── IcebergRESTCatalogPlanningClient.scala
│       │                               ├── IcebergRESTCatalogPlanningClientFactory.scala
│       │                               └── SparkToIcebergExpressionConverter.scala
│       └── test/
│           ├── java/
│           │   └── shadedForDelta/
│           │       └── org/
│           │           └── apache/
│           │               └── iceberg/
│           │                   └── rest/
│           │                       ├── IcebergRESTCatalogAdapterWithPlanSupport.java
│           │                       ├── IcebergRESTServer.java
│           │                       └── IcebergRESTServletWithPlanSupport.java
│           ├── resources/
│           │   └── META-INF/
│           │       └── services/
│           │           └── org.apache.spark.sql.sources.DataSourceRegister
│           └── scala/
│               └── org/
│                   └── apache/
│                       └── spark/
│                           └── sql/
│                               └── delta/
│                                   ├── CloneIcebergSuite.scala
│                                   ├── ConvertIcebergToDeltaPartitionSuite.scala
│                                   ├── ConvertIcebergToDeltaSuite.scala
│                                   ├── ConvertToIcebergSuite.scala
│                                   ├── NonSparkIcebergTestUtils.scala
│                                   ├── commands/
│                                   │   └── convert/
│                                   │       ├── IcebergPartitionConverterSuite.scala
│                                   │       └── IcebergStatsUtilsSuite.scala
│                                   ├── serverSidePlanning/
│                                   │   ├── IcebergRESTCatalogPlanningClientSuite.scala
│                                   │   ├── IcebergRESTServerTestUtils.scala
│                                   │   ├── ServerSidePlanningCredentialsSuite.scala
│                                   │   ├── SparkToIcebergExpressionConverterSuite.scala
│                                   │   └── TestSchemas.scala
│                                   └── uniform/
│                                       ├── IcebergCompatV2EnableUniformByAlterTableSuite.scala
│                                       ├── TypeWideningUniformSuite.scala
│                                       ├── UniFormConverterSuite.scala
│                                       ├── UniFormE2EIcebergSuite.scala
│                                       └── UniversalFormatSuite.scala
├── icebergShaded/
│   └── src/
│       └── main/
│           └── java/
│               └── org/
│                   └── apache/
│                       └── iceberg/
│                           ├── MetadataUpdate.java
│                           ├── PartitionSpec.java
│                           ├── TableMetadata.java
│                           ├── hive/
│                           │   ├── HiveCatalog.java
│                           │   └── HiveTableOperations.java
│                           ├── rest/
│                           │   └── RESTFileScanTaskParser.java
│                           └── unityCatalog/
│                               ├── UnityCatalog.java
│                               └── UnityCatalogTableOperations.java
├── kernel/
│   ├── EXCEPTION_PRINCIPLES.md
│   ├── README.md
│   ├── USER_GUIDE.md
│   ├── build/
│   │   ├── sbt
│   │   ├── sbt-config/
│   │   │   └── repositories
│   │   └── sbt-launch-lib.bash
│   ├── examples/
│   │   ├── kernel-examples/
│   │   │   ├── pom.xml
│   │   │   └── src/
│   │   │       └── main/
│   │   │           └── java/
│   │   │               └── io/
│   │   │                   └── delta/
│   │   │                       └── kernel/
│   │   │                           ├── examples/
│   │   │                           │   ├── BaseTableReader.java
│   │   │                           │   ├── BaseTableWriter.java
│   │   │                           │   ├── CreateTable.java
│   │   │                           │   ├── CreateTableAndInsertData.java
│   │   │                           │   ├── MultiThreadedTableReader.java
│   │   │                           │   ├── SingleThreadedTableReader.java
│   │   │                           │   └── utils/
│   │   │                           │       ├── RowSerDe.java
│   │   │                           │       └── Utils.java
│   │   │                           └── integration/
│   │   │                               ├── ReadIntegrationTestSuite.java
│   │   │                               └── WriteIntegrationTestSuite.java
│   │   └── run-kernel-examples.py
│   ├── kernel-api/
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── io/
│   │       │           └── delta/
│   │       │               └── kernel/
│   │       │                   ├── CommitActions.java
│   │       │                   ├── CommitRange.java
│   │       │                   ├── CommitRangeBuilder.java
│   │       │                   ├── DataWriteContext.java
│   │       │                   ├── Operation.java
│   │       │                   ├── PaginatedScan.java
│   │       │                   ├── PaginatedScanFilesIterator.java
│   │       │                   ├── Scan.java
│   │       │                   ├── ScanBuilder.java
│   │       │                   ├── Snapshot.java
│   │       │                   ├── SnapshotBuilder.java
│   │       │                   ├── Table.java
│   │       │                   ├── TableManager.java
│   │       │                   ├── Transaction.java
│   │       │                   ├── TransactionBuilder.java
│   │       │                   ├── TransactionCommitResult.java
│   │       │                   ├── annotation/
│   │       │                   │   ├── Evolving.java
│   │       │                   │   └── Experimental.java
│   │       │                   ├── commit/
│   │       │                   │   ├── CatalogCommitter.java
│   │       │                   │   ├── CatalogCommitterUtils.java
│   │       │                   │   ├── CommitFailedException.java
│   │       │                   │   ├── CommitMetadata.java
│   │       │                   │   ├── CommitResponse.java
│   │       │                   │   ├── Committer.java
│   │       │                   │   ├── PublishFailedException.java
│   │       │                   │   └── PublishMetadata.java
│   │       │                   ├── data/
│   │       │                   │   ├── ArrayValue.java
│   │       │                   │   ├── ColumnVector.java
│   │       │                   │   ├── ColumnarBatch.java
│   │       │                   │   ├── FilteredColumnarBatch.java
│   │       │                   │   ├── MapValue.java
│   │       │                   │   ├── Row.java
│   │       │                   │   └── package-info.java
│   │       │                   ├── engine/
│   │       │                   │   ├── Engine.java
│   │       │                   │   ├── ExpressionHandler.java
│   │       │                   │   ├── FileReadRequest.java
│   │       │                   │   ├── FileReadResult.java
│   │       │                   │   ├── FileSystemClient.java
│   │       │                   │   ├── JsonHandler.java
│   │       │                   │   ├── MetricsReporter.java
│   │       │                   │   ├── ParquetHandler.java
│   │       │                   │   └── package-info.java
│   │       │                   ├── exceptions/
│   │       │                   │   ├── CheckpointAlreadyExistsException.java
│   │       │                   │   ├── CommitRangeNotFoundException.java
│   │       │                   │   ├── CommitStateUnknownException.java
│   │       │                   │   ├── ConcurrentTransactionException.java
│   │       │                   │   ├── ConcurrentWriteException.java
│   │       │                   │   ├── DomainDoesNotExistException.java
│   │       │                   │   ├── InvalidConfigurationValueException.java
│   │       │                   │   ├── InvalidTableException.java
│   │       │                   │   ├── KernelEngineException.java
│   │       │                   │   ├── KernelException.java
│   │       │                   │   ├── MaxCommitRetryLimitReachedException.java
│   │       │                   │   ├── MetadataChangedException.java
│   │       │                   │   ├── ProtocolChangedException.java
│   │       │                   │   ├── TableAlreadyExistsException.java
│   │       │                   │   ├── TableNotFoundException.java
│   │       │                   │   ├── UnknownConfigurationException.java
│   │       │                   │   ├── UnsupportedProtocolVersionException.java
│   │       │                   │   └── UnsupportedTableFeatureException.java
│   │       │                   ├── expressions/
│   │       │                   │   ├── AlwaysFalse.java
│   │       │                   │   ├── AlwaysTrue.java
│   │       │                   │   ├── And.java
│   │       │                   │   ├── Column.java
│   │       │                   │   ├── Expression.java
│   │       │                   │   ├── ExpressionEvaluator.java
│   │       │                   │   ├── In.java
│   │       │                   │   ├── Literal.java
│   │       │                   │   ├── Or.java
│   │       │                   │   ├── PartitionValueExpression.java
│   │       │                   │   ├── Predicate.java
│   │       │                   │   ├── PredicateEvaluator.java
│   │       │                   │   ├── ScalarExpression.java
│   │       │                   │   └── package-info.java
│   │       │                   ├── hook/
│   │       │                   │   └── PostCommitHook.java
│   │       │                   ├── internal/
│   │       │                   │   ├── CommitActionsImpl.java
│   │       │                   │   ├── CreateTableTransactionBuilderImpl.java
│   │       │                   │   ├── DataWriteContextImpl.java
│   │       │                   │   ├── DeltaErrors.java
│   │       │                   │   ├── DeltaErrorsInternal.java
│   │       │                   │   ├── DeltaHistoryManager.java
│   │       │                   │   ├── DeltaLogActionUtils.java
│   │       │                   │   ├── InternalScanFileUtils.java
│   │       │                   │   ├── PaginatedScanImpl.java
│   │       │                   │   ├── ReplaceTableTransactionBuilderImpl.java
│   │       │                   │   ├── ReplaceTableTransactionBuilderV2Impl.java
│   │       │                   │   ├── ScanBuilderImpl.java
│   │       │                   │   ├── ScanImpl.java
│   │       │                   │   ├── SnapshotImpl.java
│   │       │                   │   ├── TableChangesUtils.java
│   │       │                   │   ├── TableConfig.java
│   │       │                   │   ├── TableImpl.java
│   │       │                   │   ├── TransactionBuilderImpl.java
│   │       │                   │   ├── TransactionImpl.java
│   │       │                   │   ├── TransactionMetadataFactory.java
│   │       │                   │   ├── UpdateTableTransactionBuilderImpl.java
│   │       │                   │   ├── actions/
│   │       │                   │   │   ├── AddCDCFile.java
│   │       │                   │   │   ├── AddFile.java
│   │       │                   │   │   ├── CommitInfo.java
│   │       │                   │   │   ├── DeletionVectorDescriptor.java
│   │       │                   │   │   ├── DomainMetadata.java
│   │       │                   │   │   ├── Format.java
│   │       │                   │   │   ├── GenerateIcebergCompatActionUtils.java
│   │       │                   │   │   ├── Metadata.java
│   │       │                   │   │   ├── Protocol.java
│   │       │                   │   │   ├── RemoveFile.java
│   │       │                   │   │   ├── RowBackedAction.java
│   │       │                   │   │   ├── SetTransaction.java
│   │       │                   │   │   └── SingleAction.java
│   │       │                   │   ├── annotation/
│   │       │                   │   │   └── VisibleForTesting.java
│   │       │                   │   ├── checkpoints/
│   │       │                   │   │   ├── CheckpointInstance.java
│   │       │                   │   │   ├── CheckpointMetaData.java
│   │       │                   │   │   ├── CheckpointMetadataAction.java
│   │       │                   │   │   ├── Checkpointer.java
│   │       │                   │   │   └── SidecarFile.java
│   │       │                   │   ├── checksum/
│   │       │                   │   │   ├── CRCInfo.java
│   │       │                   │   │   ├── ChecksumReader.java
│   │       │                   │   │   ├── ChecksumUtils.java
│   │       │                   │   │   └── ChecksumWriter.java
│   │       │                   │   ├── clustering/
│   │       │                   │   │   ├── ClusteringMetadataDomain.java
│   │       │                   │   │   └── ClusteringUtils.java
│   │       │                   │   ├── columndefaults/
│   │       │                   │   │   └── ColumnDefaults.java
│   │       │                   │   ├── commit/
│   │       │                   │   │   └── DefaultFileSystemManagedTableOnlyCommitter.java
│   │       │                   │   ├── commitrange/
│   │       │                   │   │   ├── CommitRangeBuilderImpl.java
│   │       │                   │   │   ├── CommitRangeFactory.java
│   │       │                   │   │   └── CommitRangeImpl.java
│   │       │                   │   ├── compaction/
│   │       │                   │   │   └── LogCompactionWriter.java
│   │       │                   │   ├── data/
│   │       │                   │   │   ├── ChildVectorBasedRow.java
│   │       │                   │   │   ├── ColumnarBatchRow.java
│   │       │                   │   │   ├── DelegateRow.java
│   │       │                   │   │   ├── GenericColumnVector.java
│   │       │                   │   │   ├── GenericRow.java
│   │       │                   │   │   ├── ScanStateRow.java
│   │       │                   │   │   ├── SelectionColumnVector.java
│   │       │                   │   │   ├── StructRow.java
│   │       │                   │   │   └── TransactionStateRow.java
│   │       │                   │   ├── deletionvectors/
│   │       │                   │   │   ├── Base85Codec.java
│   │       │                   │   │   ├── DeletionVectorStoredBitmap.java
│   │       │                   │   │   ├── DeletionVectorUtils.java
│   │       │                   │   │   └── RoaringBitmapArray.java
│   │       │                   │   ├── files/
│   │       │                   │   │   ├── LogDataUtils.java
│   │       │                   │   │   ├── ParsedCatalogCommitData.java
│   │       │                   │   │   ├── ParsedCheckpointData.java
│   │       │                   │   │   ├── ParsedChecksumData.java
│   │       │                   │   │   ├── ParsedClassicCheckpointData.java
│   │       │                   │   │   ├── ParsedDeltaData.java
│   │       │                   │   │   ├── ParsedLogCompactionData.java
│   │       │                   │   │   ├── ParsedLogData.java
│   │       │                   │   │   ├── ParsedMultiPartCheckpointData.java
│   │       │                   │   │   ├── ParsedPublishedDeltaData.java
│   │       │                   │   │   └── ParsedV2CheckpointData.java
│   │       │                   │   ├── fs/
│   │       │                   │   │   └── Path.java
│   │       │                   │   ├── hook/
│   │       │                   │   │   ├── CheckpointHook.java
│   │       │                   │   │   ├── ChecksumFullHook.java
│   │       │                   │   │   ├── ChecksumSimpleHook.java
│   │       │                   │   │   └── LogCompactionHook.java
│   │       │                   │   ├── icebergcompat/
│   │       │                   │   │   ├── IcebergCompatMetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergCompatV2MetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergCompatV3MetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergUniversalFormatMetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergWriterCompatMetadataValidatorAndUpdater.java
│   │       │                   │   │   ├── IcebergWriterCompatV1MetadataValidatorAndUpdater.java
│   │       │                   │   │   └── IcebergWriterCompatV3MetadataValidatorAndUpdater.java
│   │       │                   │   ├── lang/
│   │       │                   │   │   ├── Lazy.java
│   │       │                   │   │   └── ListUtils.java
│   │       │                   │   ├── metadatadomain/
│   │       │                   │   │   └── JsonMetadataDomain.java
│   │       │                   │   ├── metrics/
│   │       │                   │   │   ├── Counter.java
│   │       │                   │   │   ├── DeltaOperationReportImpl.java
│   │       │                   │   │   ├── MetricsReportSerializer.java
│   │       │                   │   │   ├── ScanMetrics.java
│   │       │                   │   │   ├── ScanReportImpl.java
│   │       │                   │   │   ├── SnapshotMetrics.java
│   │       │                   │   │   ├── SnapshotQueryContext.java
│   │       │                   │   │   ├── SnapshotReportImpl.java
│   │       │                   │   │   ├── Timer.java
│   │       │                   │   │   ├── TransactionMetrics.java
│   │       │                   │   │   └── TransactionReportImpl.java
│   │       │                   │   ├── replay/
│   │       │                   │   │   ├── ActionWrapper.java
│   │       │                   │   │   ├── ActionsIterator.java
│   │       │                   │   │   ├── ActiveAddFilesIterator.java
│   │       │                   │   │   ├── ConflictChecker.java
│   │       │                   │   │   ├── CreateCheckpointIterator.java
│   │       │                   │   │   ├── DeltaLogFile.java
│   │       │                   │   │   ├── LogReplay.java
│   │       │                   │   │   ├── LogReplayUtils.java
│   │       │                   │   │   ├── PageToken.java
│   │       │                   │   │   ├── PaginatedScanFilesIteratorImpl.java
│   │       │                   │   │   ├── PaginationContext.java
│   │       │                   │   │   └── ProtocolMetadataLogReplay.java
│   │       │                   │   ├── rowtracking/
│   │       │                   │   │   ├── MaterializedRowTrackingColumn.java
│   │       │                   │   │   ├── RowTracking.java
│   │       │                   │   │   └── RowTrackingMetadataDomain.java
│   │       │                   │   ├── skipping/
│   │       │                   │   │   ├── DataSkippingPredicate.java
│   │       │                   │   │   ├── DataSkippingUtils.java
│   │       │                   │   │   └── StatsSchemaHelper.java
│   │       │                   │   ├── snapshot/
│   │       │                   │   │   ├── LogSegment.java
│   │       │                   │   │   ├── MetadataCleanup.java
│   │       │                   │   │   └── SnapshotManager.java
│   │       │                   │   ├── stats/
│   │       │                   │   │   └── FileSizeHistogram.java
│   │       │                   │   ├── table/
│   │       │                   │   │   ├── SnapshotBuilderImpl.java
│   │       │                   │   │   └── SnapshotFactory.java
│   │       │                   │   ├── tablefeatures/
│   │       │                   │   │   ├── FeatureAutoEnabledByMetadata.java
│   │       │                   │   │   ├── TableFeature.java
│   │       │                   │   │   └── TableFeatures.java
│   │       │                   │   ├── types/
│   │       │                   │   │   ├── DataTypeJsonSerDe.java
│   │       │                   │   │   └── TypeWideningChecker.java
│   │       │                   │   └── util/
│   │       │                   │       ├── CaseInsensitiveMap.java
│   │       │                   │       ├── Clock.java
│   │       │                   │       ├── ColumnMapping.java
│   │       │                   │       ├── DateTimeConstants.java
│   │       │                   │       ├── DirectoryCreationUtils.java
│   │       │                   │       ├── DomainMetadataUtils.java
│   │       │                   │       ├── ExpressionUtils.java
│   │       │                   │       ├── FileNames.java
│   │       │                   │       ├── InCommitTimestampUtils.java
│   │       │                   │       ├── InternalUtils.java
│   │       │                   │       ├── IntervalParserUtils.java
│   │       │                   │       ├── JsonUtils.java
│   │       │                   │       ├── ManualClock.java
│   │       │                   │       ├── PartitionUtils.java
│   │       │                   │       ├── Preconditions.java
│   │       │                   │       ├── SchemaChanges.java
│   │       │                   │       ├── SchemaIterable.java
│   │       │                   │       ├── SchemaUtils.java
│   │       │                   │       ├── TimestampUtils.java
│   │       │                   │       ├── Tuple2.java
│   │       │                   │       ├── Utils.java
│   │       │                   │       └── VectorUtils.java
│   │       │                   ├── metrics/
│   │       │                   │   ├── DeltaOperationReport.java
│   │       │                   │   ├── FileSizeHistogramResult.java
│   │       │                   │   ├── MetricsReport.java
│   │       │                   │   ├── ScanMetricsResult.java
│   │       │                   │   ├── ScanReport.java
│   │       │                   │   ├── SnapshotMetricsResult.java
│   │       │                   │   ├── SnapshotReport.java
│   │       │                   │   ├── TransactionMetricsResult.java
│   │       │                   │   └── TransactionReport.java
│   │       │                   ├── package-info.java
│   │       │                   ├── statistics/
│   │       │                   │   ├── DataFileStatistics.java
│   │       │                   │   └── SnapshotStatistics.java
│   │       │                   ├── transaction/
│   │       │                   │   ├── CreateTableTransactionBuilder.java
│   │       │                   │   ├── DataLayoutSpec.java
│   │       │                   │   ├── ReplaceTableTransactionBuilder.java
│   │       │                   │   └── UpdateTableTransactionBuilder.java
│   │       │                   ├── types/
│   │       │                   │   ├── ArrayType.java
│   │       │                   │   ├── BasePrimitiveType.java
│   │       │                   │   ├── BinaryType.java
│   │       │                   │   ├── BooleanType.java
│   │       │                   │   ├── ByteType.java
│   │       │                   │   ├── CollationIdentifier.java
│   │       │                   │   ├── DataType.java
│   │       │                   │   ├── DateType.java
│   │       │                   │   ├── DecimalType.java
│   │       │                   │   ├── DoubleType.java
│   │       │                   │   ├── FieldMetadata.java
│   │       │                   │   ├── FloatType.java
│   │       │                   │   ├── GeographyType.java
│   │       │                   │   ├── GeometryType.java
│   │       │                   │   ├── IntegerType.java
│   │       │                   │   ├── LongType.java
│   │       │                   │   ├── MapType.java
│   │       │                   │   ├── MetadataColumnSpec.java
│   │       │                   │   ├── ShortType.java
│   │       │                   │   ├── StringType.java
│   │       │                   │   ├── StructField.java
│   │       │                   │   ├── StructType.java
│   │       │                   │   ├── TimestampNTZType.java
│   │       │                   │   ├── TimestampType.java
│   │       │                   │   ├── TypeChange.java
│   │       │                   │   ├── VariantType.java
│   │       │                   │   └── package-info.java
│   │       │                   └── utils/
│   │       │                       ├── CloseableIterable.java
│   │       │                       ├── CloseableIterator.java
│   │       │                       ├── DataFileStatus.java
│   │       │                       ├── FileStatus.java
│   │       │                       ├── PartitionUtils.java
│   │       │                       └── package-info.java
│   │       └── test/
│   │           ├── resources/
│   │           │   └── log4j2.properties
│   │           └── scala/
│   │               └── io/
│   │                   └── delta/
│   │                       └── kernel/
│   │                           ├── CloseableIteratorSuite.scala
│   │                           ├── TransactionSuite.scala
│   │                           ├── commit/
│   │                           │   └── CatalogCommitterUtilsSuite.scala
│   │                           ├── deletionvectors/
│   │                           │   ├── Base85CodecSuite.scala
│   │                           │   └── RoaringBitmapArraySuite.scala
│   │                           ├── exceptions/
│   │                           │   └── ExceptionSuite.scala
│   │                           ├── expressions/
│   │                           │   ├── ExpressionsSuite.scala
│   │                           │   └── PredicateSuite.scala
│   │                           ├── internal/
│   │                           │   ├── CommitRangeBuilderSuite.scala
│   │                           │   ├── DeltaHistoryManagerSuite.scala
│   │                           │   ├── DeltaLogActionUtilsSuite.scala
│   │                           │   ├── FilteredColumnarBatchSuite.scala
│   │                           │   ├── PageTokenSuite.scala
│   │                           │   ├── PaginationContextSuite.scala
│   │                           │   ├── SnapshotManagerSuite.scala
│   │                           │   ├── TableConfigSuite.scala
│   │                           │   ├── TableImplSuite.scala
│   │                           │   ├── TransactionBuilderImplSuite.scala
│   │                           │   ├── TransactionMetadataFactorySuite.scala
│   │                           │   ├── actions/
│   │                           │   │   ├── AddFileSuite.scala
│   │                           │   │   ├── DeletionVectorDescriptorSuite.scala
│   │                           │   │   ├── GenerateIcebergCompatActionUtilsSuite.scala
│   │                           │   │   ├── MetadataSuite.scala
│   │                           │   │   ├── ProtocolSuite.scala
│   │                           │   │   └── RemoveFileSuite.scala
│   │                           │   ├── catalogManaged/
│   │                           │   │   ├── CatalogManagedLogSegmentSuite.scala
│   │                           │   │   └── SnapshotBuilderSuite.scala
│   │                           │   ├── checkpoints/
│   │                           │   │   ├── CheckpointInstanceSuite.scala
│   │                           │   │   └── CheckpointerSuite.scala
│   │                           │   ├── checksum/
│   │                           │   │   ├── CRCInfoReadCompatSuite.scala
│   │                           │   │   └── ChecksumWriterSuite.scala
│   │                           │   ├── clustering/
│   │                           │   │   └── ClusteringMetadataDomainSuite.scala
│   │                           │   ├── columndefaults/
│   │                           │   │   └── ColumnDefaultsSuite.scala
│   │                           │   ├── commit/
│   │                           │   │   ├── CommitMetadataSuite.scala
│   │                           │   │   ├── DefaultCommitterSuite.scala
│   │                           │   │   └── PublishMetadataSuite.scala
│   │                           │   ├── files/
│   │                           │   │   ├── LogDataUtilsSuite.scala
│   │                           │   │   └── ParsedLogDataSuite.scala
│   │                           │   ├── fs/
│   │                           │   │   ├── PathSuite.scala
│   │                           │   │   └── benchmarks/
│   │                           │   │       └── PathNormalizationBenchmarks.java
│   │                           │   ├── icebergcompat/
│   │                           │   │   ├── IcebergCompatMetadataValidatorAndUpdaterSuiteBase.scala
│   │                           │   │   ├── IcebergCompatV2MetadataValidatorAndUpdaterSuite.scala
│   │                           │   │   ├── IcebergCompatV3MetadataValidatorAndUpdateSuite.scala
│   │                           │   │   ├── IcebergUniversalFormatMetadataValidatorAndUpdaterSuite.scala
│   │                           │   │   ├── IcebergWriterCompatV1MetadataValidatorAndUpdaterSuite.scala
│   │                           │   │   └── IcebergWriterCompatV3MetadataValidatorAndUpdaterSuite.scala
│   │                           │   ├── metadatadomain/
│   │                           │   │   ├── JsonMetadataDomainSuite.scala
│   │                           │   │   └── TestJsonMetadataDomain.java
│   │                           │   ├── metrics/
│   │                           │   │   ├── CounterSuite.scala
│   │                           │   │   ├── MetricsReportSerializerSuite.scala
│   │                           │   │   └── TimerSuite.scala
│   │                           │   ├── replay/
│   │                           │   │   └── ActionsIteratorSuite.scala
│   │                           │   ├── skipping/
│   │                           │   │   ├── DataSkippingUtilsSuite.scala
│   │                           │   │   └── StatsSchemaHelperSuite.scala
│   │                           │   ├── snapshot/
│   │                           │   │   ├── LogSegmentSuite.scala
│   │                           │   │   └── MetadataCleanupSuite.scala
│   │                           │   ├── stats/
│   │                           │   │   └── FileSizeHistogramSuite.scala
│   │                           │   ├── tablefeatures/
│   │                           │   │   └── TableFeaturesSuite.scala
│   │                           │   ├── types/
│   │                           │   │   ├── DataTypeJsonSerDeSuite.scala
│   │                           │   │   └── TypeWideningCheckerSuite.scala
│   │                           │   └── util/
│   │                           │       ├── ColumnMappingSuite.scala
│   │                           │       ├── ColumnMappingSuiteBase.scala
│   │                           │       ├── DataFileStatisticsSuite.scala
│   │                           │       ├── FileNamesSuite.scala
│   │                           │       ├── IntervalParserUtilsSuite.scala
│   │                           │       ├── JsonUtilsSuite.scala
│   │                           │       ├── PartitionUtilsSuite.scala
│   │                           │       ├── SchemaIterableSuite.scala
│   │                           │       ├── SchemaUtilsSuite.scala
│   │                           │       ├── TimestampUtilsSuite.scala
│   │                           │       └── VectorUtilsSuite.scala
│   │                           ├── test/
│   │                           │   ├── ActionUtils.scala
│   │                           │   ├── MockEngineUtils.scala
│   │                           │   ├── MockFileSystemClientUtils.scala
│   │                           │   ├── MockSnapshotUtils.scala
│   │                           │   ├── TestFixtures.scala
│   │                           │   ├── TestUtils.scala
│   │                           │   └── VectorTestUtils.scala
│   │                           ├── transaction/
│   │                           │   └── DataLayoutSpecSuite.scala
│   │                           ├── types/
│   │                           │   ├── CollationIdentifierSuite.scala
│   │                           │   ├── DataTypeSuite.scala
│   │                           │   ├── FieldMetadataSuite.scala
│   │                           │   ├── MetadataColumnSuite.scala
│   │                           │   ├── StringTypeSuite.scala
│   │                           │   ├── StructFieldSuite.scala
│   │                           │   └── TypesSuite.scala
│   │                           └── utils/
│   │                               └── MetadataColumnTestUtils.scala
│   ├── kernel-benchmarks/
│   │   └── src/
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── delta/
│   │           │           └── kernel/
│   │           │               └── benchmarks/
│   │           │                   ├── AbstractBenchmarkState.java
│   │           │                   ├── BenchmarkParallelCheckpointReading.java
│   │           │                   ├── BenchmarkUtils.java
│   │           │                   ├── KernelMetricsProfiler.java
│   │           │                   ├── WorkloadBenchmark.java
│   │           │                   ├── WorkloadOutputFormat.java
│   │           │                   ├── models/
│   │           │                   │   ├── ReadSpec.java
│   │           │                   │   ├── SnapshotConstructionSpec.java
│   │           │                   │   ├── TableInfo.java
│   │           │                   │   ├── UcCatalogInfo.java
│   │           │                   │   ├── WorkloadSpec.java
│   │           │                   │   └── WriteSpec.java
│   │           │                   └── workloadrunners/
│   │           │                       ├── ReadMetadataRunner.java
│   │           │                       ├── SnapshotConstructionRunner.java
│   │           │                       ├── WorkloadRunner.java
│   │           │                       └── WriteRunner.java
│   │           └── resources/
│   │               └── workload_specs/
│   │                   ├── basic_append/
│   │                   │   ├── delta/
│   │                   │   │   ├── .part-00000-a9daef62-5a40-43c5-ac63-3ad4a7d749ae-c000.snappy.parquet.crc
│   │                   │   │   ├── .part-00000-c9f44819-b06d-45dd-b33d-ae9aa1b96909-c000.snappy.parquet.crc
│   │                   │   │   ├── _delta_log/
│   │                   │   │   │   ├── .00000000000000000000.json.crc
│   │                   │   │   │   ├── .00000000000000000001.json.crc
│   │                   │   │   │   ├── 00000000000000000000.json
│   │                   │   │   │   └── 00000000000000000001.json
│   │                   │   │   ├── part-00000-a9daef62-5a40-43c5-ac63-3ad4a7d749ae-c000.snappy.parquet
│   │                   │   │   └── part-00000-c9f44819-b06d-45dd-b33d-ae9aa1b96909-c000.snappy.parquet
│   │                   │   ├── specs/
│   │                   │   │   ├── read_latest/
│   │                   │   │   │   └── spec.json
│   │                   │   │   ├── read_v0/
│   │                   │   │   │   └── spec.json
│   │                   │   │   ├── snapshot_latest/
│   │                   │   │   │   └── spec.json
│   │                   │   │   ├── snapshot_v0/
│   │                   │   │   │   └── spec.json
│   │                   │   │   └── write_appends/
│   │                   │   │       ├── commit_2_adds.json
│   │                   │   │       ├── commit_add.json
│   │                   │   │       └── spec.json
│   │                   │   └── table_info.json
│   │                   └── basic_catalog_managed/
│   │                       ├── catalog_managed_info.json
│   │                       ├── delta/
│   │                       │   ├── _delta_log/
│   │                       │   │   ├── 00000000000000000000.json
│   │                       │   │   ├── 00000000000000000001.json
│   │                       │   │   └── _staged_commits/
│   │                       │   │       ├── 00000000000000000002.a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d.json
│   │                       │   │       └── 00000000000000000003.f7e8d9c0-b1a2-4536-9748-5a6b7c8d9e0f.json
│   │                       │   ├── part-00000-a9daef62-5a40-43c5-ac63-3ad4a7d749ae-c000.snappy.parquet
│   │                       │   └── part-00000-c9f44819-b06d-45dd-b33d-ae9aa1b96909-c000.snappy.parquet
│   │                       ├── specs/
│   │                       │   ├── read_with_staged/
│   │                       │   │   └── spec.json
│   │                       │   └── write_with_staged/
│   │                       │       ├── commit_2.json
│   │                       │       └── spec.json
│   │                       └── table_info.json
│   ├── kernel-defaults/
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── io/
│   │       │           └── delta/
│   │       │               └── kernel/
│   │       │                   └── defaults/
│   │       │                       ├── engine/
│   │       │                       │   ├── DefaultEngine.java
│   │       │                       │   ├── DefaultExpressionHandler.java
│   │       │                       │   ├── DefaultFileSystemClient.java
│   │       │                       │   ├── DefaultJsonHandler.java
│   │       │                       │   ├── DefaultParquetHandler.java
│   │       │                       │   ├── LoggingMetricsReporter.java
│   │       │                       │   ├── fileio/
│   │       │                       │   │   ├── FileIO.java
│   │       │                       │   │   ├── InputFile.java
│   │       │                       │   │   ├── OutputFile.java
│   │       │                       │   │   ├── PositionOutputStream.java
│   │       │                       │   │   └── SeekableInputStream.java
│   │       │                       │   ├── hadoopio/
│   │       │                       │   │   ├── HadoopFileIO.java
│   │       │                       │   │   ├── HadoopInputFile.java
│   │       │                       │   │   ├── HadoopOutputFile.java
│   │       │                       │   │   ├── HadoopPositionOutputStream.java
│   │       │                       │   │   └── HadoopSeekableInputStream.java
│   │       │                       │   └── package-info.java
│   │       │                       └── internal/
│   │       │                           ├── DefaultEngineErrors.java
│   │       │                           ├── DefaultKernelUtils.java
│   │       │                           ├── data/
│   │       │                           │   ├── DefaultColumnarBatch.java
│   │       │                           │   ├── DefaultJsonRow.java
│   │       │                           │   ├── DefaultRowBasedColumnarBatch.java
│   │       │                           │   └── vector/
│   │       │                           │       ├── AbstractColumnVector.java
│   │       │                           │       ├── DefaultArrayVector.java
│   │       │                           │       ├── DefaultBinaryVector.java
│   │       │                           │       ├── DefaultBooleanVector.java
│   │       │                           │       ├── DefaultByteVector.java
│   │       │                           │       ├── DefaultConstantVector.java
│   │       │                           │       ├── DefaultDecimalVector.java
│   │       │                           │       ├── DefaultDoubleVector.java
│   │       │                           │       ├── DefaultFloatVector.java
│   │       │                           │       ├── DefaultGenericVector.java
│   │       │                           │       ├── DefaultIntVector.java
│   │       │                           │       ├── DefaultLongVector.java
│   │       │                           │       ├── DefaultMapVector.java
│   │       │                           │       ├── DefaultShortVector.java
│   │       │                           │       ├── DefaultStructVector.java
│   │       │                           │       ├── DefaultSubFieldVector.java
│   │       │                           │       └── DefaultViewVector.java
│   │       │                           ├── expressions/
│   │       │                           │   ├── DefaultExpressionEvaluator.java
│   │       │                           │   ├── DefaultExpressionUtils.java
│   │       │                           │   ├── DefaultPredicateEvaluator.java
│   │       │                           │   ├── ElementAtEvaluator.java
│   │       │                           │   ├── ExpressionVisitor.java
│   │       │                           │   ├── ImplicitCastExpression.java
│   │       │                           │   ├── InExpressionEvaluator.java
│   │       │                           │   ├── LikeExpressionEvaluator.java
│   │       │                           │   ├── PartitionValueEvaluator.java
│   │       │                           │   ├── StartsWithExpressionEvaluator.java
│   │       │                           │   └── SubstringEvaluator.java
│   │       │                           ├── json/
│   │       │                           │   └── JsonUtils.java
│   │       │                           ├── logstore/
│   │       │                           │   └── LogStoreProvider.java
│   │       │                           └── parquet/
│   │       │                               ├── ArrayColumnReader.java
│   │       │                               ├── DecimalColumnReader.java
│   │       │                               ├── MapColumnReader.java
│   │       │                               ├── ParquetColumnReaders.java
│   │       │                               ├── ParquetColumnWriters.java
│   │       │                               ├── ParquetFileReader.java
│   │       │                               ├── ParquetFileWriter.java
│   │       │                               ├── ParquetFilterUtils.java
│   │       │                               ├── ParquetIOUtils.java
│   │       │                               ├── ParquetSchemaUtils.java
│   │       │                               ├── ParquetStatsReader.java
│   │       │                               ├── RepeatedValueConverter.java
│   │       │                               ├── RowColumnReader.java
│   │       │                               └── TimestampConverters.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── delta/
│   │           │           └── kernel/
│   │           │               └── defaults/
│   │           │                   ├── integration/
│   │           │                   │   └── DataBuilderUtils.java
│   │           │                   └── utils/
│   │           │                       └── DefaultKernelTestUtils.java
│   │           ├── resources/
│   │           │   ├── basic-dv-no-checkpoint/
│   │           │   │   ├── .deletion_vector_899cef78-06b3-4c14-b024-03860e62cd40.bin.crc
│   │           │   │   ├── .part-00000-a489737f-d477-4d9a-8b4a-bd6a6536df5b-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-1c9b5e60-ab86-4017-9ec9-a6fe4150cdd5-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   ├── .00000000000000000001.json.crc
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   └── 00000000000000000001.json
│   │           │   │   ├── part-00000-a489737f-d477-4d9a-8b4a-bd6a6536df5b-c000.snappy.parquet
│   │           │   │   └── part-00001-1c9b5e60-ab86-4017-9ec9-a6fe4150cdd5-c000.snappy.parquet
│   │           │   ├── basic-dv-with-checkpoint/
│   │           │   │   ├── .deletion_vector_03686710-1009-4aba-a2a6-59d866288a1c.bin.crc
│   │           │   │   ├── .deletion_vector_03e6283c-5c18-431e-b43b-5ab5a15b74e5.bin.crc
│   │           │   │   ├── .deletion_vector_0498d0e5-d192-44fc-b2f4-a17f228043e6.bin.crc
│   │           │   │   ├── .deletion_vector_07bc7f84-8d75-48f2-b39c-15632a2fcf2c.bin.crc
│   │           │   │   ├── .deletion_vector_08fa8257-1841-44a7-9660-673f8c92b0ba.bin.crc
│   │           │   │   ├── .deletion_vector_11973cae-328a-4116-acdb-9b9b539c4404.bin.crc
│   │           │   │   ├── .deletion_vector_11e9779e-4890-4d45-a68b-9ee0bc00fb86.bin.crc
│   │           │   │   ├── .deletion_vector_1883ce16-093d-4e9a-8a02-d6d141eab667.bin.crc
│   │           │   │   ├── .deletion_vector_1ad67768-c04d-44df-8107-119c6a4b497c.bin.crc
│   │           │   │   ├── .deletion_vector_1d371e78-ca14-424f-9e01-0d0e4c50759c.bin.crc
│   │           │   │   ├── .deletion_vector_2a78be13-b634-4fc4-9994-fde7d90f8753.bin.crc
│   │           │   │   ├── .deletion_vector_2c2af44e-3021-496d-8596-ae5b3a74cb83.bin.crc
│   │           │   │   ├── .deletion_vector_2cdf4f8c-5b3f-4f55-8047-be1d1c9bb6b5.bin.crc
│   │           │   │   ├── .deletion_vector_44632fee-319a-426f-991d-ad78241e4a3e.bin.crc
│   │           │   │   ├── .deletion_vector_4567487b-ca26-4bee-9f7b-f07af32e83c3.bin.crc
│   │           │   │   ├── .deletion_vector_45768b99-d5f1-4b0c-8f06-9acc55a85928.bin.crc
│   │           │   │   ├── .deletion_vector_4ab2a9ff-9cbd-4391-aebe-5ac8423192e9.bin.crc
│   │           │   │   ├── .deletion_vector_4b2dfb3e-4544-4612-9990-3d956e1d06ee.bin.crc
│   │           │   │   ├── .deletion_vector_55afff88-4865-45d7-ba5f-05ef95ffa35c.bin.crc
│   │           │   │   ├── .deletion_vector_5fb8f71b-f727-494f-8629-6abadbbd4805.bin.crc
│   │           │   │   ├── .deletion_vector_609a831c-6ead-4397-8727-02a6a15de803.bin.crc
│   │           │   │   ├── .deletion_vector_71b8b79f-6604-431b-ad10-437d1c1cc62c.bin.crc
│   │           │   │   ├── .deletion_vector_71f26dca-c66c-41c6-a06f-76fe3809e048.bin.crc
│   │           │   │   ├── .deletion_vector_75df38a2-329f-4f07-b9cb-eef2664bffb2.bin.crc
│   │           │   │   ├── .deletion_vector_78f381a5-4ab5-4d93-8eaa-5906c98550ea.bin.crc
│   │           │   │   ├── .deletion_vector_828143d0-e473-4e79-81c3-7150fc854627.bin.crc
│   │           │   │   ├── .deletion_vector_8e35761b-7c0b-4a9a-8c59-bf5875550854.bin.crc
│   │           │   │   ├── .deletion_vector_a3e8af8a-e7a4-4f52-8eb5-e23a19e856fe.bin.crc
│   │           │   │   ├── .deletion_vector_a73e626d-43fd-4f8b-b448-87bf23ce685e.bin.crc
│   │           │   │   ├── .deletion_vector_abed2f64-7626-4c84-8cb1-d412cd3c6cc9.bin.crc
│   │           │   │   ├── .deletion_vector_b3a6359b-f50b-4db5-a4a5-e05e4641b76f.bin.crc
│   │           │   │   ├── .deletion_vector_bbabaab9-5b28-4320-acb4-e92b34672b54.bin.crc
│   │           │   │   ├── .deletion_vector_bc65fecb-20bf-42f8-b5e3-365ecc988ddd.bin.crc
│   │           │   │   ├── .deletion_vector_be1d9221-e478-4af5-9988-b5aa6bb57b79.bin.crc
│   │           │   │   ├── .deletion_vector_cc322f0c-38e3-4464-945c-ec4e62369941.bin.crc
│   │           │   │   ├── .deletion_vector_ce462c97-7338-4c8a-ba30-542e303ba8b9.bin.crc
│   │           │   │   ├── .deletion_vector_d1a467a4-cd86-4999-8a32-bcd85257602d.bin.crc
│   │           │   │   ├── .deletion_vector_d8940b51-9c96-44bd-8e45-325be665de99.bin.crc
│   │           │   │   ├── .deletion_vector_dd9a754e-63f5-4c5f-a551-ccbda05b02c1.bin.crc
│   │           │   │   ├── .deletion_vector_e3d66788-4fc0-40c6-83a1-5a1bb7ad59c2.bin.crc
│   │           │   │   ├── .deletion_vector_e6e73c4c-2fd7-4c41-b3b8-67517926951e.bin.crc
│   │           │   │   ├── .deletion_vector_ea8f857f-676a-4358-b40f-52220677ba42.bin.crc
│   │           │   │   ├── .deletion_vector_edbe9d1e-bcb3-4b99-adc3-9dc716574ece.bin.crc
│   │           │   │   ├── .deletion_vector_f16b78af-8245-4846-90c0-07e3664b35c1.bin.crc
│   │           │   │   ├── .deletion_vector_f1b41214-fae0-4aab-bdd6-9e8a8a0730a7.bin.crc
│   │           │   │   ├── .deletion_vector_fb01af59-2712-4a87-aa00-4a72099e2a8e.bin.crc
│   │           │   │   ├── .part-00000-87eec267-9acd-4e9a-a216-ec596132203d-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-c94c50bd-c7bb-4c0d-b6cb-958707d77d01-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   ├── .00000000000000000001.json.crc
│   │           │   │   │   ├── .00000000000000000002.json.crc
│   │           │   │   │   ├── .00000000000000000003.json.crc
│   │           │   │   │   ├── .00000000000000000004.json.crc
│   │           │   │   │   ├── .00000000000000000005.json.crc
│   │           │   │   │   ├── .00000000000000000006.json.crc
│   │           │   │   │   ├── .00000000000000000007.json.crc
│   │           │   │   │   ├── .00000000000000000008.json.crc
│   │           │   │   │   ├── .00000000000000000009.json.crc
│   │           │   │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000010.json.crc
│   │           │   │   │   ├── .00000000000000000011.json.crc
│   │           │   │   │   ├── .00000000000000000012.json.crc
│   │           │   │   │   ├── .00000000000000000013.json.crc
│   │           │   │   │   ├── .00000000000000000014.json.crc
│   │           │   │   │   ├── .00000000000000000015.json.crc
│   │           │   │   │   ├── .00000000000000000016.json.crc
│   │           │   │   │   ├── .00000000000000000017.json.crc
│   │           │   │   │   ├── .00000000000000000018.json.crc
│   │           │   │   │   ├── .00000000000000000019.json.crc
│   │           │   │   │   ├── .00000000000000000020.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000020.json.crc
│   │           │   │   │   ├── .00000000000000000021.json.crc
│   │           │   │   │   ├── .00000000000000000022.json.crc
│   │           │   │   │   ├── .00000000000000000023.json.crc
│   │           │   │   │   ├── .00000000000000000024.json.crc
│   │           │   │   │   ├── .00000000000000000025.json.crc
│   │           │   │   │   ├── .00000000000000000026.json.crc
│   │           │   │   │   ├── .00000000000000000027.json.crc
│   │           │   │   │   ├── .00000000000000000028.json.crc
│   │           │   │   │   ├── .00000000000000000029.json.crc
│   │           │   │   │   ├── .00000000000000000030.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000030.json.crc
│   │           │   │   │   ├── .00000000000000000031.json.crc
│   │           │   │   │   ├── .00000000000000000032.json.crc
│   │           │   │   │   ├── .00000000000000000033.json.crc
│   │           │   │   │   ├── .00000000000000000034.json.crc
│   │           │   │   │   ├── .00000000000000000035.json.crc
│   │           │   │   │   ├── .00000000000000000036.json.crc
│   │           │   │   │   ├── .00000000000000000037.json.crc
│   │           │   │   │   ├── .00000000000000000038.json.crc
│   │           │   │   │   ├── .00000000000000000039.json.crc
│   │           │   │   │   ├── .00000000000000000040.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000040.json.crc
│   │           │   │   │   ├── .00000000000000000041.json.crc
│   │           │   │   │   ├── .00000000000000000042.json.crc
│   │           │   │   │   ├── .00000000000000000043.json.crc
│   │           │   │   │   ├── .00000000000000000044.json.crc
│   │           │   │   │   ├── .00000000000000000045.json.crc
│   │           │   │   │   ├── .00000000000000000046.json.crc
│   │           │   │   │   ├── ._last_checkpoint.crc
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   ├── 00000000000000000001.json
│   │           │   │   │   ├── 00000000000000000002.json
│   │           │   │   │   ├── 00000000000000000003.json
│   │           │   │   │   ├── 00000000000000000004.json
│   │           │   │   │   ├── 00000000000000000005.json
│   │           │   │   │   ├── 00000000000000000006.json
│   │           │   │   │   ├── 00000000000000000007.json
│   │           │   │   │   ├── 00000000000000000008.json
│   │           │   │   │   ├── 00000000000000000009.json
│   │           │   │   │   ├── 00000000000000000010.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000010.json
│   │           │   │   │   ├── 00000000000000000011.json
│   │           │   │   │   ├── 00000000000000000012.json
│   │           │   │   │   ├── 00000000000000000013.json
│   │           │   │   │   ├── 00000000000000000014.json
│   │           │   │   │   ├── 00000000000000000015.json
│   │           │   │   │   ├── 00000000000000000016.json
│   │           │   │   │   ├── 00000000000000000017.json
│   │           │   │   │   ├── 00000000000000000018.json
│   │           │   │   │   ├── 00000000000000000019.json
│   │           │   │   │   ├── 00000000000000000020.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000020.json
│   │           │   │   │   ├── 00000000000000000021.json
│   │           │   │   │   ├── 00000000000000000022.json
│   │           │   │   │   ├── 00000000000000000023.json
│   │           │   │   │   ├── 00000000000000000024.json
│   │           │   │   │   ├── 00000000000000000025.json
│   │           │   │   │   ├── 00000000000000000026.json
│   │           │   │   │   ├── 00000000000000000027.json
│   │           │   │   │   ├── 00000000000000000028.json
│   │           │   │   │   ├── 00000000000000000029.json
│   │           │   │   │   ├── 00000000000000000030.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000030.json
│   │           │   │   │   ├── 00000000000000000031.json
│   │           │   │   │   ├── 00000000000000000032.json
│   │           │   │   │   ├── 00000000000000000033.json
│   │           │   │   │   ├── 00000000000000000034.json
│   │           │   │   │   ├── 00000000000000000035.json
│   │           │   │   │   ├── 00000000000000000036.json
│   │           │   │   │   ├── 00000000000000000037.json
│   │           │   │   │   ├── 00000000000000000038.json
│   │           │   │   │   ├── 00000000000000000039.json
│   │           │   │   │   ├── 00000000000000000040.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000040.json
│   │           │   │   │   ├── 00000000000000000041.json
│   │           │   │   │   ├── 00000000000000000042.json
│   │           │   │   │   ├── 00000000000000000043.json
│   │           │   │   │   ├── 00000000000000000044.json
│   │           │   │   │   ├── 00000000000000000045.json
│   │           │   │   │   ├── 00000000000000000046.json
│   │           │   │   │   └── _last_checkpoint
│   │           │   │   ├── part-00000-87eec267-9acd-4e9a-a216-ec596132203d-c000.snappy.parquet
│   │           │   │   └── part-00001-c94c50bd-c7bb-4c0d-b6cb-958707d77d01-c000.snappy.parquet
│   │           │   ├── basic-with-checkpoint/
│   │           │   │   ├── .part-00000-0d9c05f4-8afc-4325-b1e0-ea32e4eff918-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-100e4547-5ff3-4735-9550-7757ca23c61d-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-14b8a37a-107b-455f-ab94-8f55e44c004b-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-1bbb3853-04b4-4539-a112-be7140314153-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-2a210d80-a4e6-4a1c-8716-ee0b542aee08-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-326010e2-01f4-4dfb-90a7-98cbc04a60d1-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-3317387d-183d-4db7-ac3e-596901d90de0-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-5c99dc53-38c0-420f-a91b-6df7a4c27a2b-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-5e9186c7-c7b0-4c4d-9f22-1c0cd403142c-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-6e367682-7cd1-48e6-bc2f-bc94aa94d1a3-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-8d5f08ff-261b-4315-99cb-d289a3191368-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-a65ab59f-72fd-44c9-a73e-e2d09459f836-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-ce6aed75-3e85-4d7c-90de-9d465e9acc04-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-e51a2d2a-d1a3-437e-a428-f5afe93d4619-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00000-eb1dae3f-8c89-46c3-818f-491cc673936a-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-30432f6b-710f-440c-8145-adbaed187c63-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-39e6196f-2259-4ba4-b1d6-005712cd7784-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-3cd0b397-0ac3-48ac-88ab-3cc21542e303-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-43e387db-3e56-44f3-8965-9187a80fce9a-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-4707caa4-d293-4b4a-aeef-fa4d5815e732-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-4e30e0a7-63d2-4d2f-a028-b92058c3c8cf-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-51925029-c591-4366-b3e9-aeea97594037-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-63b224e2-ba72-4b95-af02-5af2367d4130-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-8be0e82d-ce51-43a6-92eb-df71a9088173-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-a65a81c6-292a-49f2-8eea-82c0299cdfb3-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-a9a33a7f-26fa-447d-8b34-863b5f695f06-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-ba1ceb1e-6a37-4e2e-8e97-a17b9b1bb33d-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-d64b05c7-d80d-4eff-8c58-d209003ee4c0-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-ed427b16-f597-432a-a49e-135b126d38a8-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-fdaa71cc-84b2-43b1-b049-7cd36dbaa0de-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   ├── .00000000000000000001.json.crc
│   │           │   │   │   ├── .00000000000000000002.json.crc
│   │           │   │   │   ├── .00000000000000000003.json.crc
│   │           │   │   │   ├── .00000000000000000004.json.crc
│   │           │   │   │   ├── .00000000000000000005.json.crc
│   │           │   │   │   ├── .00000000000000000006.json.crc
│   │           │   │   │   ├── .00000000000000000007.json.crc
│   │           │   │   │   ├── .00000000000000000008.json.crc
│   │           │   │   │   ├── .00000000000000000009.json.crc
│   │           │   │   │   ├── .00000000000000000010.checkpoint.parquet.crc
│   │           │   │   │   ├── .00000000000000000010.json.crc
│   │           │   │   │   ├── .00000000000000000011.json.crc
│   │           │   │   │   ├── .00000000000000000012.json.crc
│   │           │   │   │   ├── .00000000000000000013.json.crc
│   │           │   │   │   ├── .00000000000000000014.json.crc
│   │           │   │   │   ├── ._last_checkpoint.crc
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   ├── 00000000000000000001.json
│   │           │   │   │   ├── 00000000000000000002.json
│   │           │   │   │   ├── 00000000000000000003.json
│   │           │   │   │   ├── 00000000000000000004.json
│   │           │   │   │   ├── 00000000000000000005.json
│   │           │   │   │   ├── 00000000000000000006.json
│   │           │   │   │   ├── 00000000000000000007.json
│   │           │   │   │   ├── 00000000000000000008.json
│   │           │   │   │   ├── 00000000000000000009.json
│   │           │   │   │   ├── 00000000000000000010.checkpoint.parquet
│   │           │   │   │   ├── 00000000000000000010.json
│   │           │   │   │   ├── 00000000000000000011.json
│   │           │   │   │   ├── 00000000000000000012.json
│   │           │   │   │   ├── 00000000000000000013.json
│   │           │   │   │   ├── 00000000000000000014.json
│   │           │   │   │   └── _last_checkpoint
│   │           │   │   ├── part-00000-0d9c05f4-8afc-4325-b1e0-ea32e4eff918-c000.snappy.parquet
│   │           │   │   ├── part-00000-100e4547-5ff3-4735-9550-7757ca23c61d-c000.snappy.parquet
│   │           │   │   ├── part-00000-14b8a37a-107b-455f-ab94-8f55e44c004b-c000.snappy.parquet
│   │           │   │   ├── part-00000-1bbb3853-04b4-4539-a112-be7140314153-c000.snappy.parquet
│   │           │   │   ├── part-00000-2a210d80-a4e6-4a1c-8716-ee0b542aee08-c000.snappy.parquet
│   │           │   │   ├── part-00000-326010e2-01f4-4dfb-90a7-98cbc04a60d1-c000.snappy.parquet
│   │           │   │   ├── part-00000-3317387d-183d-4db7-ac3e-596901d90de0-c000.snappy.parquet
│   │           │   │   ├── part-00000-5c99dc53-38c0-420f-a91b-6df7a4c27a2b-c000.snappy.parquet
│   │           │   │   ├── part-00000-5e9186c7-c7b0-4c4d-9f22-1c0cd403142c-c000.snappy.parquet
│   │           │   │   ├── part-00000-6e367682-7cd1-48e6-bc2f-bc94aa94d1a3-c000.snappy.parquet
│   │           │   │   ├── part-00000-8d5f08ff-261b-4315-99cb-d289a3191368-c000.snappy.parquet
│   │           │   │   ├── part-00000-a65ab59f-72fd-44c9-a73e-e2d09459f836-c000.snappy.parquet
│   │           │   │   ├── part-00000-ce6aed75-3e85-4d7c-90de-9d465e9acc04-c000.snappy.parquet
│   │           │   │   ├── part-00000-e51a2d2a-d1a3-437e-a428-f5afe93d4619-c000.snappy.parquet
│   │           │   │   ├── part-00000-eb1dae3f-8c89-46c3-818f-491cc673936a-c000.snappy.parquet
│   │           │   │   ├── part-00001-30432f6b-710f-440c-8145-adbaed187c63-c000.snappy.parquet
│   │           │   │   ├── part-00001-39e6196f-2259-4ba4-b1d6-005712cd7784-c000.snappy.parquet
│   │           │   │   ├── part-00001-3cd0b397-0ac3-48ac-88ab-3cc21542e303-c000.snappy.parquet
│   │           │   │   ├── part-00001-43e387db-3e56-44f3-8965-9187a80fce9a-c000.snappy.parquet
│   │           │   │   ├── part-00001-4707caa4-d293-4b4a-aeef-fa4d5815e732-c000.snappy.parquet
│   │           │   │   ├── part-00001-4e30e0a7-63d2-4d2f-a028-b92058c3c8cf-c000.snappy.parquet
│   │           │   │   ├── part-00001-51925029-c591-4366-b3e9-aeea97594037-c000.snappy.parquet
│   │           │   │   ├── part-00001-63b224e2-ba72-4b95-af02-5af2367d4130-c000.snappy.parquet
│   │           │   │   ├── part-00001-8be0e82d-ce51-43a6-92eb-df71a9088173-c000.snappy.parquet
│   │           │   │   ├── part-00001-a65a81c6-292a-49f2-8eea-82c0299cdfb3-c000.snappy.parquet
│   │           │   │   ├── part-00001-a9a33a7f-26fa-447d-8b34-863b5f695f06-c000.snappy.parquet
│   │           │   │   ├── part-00001-ba1ceb1e-6a37-4e2e-8e97-a17b9b1bb33d-c000.snappy.parquet
│   │           │   │   ├── part-00001-d64b05c7-d80d-4eff-8c58-d209003ee4c0-c000.snappy.parquet
│   │           │   │   ├── part-00001-ed427b16-f597-432a-a49e-135b126d38a8-c000.snappy.parquet
│   │           │   │   └── part-00001-fdaa71cc-84b2-43b1-b049-7cd36dbaa0de-c000.snappy.parquet
│   │           │   ├── catalog-owned-preview/
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── 00000000000000000000.json
│   │           │   │   │   └── _staged_commits/
│   │           │   │   │       ├── 00000000000000000001.4cb9708e-b478-44de-b203-53f9ba9b2876.json
│   │           │   │   │       └── 00000000000000000002.5b9bba4a-0085-430d-a65e-b0d38c1afbe9.json
│   │           │   │   ├── info.txt
│   │           │   │   ├── part1=0/
│   │           │   │   │   └── part-00000-13fefaba-8ec2-4762-b17e-aeda657451c5.c000.snappy.parquet
│   │           │   │   └── part1=1/
│   │           │   │       └── part-00000-8afb1c56-2018-4af2-aa4f-4336c1b39efd.c000.snappy.parquet
│   │           │   ├── column-mapping-id/
│   │           │   │   ├── .part-00000-7f7d554f-a8f2-459f-aaca-9a3b7e8af2dc-c000.snappy.parquet.crc
│   │           │   │   ├── .part-00001-85082a62-baeb-46c5-8970-c9c6c23dc33c-c000.snappy.parquet.crc
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   └── 00000000000000000000.json
│   │           │   │   ├── part-00000-7f7d554f-a8f2-459f-aaca-9a3b7e8af2dc-c000.snappy.parquet
│   │           │   │   └── part-00001-85082a62-baeb-46c5-8970-c9c6c23dc33c-c000.snappy.parquet
│   │           │   ├── data-reader-partition-values-column-mapping-name/
│   │           │   │   ├── _delta_log/
│   │           │   │   │   ├── .00000000000000000000.json.crc
│   │           │   │   │   └── 00000000000000000000.json
│   │           │   │   ├── col-25948c99-9f51-4e05-9f9e-b4f7042f75ed=0/
│   │           │   │   │   └── col-6e87b90d-f5df-4dcc-91a1-7a43fa3173fa=0/
│   │           │   │   │       └── col-e3e3dce4-fbd4-4a52-a0bd-5d54af7a7a08=0/
│   │           │   │   │           └── col-29f826c0-7fff-4e5f-bc11-44a6975c7708=0/
│   │           │   │   │               └── col-7781d665-6951-4244-b9bc-a28e477e2d57=true/
│   │           │   │   │                   └── col-b72a5284-7c06-47f9-9e37-c88c3b54c6ae=0.0/
│   │           │   │   │                       └── col-3463c48b-4b94-4500-b14f-4a554284b94f=0.0/
│   │           │   │   │                           └── col-05f332c4-ebdb-4437-9e80-e23f92bee4a2=0/
│   │           │   │   │                               └── col-c025b8f8-481c-4db2-8932-f37129146ceb=2021-09-08/
│   │           │   │   │                                   └── col-bd963d5f-2199-4700-b5d6-0759bd7a9d90=2021-09-08 11%3A11%3A11/
│   │           │   │   │                                       └── col-01ec4063-ed54-41db-805e-ebfd9b9a6e67=0/
│   │           │   │   │                                           ├── .part-00002-e0842c02-93d2-4c38-b041-fc88b581
Download .txt
Showing preview only (616K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6957 symbols across 589 files)

FILE: benchmarks/run-benchmark.py
  function parse_args (line 72) | def parse_args():
  function run_single_benchmark (line 113) | def run_single_benchmark(benchmark_name, benchmark_spec, other_args):

FILE: benchmarks/scripts/benchmarks.py
  class BenchmarkSpec (line 22) | class BenchmarkSpec:
    method __init__ (line 32) | def __init__(
    method append_spark_conf (line 46) | def append_spark_conf(self, new_conf):
    method append_spark_confs (line 50) | def append_spark_confs(self, new_confs):
    method append_main_class_args (line 54) | def append_main_class_args(self, new_args):
    method get_sparksubmit_cmd (line 58) | def get_sparksubmit_cmd(self, benchmark_jar_path):
    method get_sparkshell_cmd (line 74) | def get_sparkshell_cmd(self, benchmark_jar_path, benchmark_init_file_p...
  class TPCDSDataLoadSpec (line 89) | class TPCDSDataLoadSpec(BenchmarkSpec):
    method __init__ (line 94) | def __init__(self, scale_in_gb, exclude_nulls=True, **kwargs):
  class TPCDSBenchmarkSpec (line 106) | class TPCDSBenchmarkSpec(BenchmarkSpec):
    method __init__ (line 110) | def __init__(self, scale_in_gb, **kwargs):
  class MergeDataLoadSpec (line 120) | class MergeDataLoadSpec(BenchmarkSpec):
    method __init__ (line 125) | def __init__(self, scale_in_gb, exclude_nulls=True, **kwargs):
  class MergeBenchmarkSpec (line 135) | class MergeBenchmarkSpec(BenchmarkSpec):
    method __init__ (line 139) | def __init__(self, scale_in_gb, **kwargs):
  class DeltaBenchmarkSpec (line 153) | class DeltaBenchmarkSpec(BenchmarkSpec):
    method __init__ (line 157) | def __init__(self, delta_version, benchmark_main_class, main_class_arg...
    method update_delta_version (line 177) | def update_delta_version(self, new_delta_version):
    method delta_maven_artifacts (line 182) | def delta_maven_artifacts(delta_version, scala_version):
  class DeltaTPCDSDataLoadSpec (line 186) | class DeltaTPCDSDataLoadSpec(TPCDSDataLoadSpec, DeltaBenchmarkSpec):
    method __init__ (line 187) | def __init__(self, delta_version, scale_in_gb=1):
  class DeltaTPCDSBenchmarkSpec (line 191) | class DeltaTPCDSBenchmarkSpec(TPCDSBenchmarkSpec, DeltaBenchmarkSpec):
    method __init__ (line 192) | def __init__(self, delta_version, scale_in_gb=1):
  class DeltaMergeDataLoadSpec (line 196) | class DeltaMergeDataLoadSpec(MergeDataLoadSpec, DeltaBenchmarkSpec):
    method __init__ (line 197) | def __init__(self, delta_version, scale_in_gb=1):
  class DeltaMergeBenchmarkSpec (line 201) | class DeltaMergeBenchmarkSpec(MergeBenchmarkSpec, DeltaBenchmarkSpec):
    method __init__ (line 202) | def __init__(self, delta_version, scale_in_gb=1):
  class ParquetBenchmarkSpec (line 210) | class ParquetBenchmarkSpec(BenchmarkSpec):
    method __init__ (line 214) | def __init__(self, benchmark_main_class, main_class_args=None, **kwargs):
  class ParquetTPCDSDataLoadSpec (line 224) | class ParquetTPCDSDataLoadSpec(TPCDSDataLoadSpec, ParquetBenchmarkSpec):
    method __init__ (line 225) | def __init__(self, scale_in_gb=1):
  class ParquetTPCDSBenchmarkSpec (line 229) | class ParquetTPCDSBenchmarkSpec(TPCDSBenchmarkSpec, ParquetBenchmarkSpec):
    method __init__ (line 230) | def __init__(self, scale_in_gb=1):
  class Benchmark (line 237) | class Benchmark:
    method __init__ (line 244) | def __init__(self, benchmark_name, benchmark_spec, use_spark_shell, lo...
    method run (line 257) | def run(self, cluster_hostname, ssh_id_file, ssh_user):
    method spark_submit_script_content (line 269) | def spark_submit_script_content(self, jar_path):
    method spark_shell_script_content (line 277) | def spark_shell_script_content(self, jar_path):
    method upload_jar_to_cluster (line 294) | def upload_jar_to_cluster(self, cluster_hostname, ssh_id_file, ssh_use...
    method install_dependencies_via_ssh (line 313) | def install_dependencies_via_ssh(self, cluster_hostname, ssh_id_file, ...
    method start_benchmark_via_ssh (line 347) | def start_benchmark_via_ssh(self, cluster_hostname, ssh_id_file, jar_p...
    method copy_script_via_ssh (line 374) | def copy_script_via_ssh(cluster_hostname, ssh_id_file, ssh_user, scrip...
    method output_file (line 393) | def output_file(benchmark_id):
    method json_report_file (line 397) | def json_report_file(benchmark_id):
    method csv_report_file (line 401) | def csv_report_file(benchmark_id):
    method completed_file (line 405) | def completed_file(benchmark_id):
    method wait_for_completion (line 409) | def wait_for_completion(cluster_hostname, ssh_id_file, benchmark_id, s...
    method download_file (line 457) | def download_file(file, cluster_hostname, ssh_id_file, ssh_user):
    method upload_delta_jars_to_cluster_and_get_version (line 462) | def upload_delta_jars_to_cluster_and_get_version(self, cluster_hostnam...

FILE: benchmarks/scripts/utils.py
  function run_cmd (line 22) | def run_cmd(cmd, throw_on_error=True, env=None, stream_output=False, **k...
  function run_cmd_over_ssh (line 51) | def run_cmd_over_ssh(cmd, host, ssh_id_file, user, **kwargs):
  class WorkingDirectory (line 57) | class WorkingDirectory(object):
    method __init__ (line 58) | def __init__(self, working_directory):
    method __enter__ (line 62) | def __enter__(self):
    method __exit__ (line 65) | def __exit__(self, tpe, value, traceback):

FILE: dev/check-delta-connect-codegen-python.py
  function fail (line 32) | def fail(msg):
  function run_cmd (line 37) | def run_cmd(cmd):
  function check_connect_protos (line 45) | def check_connect_protos():

FILE: dev/spark_structured_logging_style.py
  function main (line 42) | def main():

FILE: docs/apis/api-docs.js
  function addBadges (line 48) | function addBadges(allAnnotations, name, tag, html) {

FILE: docs/apis/api-javadocs.js
  function addBadges (line 47) | function addBadges(tag, html) {

FILE: docs/apis/generate_api_docs.py
  function main (line 21) | def main():
  function patch_scala_docs (line 96) | def patch_scala_docs(scaladoc_dir, docs_root_dir):
  function patch_java_docs (line 103) | def patch_java_docs(javadoc_dir, docs_root_dir, jquery_path):
  function run_cmd (line 141) | def run_cmd(cmd, throw_on_error=True, env=None, stream_output=False, **k...
  function append (line 187) | def append(src, dst):
  function replace (line 197) | def replace(file, pattern, replacement):
  class WorkingDirectory (line 209) | class WorkingDirectory(object):
    method __init__ (line 210) | def __init__(self, working_directory):
    method __enter__ (line 214) | def __enter__(self):
    method __exit__ (line 217) | def __exit__(self, tpe, value, traceback):
  function log (line 221) | def log(str):

FILE: docs/generate_docs.py
  function main (line 12) | def main():
  function generate_and_copy_api_docs (line 51) | def generate_and_copy_api_docs(api_docs_root_dir, target_loc):
  class WorkingDirectory (line 64) | class WorkingDirectory(object):
    method __init__ (line 65) | def __init__(self, working_directory):
    method __enter__ (line 69) | def __enter__(self):
    method __exit__ (line 72) | def __exit__(self, type, value, traceback):
  function run_cmd (line 76) | def run_cmd(cmd, throw_on_error=True, env=None, stream_output=False, **k...

FILE: examples/python/change_data_feed.py
  function cleanup (line 36) | def cleanup():
  function read_cdc_by_table_name (line 43) | def read_cdc_by_table_name(starting_version):
  function stream_cdc_by_table_name (line 51) | def stream_cdc_by_table_name(starting_version):

FILE: examples/python/delta_connect.py
  function assert_dataframe_equals (line 48) | def assert_dataframe_equals(df1, df2):
  function cleanup (line 51) | def cleanup(spark):

FILE: examples/python/streaming.py
  function upsertToDelta (line 64) | def upsertToDelta(microBatchOutputDF, batchId):

FILE: examples/python/table_exists.py
  function exists (line 21) | def exists(spark, filepath):

FILE: flink/src/main/java/io/delta/flink/Conf.java
  class Conf (line 45) | public final class Conf {
    method Conf (line 74) | private Conf() {
    method getInstance (line 78) | public static Conf getInstance() {
    method getSinkRetryMaxAttempt (line 86) | public int getSinkRetryMaxAttempt() {
    method getSinkRetryDelayMs (line 90) | public long getSinkRetryDelayMs() {
    method getSinkRetryMaxDelayMs (line 94) | public long getSinkRetryMaxDelayMs() {
    method getSinkWriterNumConcurrentFiles (line 98) | public int getSinkWriterNumConcurrentFiles() {
    method getTableThreadPoolSize (line 102) | public int getTableThreadPoolSize() {
    method getTableCacheEnable (line 106) | public boolean getTableCacheEnable() {
    method getTableCacheSize (line 110) | public int getTableCacheSize() {
    method getTableCacheExpireInMs (line 114) | public long getTableCacheExpireInMs() {
    method getCredentialsRefreshThreadPoolSize (line 118) | public int getCredentialsRefreshThreadPoolSize() {
    method getCredentialsRefreshAheadInMs (line 122) | public long getCredentialsRefreshAheadInMs() {
    method asMap (line 127) | public Map<String, String> asMap() {
    method get (line 132) | public String get(String key) {
    method getOrDefault (line 137) | public String getOrDefault(String key, String defaultValue) {
    method load (line 142) | private Map<String, String> load() {

FILE: flink/src/main/java/io/delta/flink/kernel/CheckpointActionRow.java
  class CheckpointActionRow (line 30) | public class CheckpointActionRow implements Row {
    method CheckpointActionRow (line 54) | public CheckpointActionRow(Object action) {
    method getSchema (line 58) | @Override
    method isNullAt (line 63) | @Override
    method getStruct (line 76) | @Override
    method getBoolean (line 85) | @Override
    method getByte (line 90) | @Override
    method getShort (line 95) | @Override
    method getInt (line 100) | @Override
    method getLong (line 105) | @Override
    method getFloat (line 110) | @Override
    method getDouble (line 115) | @Override
    method getString (line 120) | @Override
    method getDecimal (line 125) | @Override
    method getBinary (line 130) | @Override
    method getArray (line 135) | @Override
    method getMap (line 140) | @Override

FILE: flink/src/main/java/io/delta/flink/kernel/CheckpointWriter.java
  class CheckpointWriter (line 101) | public class CheckpointWriter {
    method EMPTY_ITERATOR (line 116) | private static <T> CloseableIterator<T> EMPTY_ITERATOR() {
    method CheckpointWriter (line 143) | public CheckpointWriter(Engine engine, Snapshot snapshot, int sidecarM...
    method CheckpointWriter (line 173) | public CheckpointWriter(Engine engine, Snapshot snapshot) {
    method write (line 197) | public void write() throws IOException {
    method sidecarsFromCheckpoint (line 327) | private CloseableIterator<FilteredColumnarBatch> sidecarsFromCheckpoin...
    method filterAddFiles (line 371) | private Function<FilteredColumnarBatch, FilteredColumnarBatch> filterA...
    method filterActions (line 400) | private Function<ColumnarBatch, FilteredColumnarBatch> filterActions(
    method readLastCheckpointInfo (line 448) | private CheckpointMetaData readLastCheckpointInfo() {
    method rowsToBatch (line 466) | private CloseableIterator<FilteredColumnarBatch> rowsToBatch(Stream<Ob...
    method sidecarFromAddFiles (line 477) | private SidecarFile sidecarFromAddFiles(CloseableIterator<FilteredColu...
    method getFileStatus (line 495) | private FileStatus getFileStatus(Path path) {
    method getTransactions (line 503) | private Stream<Object> getTransactions() {
    method getDomainMetadatas (line 508) | private Stream<Object> getDomainMetadatas() {

FILE: flink/src/main/java/io/delta/flink/kernel/ColumnVectorUtils.java
  class ColumnVectorUtils (line 29) | public class ColumnVectorUtils {
    method wrap (line 31) | public static FilteredColumnarBatch wrap(ColumnarBatch data) {
    method notNullAt (line 35) | public static Function<ColumnarBatch, FilteredColumnarBatch> notNullAt...
    method child (line 39) | public static Function<FilteredColumnarBatch, FilteredColumnarBatch> c...
    method filter (line 72) | public static Optional<ColumnVector> filter(int size, Predicate<Intege...
    method notNull (line 100) | public static Optional<ColumnVector> notNull(ColumnVector input) {

FILE: flink/src/main/java/io/delta/flink/table/AbstractKernelTable.java
  class AbstractKernelTable (line 74) | public abstract class AbstractKernelTable implements DeltaTable {
    method normalize (line 94) | public static URI normalize(URI input) {
    method normalize (line 127) | protected static List<String> normalize(List<String> rawPartitions) {
    method AbstractKernelTable (line 161) | public AbstractKernelTable(
    method AbstractKernelTable (line 186) | public AbstractKernelTable(DeltaCatalog catalog, String tableId, Map<S...
    method getId (line 193) | @Override
    method getSchema (line 198) | @Override
    method getPartitionColumns (line 203) | @Override
    method open (line 208) | @Override
    method close (line 236) | @Override
    method refresh (line 251) | @Override
    method commit (line 256) | @Override
    method writeParquet (line 289) | @Override
    method snapshot (line 323) | protected Optional<Snapshot> snapshot() {
    method loadLatestSnapshot (line 347) | protected abstract Snapshot loadLatestSnapshot();
    method versionExists (line 357) | protected boolean versionExists(Long version) {
    method refresh (line 371) | protected void refresh(Snapshot snapshot) {
    method buildCreateTableTransaction (line 397) | protected CreateTableTransactionBuilder buildCreateTableTransaction() {
    method createDeltaTable (line 402) | protected void createDeltaTable() {
    method loadDeltaTable (line 426) | protected void loadDeltaTable() {
    method getEngine (line 463) | public Engine getEngine() {
    method createEngine (line 479) | protected Engine createEngine() {
    method getCacheManager (line 510) | public SnapshotCacheManager getCacheManager() {
    method setCacheManager (line 514) | public void setCacheManager(SnapshotCacheManager cacheManager) {
    method getCatalog (line 518) | public DeltaCatalog getCatalog() {
    method getTableUUID (line 522) | public String getTableUUID() {
    method getConf (line 526) | public TableConf getConf() {
    method getWriteState (line 530) | protected Row getWriteState() {
    method getTablePath (line 535) | public URI getTablePath() {
    method extraConf (line 539) | protected Map<String, String> extraConf() {
    method createCredentialManager (line 543) | private CredentialManager createCredentialManager() {
    method withRetry (line 555) | protected <RET> RET withRetry(CheckedSupplier<RET> body) {
    method withTiming (line 582) | public <RET> RET withTiming(String name, Callable<RET> body) {
    method withTiming (line 594) | public void withTiming(String name, CheckedRunnable body) {
    method executeWithTiming (line 606) | public <V> Future<V> executeWithTiming(String name, Callable<V> body) {
    method executeWithTiming (line 610) | public Future<?> executeWithTiming(String name, CheckedRunnable body) {
    method addMetricListener (line 617) | public void addMetricListener(MetricListener listener) {
    method removeMetricListener (line 621) | public void removeMetricListener(MetricListener listener) {
    method onMetric (line 625) | protected void onMetric(String event, long time) {
    method addEventListener (line 629) | public void addEventListener(TableEventListener listener) {
    method removeEventListener (line 633) | public void removeEventListener(TableEventListener listener) {
    method onPostCommit (line 637) | public void onPostCommit(Snapshot snapshot) {
    method refreshCredential (line 649) | protected void refreshCredential() {
    method reloadSnapshot (line 657) | protected void reloadSnapshot() {

FILE: flink/src/main/java/io/delta/flink/table/CredentialManager.java
  class CredentialManager (line 56) | public class CredentialManager {
    method CredentialManager (line 93) | public CredentialManager(Supplier<Map<String, String>> supplier, Runna...
    method getCredentials (line 110) | Map<String, String> getCredentials() {
    method scheduleNextRefresh (line 121) | protected void scheduleNextRefresh(Map<String, String> newCredentials) {

FILE: flink/src/main/java/io/delta/flink/table/DeltaCatalog.java
  type DeltaCatalog (line 43) | public interface DeltaCatalog extends Serializable {
    method open (line 49) | default void open() {}
    method getTable (line 63) | TableDescriptor getTable(String tableId);
    method createTable (line 84) | void createTable(
    method getCredentials (line 102) | Map<String, String> getCredentials(String uuid);
    class TableDescriptor (line 110) | class TableDescriptor {
      method TableDescriptor (line 121) | public TableDescriptor() {}
      method TableDescriptor (line 123) | public TableDescriptor(String tableId, String uuid, URI tablePath) {

FILE: flink/src/main/java/io/delta/flink/table/DeltaTable.java
  type DeltaTable (line 49) | public interface DeltaTable extends Serializable, AutoCloseable {
    method getId (line 65) | String getId();
    method getSchema (line 76) | StructType getSchema();
    method getPartitionColumns (line 86) | List<String> getPartitionColumns();
    method open (line 92) | void open();
    method commit (line 115) | Optional<Snapshot> commit(
    method refresh (line 136) | void refresh();
    method writeParquet (line 163) | CloseableIterator<Row> writeParquet(

FILE: flink/src/main/java/io/delta/flink/table/ExceptionUtils.java
  class ExceptionUtils (line 29) | public class ExceptionUtils {
    method isRetryableException (line 50) | public static boolean isRetryableException(Throwable e) {
    method recursiveCheck (line 63) | public static Predicate<Throwable> recursiveCheck(Predicate<Throwable>...
    class ResourceNotFoundException (line 79) | public static class ResourceNotFoundException extends RuntimeException {
      method ResourceNotFoundException (line 80) | public ResourceNotFoundException(String message) {
    class ResourceAlreadyExistException (line 86) | public static class ResourceAlreadyExistException extends RuntimeExcep...
      method ResourceAlreadyExistException (line 87) | public ResourceAlreadyExistException(String message) {
    method wrap (line 92) | public static RuntimeException wrap(Throwable t) {
    method wrap (line 99) | public static <T> Consumer<T> wrap(CheckedConsumer<T> body) {

FILE: flink/src/main/java/io/delta/flink/table/MetricListener.java
  type MetricListener (line 35) | public interface MetricListener extends Serializable {
    method onEvent (line 44) | void onEvent(String eventName, long elapseNano);
    class StatsListener (line 57) | class StatsListener implements MetricListener {
      method onEvent (line 62) | @Override
      method report (line 81) | public Map<String, long[]> report() {
    class PointListener (line 97) | class PointListener implements MetricListener {
      method onEvent (line 101) | @Override
      method report (line 106) | public Map<String, List<Long>> report() {

FILE: flink/src/main/java/io/delta/flink/table/SnapshotCacheManager.java
  type SnapshotCacheManager (line 43) | public interface SnapshotCacheManager extends Serializable {
    method put (line 51) | default void put(String key, Snapshot snapshot) {}
    method invalidate (line 58) | default void invalidate(String key) {}
    method get (line 76) | default Optional<Snapshot> get(
    method getInstance (line 85) | static SnapshotCacheManager getInstance() {
    class NoCacheManager (line 97) | class NoCacheManager implements SnapshotCacheManager {
    class LocalCacheManager (line 110) | class LocalCacheManager implements SnapshotCacheManager {
      method put (line 124) | @Override
      method invalidate (line 129) | @Override
      method get (line 134) | @Override

FILE: flink/src/main/java/io/delta/flink/table/TableConf.java
  class TableConf (line 41) | public class TableConf implements Serializable {
    method TableConf (line 77) | public TableConf(Map<String, String> conf) {
    method catalogConf (line 92) | public Map<String, String> catalogConf() {
    method engineConf (line 109) | public Map<String, String> engineConf() {
    method isChecksumEnabled (line 114) | public boolean isChecksumEnabled() {
    method getCheckpointFrequency (line 123) | public double getCheckpointFrequency() {
    method shouldCreateCheckpoint (line 135) | public boolean shouldCreateCheckpoint() {
    method validate (line 142) | private void validate() {

FILE: flink/src/main/java/io/delta/flink/table/TableEventListener.java
  type TableEventListener (line 22) | public interface TableEventListener extends Serializable {
    method onPostCommit (line 24) | default void onPostCommit(AbstractKernelTable source, Snapshot snapsho...

FILE: flink/src/main/java/io/delta/flink/table/postcommit/ChecksumListener.java
  class ChecksumListener (line 27) | public class ChecksumListener implements TableEventListener {
    method onPostCommit (line 31) | @Override

FILE: flink/src/main/java/io/delta/flink/table/postcommit/MaintenanceListener.java
  class MaintenanceListener (line 31) | public class MaintenanceListener implements TableEventListener {
    method onPostCommit (line 33) | @Override
    class MaintenanceTask (line 38) | static class MaintenanceTask implements CheckedRunnable {
      method MaintenanceTask (line 44) | public MaintenanceTask(AbstractKernelTable table, Snapshot snapshot) {
      method run (line 49) | public void run() {

FILE: flink/src/test/java/io/delta/flink/DummyHttp.java
  class DummyHttp (line 26) | public class DummyHttp {
    method DummyHttp (line 30) | public DummyHttp(Map<String, String> returns) {
    method port (line 47) | public int port() {
    method forUC (line 51) | public static DummyHttp forUC(String tablePath) {

FILE: flink/src/test/java/io/delta/flink/TestHelper.java
  class TestHelper (line 60) | public abstract class TestHelper {
    method wrap (line 64) | protected static <T> Consumer<T> wrap(CheckedConsumer<T> body) {
    method withTempDir (line 80) | protected void withTempDir(CheckedConsumer<File> f) {
    method dummyRow (line 99) | protected Row dummyRow() {
    method dummyStatistics (line 113) | protected DataFileStatistics dummyStatistics(long numRecords) {
    method dummyAddFileRow (line 130) | protected Row dummyAddFileRow(
    method dummyAddFileRows (line 151) | protected List<Row> dummyAddFileRows(
    method dummyWriterContext (line 167) | protected Row dummyWriterContext(
    method dummyWriterContext (line 180) | protected Row dummyWriterContext(Engine engine, String tablePath, Stru...
    method createNonEmptyTable (line 195) | protected Optional<Snapshot> createNonEmptyTable(
    method createNonEmptyTable (line 240) | protected Optional<Snapshot> createNonEmptyTable(
    method createNonEmptyTable (line 246) | protected Optional<Snapshot> createNonEmptyTable(
    method createNonEmptyTable (line 252) | protected Optional<Snapshot> createNonEmptyTable(
    method createNonEmptyTable (line 262) | protected Optional<Snapshot> createNonEmptyTable(
    method writeTable (line 280) | protected Optional<Snapshot> writeTable(
    method writeTable (line 315) | protected Optional<Snapshot> writeTable(Engine engine, String tablePat...
    method verifyTableContent (line 325) | protected void verifyTableContent(String tablePath, TableContentChecke...
    type TableContentChecker (line 344) | @FunctionalInterface
      method check (line 346) | void check(long version, Iterable<AddFile> addFiles, Map<String, Str...
    method readParquet (line 356) | protected List<Row> readParquet(Path filePath, StructType schema) {
    method dummyRandomLiteral (line 387) | protected Literal dummyRandomLiteral(DataType dataType) {
    method checkSerializability (line 406) | protected void checkSerializability(Object input) {

FILE: flink/src/test/java/io/delta/flink/kernel/CheckpointWriterTest.java
  class CheckpointWriterTest (line 50) | class CheckpointWriterTest extends TestHelper {
    method createTableAndWriteCommits (line 62) | private void createTableAndWriteCommits(
    type CommitCallback (line 81) | @FunctionalInterface
      method onCommit (line 83) | void onCommit(int commitIndex, Snapshot snapshot);
    method writeRemoveFile (line 86) | private Optional<Snapshot> writeRemoveFile(
    method writeDomainMetadata (line 134) | private Optional<Snapshot> writeDomainMetadata(
    method assertSnapshotRead (line 154) | private void assertSnapshotRead(
    method assertSnapshotRead (line 160) | private void assertSnapshotRead(
    method assertSnapshotRead (line 165) | private void assertSnapshotRead(
    method assertLastCheckpointFile (line 210) | private void assertLastCheckpointFile(
    method testCreateIncrementalCheckpoint (line 252) | @Test
    method testIgnoreNotMyCheckpoints (line 279) | @Test
    method testCreateOnOlderSnapshots (line 308) | @Test
    method testFallbackOnRemoveFiles (line 353) | @Test
    method testMergeManySidecars (line 381) | @Test
    method testMergeDomainMetadata (line 419) | @Test

FILE: flink/src/test/java/io/delta/flink/table/AbstractKernelTableTest.java
  class AbstractKernelTableTest (line 51) | class AbstractKernelTableTest extends TestHelper {
    method withTestTable (line 60) | private void withTestTable(
    method withTestTable (line 75) | private void withTestTable(
    method testNormalizeURI (line 90) | @Test
    method testTableIsSerializable (line 105) | @Test
    method testTableStoredConfIntoDeltaLogs (line 126) | @Test
    method testCreateTableAndCommitWithoutPartition (line 156) | @Test
    method testCreateNewTableAndCommitWithPartition (line 198) | @Test
    method testCommitToExistingTableWithoutPartition (line 251) | @Test
    method testCommitToExistingTable (line 291) | @Test
    method testRefreshOnEmptyTable (line 336) | @Test
    method testRefreshOnExistingTable (line 355) | @Test
    method testCloseCancelOngoingOperations (line 375) | @Test
    method testRetryConcurrencyException (line 465) | @Test
    method testRetryCredentialExceptionToSucceed (line 513) | @Test
    method testRetryCredentialExceptionToExceedMaxAttempts (line 552) | @Test
    method testWriteResultHasProperStats (line 595) | @Test
    method testGenerateChecksum (line 636) | @Test
    method testCheckpoint (line 670) | @Test

FILE: flink/src/test/java/io/delta/flink/table/CredentialManagerTest.java
  class CredentialManagerTest (line 28) | class CredentialManagerTest {
    method testGetAndAutoRefreshCredentials (line 30) | @Test

FILE: flink/src/test/java/io/delta/flink/table/DataColumnVectorView.java
  class DataColumnVectorView (line 33) | public class DataColumnVectorView implements ColumnVector {
    method DataColumnVectorView (line 39) | public DataColumnVectorView(List<List<?>> rows, int colIdx, DataType d...
    method getDataType (line 45) | @Override
    method getSize (line 50) | @Override
    method close (line 55) | @Override
    method isNullAt (line 58) | @Override
    method checkValidRowId (line 64) | protected void checkValidRowId(int rowId) {
    method checkValidDataType (line 70) | protected void checkValidDataType(io.delta.kernel.types.DataType dataT...
    method getInt (line 76) | @Override
    method getLong (line 83) | @Override
    method getString (line 90) | @Override
    method getFloat (line 97) | @Override
    method getDouble (line 104) | @Override
    method getDecimal (line 111) | @Override

FILE: flink/src/test/java/io/delta/flink/table/LocalFileSystemCatalog.java
  class LocalFileSystemCatalog (line 27) | public class LocalFileSystemCatalog implements DeltaCatalog {
    method LocalFileSystemCatalog (line 31) | public LocalFileSystemCatalog(Map<String, String> conf) {
    method getTable (line 35) | @Override
    method createTable (line 48) | @Override
    method getCredentials (line 59) | @Override

FILE: flink/src/test/java/io/delta/flink/table/LocalFileSystemTable.java
  class LocalFileSystemTable (line 26) | public class LocalFileSystemTable extends AbstractKernelTable {
    method LocalFileSystemTable (line 28) | public LocalFileSystemTable(
    method loadLatestSnapshot (line 33) | @Override

FILE: hudi/integration_tests/write_uniform_hudi.py
  function get_delta_df (line 28) | def get_delta_df(spark, table_name):
  function get_hudi_df (line 34) | def get_hudi_df(spark, table_name):

FILE: iceberg/src/main/java/org/apache/spark/sql/delta/serverSidePlanning/FixedGcsAccessTokenProvider.java
  class FixedGcsAccessTokenProvider (line 33) | public class FixedGcsAccessTokenProvider implements AccessTokenProvider {
    method getAccessToken (line 41) | @Override
    method refresh (line 66) | @Override
    method setConf (line 71) | @Override
    method getConf (line 76) | @Override

FILE: iceberg/src/test/java/shadedForDelta/org/apache/iceberg/rest/IcebergRESTCatalogAdapterWithPlanSupport.java
  class IcebergRESTCatalogAdapterWithPlanSupport (line 56) | class IcebergRESTCatalogAdapterWithPlanSupport extends RESTCatalogAdapter {
    method IcebergRESTCatalogAdapterWithPlanSupport (line 93) | IcebergRESTCatalogAdapterWithPlanSupport(Catalog catalog) {
    method setCatalogPrefix (line 107) | void setCatalogPrefix(String prefix) {
    method getCatalogPrefix (line 115) | String getCatalogPrefix() {
    method getCapturedFilter (line 123) | static Expression getCapturedFilter() {
    method getCapturedProjection (line 131) | static List<String> getCapturedProjection() {
    method getCapturedMinRowsRequested (line 139) | static Long getCapturedMinRowsRequested() {
    method getCapturedCaseSensitive (line 147) | static Boolean getCapturedCaseSensitive() {
    method getCapturedPlanRequestPath (line 155) | static String getCapturedPlanRequestPath() {
    method setTestCredentials (line 165) | static void setTestCredentials(Map<String, String> credentials) {
    method getTestCredentials (line 173) | static Map<String, String> getTestCredentials() {
    method setTestResidual (line 185) | static void setTestResidual(Expression residual) {
    method clearCaptured (line 193) | static void clearCaptured() {
    method setFailNextPlanRequests (line 213) | static void setFailNextPlanRequests(int count, int statusCode) {
    method getAndDecrementFailCount (line 223) | static int getAndDecrementFailCount() {
    method getPlanRequestFailStatusCode (line 231) | static int getPlanRequestFailStatusCode() {
    method incrementPlanRequestCount (line 239) | static void incrementPlanRequestCount() {
    method getPlanRequestCount (line 247) | static int getPlanRequestCount() {
    method execute (line 251) | @Override
    method isPlanTableScanRequest (line 282) | private boolean isPlanTableScanRequest(HTTPRequest request) {
    method extractTableIdentifier (line 287) | private TableIdentifier extractTableIdentifier(String path) {
    method extractMinRowsRequested (line 314) | private Long extractMinRowsRequested(String jsonBody) {
    method parsePlanRequest (line 329) | private PlanTableScanRequest parsePlanRequest(HTTPRequest request) {
    method handlePlanTableScan (line 339) | private PlanTableScanResponse handlePlanTableScan(

FILE: iceberg/src/test/java/shadedForDelta/org/apache/iceberg/rest/IcebergRESTServer.java
  class IcebergRESTServer (line 47) | public class IcebergRESTServer {
    method IcebergRESTServer (line 62) | public IcebergRESTServer() {
    method IcebergRESTServer (line 66) | public IcebergRESTServer(Map<String, String> config) {
    method initializeBackendCatalog (line 70) | private void initializeBackendCatalog() throws IOException {
    method start (line 100) | public void start(boolean join) throws Exception {
    method getCatalog (line 127) | public Catalog getCatalog() {
    method getConfiguration (line 131) | public Map<String, String> getConfiguration() {
    method getPort (line 135) | public int getPort() {
    method setCatalogPrefix (line 151) | public void setCatalogPrefix(String prefix) {
    method getCapturedFilter (line 161) | public Expression getCapturedFilter() {
    method getCapturedProjection (line 169) | public List<String> getCapturedProjection() {
    method getCapturedLimit (line 177) | public Long getCapturedLimit() {
    method getCapturedCaseSensitive (line 185) | public Boolean getCapturedCaseSensitive() {
    method getCapturedPlanRequestPath (line 193) | public String getCapturedPlanRequestPath() {
    method setTestCredentials (line 203) | public void setTestCredentials(Map<String, String> credentials) {
    method setTestResidual (line 214) | public void setTestResidual(shadedForDelta.org.apache.iceberg.expressi...
    method setFailNextPlanRequests (line 226) | public void setFailNextPlanRequests(int count, int statusCode) {
    method getPlanRequestCount (line 234) | public int getPlanRequestCount() {
    method clearCaptured (line 241) | public void clearCaptured() {
    method stop (line 245) | public void stop() throws Exception {
    method main (line 251) | public static void main(String[] args) throws Exception {

FILE: iceberg/src/test/java/shadedForDelta/org/apache/iceberg/rest/IcebergRESTServletWithPlanSupport.java
  class IcebergRESTServletWithPlanSupport (line 39) | public class IcebergRESTServletWithPlanSupport extends RESTCatalogServlet {
    method IcebergRESTServletWithPlanSupport (line 45) | public IcebergRESTServletWithPlanSupport(RESTCatalogAdapter adapter) {
    method doGet (line 56) | @Override
    method doPost (line 72) | @Override
    method handleConfigRequest (line 92) | private void handleConfigRequest(HttpServletRequest req, HttpServletRe...
    method handlePlanRequest (line 122) | private void handlePlanRequest(HttpServletRequest req, HttpServletResp...
    method handleError (line 209) | private void handleError(HttpServletResponse resp, ErrorResponse error) {
    method extractHeaders (line 218) | private Map<String, String> extractHeaders(HttpServletRequest req) {
    method extractQueryParams (line 228) | private Map<String, String> extractQueryParams(HttpServletRequest req) {
    method extractBody (line 241) | private String extractBody(HttpServletRequest req) throws IOException {
    method injectStorageCredentials (line 258) | private String injectStorageCredentials(

FILE: icebergShaded/src/main/java/org/apache/iceberg/MetadataUpdate.java
  type MetadataUpdate (line 37) | public interface MetadataUpdate extends Serializable {
    method applyTo (line 38) | default void applyTo(TableMetadata.Builder metadataBuilder) {
    method applyTo (line 43) | default void applyTo(ViewMetadata.Builder viewMetadataBuilder) {
    class AssignUUID (line 48) | class AssignUUID implements MetadataUpdate {
      method AssignUUID (line 51) | public AssignUUID(String uuid) {
      method uuid (line 55) | public String uuid() {
      method applyTo (line 59) | @Override
      method applyTo (line 64) | @Override
    class UpgradeFormatVersion (line 70) | class UpgradeFormatVersion implements MetadataUpdate {
      method UpgradeFormatVersion (line 73) | public UpgradeFormatVersion(int formatVersion) {
      method formatVersion (line 77) | public int formatVersion() {
      method applyTo (line 81) | @Override
      method applyTo (line 86) | @Override
    class AddSchema (line 92) | class AddSchema implements MetadataUpdate {
      method AddSchema (line 96) | public AddSchema(Schema schema) {
      method AddSchema (line 105) | @Deprecated
      method schema (line 111) | public Schema schema() {
      method lastColumnId (line 116) | public int lastColumnId() {
      method applyTo (line 121) | @Override
      method applyTo (line 126) | @Override
    class SetCurrentSchema (line 132) | class SetCurrentSchema implements MetadataUpdate {
      method SetCurrentSchema (line 135) | public SetCurrentSchema(int schemaId) {
      method schemaId (line 139) | public int schemaId() {
      method applyTo (line 143) | @Override
    class AddPartitionSpec (line 149) | class AddPartitionSpec implements MetadataUpdate {
      method AddPartitionSpec (line 152) | public AddPartitionSpec(PartitionSpec spec) {
      method AddPartitionSpec (line 156) | public AddPartitionSpec(UnboundPartitionSpec spec) {
      method spec (line 160) | public UnboundPartitionSpec spec() {
      method applyTo (line 164) | @Override
    class SetDefaultPartitionSpec (line 170) | class SetDefaultPartitionSpec implements MetadataUpdate {
      method SetDefaultPartitionSpec (line 173) | public SetDefaultPartitionSpec(int specId) {
      method specId (line 177) | public int specId() {
      method applyTo (line 181) | @Override
    class RemovePartitionSpecs (line 187) | class RemovePartitionSpecs implements MetadataUpdate {
      method RemovePartitionSpecs (line 190) | public RemovePartitionSpecs(Set<Integer> specIds) {
      method specIds (line 194) | public Set<Integer> specIds() {
      method applyTo (line 198) | @Override
    class RemoveSchemas (line 204) | class RemoveSchemas implements MetadataUpdate {
      method RemoveSchemas (line 207) | public RemoveSchemas(Set<Integer> schemaIds) {
      method schemaIds (line 211) | public Set<Integer> schemaIds() {
      method applyTo (line 215) | @Override
    class AddSortOrder (line 221) | class AddSortOrder implements MetadataUpdate {
      method AddSortOrder (line 224) | public AddSortOrder(SortOrder sortOrder) {
      method AddSortOrder (line 228) | public AddSortOrder(UnboundSortOrder sortOrder) {
      method sortOrder (line 232) | public UnboundSortOrder sortOrder() {
      method applyTo (line 236) | @Override
    class SetDefaultSortOrder (line 242) | class SetDefaultSortOrder implements MetadataUpdate {
      method SetDefaultSortOrder (line 245) | public SetDefaultSortOrder(int sortOrderId) {
      method sortOrderId (line 249) | public int sortOrderId() {
      method applyTo (line 253) | @Override
    class SetStatistics (line 259) | class SetStatistics implements MetadataUpdate {
      method SetStatistics (line 262) | public SetStatistics(StatisticsFile statisticsFile) {
      method snapshotId (line 266) | public long snapshotId() {
      method statisticsFile (line 270) | public StatisticsFile statisticsFile() {
      method applyTo (line 274) | @Override
    class RemoveStatistics (line 280) | class RemoveStatistics implements MetadataUpdate {
      method RemoveStatistics (line 283) | public RemoveStatistics(long snapshotId) {
      method snapshotId (line 287) | public long snapshotId() {
      method applyTo (line 291) | @Override
    class SetPartitionStatistics (line 297) | class SetPartitionStatistics implements MetadataUpdate {
      method SetPartitionStatistics (line 300) | public SetPartitionStatistics(PartitionStatisticsFile partitionStati...
      method snapshotId (line 304) | public long snapshotId() {
      method partitionStatisticsFile (line 308) | public PartitionStatisticsFile partitionStatisticsFile() {
      method applyTo (line 312) | @Override
    class RemovePartitionStatistics (line 318) | class RemovePartitionStatistics implements MetadataUpdate {
      method RemovePartitionStatistics (line 321) | public RemovePartitionStatistics(long snapshotId) {
      method snapshotId (line 325) | public long snapshotId() {
      method applyTo (line 329) | @Override
    class AddSnapshot (line 335) | class AddSnapshot implements MetadataUpdate {
      method AddSnapshot (line 338) | public AddSnapshot(Snapshot snapshot) {
      method snapshot (line 342) | public Snapshot snapshot() {
      method applyTo (line 346) | @Override
    class RemoveSnapshots (line 352) | class RemoveSnapshots implements MetadataUpdate {
      method RemoveSnapshots (line 355) | public RemoveSnapshots(long snapshotId) {
      method RemoveSnapshots (line 359) | public RemoveSnapshots(Set<Long> snapshotIds) {
      method snapshotIds (line 363) | public Set<Long> snapshotIds() {
      method applyTo (line 367) | @Override
    class RemoveSnapshotRef (line 373) | class RemoveSnapshotRef implements MetadataUpdate {
      method RemoveSnapshotRef (line 376) | public RemoveSnapshotRef(String refName) {
      method name (line 380) | public String name() {
      method applyTo (line 384) | @Override
    class SetSnapshotRef (line 390) | class SetSnapshotRef implements MetadataUpdate {
      method SetSnapshotRef (line 398) | public SetSnapshotRef(
      method name (line 413) | public String name() {
      method type (line 417) | public String type() {
      method snapshotId (line 421) | public long snapshotId() {
      method minSnapshotsToKeep (line 425) | public Integer minSnapshotsToKeep() {
      method maxSnapshotAgeMs (line 429) | public Long maxSnapshotAgeMs() {
      method maxRefAgeMs (line 433) | public Long maxRefAgeMs() {
      method applyTo (line 437) | @Override
    class SetProperties (line 449) | class SetProperties implements MetadataUpdate {
      method SetProperties (line 452) | public SetProperties(Map<String, String> updated) {
      method updated (line 456) | public Map<String, String> updated() {
      method applyTo (line 460) | @Override
      method applyTo (line 465) | @Override
    class RemoveProperties (line 471) | class RemoveProperties implements MetadataUpdate {
      method RemoveProperties (line 474) | public RemoveProperties(Set<String> removed) {
      method removed (line 478) | public Set<String> removed() {
      method applyTo (line 482) | @Override
      method applyTo (line 487) | @Override
    class SetLocation (line 493) | class SetLocation implements MetadataUpdate {
      method SetLocation (line 496) | public SetLocation(String location) {
      method location (line 500) | public String location() {
      method applyTo (line 504) | @Override
      method applyTo (line 509) | @Override
    class AddViewVersion (line 515) | class AddViewVersion implements MetadataUpdate {
      method AddViewVersion (line 518) | public AddViewVersion(ViewVersion viewVersion) {
      method viewVersion (line 522) | public ViewVersion viewVersion() {
      method applyTo (line 526) | @Override
    class SetCurrentViewVersion (line 532) | class SetCurrentViewVersion implements MetadataUpdate {
      method SetCurrentViewVersion (line 535) | public SetCurrentViewVersion(int versionId) {
      method versionId (line 539) | public int versionId() {
      method applyTo (line 543) | @Override
    class AddEncryptionKey (line 549) | class AddEncryptionKey implements MetadataUpdate {
      method AddEncryptionKey (line 552) | public AddEncryptionKey(EncryptedKey key) {
      method key (line 556) | public EncryptedKey key() {
      method applyTo (line 560) | @Override
    class RemoveEncryptionKey (line 566) | class RemoveEncryptionKey implements MetadataUpdate {
      method RemoveEncryptionKey (line 569) | public RemoveEncryptionKey(String keyId) {
      method keyId (line 573) | public String keyId() {
      method applyTo (line 577) | @Override

FILE: icebergShaded/src/main/java/org/apache/iceberg/PartitionSpec.java
  class PartitionSpec (line 56) | public class PartitionSpec implements Serializable {
    method PartitionSpec (line 72) | private PartitionSpec(
    method schema (line 81) | public Schema schema() {
    method specId (line 86) | public int specId() {
    method fields (line 91) | public List<PartitionField> fields() {
    method isPartitioned (line 95) | public boolean isPartitioned() {
    method isUnpartitioned (line 99) | public boolean isUnpartitioned() {
    method lastAssignedFieldId (line 103) | int lastAssignedFieldId() {
    method toUnbound (line 107) | public UnboundPartitionSpec toUnbound() {
    method getFieldsBySourceId (line 124) | public List<PartitionField> getFieldsBySourceId(int fieldId) {
    method partitionType (line 129) | public StructType partitionType() {
    method rawPartitionType (line 159) | public StructType rawPartitionType() {
    method javaClasses (line 179) | public Class<?>[] javaClasses() {
    method get (line 203) | @SuppressWarnings("unchecked")
    method escape (line 208) | private String escape(String string) {
    method partitionToPath (line 216) | public String partitionToPath(StructLike data) {
    method compatibleWith (line 241) | public boolean compatibleWith(PartitionSpec other) {
    method equals (line 263) | @Override
    method hashCode (line 278) | @Override
    method lazyFieldList (line 283) | private List<PartitionField> lazyFieldList() {
    method lazyFieldsBySourceId (line 294) | private ListMultimap<Integer, PartitionField> lazyFieldsBySourceId() {
    method identitySourceIds (line 317) | public Set<Integer> identitySourceIds() {
    method toString (line 328) | @Override
    method unpartitioned (line 351) | public static PartitionSpec unpartitioned() {
    method unpartitionedLastAssignedId (line 355) | private static int unpartitionedLastAssignedId() {
    method builderFor (line 365) | public static Builder builderFor(Schema schema) {
    class Builder (line 374) | public static class Builder {
      method Builder (line 388) | private Builder(Schema schema) {
      method nextFieldId (line 392) | private int nextFieldId() {
      method checkAndAddPartitionName (line 396) | private void checkAndAddPartitionName(String name) {
      method checkConflicts (line 400) | Builder checkConflicts(boolean check) {
      method checkAndAddPartitionName (line 405) | private void checkAndAddPartitionName(String name, Integer sourceCol...
      method checkForRedundantPartitions (line 432) | private void checkForRedundantPartitions(PartitionField field) {
      method caseSensitive (line 444) | public Builder caseSensitive(boolean sensitive) {
      method withSpecId (line 449) | public Builder withSpecId(int newSpecId) {
      method findSourceColumn (line 454) | private Types.NestedField findSourceColumn(String sourceName) {
      method identity (line 464) | public Builder identity(String sourceName, String targetName) {
      method identity (line 468) | private Builder identity(Types.NestedField sourceColumn, String targ...
      method identity (line 478) | public Builder identity(String sourceName) {
      method year (line 483) | public Builder year(String sourceName, String targetName) {
      method year (line 487) | private Builder year(Types.NestedField sourceColumn, String targetNa...
      method year (line 496) | public Builder year(String sourceName) {
      method month (line 502) | public Builder month(String sourceName, String targetName) {
      method month (line 506) | private Builder month(Types.NestedField sourceColumn, String targetN...
      method month (line 515) | public Builder month(String sourceName) {
      method day (line 521) | public Builder day(String sourceName, String targetName) {
      method day (line 525) | private Builder day(Types.NestedField sourceColumn, String targetNam...
      method day (line 534) | public Builder day(String sourceName) {
      method hour (line 540) | public Builder hour(String sourceName, String targetName) {
      method hour (line 544) | private Builder hour(Types.NestedField sourceColumn, String targetNa...
      method hour (line 553) | public Builder hour(String sourceName) {
      method bucket (line 559) | public Builder bucket(String sourceName, int numBuckets, String targ...
      method bucket (line 563) | private Builder bucket(Types.NestedField sourceColumn, int numBucket...
      method bucket (line 571) | public Builder bucket(String sourceName, int numBuckets) {
      method truncate (line 577) | public Builder truncate(String sourceName, int width, String targetN...
      method truncate (line 581) | private Builder truncate(Types.NestedField sourceColumn, int width, ...
      method truncate (line 589) | public Builder truncate(String sourceName, int width) {
      method alwaysNull (line 595) | public Builder alwaysNull(String sourceName, String targetName) {
      method alwaysNull (line 599) | private Builder alwaysNull(Types.NestedField sourceColumn, String ta...
      method alwaysNull (line 608) | public Builder alwaysNull(String sourceName) {
      method add (line 616) | Builder add(int sourceId, String name, Transform<?, ?> transform) {
      method add (line 620) | Builder add(int sourceId, int fieldId, String name, Transform<?, ?> ...
      method build (line 627) | public PartitionSpec build() {
      method build (line 631) | public PartitionSpec build(boolean allowMissingFields) {
      method buildUnchecked (line 637) | PartitionSpec buildUnchecked() {
    method checkCompatibility (line 642) | static void checkCompatibility(PartitionSpec spec, Schema schema) {
    method checkCompatibility (line 646) | static void checkCompatibility(PartitionSpec spec, Schema schema, bool...
    method hasSequentialIds (line 685) | static boolean hasSequentialIds(PartitionSpec spec) {

FILE: icebergShaded/src/main/java/org/apache/iceberg/TableMetadata.java
  class TableMetadata (line 65) | public class TableMetadata implements Serializable {
    method newTableMetadata (line 78) | public static TableMetadata newTableMetadata(
    method newTableMetadata (line 91) | public static TableMetadata newTableMetadata(
    method unreservedProperties (line 96) | private static Map<String, String> unreservedProperties(Map<String, St...
    method persistedProperties (line 102) | private static Map<String, String> persistedProperties(Map<String, Str...
    method newTableMetadata (line 117) | static TableMetadata newTableMetadata(
    class SnapshotLogEntry (line 165) | public static class SnapshotLogEntry implements HistoryEntry {
      method SnapshotLogEntry (line 169) | SnapshotLogEntry(long timestampMillis, long snapshotId) {
      method timestampMillis (line 174) | @Override
      method snapshotId (line 179) | @Override
      method equals (line 184) | @Override
      method hashCode (line 195) | @Override
      method toString (line 200) | @Override
    class MetadataLogEntry (line 209) | public static class MetadataLogEntry {
      method MetadataLogEntry (line 213) | MetadataLogEntry(long timestampMillis, String file) {
      method timestampMillis (line 218) | public long timestampMillis() {
      method file (line 222) | public String file() {
      method equals (line 226) | @Override
      method hashCode (line 237) | @Override
      method toString (line 242) | @Override
    method TableMetadata (line 284) | @SuppressWarnings("checkstyle:CyclomaticComplexity")
    method formatVersion (line 413) | public int formatVersion() {
    method metadataFileLocation (line 417) | public String metadataFileLocation() {
    method uuid (line 421) | public String uuid() {
    method lastSequenceNumber (line 425) | public long lastSequenceNumber() {
    method nextSequenceNumber (line 429) | public long nextSequenceNumber() {
    method lastUpdatedMillis (line 433) | public long lastUpdatedMillis() {
    method lastColumnId (line 437) | public int lastColumnId() {
    method schema (line 441) | public Schema schema() {
    method schemas (line 445) | public List<Schema> schemas() {
    method schemasById (line 449) | public Map<Integer, Schema> schemasById() {
    method currentSchemaId (line 453) | public int currentSchemaId() {
    method spec (line 457) | public PartitionSpec spec() {
    method spec (line 461) | public PartitionSpec spec(int id) {
    method specs (line 465) | public List<PartitionSpec> specs() {
    method specsById (line 469) | public Map<Integer, PartitionSpec> specsById() {
    method lastAssignedPartitionId (line 473) | public int lastAssignedPartitionId() {
    method defaultSpecId (line 477) | public int defaultSpecId() {
    method defaultSortOrderId (line 481) | public int defaultSortOrderId() {
    method sortOrder (line 485) | public SortOrder sortOrder() {
    method sortOrders (line 489) | public List<SortOrder> sortOrders() {
    method sortOrdersById (line 493) | public Map<Integer, SortOrder> sortOrdersById() {
    method location (line 497) | public String location() {
    method properties (line 501) | public Map<String, String> properties() {
    method property (line 505) | public String property(String property, String defaultValue) {
    method propertyAsBoolean (line 509) | public boolean propertyAsBoolean(String property, boolean defaultValue) {
    method propertyAsInt (line 513) | public int propertyAsInt(String property, int defaultValue) {
    method propertyTryAsInt (line 517) | public int propertyTryAsInt(String property, int defaultValue) {
    method propertyAsLong (line 521) | public long propertyAsLong(String property, long defaultValue) {
    method snapshot (line 525) | public Snapshot snapshot(long snapshotId) {
    method currentSnapshot (line 533) | public Snapshot currentSnapshot() {
    method snapshots (line 537) | public List<Snapshot> snapshots() {
    method ensureSnapshotsLoaded (line 543) | private synchronized void ensureSnapshotsLoaded() {
    method ref (line 559) | public SnapshotRef ref(String name) {
    method refs (line 563) | public Map<String, SnapshotRef> refs() {
    method statisticsFiles (line 567) | public List<StatisticsFile> statisticsFiles() {
    method partitionStatisticsFiles (line 571) | public List<PartitionStatisticsFile> partitionStatisticsFiles() {
    method snapshotLog (line 575) | public List<HistoryEntry> snapshotLog() {
    method previousFiles (line 579) | public List<MetadataLogEntry> previousFiles() {
    method changes (line 583) | public List<MetadataUpdate> changes() {
    method withUUID (line 587) | public TableMetadata withUUID() {
    method nextRowId (line 591) | public long nextRowId() {
    method encryptionKeys (line 595) | public List<EncryptedKey> encryptionKeys() {
    method updateSchema (line 604) | @Deprecated
    method updateSchema (line 610) | public TableMetadata updateSchema(Schema newSchema) {
    method updatePartitionSpec (line 617) | public TableMetadata updatePartitionSpec(PartitionSpec newPartitionSpe...
    method addPartitionSpec (line 621) | public TableMetadata addPartitionSpec(PartitionSpec newPartitionSpec) {
    method replaceSortOrder (line 625) | public TableMetadata replaceSortOrder(SortOrder newOrder) {
    method removeSnapshotsIf (line 629) | public TableMetadata removeSnapshotsIf(Predicate<Snapshot> removeIf) {
    method replaceProperties (line 634) | public TableMetadata replaceProperties(Map<String, String> rawProperti...
    method validateCurrentSnapshot (line 658) | private void validateCurrentSnapshot() {
    method reassignPartitionIds (line 664) | private PartitionSpec reassignPartitionIds(PartitionSpec partitionSpec...
    method buildReplacement (line 725) | public TableMetadata buildReplacement(
    method updateLocation (line 767) | public TableMetadata updateLocation(String newLocation) {
    method upgradeToFormatVersion (line 771) | public TableMetadata upgradeToFormatVersion(int newFormatVersion) {
    method updateSpecSchema (line 775) | private static PartitionSpec updateSpecSchema(Schema schema, Partition...
    method updateSortOrderSchema (line 790) | private static SortOrder updateSortOrderSchema(Schema schema, SortOrde...
    method freshSpec (line 805) | private static PartitionSpec freshSpec(int specId, Schema schema, Part...
    method freshSortOrder (line 826) | private static SortOrder freshSortOrder(int orderId, Schema schema, So...
    method indexAndValidateSnapshots (line 845) | private static Map<Long, Snapshot> indexAndValidateSnapshots(
    method indexSchemas (line 859) | private Map<Integer, Schema> indexSchemas() {
    method indexSortOrders (line 867) | private static Map<Integer, SortOrder> indexSortOrders(List<SortOrder>...
    method validateRefs (line 875) | private static Map<String, SnapshotRef> validateRefs(
    method buildFrom (line 901) | public static Builder buildFrom(TableMetadata base) {
    method buildFromEmpty (line 905) | public static Builder buildFromEmpty() {
    method buildFromEmpty (line 909) | public static Builder buildFromEmpty(int formatVersion) {
    class Builder (line 913) | public static class Builder {
      method Builder (line 962) | private Builder() {
      method Builder (line 966) | private Builder(int formatVersion) {
      method Builder (line 993) | private Builder(TableMetadata base) {
      method withNextRowId (line 1033) | public Builder withNextRowId(Long newRowId) {
      method withMetadataLocation (line 1038) | public Builder withMetadataLocation(String newMetadataLocation) {
      method assignUUID (line 1052) | public Builder assignUUID() {
      method assignUUID (line 1061) | public Builder assignUUID(String newUuid) {
      method setInitialFormatVersion (line 1074) | private Builder setInitialFormatVersion(int newFormatVersion) {
      method upgradeFormatVersion (line 1084) | public Builder upgradeFormatVersion(int newFormatVersion) {
      method setCurrentSchema (line 1106) | public Builder setCurrentSchema(Schema newSchema, int newLastColumnI...
      method setCurrentSchema (line 1111) | public Builder setCurrentSchema(int schemaId) {
      method addSchema (line 1149) | public Builder addSchema(Schema schema) {
      method addSchema (line 1159) | @Deprecated
      method setDefaultPartitionSpec (line 1165) | public Builder setDefaultPartitionSpec(PartitionSpec spec) {
      method setDefaultPartitionSpec (line 1170) | public Builder setDefaultPartitionSpec(int specId) {
      method removeSpecs (line 1192) | Builder removeSpecs(Iterable<Integer> specIds) {
      method removeSchemas (line 1208) | Builder removeSchemas(Iterable<Integer> schemaIds) {
      method addPartitionSpec (line 1224) | public Builder addPartitionSpec(UnboundPartitionSpec spec) {
      method addPartitionSpec (line 1229) | public Builder addPartitionSpec(PartitionSpec spec) {
      method setDefaultSortOrder (line 1234) | public Builder setDefaultSortOrder(SortOrder order) {
      method setDefaultSortOrder (line 1239) | public Builder setDefaultSortOrder(int sortOrderId) {
      method addSortOrder (line 1261) | public Builder addSortOrder(UnboundSortOrder order) {
      method addSortOrder (line 1266) | public Builder addSortOrder(SortOrder order) {
      method addSnapshot (line 1271) | public Builder addSnapshot(Snapshot snapshot) {
      method setSnapshotsSupplier (line 1318) | public Builder setSnapshotsSupplier(SerializableSupplier<List<Snapsh...
      method setBranchSnapshot (line 1323) | public Builder setBranchSnapshot(Snapshot snapshot, String branch) {
      method setBranchSnapshot (line 1329) | public Builder setBranchSnapshot(long snapshotId, String branch) {
      method setRef (line 1345) | public Builder setRef(String name, SnapshotRef ref) {
      method removeRef (line 1381) | public Builder removeRef(String name) {
      method setStatistics (line 1394) | public Builder setStatistics(StatisticsFile statisticsFile) {
      method removeStatistics (line 1401) | public Builder removeStatistics(long snapshotId) {
      method suppressHistoricalSnapshots (line 1419) | public Builder suppressHistoricalSnapshots() {
      method setPartitionStatistics (line 1428) | public Builder setPartitionStatistics(PartitionStatisticsFile file) {
      method removePartitionStatistics (line 1435) | public Builder removePartitionStatistics(long snapshotId) {
      method removeSnapshots (line 1444) | public Builder removeSnapshots(List<Snapshot> snapshotsToRemove) {
      method removeSnapshots (line 1450) | public Builder removeSnapshots(Collection<Long> idsToRemove) {
      method rewriteSnapshotsInternal (line 1463) | private Builder rewriteSnapshotsInternal(Collection<Long> idsToRemov...
      method setProperties (line 1496) | public Builder setProperties(Map<String, String> updated) {
      method removeProperties (line 1507) | public Builder removeProperties(Set<String> removed) {
      method setLocation (line 1518) | public Builder setLocation(String newLocation) {
      method addEncryptionKey (line 1529) | public Builder addEncryptionKey(EncryptedKey key) {
      method removeEncryptionKey (line 1543) | public Builder removeEncryptionKey(String keyId) {
      method discardChanges (line 1554) | public Builder discardChanges() {
      method setPreviousFileLocation (line 1559) | public Builder setPreviousFileLocation(String previousFileLocation) {
      method hasChanges (line 1564) | private boolean hasChanges() {
      method build (line 1572) | public TableMetadata build() {
      method addSchemaInternal (line 1636) | private int addSchemaInternal(Schema schema, int newLastColumnId) {
      method reuseOrCreateNewSchemaId (line 1680) | private int reuseOrCreateNewSchemaId(Schema newSchema) {
      method addPartitionSpecInternal (line 1693) | private int addPartitionSpecInternal(PartitionSpec spec) {
      method reuseOrCreateNewSpecId (line 1726) | private int reuseOrCreateNewSpecId(PartitionSpec newSpec) {
      method addSortOrderInternal (line 1740) | private int addSortOrderInternal(SortOrder order) {
      method reuseOrCreateNewSortOrderId (line 1774) | private int reuseOrCreateNewSortOrderId(SortOrder newOrder) {
      method setBranchSnapshotInternal (line 1792) | private void setBranchSnapshotInternal(Snapshot snapshot, String bra...
      method addPreviousFile (line 1818) | private static List<MetadataLogEntry> addPreviousFile(
      method intermediateSnapshotIdSet (line 1862) | private static Set<Long> intermediateSnapshotIdSet(
      method updateSnapshotLog (line 1885) | private static List<HistoryEntry> updateSnapshotLog(
      method indexStatistics (line 1927) | private static Map<Long, List<StatisticsFile>> indexStatistics(List<...
      method indexPartitionStatistics (line 1931) | private static Map<Long, List<PartitionStatisticsFile>> indexPartiti...
      method isAddedSnapshot (line 1936) | private boolean isAddedSnapshot(long snapshotId) {
      method changes (line 1941) | private <U extends MetadataUpdate> Stream<U> changes(Class<U> update...

FILE: icebergShaded/src/main/java/org/apache/iceberg/hive/HiveCatalog.java
  class HiveCatalog (line 79) | public class HiveCatalog extends BaseMetastoreViewCatalog
    method HiveCatalog (line 103) | public HiveCatalog() {}
    method initialize (line 106) | public void initialize(String inputName, Map<String, String> propertie...
    method initialize (line 111) | @Override
    method buildTable (line 142) | @Override
    method buildView (line 147) | @Override
    method listTables (line 152) | @Override
    method listViews (line 191) | @Override
    method name (line 223) | @Override
    method dropTable (line 228) | @Override
    method dropView (line 280) | @Override
    method renameTable (line 321) | @Override
    method renameView (line 326) | @Override
    method listIcebergTables (line 331) | private List<TableIdentifier> listIcebergTables(
    method renameTableOrView (line 346) | @SuppressWarnings("checkstyle:CyclomaticComplexity")
    method validateTableIsIcebergTableOrView (line 415) | private void validateTableIsIcebergTableOrView(
    method tableExists (line 435) | @Override
    method validateTableIsIceberg (line 465) | private void validateTableIsIceberg(Table table, String fullName) {
    method viewExists (line 474) | @Override
    method createNamespace (line 497) | @Override
    method listNamespaces (line 534) | @Override
    method dropNamespace (line 562) | @Override
    method setProperties (line 599) | @Override
    method removeProperties (line 619) | @Override
    method alterHiveDataBase (line 639) | private void alterHiveDataBase(Namespace namespace, Database database) {
    method loadNamespaceMetadata (line 661) | @Override
    method isValidIdentifier (line 687) | @Override
    method removeCatalogName (line 692) | private TableIdentifier removeCatalogName(TableIdentifier to) {
    method isValidateNamespace (line 706) | private boolean isValidateNamespace(Namespace namespace) {
    method newTableOps (line 710) | @Override
    method newViewOps (line 718) | @Override
    method defaultWarehouseLocation (line 723) | @Override
    method databaseLocation (line 756) | private String databaseLocation(String databaseName) {
    method convertToMetadata (line 764) | private Map<String, String> convertToMetadata(Database database) {
    method convertToDatabase (line 783) | Database convertToDatabase(Namespace namespace, Map<String, String> me...
    method toString (line 821) | @Override
    method setConf (line 829) | @Override
    method getConf (line 834) | @Override
    method properties (line 839) | @Override
    method setListAllTables (line 844) | @VisibleForTesting
    method clientPool (line 849) | @VisibleForTesting
    class ViewAwareTableBuilder (line 860) | private class ViewAwareTableBuilder extends BaseMetastoreViewCatalogTa...
      method ViewAwareTableBuilder (line 864) | private ViewAwareTableBuilder(TableIdentifier identifier, Schema sch...
      method createOrReplaceTransaction (line 869) | @Override
      method create (line 878) | @Override
    class TableAwareViewBuilder (line 894) | private class TableAwareViewBuilder extends BaseViewBuilder {
      method TableAwareViewBuilder (line 898) | private TableAwareViewBuilder(TableIdentifier identifier) {
      method createOrReplace (line 903) | @Override
      method create (line 912) | @Override

FILE: icebergShaded/src/main/java/org/apache/iceberg/hive/HiveTableOperations.java
  class HiveTableOperations (line 68) | public class HiveTableOperations extends BaseMetastoreTableOperations
    method HiveTableOperations (line 88) | protected HiveTableOperations(
    method HiveTableOperations (line 100) | protected HiveTableOperations(
    method tableName (line 122) | @Override
    method io (line 127) | @Override
    method doRefresh (line 132) | @Override
    method doCommit (line 169) | @SuppressWarnings({"checkstyle:CyclomaticComplexity", "MethodLength"})
    method maxHiveTablePropertySize (line 368) | @Override
    method database (line 373) | @Override
    method table (line 378) | @Override
    method tableType (line 383) | @Override
    method metaClients (line 388) | @Override
    method hiveEngineEnabled (line 410) | private static boolean hiveEngineEnabled(TableMetadata metadata, Confi...
    method hiveLockEnabled (line 437) | private static boolean hiveLockEnabled(TableMetadata metadata, Configu...
    method lockObject (line 447) | @VisibleForTesting

FILE: icebergShaded/src/main/java/org/apache/iceberg/rest/RESTFileScanTaskParser.java
  class RESTFileScanTaskParser (line 59) | class RESTFileScanTaskParser {
    method RESTFileScanTaskParser (line 64) | private RESTFileScanTaskParser() {}
    method toJson (line 66) | public static void toJson(
    method fromJson (line 90) | public static FileScanTask fromJson(

FILE: icebergShaded/src/main/java/org/apache/iceberg/unityCatalog/UnityCatalog.java
  class UnityCatalog (line 46) | public class UnityCatalog extends BaseMetastoreCatalog implements Closea...
    class FileIOFactory (line 51) | static class FileIOFactory {
      method newFileIO (line 52) | public FileIO newFileIO(String impl, Map<String, String> properties,...
    method UnityCatalog (line 70) | public UnityCatalog(
    method newTableOps (line 78) | @Override
    method initialize (line 90) | @Override
    method close (line 97) | @Override
    method defaultWarehouseLocation (line 104) | @Override
    method setConf (line 110) | @Override
    method listTables (line 115) | @Override
    method dropTable (line 120) | @Override
    method renameTable (line 125) | @Override
    method tableExists (line 131) | @Override

FILE: icebergShaded/src/main/java/org/apache/iceberg/unityCatalog/UnityCatalogTableOperations.java
  class UnityCatalogTableOperations (line 44) | public class UnityCatalogTableOperations extends BaseMetastoreTableOpera...
    method UnityCatalogTableOperations (line 68) | public UnityCatalogTableOperations(
    method io (line 81) | @Override
    method tableName (line 86) | @Override
    method doCommit (line 91) | @Override
    method refresh (line 159) | @Override
    method doRefresh (line 171) | @Override
    method getLastWrittenTableMetadataWithLocation (line 190) | public Optional<Tuple2<String, TableMetadata>> getLastWrittenTableMeta...
    method loadTableMetadataLocation (line 194) | private String loadTableMetadataLocation() {

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/BaseTableReader.java
  class BaseTableReader (line 49) | public abstract class BaseTableReader {
    method BaseTableReader (line 55) | public BaseTableReader(String tablePath) {
    method show (line 71) | public abstract int show(
    method pruneSchema (line 80) | protected static StructType pruneSchema(StructType baseSchema, Optiona...
    method printData (line 95) | protected static int printData(FilteredColumnarBatch data, int maxRows...
    method printSchema (line 111) | protected static void printSchema(StructType schema) {
    method printRow (line 115) | protected static void printRow(Row row){
    method baseOptions (line 130) | protected static Options baseOptions() {
    method parseColumnList (line 147) | protected static Optional<List<String>> parseColumnList(CommandLine cl...
    method parseInt (line 152) | protected static int parseInt(CommandLine cli, String optionName, int ...
    method formatter (line 160) | private static String formatter(int length) {
    method getValue (line 166) | private static String getValue(Row row, int columnOrdinal) {

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/BaseTableWriter.java
  class BaseTableWriter (line 31) | public class BaseTableWriter {
    method verifyCommitSuccess (line 56) | void verifyCommitSuccess(String tablePath, TransactionCommitResult res...
    method generateUnpartitionedDataBatch (line 73) | FilteredColumnarBatch generateUnpartitionedDataBatch(int offset) {
    method generatedPartitionedDataBatch (line 117) | FilteredColumnarBatch generatedPartitionedDataBatch(int offset, String...
    method intVector (line 154) | static ColumnVector intVector(List<Integer> data) {
    method doubleVector (line 182) | static ColumnVector doubleVector(List<Double> data) {
    method stringVector (line 210) | static ColumnVector stringVector(List<String> data) {
    method stringSingleValueVector (line 238) | static ColumnVector stringSingleValueVector(String value, int size) {

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/CreateTable.java
  class CreateTable (line 41) | public class CreateTable extends BaseTableWriter {
    method main (line 42) | public static void main(String[] args)
    method runExamples (line 50) | public void runExamples(String location) {
    method createUnpartitionedTable (line 55) | public void createUnpartitionedTable(String tablePath) {
    method createPartitionedTable (line 83) | public void createPartitionedTable(String tablePath) {

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/CreateTableAndInsertData.java
  class CreateTableAndInsertData (line 51) | public class CreateTableAndInsertData extends BaseTableWriter {
    method main (line 52) | public static void main(String[] args) throws IOException {
    method runExamples (line 61) | public void runExamples(String location) throws IOException {
    method createTableWithSampleData (line 81) | public TransactionCommitResult createTableWithSampleData(String tableP...
    method createPartitionedTableWithSampleData (line 155) | public TransactionCommitResult createPartitionedTableWithSampleData(St...
    method insertDataIntoUnpartitionedTable (line 260) | public TransactionCommitResult insertDataIntoUnpartitionedTable(String...
    method idempotentInserts (line 331) | public TransactionCommitResult idempotentInserts(String tablePath) thr...
    method insertWithOptionalCheckpoint (line 409) | public void insertWithOptionalCheckpoint(String tablePath) throws IOEx...

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/MultiThreadedTableReader.java
  class MultiThreadedTableReader (line 71) | public class MultiThreadedTableReader
    method MultiThreadedTableReader (line 77) | public MultiThreadedTableReader(int numThreads, String tablePath) {
    method show (line 82) | public int show(int limit, Optional<List<String>> columnsOpt, Optional...
    method main (line 98) | public static void main(String[] args)
    class ScanFile (line 122) | private static class ScanFile {
      method ScanFile (line 132) | ScanFile(Row scanStateRow, Row scanFileRow) {
      method ScanFile (line 137) | ScanFile(String stateJson, String fileJson) {
      method getScanRow (line 145) | Row getScanRow(Engine engine) {
      method getScanFileRow (line 152) | Row getScanFileRow(Engine engine) {
    class Reader (line 157) | private class Reader {
      method Reader (line 168) | Reader(int limit) {
      method readData (line 179) | int readData(StructType readSchema, Scan scan) {
      method workGenerator (line 202) | private Runnable workGenerator(Scan scan) {
      method workConsumer (line 229) | private Runnable workConsumer(int workerId) {
      method printDataBatch (line 277) | private boolean printDataBatch(FilteredColumnarBatch data) {

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/SingleThreadedTableReader.java
  class SingleThreadedTableReader (line 53) | public class SingleThreadedTableReader
    method SingleThreadedTableReader (line 55) | public SingleThreadedTableReader(String tablePath) {
    method show (line 59) | @Override
    method main (line 75) | public static void main(String[] args)
    method readData (line 97) | private int readData(StructType readSchema, Scan scan, int maxRowCount...

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/utils/RowSerDe.java
  class RowSerDe (line 39) | public class RowSerDe {
    method RowSerDe (line 42) | private RowSerDe() {
    method serializeRowToJson (line 48) | public static String serializeRowToJson(Row row) {
    method deserializeRowFromJson (line 63) | public static Row deserializeRowFromJson(String jsonRowWithSchema) {
    method convertRowToJsonObject (line 74) | private static Map<String, Object> convertRowToJsonObject(Row row) {
    method parseRowFromJsonWithSchema (line 125) | private static Row parseRowFromJsonWithSchema(ObjectNode rowJsonNode, ...

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/examples/utils/Utils.java
  class Utils (line 22) | public class Utils {
    method parseArgs (line 27) | public static CommandLine parseArgs(Options options, String[] args) {

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/integration/ReadIntegrationTestSuite.java
  class ReadIntegrationTestSuite (line 35) | public class ReadIntegrationTestSuite {
    method main (line 38) | public static void main(String[] args) throws Exception {
    method ReadIntegrationTestSuite (line 43) | public ReadIntegrationTestSuite(String goldenTableDir) {
    method runTests (line 47) | public void runTests() throws Exception {
    method runAndVerifyRowCount (line 220) | private void runAndVerifyRowCount(

FILE: kernel/examples/kernel-examples/src/main/java/io/delta/kernel/integration/WriteIntegrationTestSuite.java
  class WriteIntegrationTestSuite (line 30) | public class WriteIntegrationTestSuite {
    method main (line 32) | public static void main(String[] args) throws Exception {
    method runTests (line 37) | public void runTests() throws Exception {
    method verifyRowCount (line 96) | private void verifyRowCount(String testName, int expectedRowCount, Che...
    method tmpLocation (line 117) | private String tmpLocation() throws IOException {
    type CheckedFunction (line 121) | interface CheckedFunction<T> {
      method apply (line 122) | void apply(T tblLocation) throws Exception;

FILE: kernel/examples/run-kernel-examples.py
  function run_single_threaded_examples (line 40) | def run_single_threaded_examples(version, maven_repo, examples_root_dir,...
  function run_multi_threaded_examples (line 52) | def run_multi_threaded_examples(version, maven_repo, examples_root_dir, ...
  function run_integration_tests (line 64) | def run_integration_tests(version, maven_repo, examples_root_dir, golden...
  function run_example (line 77) | def run_example(version, maven_repo, project_dir, main_class, test_cases):
  function clear_artifact_cache (line 87) | def clear_artifact_cache():
  function delete_if_exists (line 98) | def delete_if_exists(path):
  class WorkingDirectory (line 106) | class WorkingDirectory(object):
    method __init__ (line 107) | def __init__(self, working_directory):
    method __enter__ (line 111) | def __enter__(self):
    method __exit__ (line 114) | def __exit__(self, tpe, value, traceback):
  function run_cmd (line 118) | def run_cmd(cmd, throw_on_error=True, env=None, stream_output=False, **k...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/CommitActions.java
  type CommitActions (line 54) | @Evolving
    method getVersion (line 62) | long getVersion();
    method getTimestamp (line 69) | long getTimestamp();
    method getActions (line 87) | CloseableIterator<ColumnarBatch> getActions();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/CommitRange.java
  type CommitRange (line 39) | @Evolving
    method getStartVersion (line 47) | long getStartVersion();
    method getEndVersion (line 54) | long getEndVersion();
    method getQueryStartBoundary (line 64) | CommitRangeBuilder.CommitBoundary getQueryStartBoundary();
    method getQueryEndBoundary (line 76) | Optional<CommitRangeBuilder.CommitBoundary> getQueryEndBoundary();
    method getActions (line 105) | CloseableIterator<ColumnarBatch> getActions(
    method getCommitActions (line 123) | CloseableIterator<CommitActions> getCommitActions(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/CommitRangeBuilder.java
  type CommitRangeBuilder (line 38) | @Experimental
    method withEndBoundary (line 49) | CommitRangeBuilder withEndBoundary(CommitBoundary endBoundary);
    method withLogData (line 64) | CommitRangeBuilder withLogData(List<ParsedLogData> logData);
    method withMaxCatalogVersion (line 94) | CommitRangeBuilder withMaxCatalogVersion(long version);
    method build (line 109) | CommitRange build(Engine engine);
    class CommitBoundary (line 121) | final class CommitBoundary {
      method atVersion (line 130) | public static CommitBoundary atVersion(long version) {
      method atTimestamp (line 145) | public static CommitBoundary atTimestamp(long timestamp, Snapshot la...
      method CommitBoundary (line 156) | private CommitBoundary(boolean isVersion, long value, Optional<Snaps...
      method isVersion (line 164) | public boolean isVersion() {
      method isTimestamp (line 169) | public boolean isTimestamp() {
      method getVersion (line 180) | public long getVersion() {
      method getTimestamp (line 194) | public long getTimestamp() {
      method getLatestSnapshot (line 208) | public Snapshot getLatestSnapshot() {
      method toString (line 215) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/DataWriteContext.java
  type DataWriteContext (line 32) | @Evolving
    method getTargetDirectory (line 39) | String getTargetDirectory();
    method getStatisticsColumns (line 51) | List<Column> getStatisticsColumns();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/Operation.java
  type Operation (line 24) | public enum Operation {
    method Operation (line 44) | Operation(String description) {
    method getDescription (line 49) | public String getDescription() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/PaginatedScan.java
  type PaginatedScan (line 39) | public interface PaginatedScan extends Scan {
    method getScanFiles (line 47) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/PaginatedScanFilesIterator.java
  type PaginatedScanFilesIterator (line 31) | public interface PaginatedScanFilesIterator extends CloseableIterator<Fi...
    method getCurrentPageToken (line 43) | Optional<Row> getCurrentPageToken();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/Scan.java
  type Scan (line 48) | @Evolving
    method getScanFiles (line 107) | CloseableIterator<FilteredColumnarBatch> getScanFiles(Engine engine);
    method getRemainingFilter (line 115) | Optional<Predicate> getRemainingFilter();
    method getScanState (line 124) | Row getScanState(Engine engine);
    method transformPhysicalData (line 145) | static CloseableIterator<FilteredColumnarBatch> transformPhysicalData(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/ScanBuilder.java
  type ScanBuilder (line 31) | @Evolving
    method withFilter (line 57) | ScanBuilder withFilter(Predicate predicate);
    method withReadSchema (line 66) | ScanBuilder withReadSchema(StructType readSchema);
    method build (line 69) | Scan build();
    method buildPaginated (line 79) | PaginatedScan buildPaginated(long pageSize, Optional<Row> pageToken);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/Snapshot.java
  type Snapshot (line 54) | @Evolving
    type ChecksumWriteMode (line 61) | enum ChecksumWriteMode {
    method getPath (line 76) | String getPath();
    method getVersion (line 79) | long getVersion();
    method getPartitionColumnNames (line 89) | List<String> getPartitionColumnNames();
    method getTimestamp (line 97) | long getTimestamp(Engine engine);
    method getSchema (line 100) | StructType getSchema();
    method getDomainMetadata (line 109) | Optional<String> getDomainMetadata(String domain);
    method getTableProperties (line 116) | Map<String, String> getTableProperties();
    method getStatistics (line 119) | SnapshotStatistics getStatistics();
    method getScanBuilder (line 122) | ScanBuilder getScanBuilder();
    method buildUpdateTableTransaction (line 128) | UpdateTableTransactionBuilder buildUpdateTableTransaction(String engin...
    method publish (line 144) | Snapshot publish(Engine engine) throws PublishFailedException;
    method writeChecksum (line 174) | void writeChecksum(Engine engine, ChecksumWriteMode mode) throws IOExc...
    method writeCheckpoint (line 187) | void writeCheckpoint(Engine engine) throws IOException, CheckpointAlre...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/SnapshotBuilder.java
  type SnapshotBuilder (line 39) | @Experimental
    method atVersion (line 50) | SnapshotBuilder atVersion(long version);
    method atTimestamp (line 76) | SnapshotBuilder atTimestamp(long millisSinceEpochUTC, Snapshot latestS...
    method withCommitter (line 92) | SnapshotBuilder withCommitter(Committer committer);
    method withLogData (line 104) | SnapshotBuilder withLogData(List<ParsedLogData> logData);
    method withProtocolAndMetadata (line 118) | SnapshotBuilder withProtocolAndMetadata(Protocol protocol, Metadata me...
    method withMaxCatalogVersion (line 149) | SnapshotBuilder withMaxCatalogVersion(long version);
    method build (line 160) | Snapshot build(Engine engine);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/Table.java
  type Table (line 31) | @Evolving
    method forPath (line 56) | static Table forPath(Engine engine, String path) {
    method getPath (line 67) | String getPath(Engine engine);
    method getLatestSnapshot (line 76) | Snapshot getLatestSnapshot(Engine engine) throws TableNotFoundException;
    method getSnapshotAsOfVersion (line 89) | Snapshot getSnapshotAsOfVersion(Engine engine, long versionId) throws ...
    method getSnapshotAsOfTimestamp (line 118) | Snapshot getSnapshotAsOfTimestamp(Engine engine, long millisSinceEpoch...
    method createTransactionBuilder (line 131) | TransactionBuilder createTransactionBuilder(
    method checkpoint (line 144) | void checkpoint(Engine engine, long version)
    method checksum (line 160) | void checksum(Engine engine, long version) throws TableNotFoundExcepti...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/TableManager.java
  type TableManager (line 33) | @Experimental
    method loadSnapshot (line 46) | static SnapshotBuilder loadSnapshot(String path) {
    method buildCreateTableTransaction (line 59) | static CreateTableTransactionBuilder buildCreateTableTransaction(
    method loadCommitRange (line 76) | static CommitRangeBuilder loadCommitRange(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/Transaction.java
  type Transaction (line 64) | @Evolving
    method getSchema (line 70) | StructType getSchema(Engine engine);
    method getPartitionColumns (line 76) | List<String> getPartitionColumns(Engine engine);
    method getReadTableVersion (line 84) | long getReadTableVersion();
    method getTransactionState (line 93) | Row getTransactionState(Engine engine);
    method getCommitter (line 96) | @Experimental
    method commit (line 115) | TransactionCommitResult commit(Engine engine, CloseableIterable<Row> d...
    method withCommitterProperties (line 123) | void withCommitterProperties(Supplier<Map<String, String>> committerPr...
    method addDomainMetadata (line 137) | void addDomainMetadata(String domain, String config);
    method removeDomainMetadata (line 148) | void removeDomainMetadata(String domain);
    method transformLogicalData (line 171) | static CloseableIterator<FilteredColumnarBatch> transformLogicalData(
    method blockIfVariantDataTypeIsDefined (line 244) | static void blockIfVariantDataTypeIsDefined(StructType tableSchema) {
    method getWriteContext (line 267) | static DataWriteContext getWriteContext(
    method generateAppendActions (line 298) | static CloseableIterator<Row> generateAppendActions(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/TransactionBuilder.java
  type TransactionBuilder (line 37) | @Evolving
    method withSchema (line 64) | TransactionBuilder withSchema(Engine engine, StructType schema);
    method withPartitionColumns (line 75) | TransactionBuilder withPartitionColumns(Engine engine, List<String> pa...
    method withClusteringColumns (line 86) | TransactionBuilder withClusteringColumns(Engine engine, List<Column> c...
    method withTransactionId (line 104) | TransactionBuilder withTransactionId(
    method withTableProperties (line 119) | TransactionBuilder withTableProperties(Engine engine, Map<String, Stri...
    method withTablePropertiesRemoved (line 132) | TransactionBuilder withTablePropertiesRemoved(Set<String> propertyKeys);
    method withMaxRetries (line 141) | TransactionBuilder withMaxRetries(int maxRetries);
    method withLogCompactionInverval (line 152) | TransactionBuilder withLogCompactionInverval(int logCompactionInterval);
    method withDomainMetadataSupported (line 167) | TransactionBuilder withDomainMetadataSupported();
    method build (line 185) | Transaction build(Engine engine);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/TransactionCommitResult.java
  class TransactionCommitResult (line 35) | @Evolving
    method TransactionCommitResult (line 42) | public TransactionCommitResult(
    method getVersion (line 58) | public long getVersion() {
    method getPostCommitHooks (line 75) | public List<PostCommitHook> getPostCommitHooks() {
    method getTransactionReport (line 80) | public TransactionReport getTransactionReport() {
    method getPostCommitSnapshot (line 90) | public Optional<Snapshot> getPostCommitSnapshot() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/CatalogCommitter.java
  type CatalogCommitter (line 28) | @Experimental
    method getRequiredTableProperties (line 40) | default Map<String, String> getRequiredTableProperties() {
    method publish (line 76) | void publish(Engine engine, PublishMetadata publishMetadata) throws Pu...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/CatalogCommitterUtils.java
  class CatalogCommitterUtils (line 25) | public class CatalogCommitterUtils {
    method CatalogCommitterUtils (line 26) | private CatalogCommitterUtils() {}
    method extractProtocolProperties (line 51) | public static Map<String, String> extractProtocolProperties(Protocol p...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/CommitFailedException.java
  class CommitFailedException (line 32) | @Experimental
    method CommitFailedException (line 40) | public CommitFailedException(boolean retryable, boolean conflict, Stri...
    method CommitFailedException (line 46) | public CommitFailedException(
    method isRetryable (line 54) | public boolean isRetryable() {
    method isConflict (line 59) | public boolean isConflict() {
    method toString (line 63) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/CommitMetadata.java
  class CommitMetadata (line 40) | @Experimental
    type CommitType (line 47) | public enum CommitType {
    method CommitMetadata (line 72) | public CommitMetadata(
    method getVersion (line 108) | public long getVersion() {
    method getDeltaLogDirPath (line 113) | public String getDeltaLogDirPath() {
    method getCommitInfo (line 118) | public CommitInfo getCommitInfo() {
    method getCommitDomainMetadatas (line 129) | public List<DomainMetadata> getCommitDomainMetadatas() {
    method getCommitterProperties (line 137) | public Supplier<Map<String, String>> getCommitterProperties() {
    method getReadProtocolOpt (line 145) | public Optional<Protocol> getReadProtocolOpt() {
    method getReadMetadataOpt (line 153) | public Optional<Metadata> getReadMetadataOpt() {
    method getNewProtocolOpt (line 161) | public Optional<Protocol> getNewProtocolOpt() {
    method getNewMetadataOpt (line 169) | public Optional<Metadata> getNewMetadataOpt() {
    method getMaxKnownPublishedDeltaVersion (line 187) | public Optional<Long> getMaxKnownPublishedDeltaVersion() {
    method getEffectiveProtocol (line 196) | public Protocol getEffectiveProtocol() {
    method getEffectiveMetadata (line 205) | public Metadata getEffectiveMetadata() {
    method getCommitType (line 213) | public CommitType getCommitType() {
    method getPublishedDeltaFilePath (line 246) | public String getPublishedDeltaFilePath() {
    method generateNewStagedCommitFilePath (line 257) | public String generateNewStagedCommitFilePath() {
    method checkReadStateAbsentIfAndOnlyIfVersion0 (line 261) | private void checkReadStateAbsentIfAndOnlyIfVersion0() {
    method checkInCommitTimestampPresentIfCatalogManaged (line 268) | private void checkInCommitTimestampPresentIfCatalogManaged() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/CommitResponse.java
  class CommitResponse (line 23) | @Experimental
    method CommitResponse (line 29) | public CommitResponse(ParsedDeltaData commitLogData) {
    method getCommitLogData (line 39) | public ParsedDeltaData getCommitLogData() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/Committer.java
  type Committer (line 28) | @Experimental
    method commit (line 56) | CommitResponse commit(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/PublishFailedException.java
  class PublishFailedException (line 20) | public class PublishFailedException extends RuntimeException {
    method PublishFailedException (line 27) | public PublishFailedException(String message) {
    method PublishFailedException (line 37) | public PublishFailedException(String message, Throwable cause) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/commit/PublishMetadata.java
  class PublishMetadata (line 29) | @Experimental
    method PublishMetadata (line 43) | public PublishMetadata(
    method getSnapshotVersion (line 56) | public long getSnapshotVersion() {
    method getLogPath (line 61) | public String getLogPath() {
    method getAscendingCatalogCommits (line 69) | public List<ParsedCatalogCommitData> getAscendingCatalogCommits() {
    method validateCommitsNonEmpty (line 73) | private void validateCommitsNonEmpty() {
    method validateCommitsContiguous (line 77) | private void validateCommitsContiguous() {
    method validateLastCommitMatchesSnapshotVersion (line 81) | private void validateLastCommitMatchesSnapshotVersion() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/data/ArrayValue.java
  type ArrayValue (line 19) | public interface ArrayValue {
    method getSize (line 21) | int getSize();
    method getElements (line 27) | ColumnVector getElements();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/data/ColumnVector.java
  type ColumnVector (line 28) | @Evolving
    method getDataType (line 31) | DataType getDataType();
    method getSize (line 34) | int getSize();
    method close (line 37) | @Override
    method isNullAt (line 44) | boolean isNullAt(int rowId);
    method getBoolean (line 53) | default boolean getBoolean(int rowId) {
    method getByte (line 64) | default byte getByte(int rowId) {
    method getShort (line 75) | default short getShort(int rowId) {
    method getInt (line 86) | default int getInt(int rowId) {
    method getLong (line 97) | default long getLong(int rowId) {
    method getFloat (line 108) | default float getFloat(int rowId) {
    method getDouble (line 119) | default double getDouble(int rowId) {
    method getBinary (line 130) | default byte[] getBinary(int rowId) {
    method getString (line 141) | default String getString(int rowId) {
    method getDecimal (line 152) | default BigDecimal getDecimal(int rowId) {
    method getMap (line 160) | default MapValue getMap(int rowId) {
    method getArray (line 168) | default ArrayValue getArray(int rowId) {
    method getChild (line 178) | default ColumnVector getChild(int ordinal) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/data/ColumnarBatch.java
  type ColumnarBatch (line 31) | @Evolving
    method getSchema (line 34) | StructType getSchema();
    method getColumnVector (line 43) | ColumnVector getColumnVector(int ordinal);
    method getSize (line 46) | int getSize();
    method withNewColumn (line 61) | default ColumnarBatch withNewColumn(
    method withDeletedColumnAt (line 73) | default ColumnarBatch withDeletedColumnAt(int ordinal) {
    method withNewSchema (line 85) | default ColumnarBatch withNewSchema(StructType newSchema) {
    method getRows (line 90) | default CloseableIterator<Row> getRows() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/data/FilteredColumnarBatch.java
  class FilteredColumnarBatch (line 38) | @Evolving
    method FilteredColumnarBatch (line 46) | public FilteredColumnarBatch(ColumnarBatch data, Optional<ColumnVector...
    method FilteredColumnarBatch (line 54) | public FilteredColumnarBatch(
    method getData (line 80) | public ColumnarBatch getData() {
    method getFilePath (line 92) | public Optional<String> getFilePath() {
    method getSelectionVector (line 102) | public Optional<ColumnVector> getSelectionVector() {
    method getRows (line 112) | public CloseableIterator<Row> getRows() {
    method getPreComputedNumSelectedRows (line 163) | public Optional<Integer> getPreComputedNumSelectedRows() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/data/MapValue.java
  type MapValue (line 19) | public interface MapValue {
    method getSize (line 21) | int getSize();
    method getKeys (line 28) | ColumnVector getKeys();
    method getValues (line 34) | ColumnVector getValues();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/data/Row.java
  type Row (line 28) | @Evolving
    method getSchema (line 32) | StructType getSchema();
    method isNullAt (line 38) | boolean isNullAt(int ordinal);
    method getBoolean (line 44) | boolean getBoolean(int ordinal);
    method getByte (line 50) | byte getByte(int ordinal);
    method getShort (line 56) | short getShort(int ordinal);
    method getInt (line 62) | int getInt(int ordinal);
    method getLong (line 68) | long getLong(int ordinal);
    method getFloat (line 74) | float getFloat(int ordinal);
    method getDouble (line 80) | double getDouble(int ordinal);
    method getString (line 86) | String getString(int ordinal);
    method getDecimal (line 92) | BigDecimal getDecimal(int ordinal);
    method getBinary (line 98) | byte[] getBinary(int ordinal);
    method getStruct (line 104) | Row getStruct(int ordinal);
    method getArray (line 110) | ArrayValue getArray(int ordinal);
    method getMap (line 116) | MapValue getMap(int ordinal);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/Engine.java
  type Engine (line 29) | @Evolving
    method getExpressionHandler (line 37) | ExpressionHandler getExpressionHandler();
    method getJsonHandler (line 44) | JsonHandler getJsonHandler();
    method getFileSystemClient (line 51) | FileSystemClient getFileSystemClient();
    method getParquetHandler (line 58) | ParquetHandler getParquetHandler();
    method getMetricsReporters (line 61) | default List<MetricsReporter> getMetricsReporters() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/ExpressionHandler.java
  type ExpressionHandler (line 35) | @Evolving
    method getEvaluator (line 47) | ExpressionEvaluator getEvaluator(
    method getPredicateEvaluator (line 58) | PredicateEvaluator getPredicateEvaluator(StructType inputSchema, Predi...
    method createSelectionVector (line 70) | ColumnVector createSelectionVector(boolean[] values, int from, int to);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/FileReadRequest.java
  type FileReadRequest (line 21) | @Evolving
    method getPath (line 24) | String getPath();
    method getStartOffset (line 27) | int getStartOffset();
    method getReadLength (line 30) | int getReadLength();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/FileReadResult.java
  class FileReadResult (line 27) | public class FileReadResult {
    method FileReadResult (line 38) | public FileReadResult(ColumnarBatch data, String filePath) {
    method getData (line 44) | public ColumnarBatch getData() {
    method getFilePath (line 49) | public String getFilePath() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/FileSystemClient.java
  type FileSystemClient (line 34) | @Evolving
    method listFrom (line 46) | CloseableIterator<FileStatus> listFrom(String filePath) throws IOExcep...
    method resolvePath (line 56) | String resolvePath(String path) throws IOException;
    method readFiles (line 67) | CloseableIterator<ByteArrayInputStream> readFiles(CloseableIterator<Fi...
    method mkdirs (line 78) | boolean mkdirs(String path) throws IOException;
    method delete (line 87) | boolean delete(String path) throws IOException;
    method getFileStatus (line 96) | FileStatus getFileStatus(String path) throws IOException;
    method copyFileAtomically (line 111) | void copyFileAtomically(String srcPath, String destPath, boolean overw...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/JsonHandler.java
  type JsonHandler (line 37) | @Evolving
    method parseJson (line 68) | ColumnarBatch parseJson(
    method readJsonFiles (line 87) | CloseableIterator<ColumnarBatch> readJsonFiles(
    method writeJsonFileAtomically (line 118) | void writeJsonFileAtomically(String filePath, CloseableIterator<Row> d...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/MetricsReporter.java
  type MetricsReporter (line 21) | public interface MetricsReporter {
    method report (line 24) | void report(MetricsReport report);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/engine/ParquetHandler.java
  type ParquetHandler (line 39) | @Evolving
    method readParquetFiles (line 65) | CloseableIterator<FileReadResult> readParquetFiles(
    method writeParquetFiles (line 91) | CloseableIterator<DataFileStatus> writeParquetFiles(
    method writeParquetFileAtomically (line 108) | void writeParquetFileAtomically(String filePath, CloseableIterator<Fil...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/CheckpointAlreadyExistsException.java
  class CheckpointAlreadyExistsException (line 28) | @Evolving
    method CheckpointAlreadyExistsException (line 30) | public CheckpointAlreadyExistsException(long version) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/CommitRangeNotFoundException.java
  class CommitRangeNotFoundException (line 27) | @Evolving
    method CommitRangeNotFoundException (line 34) | public CommitRangeNotFoundException(
    method getTablePath (line 47) | public String getTablePath() {
    method getStartVersion (line 52) | public long getStartVersion() {
    method getEndVersion (line 59) | public Optional<Long> getEndVersion() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/CommitStateUnknownException.java
  class CommitStateUnknownException (line 48) | @Evolving
    method CommitStateUnknownException (line 50) | public CommitStateUnknownException(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/ConcurrentTransactionException.java
  class ConcurrentTransactionException (line 36) | @Evolving
    method ConcurrentTransactionException (line 43) | public ConcurrentTransactionException(String appId, long txnVersion, l...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/ConcurrentWriteException.java
  class ConcurrentWriteException (line 25) | @Evolving
    method ConcurrentWriteException (line 27) | public ConcurrentWriteException() {
    method ConcurrentWriteException (line 33) | public ConcurrentWriteException(String message) {
    method ConcurrentWriteException (line 37) | public ConcurrentWriteException(String message, Throwable cause) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/DomainDoesNotExistException.java
  class DomainDoesNotExistException (line 21) | @Evolving
    method DomainDoesNotExistException (line 23) | public DomainDoesNotExistException(String tablePath, String domain, lo...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/InvalidConfigurationValueException.java
  class InvalidConfigurationValueException (line 25) | @Evolving
    method InvalidConfigurationValueException (line 27) | public InvalidConfigurationValueException(String key, String value, St...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/InvalidTableException.java
  class InvalidTableException (line 22) | public class InvalidTableException extends KernelException {
    method InvalidTableException (line 26) | public InvalidTableException(String tablePath, String reason) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/KernelEngineException.java
  class KernelEngineException (line 21) | public class KernelEngineException extends RuntimeException {
    method KernelEngineException (line 25) | public KernelEngineException(String attemptedOperation, Throwable caus...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/KernelException.java
  class KernelException (line 22) | public class KernelException extends RuntimeException {
    method KernelException (line 24) | public KernelException() {
    method KernelException (line 28) | public KernelException(String message) {
    method KernelException (line 32) | public KernelException(Throwable cause) {
    method KernelException (line 36) | public KernelException(String message, Throwable cause) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/MaxCommitRetryLimitReachedException.java
  class MaxCommitRetryLimitReachedException (line 21) | @Evolving
    method MaxCommitRetryLimitReachedException (line 23) | public MaxCommitRetryLimitReachedException(long commitVersion, int max...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/MetadataChangedException.java
  class MetadataChangedException (line 26) | @Evolving
    method MetadataChangedException (line 28) | public MetadataChangedException() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/ProtocolChangedException.java
  class ProtocolChangedException (line 26) | @Evolving
    method ProtocolChangedException (line 33) | public ProtocolChangedException(long attemptVersion) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/TableAlreadyExistsException.java
  class TableAlreadyExistsException (line 26) | @Evolving
    method TableAlreadyExistsException (line 31) | public TableAlreadyExistsException(String tablePath, String context) {
    method TableAlreadyExistsException (line 36) | public TableAlreadyExistsException(String tablePath) {
    method getMessage (line 40) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/TableNotFoundException.java
  class TableNotFoundException (line 25) | @Evolving
    method TableNotFoundException (line 30) | public TableNotFoundException(String tablePath) {
    method TableNotFoundException (line 34) | public TableNotFoundException(String tablePath, String context) {
    method getTablePath (line 43) | public String getTablePath() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/UnknownConfigurationException.java
  class UnknownConfigurationException (line 25) | @Evolving
    method UnknownConfigurationException (line 27) | public UnknownConfigurationException(String confKey) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/UnsupportedProtocolVersionException.java
  class UnsupportedProtocolVersionException (line 25) | @Evolving
    type ProtocolVersionType (line 29) | public enum ProtocolVersionType {
    method UnsupportedProtocolVersionException (line 40) | public UnsupportedProtocolVersionException(
    method getTablePath (line 56) | public String getTablePath() {
    method getVersion (line 61) | public int getVersion() {
    method getVersionType (line 66) | public ProtocolVersionType getVersionType() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/exceptions/UnsupportedTableFeatureException.java
  class UnsupportedTableFeatureException (line 27) | @Evolving
    method UnsupportedTableFeatureException (line 33) | public UnsupportedTableFeatureException(
    method UnsupportedTableFeatureException (line 43) | public UnsupportedTableFeatureException(
    method getTablePath (line 52) | public String getTablePath() {
    method getUnsupportedFeatures (line 57) | public Set<String> getUnsupportedFeatures() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/AlwaysFalse.java
  class AlwaysFalse (line 26) | @Evolving
    method AlwaysFalse (line 30) | private AlwaysFalse() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/AlwaysTrue.java
  class AlwaysTrue (line 26) | @Evolving
    method AlwaysTrue (line 30) | private AlwaysTrue() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/And.java
  class And (line 37) | @Evolving
    method And (line 39) | public And(Predicate left, Predicate right) {
    method getLeft (line 44) | public Predicate getLeft() {
    method getRight (line 49) | public Predicate getRight() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/Column.java
  class Column (line 32) | @Evolving
    method Column (line 37) | public Column(String name) {
    method Column (line 42) | public Column(String[] names) {
    method getNames (line 49) | public String[] getNames() {
    method getChildren (line 53) | @Override
    method toString (line 58) | @Override
    method appendNestedField (line 71) | public Column appendNestedField(String name) {
    method quoteColumnPath (line 78) | private static String quoteColumnPath(String[] names) {
    method equals (line 84) | @Override
    method hashCode (line 96) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/Expression.java
  type Expression (line 26) | @Evolving
    method getChildren (line 29) | List<Expression> getChildren();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/ExpressionEvaluator.java
  type ExpressionEvaluator (line 30) | @Evolving
    method eval (line 40) | ColumnVector eval(ColumnarBatch input);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/In.java
  class In (line 41) | @Evolving
    method In (line 50) | public In(Expression valueExpression, List<Expression> inListElements) {
    method In (line 61) | public In(
    method getValueExpression (line 69) | public Expression getValueExpression() {
    method getInListElements (line 74) | public List<Expression> getInListElements() {
    method toString (line 79) | @Override
    method buildChildren (line 87) | private static List<Expression> buildChildren(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/Literal.java
  class Literal (line 42) | @Evolving
    method ofBoolean (line 50) | public static Literal ofBoolean(boolean value) {
    method ofByte (line 60) | public static Literal ofByte(byte value) {
    method ofShort (line 70) | public static Literal ofShort(short value) {
    method ofInt (line 80) | public static Literal ofInt(int value) {
    method ofLong (line 90) | public static Literal ofLong(long value) {
    method ofFloat (line 100) | public static Literal ofFloat(float value) {
    method ofDouble (line 110) | public static Literal ofDouble(double value) {
    method ofString (line 120) | public static Literal ofString(String value) {
    method ofString (line 131) | public static Literal ofString(String value, CollationIdentifier colla...
    method ofBinary (line 141) | public static Literal ofBinary(byte[] value) {
    method ofDate (line 151) | public static Literal ofDate(int daysSinceEpochUTC) {
    method ofTimestamp (line 161) | public static Literal ofTimestamp(long microsSinceEpochUTC) {
    method ofTimestampNtz (line 171) | public static Literal ofTimestampNtz(long microSecondsEpoch) {
    method ofDecimal (line 184) | public static Literal ofDecimal(BigDecimal value, int precision, int s...
    method ofNull (line 202) | public static Literal ofNull(DataType dataType) {
    method Literal (line 209) | private Literal(Object value, DataType dataType) {
    method getValue (line 239) | public Object getValue() {
    method getDataType (line 249) | public DataType getDataType() {
    method toString (line 253) | @Override
    method getChildren (line 258) | @Override
    method equals (line 263) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/Or.java
  class Or (line 37) | @Evolving
    method Or (line 39) | public Or(Predicate left, Predicate right) {
    method getLeft (line 44) | public Predicate getLeft() {
    method getRight (line 49) | public Predicate getRight() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/PartitionValueExpression.java
  class PartitionValueExpression (line 42) | @Evolving
    method PartitionValueExpression (line 55) | public PartitionValueExpression(Expression serializedPartitionValue, D...
    method getInput (line 61) | public Expression getInput() {
    method getDataType (line 66) | public DataType getDataType() {
    method getChildren (line 70) | @Override
    method toString (line 75) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/Predicate.java
  class Predicate (line 120) | @Evolving
    method Predicate (line 125) | public Predicate(String name, List<Expression> children) {
    method Predicate (line 131) | public Predicate(String name, Expression child) {
    method Predicate (line 136) | public Predicate(String name, Expression left, Expression right) {
    method Predicate (line 141) | public Predicate(
    method Predicate (line 147) | public Predicate(
    method getCollationIdentifier (line 176) | public Optional<CollationIdentifier> getCollationIdentifier() {
    method toString (line 196) | @Override
    method hashCode (line 205) | @Override
    method equals (line 210) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/PredicateEvaluator.java
  type PredicateEvaluator (line 39) | @Evolving
    method eval (line 53) | ColumnVector eval(ColumnarBatch inputData, Optional<ColumnVector> exis...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/expressions/ScalarExpression.java
  class ScalarExpression (line 79) | @Evolving
    method ScalarExpression (line 84) | public ScalarExpression(String name, List<Expression> children) {
    method toString (line 89) | @Override
    method getName (line 95) | public String getName() {
    method getChildren (line 99) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/hook/PostCommitHook.java
  type PostCommitHook (line 27) | public interface PostCommitHook {
    type PostCommitHookType (line 29) | enum PostCommitHookType {
    method threadSafeInvoke (line 64) | void threadSafeInvoke(Engine engine) throws IOException;
    method getType (line 66) | PostCommitHookType getType();

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/CommitActionsImpl.java
  class CommitActionsImpl (line 63) | public class CommitActionsImpl implements CommitActions, AutoCloseable {
    method CommitActionsImpl (line 89) | public CommitActionsImpl(
    method peekHeadAndGetFullIterator (line 149) | private static Tuple2<Optional<ActionWrapper>, CloseableIterator<Actio...
    method getVersion (line 157) | @Override
    method getTimestamp (line 162) | @Override
    method getActions (line 167) | @Override
    method validateProtocolAndDropInternalColumns (line 186) | private static ColumnarBatch validateProtocolAndDropInternalColumns(
    method close (line 222) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/CreateTableTransactionBuilderImpl.java
  class CreateTableTransactionBuilderImpl (line 39) | public class CreateTableTransactionBuilderImpl implements CreateTableTra...
    method CreateTableTransactionBuilderImpl (line 52) | public CreateTableTransactionBuilderImpl(String tablePath, StructType ...
    method withTableProperties (line 58) | @Override
    method withDataLayoutSpec (line 93) | @Override
    method withMaxRetries (line 100) | @Override
    method withCommitter (line 107) | @Override
    method withClock (line 113) | @VisibleForTesting
    method build (line 119) | @Override
    method getTablePropertiesOpt (line 161) | @VisibleForTesting
    method getCommitterOpt (line 166) | @VisibleForTesting
    method throwIfTableAlreadyExists (line 171) | private void throwIfTableAlreadyExists(Engine engine, String tablePath) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/DataWriteContextImpl.java
  class DataWriteContextImpl (line 33) | public class DataWriteContextImpl implements DataWriteContext {
    method DataWriteContextImpl (line 48) | public DataWriteContextImpl(
    method getTargetDirectory (line 60) | public String getTargetDirectory() {
    method getPartitionValues (line 72) | public Map<String, Literal> getPartitionValues() {
    method getStatisticsColumns (line 86) | public List<Column> getStatisticsColumns() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/DeltaErrors.java
  class DeltaErrors (line 41) | public final class DeltaErrors {
    method DeltaErrors (line 42) | private DeltaErrors() {}
    method missingCheckpoint (line 44) | public static KernelException missingCheckpoint(String tablePath, long...
    method versionBeforeFirstAvailableCommit (line 49) | public static KernelException versionBeforeFirstAvailableCommit(
    method versionToLoadAfterLatestCommit (line 60) | public static KernelException versionToLoadAfterLatestCommit(
    method timestampBeforeFirstAvailableCommit (line 70) | public static KernelException timestampBeforeFirstAvailableCommit(
    method timestampAfterLatestCommit (line 88) | public static KernelException timestampAfterLatestCommit(
    method noCommitFilesFoundForVersionRange (line 106) | public static CommitRangeNotFoundException noCommitFilesFoundForVersio...
    method startVersionNotFound (line 111) | public static KernelException startVersionNotFound(
    method endVersionNotFound (line 126) | public static KernelException endVersionNotFound(
    method invalidVersionRange (line 136) | public static KernelException invalidVersionRange(long startVersion, l...
    method invalidResolvedVersionRange (line 145) | public static KernelException invalidResolvedVersionRange(
    method resolvedEndVersionAfterMaxCatalogVersion (line 156) | public static KernelException resolvedEndVersionAfterMaxCatalogVersion(
    method unsupportedReaderProtocol (line 166) | public static UnsupportedProtocolVersionException unsupportedReaderPro...
    method unsupportedWriterProtocol (line 174) | public static UnsupportedProtocolVersionException unsupportedWriterPro...
    method unsupportedTableFeature (line 182) | public static UnsupportedTableFeatureException unsupportedTableFeature...
    method unsupportedReaderFeatures (line 191) | public static UnsupportedTableFeatureException unsupportedReaderFeatures(
    method unsupportedWriterFeatures (line 201) | public static UnsupportedTableFeatureException unsupportedWriterFeatures(
    method columnInvariantsNotSupported (line 211) | public static KernelException columnInvariantsNotSupported() {
    method checkpointOnUnpublishedCommits (line 218) | public static KernelException checkpointOnUnpublishedCommits(
    method unsupportedDataType (line 229) | public static KernelException unsupportedDataType(DataType dataType) {
    method unsupportedStatsDataType (line 233) | public static KernelException unsupportedStatsDataType(DataType dataTy...
    method unsupportedPartitionDataType (line 237) | public static KernelException unsupportedPartitionDataType(String colN...
    method duplicateColumnsInSchema (line 242) | public static KernelException duplicateColumnsInSchema(
    method conflictWithReservedInternalColumnName (line 251) | public static KernelException conflictWithReservedInternalColumnName(S...
    method invalidColumnName (line 256) | public static KernelException invalidColumnName(String columnName, Str...
    method requiresSchemaForNewTable (line 263) | public static KernelException requiresSchemaForNewTable(String tablePa...
    method requireSchemaForReplaceTable (line 268) | public static KernelException requireSchemaForReplaceTable() {
    method tableAlreadyExists (line 272) | public static KernelException tableAlreadyExists(String tablePath, Str...
    method dataSchemaMismatch (line 276) | public static KernelException dataSchemaMismatch(
    method statsTypeMismatch (line 284) | public static KernelException statsTypeMismatch(
    method columnNotFoundInSchema (line 291) | public static KernelException columnNotFoundInSchema(Column column, St...
    method overlappingTablePropertiesSetAndUnset (line 296) | public static KernelException overlappingTablePropertiesSetAndUnset(Se...
    method icebergCompatMissingNumRecordsStats (line 305) | public static KernelException icebergCompatMissingNumRecordsStats(
    method icebergCompatIncompatibleVersionEnabled (line 313) | public static KernelException icebergCompatIncompatibleVersionEnabled(
    method icebergCompatUnsupportedTypeColumns (line 321) | public static KernelException icebergCompatUnsupportedTypeColumns(
    method icebergCompatUnsupportedTypeWidening (line 327) | public static KernelException icebergCompatUnsupportedTypeWidening(
    method icebergCompatUnsupportedTypePartitionColumn (line 334) | public static KernelException icebergCompatUnsupportedTypePartitionCol...
    method icebergCompatRequiresLiteralDefaultValue (line 342) | public static KernelException icebergCompatRequiresLiteralDefaultValue(
    method icebergCompatIncompatibleTableFeatures (line 351) | public static KernelException icebergCompatIncompatibleTableFeatures(
    method icebergCompatRequiredFeatureMissing (line 362) | public static KernelException icebergCompatRequiredFeatureMissing(
    method enablingIcebergCompatFeatureOnExistingTable (line 368) | public static KernelException enablingIcebergCompatFeatureOnExistingTa...
    method icebergWriterCompatInvalidPhysicalName (line 376) | public static KernelException icebergWriterCompatInvalidPhysicalName(L...
    method disablingIcebergCompatFeatureOnExistingTable (line 384) | public static KernelException disablingIcebergCompatFeatureOnExistingT...
    method defaultValueRequiresTableFeature (line 394) | public static KernelException defaultValueRequiresTableFeature() {
    method defaultValueRequireIcebergV3 (line 400) | public static KernelException defaultValueRequireIcebergV3() {
    method unsupportedDataTypeForDefaultValue (line 406) | public static KernelException unsupportedDataTypeForDefaultValue(
    method nonLiteralDefaultValue (line 414) | public static KernelException nonLiteralDefaultValue(String value) {
    method partitionColumnMissingInData (line 424) | public static KernelException partitionColumnMissingInData(
    method enablingClusteringOnPartitionedTableNotAllowed (line 430) | public static KernelException enablingClusteringOnPartitionedTableNotA...
    method nonRetryableCommitException (line 439) | public static RuntimeException nonRetryableCommitException(
    method concurrentTransaction (line 448) | public static KernelException concurrentTransaction(
    method metadataChangedException (line 453) | public static KernelException metadataChangedException() {
    method protocolChangedException (line 457) | public static KernelException protocolChangedException(long attemptVer...
    method voidTypeEncountered (line 461) | public static KernelException voidTypeEncountered() {
    method cannotModifyTableProperty (line 466) | public static KernelException cannotModifyTableProperty(String key) {
    method unknownConfigurationException (line 472) | public static KernelException unknownConfigurationException(String con...
    method invalidConfigurationValueException (line 476) | public static KernelException invalidConfigurationValueException(
    method domainMetadataUnsupported (line 481) | public static KernelException domainMetadataUnsupported() {
    method concurrentDomainMetadataAction (line 488) | public static ConcurrentWriteException concurrentDomainMetadataAction(
    method missingNumRecordsStatsForRowTracking (line 499) | public static KernelException missingNumRecordsStatsForRowTracking() {
    method rowTrackingSupportedWithDomainMetadataUnsupported (line 506) | public static KernelException rowTrackingSupportedWithDomainMetadataUn...
    method rowTrackingRequiredForRowIdHighWatermark (line 512) | public static KernelException rowTrackingRequiredForRowIdHighWatermark(
    method cannotToggleRowTrackingOnExistingTable (line 521) | public static KernelException cannotToggleRowTrackingOnExistingTable() {
    method missingRowTrackingColumnRequested (line 525) | public static KernelException missingRowTrackingColumnRequested(String...
    method cannotModifyAppendOnlyTable (line 532) | public static KernelException cannotModifyAppendOnlyTable(String table...
    method rowTrackingMetadataMissingInFile (line 539) | public static KernelException rowTrackingMetadataMissingInFile(String ...
    method tableWithIctMissingCommitInfo (line 544) | public static InvalidTableException tableWithIctMissingCommitInfo(Stri...
    method tableWithIctMissingIct (line 554) | public static InvalidTableException tableWithIctMissingIct(String data...
    method metadataMissingRequiredCatalogTableProperty (line 564) | public static KernelException metadataMissingRequiredCatalogTablePrope...
    method invalidFieldMove (line 584) | public static KernelException invalidFieldMove(
    method formatParentField (line 598) | private static String formatParentField(Optional<SchemaIterable.Parent...
    method formatTimestamp (line 613) | private static String formatTimestamp(long millisSinceEpochUTC) {
    method wrapEngineException (line 618) | public static <T> T wrapEngineException(Supplier<T> f, String msgStrin...
    type SupplierWithIOException (line 632) | public interface SupplierWithIOException<T> {
      method get (line 633) | T get() throws IOException;
    method wrapEngineExceptionThrowsIO (line 636) | public static <T> T wrapEngineExceptionThrowsIO(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/DeltaErrorsInternal.java
  class DeltaErrorsInternal (line 26) | public class DeltaErrorsInternal {
    method DeltaErrorsInternal (line 28) | private DeltaErrorsInternal() {}
    method missingRemoveFileSizeDuringCommit (line 30) | public static IllegalStateException missingRemoveFileSizeDuringCommit() {
    method invalidTimestampFormatForPartitionValue (line 36) | public static IllegalStateException invalidTimestampFormatForPartition...
    method defaultCommitterDoesNotSupportCatalogManagedTables (line 45) | public static UnsupportedOperationException defaultCommitterDoesNotSup...
    method logicalPhysicalSchemaMismatch (line 53) | public static IllegalStateException logicalPhysicalSchemaMismatch(
    method catalogCommitsPrecedePublishedDeltas (line 62) | public static InvalidTableException catalogCommitsPrecedePublishedDeltas(
    method publishedDeltasAndCatalogCommitsNotContiguous (line 72) | public static InvalidTableException publishedDeltasAndCatalogCommitsNo...
    method publishedDeltasNotContiguous (line 82) | public static InvalidTableException publishedDeltasNotContiguous(
    method invalidLatestSnapshotForMaxCatalogVersion (line 89) | public static IllegalArgumentException invalidLatestSnapshotForMaxCata...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/DeltaHistoryManager.java
  class DeltaHistoryManager (line 46) | public final class DeltaHistoryManager {
    method DeltaHistoryManager (line 48) | private DeltaHistoryManager() {}
    method getVersionAtOrAfterTimestamp (line 71) | public static long getVersionAtOrAfterTimestamp(
    method getVersionBeforeOrAtTimestamp (line 121) | public static long getVersionBeforeOrAtTimestamp(
    method getActiveCommitAtTimestamp (line 164) | public static Commit getActiveCommitAtTimestamp(
    method getActiveCommitAtTimeFromICTRange (line 289) | private static Commit getActiveCommitAtTimeFromICTRange(
    method getICTEnablementCommit (line 335) | private static Commit getICTEnablementCommit(SnapshotImpl snapshot, Co...
    method getEarliestRecreatableCommit (line 369) | public static long getEarliestRecreatableCommit(
    method getEarliestDeltaFile (line 456) | public static long getEarliestDeltaFile(
    method listFrom (line 490) | private static CloseableIterator<FileStatus> listFrom(
    method getCommits (line 520) | private static List<Commit> getCommits(Engine engine, Path logPath, lo...
    method monotonizeCommitTimestamps (line 533) | private static List<Commit> monotonizeCommitTimestamps(CloseableIterat...
    method lastCommitBeforeOrAtTimestamp (line 557) | private static Optional<Commit> lastCommitBeforeOrAtTimestamp(
    class Commit (line 566) | public static class Commit {
      method Commit (line 571) | Commit(long version, long timestamp) {
      method getVersion (line 576) | public long getVersion() {
      method getTimestamp (line 580) | public long getTimestamp() {
      method equals (line 584) | @Override
      method hashCode (line 596) | @Override
    method getVersionToFileStatusFunction (line 616) | private static Function<Long, FileStatus> getVersionToFileStatusFunction(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/DeltaLogActionUtils.java
  class DeltaLogActionUtils (line 51) | public class DeltaLogActionUtils {
    method DeltaLogActionUtils (line 53) | private DeltaLogActionUtils() {}
    type DeltaAction (line 68) | public enum DeltaAction {
      method DeltaAction (line 81) | DeltaAction(String colName, StructType schema) {
    method getCommitFilesForVersionRange (line 99) | public static List<FileStatus> getCommitFilesForVersionRange(
    method listDeltaLogFilesAsIter (line 148) | public static CloseableIterator<FileStatus> listDeltaLogFilesAsIter(
    method getActionsFromCommitFilesWithProtocolValidation (line 276) | public static CloseableIterator<CommitActions> getActionsFromCommitFil...
    method verifyDeltaVersions (line 314) | static void verifyDeltaVersions(
    method listLogDir (line 355) | private static CloseableIterator<FileStatus> listLogDir(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/InternalScanFileUtils.java
  class InternalScanFileUtils (line 41) | public class InternalScanFileUtils {
    method InternalScanFileUtils (line 42) | private InternalScanFileUtils() {}
    method getAddFileStatus (line 103) | public static FileStatus getAddFileStatus(Row scanFileInfo) {
    method getPartitionValues (line 123) | public static Map<String, String> getPartitionValues(Row scanFileInfo) {
    method getAddFileEntry (line 135) | protected static Row getAddFileEntry(Row scanFileInfo) {
    method generateScanFileRow (line 149) | public static Row generateScanFileRow(FileStatus fileStatus) {
    method getDeletionVectorDescriptorFromRow (line 180) | public static DeletionVectorDescriptor getDeletionVectorDescriptorFrom...
    method getPartitionValuesParsedRefInAddFile (line 192) | public static Column getPartitionValuesParsedRefInAddFile(String parti...
    method getBaseRowId (line 196) | public static Optional<Long> getBaseRowId(Row scanFile) {
    method getDefaultRowCommitVersion (line 201) | public static Optional<Long> getDefaultRowCommitVersion(Row scanFile) {
    method getFilePath (line 206) | public static String getFilePath(Row scanFile) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/PaginatedScanImpl.java
  class PaginatedScanImpl (line 33) | public class PaginatedScanImpl implements PaginatedScan {
    method PaginatedScanImpl (line 39) | public PaginatedScanImpl(
    method getRemainingFilter (line 72) | @Override
    method getScanState (line 77) | @Override
    method getScanFiles (line 82) | @Override
    method getScanFiles (line 87) | public PaginatedScanFilesIterator getScanFiles(Engine engine, boolean ...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/ReplaceTableTransactionBuilderImpl.java
  class ReplaceTableTransactionBuilderImpl (line 26) | public class ReplaceTableTransactionBuilderImpl extends TransactionBuild...
    method ReplaceTableTransactionBuilderImpl (line 28) | public ReplaceTableTransactionBuilderImpl(TableImpl table, String engi...
    method build (line 32) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/ReplaceTableTransactionBuilderV2Impl.java
  class ReplaceTableTransactionBuilderV2Impl (line 32) | public class ReplaceTableTransactionBuilderV2Impl implements ReplaceTabl...
    method ReplaceTableTransactionBuilderV2Impl (line 73) | public ReplaceTableTransactionBuilderV2Impl(
    method withTableProperties (line 82) | @Override
    method withDataLayoutSpec (line 92) | @Override
    method withMaxRetries (line 99) | @Override
    method build (line 106) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/ScanBuilderImpl.java
  class ScanBuilderImpl (line 32) | public class ScanBuilderImpl implements ScanBuilder {
    method ScanBuilderImpl (line 45) | public ScanBuilderImpl(
    method withFilter (line 64) | @Override
    method withReadSchema (line 73) | @Override
    method build (line 81) | @Override
    method buildPaginated (line 94) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/ScanImpl.java
  class ScanImpl (line 56) | public class ScanImpl implements Scan {
    method ScanImpl (line 80) | public ScanImpl(
    method getScanFiles (line 112) | @Override
    method getScanFiles (line 122) | public CloseableIterator<FilteredColumnarBatch> getScanFiles(
    method getScanFiles (line 140) | protected CloseableIterator<FilteredColumnarBatch> getScanFiles(
    method getScanState (line 214) | @Override
    method getRemainingFilter (line 226) | @Override
    method createPhysicalSchema (line 250) | private StructType createPhysicalSchema() {
    method convertField (line 274) | private List<StructField> convertField(
    method splitFilters (line 291) | private Optional<Tuple2<Predicate, Predicate>> splitFilters(Optional<P...
    method getDataFilters (line 298) | private Optional<Predicate> getDataFilters() {
    method getPartitionsFilters (line 302) | private Optional<Predicate> getPartitionsFilters() {
    method removeAlwaysTrue (line 307) | private Optional<Predicate> removeAlwaysTrue(Optional<Predicate> predi...
    method applyPartitionPruning (line 311) | private CloseableIterator<FilteredColumnarBatch> applyPartitionPruning(
    method getDataSkippingFilter (line 362) | private Optional<DataSkippingPredicate> getDataSkippingFilter() {
    method applyDataSkipping (line 370) | private CloseableIterator<FilteredColumnarBatch> applyDataSkipping(
    method wrapWithMetricsReporting (line 436) | private CloseableIterator<FilteredColumnarBatch> wrapWithMetricsReport...
    type ScanReportReporter (line 489) | private interface ScanReportReporter {
      method reportError (line 491) | default void reportError(Exception e) {
      method reportCompleteScan (line 495) | default void reportCompleteScan() {
      method reportIncompleteScan (line 499) | default void reportIncompleteScan() {
      method report (line 504) | void report(Optional<Exception> exceptionOpt, boolean isFullyConsumed);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/SnapshotImpl.java
  class SnapshotImpl (line 67) | public class SnapshotImpl implements Snapshot {
    method SnapshotImpl (line 105) | public SnapshotImpl(
    method getPath (line 146) | @Override
    method getVersion (line 151) | @Override
    method getPartitionColumnNames (line 156) | @Override
    method getTimestamp (line 171) | @Override
    method getSchema (line 188) | @Override
    method getDomainMetadata (line 193) | @Override
    method getTableProperties (line 199) | @Override
    method getStatistics (line 204) | @Override
    method getScanBuilder (line 209) | @Override
    method buildUpdateTableTransaction (line 215) | @Override
    method publish (line 221) | @Override
    method writeChecksum (line 287) | @Override
    method writeCheckpoint (line 321) | public void writeCheckpoint(Engine engine) throws IOException {
    method buildReplaceTableTransaction (line 337) | public ReplaceTableTransactionBuilder buildReplaceTableTransaction(
    method getCommitter (line 342) | public Committer getCommitter() {
    method getLogPath (line 346) | public Path getLogPath() {
    method getDataPath (line 350) | public Path getDataPath() {
    method wasBuiltAsLatest (line 359) | public boolean wasBuiltAsLatest() {
    method getProtocol (line 363) | public Protocol getProtocol() {
    method getSnapshotReport (line 367) | public SnapshotReport getSnapshotReport() {
    method getPhysicalClusteringColumns (line 382) | public Optional<List<Column>> getPhysicalClusteringColumns() {
    method getActiveDomainMetadataMap (line 394) | public Map<String, DomainMetadata> getActiveDomainMetadataMap() {
    method getCurrentCrcInfo (line 399) | public Optional<CRCInfo> getCurrentCrcInfo() {
    method getMetadata (line 403) | public Metadata getMetadata() {
    method getLogSegment (line 407) | public LogSegment getLogSegment() {
    method getLazyLogSegment (line 411) | @VisibleForTesting
    method getCreateCheckpointIterator (line 416) | public CreateCheckpointIterator getCreateCheckpointIterator(Engine eng...
    method getLatestTransactionVersion (line 432) | public Optional<Long> getLatestTransactionVersion(Engine engine, Strin...
    method getMaxPublishedDeltaVersionOrThrow (line 440) | private long getMaxPublishedDeltaVersionOrThrow() {
    class SnapshotStatisticsImpl (line 458) | private class SnapshotStatisticsImpl implements SnapshotStatistics {
      method getChecksumWriteMode (line 459) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/TableChangesUtils.java
  class TableChangesUtils (line 34) | public class TableChangesUtils {
    method TableChangesUtils (line 50) | private TableChangesUtils() {}
    method addVersionAndTimestampColumns (line 63) | public static ColumnarBatch addVersionAndTimestampColumns(
    method flattenCommitsAndAddMetadata (line 105) | public static CloseableIterator<ColumnarBatch> flattenCommitsAndAddMet...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/TableConfig.java
  class TableConfig (line 32) | public class TableConfig<T> {
    class UniversalFormats (line 338) | public static class UniversalFormats {
    method validateAndNormalizeDeltaProperties (line 453) | public static Map<String, String> validateAndNormalizeDeltaProperties(
    method addConfig (line 486) | private static void addConfig(HashMap<String, TableConfig<?>> configs,...
    method TableConfig (line 501) | private TableConfig(
    method fromMetadata (line 522) | public T fromMetadata(Metadata metadata) {
    method fromMetadata (line 532) | public T fromMetadata(Map<String, String> configuration) {
    method getKey (line 543) | public String getKey() {
    method validate (line 547) | private void validate(String value) {
    method parseStringSet (line 554) | private static Set<String> parseStringSet(String value) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/TableImpl.java
  class TableImpl (line 46) | public class TableImpl implements Table {
    method forPath (line 50) | public static Table forPath(Engine engine, String path) {
    method forPath (line 63) | public static Table forPath(Engine engine, String path, Clock clock) {
    method TableImpl (line 80) | public TableImpl(String tablePath, Clock clock) {
    method getPath (line 89) | @Override
    method getLatestSnapshot (line 94) | @Override
    method getSnapshotAsOfVersion (line 103) | @Override
    method getSnapshotAsOfTimestamp (line 114) | @Override
    method checkpoint (line 128) | @Override
    method checksum (line 135) | @Override
    method createTransactionBuilder (line 142) | @Override
    method createReplaceTableTransactionBuilder (line 148) | public TransactionBuilder createReplaceTableTransactionBuilder(Engine ...
    method getClock (line 152) | public Clock getClock() {
    method getChanges (line 184) | public CloseableIterator<ColumnarBatch> getChanges(
    method getDataPath (line 205) | protected Path getDataPath() {
    method getLogPath (line 209) | protected Path getLogPath() {
    method getVersionBeforeOrAtTimestamp (line 233) | public long getVersionBeforeOrAtTimestamp(Engine engine, long millisSi...
    method getVersionAtOrAfterTimestamp (line 264) | public long getVersionAtOrAfterTimestamp(Engine engine, long millisSin...
    method loadSnapshotWithMetrics (line 275) | private SnapshotImpl loadSnapshotWithMetrics(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/TransactionBuilderImpl.java
  class TransactionBuilderImpl (line 39) | public class TransactionBuilderImpl implements TransactionBuilder {
    method TransactionBuilderImpl (line 68) | public TransactionBuilderImpl(TableImpl table, String engineInfo, Oper...
    method withSchema (line 74) | @Override
    method withPartitionColumns (line 80) | @Override
    method withClusteringColumns (line 113) | @Override
    method withTransactionId (line 119) | @Override
    method withTableProperties (line 131) | @Override
    method withTablePropertiesRemoved (line 140) | @Override
    method withMaxRetries (line 149) | @Override
    method withLogCompactionInverval (line 156) | @Override
    method withDomainMetadataSupported (line 163) | @Override
    method build (line 169) | @Override
    method buildTransactionInternal (line 201) | protected TransactionImpl buildTransactionInternal(
    method validateWriteToExistingTable (line 320) | protected void validateWriteToExistingTable(
    method validateTransactionInputs (line 361) | protected void validateTransactionInputs(Engine engine, boolean isCrea...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/TransactionImpl.java
  class TransactionImpl (line 77) | public class TransactionImpl implements Transaction {
    method getStatisticsColumns (line 84) | public static List<Column> getStatisticsColumns(Row transactionState) {
    method TransactionImpl (line 167) | public TransactionImpl(
    method getTransactionState (line 210) | @Override
    method getCommitter (line 215) | @Override
    method getPartitionColumns (line 220) | @Override
    method getSchema (line 225) | @Override
    method getReadTableVersion (line 230) | @Override
    method withCommitterProperties (line 235) | @Override
    method addDomainMetadata (line 240) | @Override
    method removeDomainMetadata (line 258) | @Override
    method commit (line 269) | @Override
    method addDomainMetadataInternal (line 303) | @VisibleForTesting
    method removeDomainMetadataInternal (line 308) | @VisibleForTesting
    method getDataPath (line 313) | public Path getDataPath() {
    method getLogPath (line 317) | public Path getLogPath() {
    method getProtocol (line 321) | public Protocol getProtocol() {
    method getSetTxnOpt (line 325) | public Optional<SetTransaction> getSetTxnOpt() {
    method getEffectiveClusteringColumns (line 329) | public Optional<List<Column>> getEffectiveClusteringColumns() {
    method isReplaceTable (line 348) | private boolean isReplaceTable() {
    method getMaxCommitAttempts (line 358) | private int getMaxCommitAttempts() {
    method isBlindAppend (line 362) | private Optional<Boolean> isBlindAppend() {
    method updateMetadata (line 369) | private void updateMetadata(Metadata metadata) {
    method handleSystemDomainMetadata (line 376) | private void handleSystemDomainMetadata(String domain, String config) {
    method commitWithRetry (line 396) | private Tuple2<ParsedDeltaData, Optional<Long>> commitWithRetry(
    method doCommit (line 507) | private Tuple2<ParsedDeltaData, Optional<Long>> doCommit(
    method generateCommitAction (line 593) | private CommitInfo generateCommitAction(Engine engine) {
    method generateInCommitTimestampForFirstCommitAttempt (line 610) | private Optional<Long> generateInCommitTimestampForFirstCommitAttempt(
    method getOperationParameters (line 624) | private Map<String, String> getOperationParameters() {
    method updateMetadataWithICTIfRequired (line 636) | private void updateMetadataWithICTIfRequired(
    method incrementMetricsForFileActionRow (line 649) | private void incrementMetricsForFileActionRow(TransactionMetrics txnMe...
    method getRemoveActionsForReplace (line 665) | private CloseableIterator<Row> getRemoveActionsForReplace(Engine engin...
    method resolveConflicts (line 682) | private TransactionRebaseState resolveConflicts(
    method getUpdatedInCommitTimestampAfterConflict (line 716) | private Optional<Long> getUpdatedInCommitTimestampAfterConflict(
    method buildTransactionCommitResult (line 730) | private TransactionCommitResult buildTransactionCommitResult(
    method buildPostCommitSnapshotOpt (line 761) | private Optional<SnapshotImpl> buildPostCommitSnapshotOpt(
    method buildPostCommitLogSegment (line 797) | private LogSegment buildPostCommitLogSegment(ParsedDeltaData committed...
    method generatePostCommitHooks (line 808) | private List<PostCommitHook> generatePostCommitHooks(
    method isReadyForCheckpoint (line 836) | private boolean isReadyForCheckpoint(long newVersion) {
    method buildPostCommitCrcInfoIfCurrentCrcAvailable (line 841) | private Optional<CRCInfo> buildPostCommitCrcInfoIfCurrentCrcAvailable(
    method recordTransactionReport (line 882) | private TransactionReport recordTransactionReport(
    method printLogForRetryableNonConflictException (line 907) | private void printLogForRetryableNonConflictException(
    method printLogForRetryableWithConflictException (line 917) | private void printLogForRetryableWithConflictException(
    class DomainMetadataState (line 932) | private class DomainMetadataState {
      method addDomain (line 938) | public void addDomain(String domain, String config) {
      method removeDomain (line 950) | public void removeDomain(String domain) {
      method getComputedDomainMetadatasToCommit (line 970) | public List<DomainMetadata> getComputedDomainMetadatasToCommit() {
      method setComputedDomainMetadatas (line 1034) | public void setComputedDomainMetadatas(List<DomainMetadata> updatedD...
      method getPostCommitDomainMetadatas (line 1041) | public Optional<Set<DomainMetadata>> getPostCommitDomainMetadatas() {
      method generateClusteringDomainMetadataIfNeeded (line 1072) | private void generateClusteringDomainMetadataIfNeeded() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/TransactionMetadataFactory.java
  class TransactionMetadataFactory (line 58) | public class TransactionMetadataFactory {
    class Output (line 71) | public static class Output {
      method Output (line 79) | public Output(
    method buildCreateTableMetadata (line 93) | static Output buildCreateTableMetadata(
    method buildReplaceTableMetadata (line 138) | static Output buildReplaceTableMetadata(
    method buildUpdateTableMetadata (line 202) | static Output buildUpdateTableMetadata(
    method TransactionMetadataFactory (line 302) | private TransactionMetadataFactory(
    method getEffectiveMetadata (line 341) | private Metadata getEffectiveMetadata() {
    method getEffectiveProtocol (line 346) | private Protocol getEffectiveProtocol() {
    method validateForUpdateTableUsingOldMetadata (line 351) | private void validateForUpdateTableUsingOldMetadata(Consumer<Metadata>...
    method performProtocolUpgrades (line 363) | private void performProtocolUpgrades(boolean clusteringRequired) {
    method handleCatalogManagedEnablement (line 398) | private void handleCatalogManagedEnablement() {
    method handleInCommitTimestampDisablement (line 451) | private void handleInCommitTimestampDisablement() {
    method performIcebergCompatUpgradesAndValidation (line 480) | private void performIcebergCompatUpgradesAndValidation() {
    method updateColumnMappingMetadataAndResolveClusteringColumns (line 544) | private void updateColumnMappingMetadataAndResolveClusteringColumns(
    method updateRowTrackingMetadata (line 561) | private void updateRowTrackingMetadata() {
    method validateMetadataChangeAndApplyTypeWidening (line 612) | private void validateMetadataChangeAndApplyTypeWidening() {
    method validateRequiredCatalogTablePropertiesSet (line 726) | private void validateRequiredCatalogTablePropertiesSet(Optional<Commit...
    method getInitialMetadata (line 760) | private static Metadata getInitialMetadata(
    method getInitialProtocol (line 776) | private static Protocol getInitialProtocol() {
    method validateSchemaAndPartColsCreateOrReplace (line 780) | private static void validateSchemaAndPartColsCreateOrReplace(
    method validateNotEnablingCatalogManagedOnReplace (line 794) | private static void validateNotEnablingCatalogManagedOnReplace(
    method getRequiredCatalogTablePropertiesIfApplicable (line 803) | private static Map<String, String> getRequiredCatalogTablePropertiesIf...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/UpdateTableTransactionBuilderImpl.java
  class UpdateTableTransactionBuilderImpl (line 34) | public class UpdateTableTransactionBuilderImpl implements UpdateTableTra...
    method UpdateTableTransactionBuilderImpl (line 57) | public UpdateTableTransactionBuilderImpl(
    method withUpdatedSchema (line 67) | @Override
    method withTablePropertiesAdded (line 73) | @Override
    method withTablePropertiesRemoved (line 83) | @Override
    method withClusteringColumns (line 93) | @Override
    method withTransactionId (line 103) | @Override
    method withMaxRetries (line 115) | @Override
    method withLogCompactionInterval (line 122) | @Override
    method withClock (line 129) | @VisibleForTesting
    method build (line 135) | @Override
    method validateTablePropertiesAddedRemovedNoOverlap (line 172) | private void validateTablePropertiesAddedRemovedNoOverlap() {
    method validateIsUpdateOperation (line 184) | private void validateIsUpdateOperation(Operation operation) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/AddCDCFile.java
  class AddCDCFile (line 21) | public class AddCDCFile {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/AddFile.java
  class AddFile (line 36) | public class AddFile extends RowBackedAction {
    method convertDataFileStatus (line 76) | public static AddFile convertDataFileStatus(
    method createAddFileRow (line 106) | public static Row createAddFileRow(
    method AddFile (line 147) | public AddFile(Row row) {
    method getPath (line 151) | public String getPath() {
    method getPartitionValues (line 155) | public MapValue getPartitionValues() {
    method getSize (line 159) | public long getSize() {
    method getModificationTime (line 163) | public long getModificationTime() {
    method getDataChange (line 167) | public boolean getDataChange() {
    method getDeletionVector (line 171) | public Optional<DeletionVectorDescriptor> getDeletionVector() {
    method getTags (line 177) | public Optional<MapValue> getTags() {
    method getStatsJson (line 182) | public Optional<String> getStatsJson() {
    method getBaseRowId (line 193) | public Optional<Long> getBaseRowId() {
    method getDefaultRowCommitVersion (line 198) | public Optional<Long> getDefaultRowCommitVersion() {
    method getNumRecords (line 203) | public Optional<Long> getNumRecords() {
    method getStats (line 226) | public Optional<DataFileStatistics> getStats(StructType physicalSchema) {
    method withNewBaseRowId (line 236) | public AddFile withNewBaseRowId(long baseRowId) {
    method withNewDefaultRowCommitVersion (line 241) | public AddFile withNewDefaultRowCommitVersion(long defaultRowCommitVer...
    method toRemoveFileRow (line 253) | public Row toRemoveFileRow(boolean dataChange, Optional<Long> deletion...
    method toString (line 284) | @Override
    method equals (line 303) | @Override
    method hashCode (line 324) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/CommitInfo.java
  class CommitInfo (line 63) | public class CommitInfo {
    method fromColumnVector (line 94) | public static CommitInfo fromColumnVector(ColumnVector vector, int row...
    method unsafeGetRequiredIctFromPublishedDeltaFile (line 129) | public static long unsafeGetRequiredIctFromPublishedDeltaFile(
    method getRequiredIctFromDeltaFile (line 140) | public static long getRequiredIctFromDeltaFile(
    method extractRequiredIctFromCommitInfoOpt (line 153) | public static long extractRequiredIctFromCommitInfoOpt(
    method unsafeTryReadCommitInfoFromPublishedDeltaFile (line 168) | public static Optional<CommitInfo> unsafeTryReadCommitInfoFromPublishe...
    method tryReadCommitInfoFromDeltaFile (line 180) | public static Optional<CommitInfo> tryReadCommitInfoFromDeltaFile(
    method CommitInfo (line 226) | public CommitInfo(
    method getTimestamp (line 245) | public long getTimestamp() {
    method getEngineInfo (line 249) | public Optional<String> getEngineInfo() {
    method getOperation (line 253) | public Optional<String> getOperation() {
    method getOperationParameters (line 257) | public Map<String, String> getOperationParameters() {
    method getIsBlindAppend (line 261) | public Optional<Boolean> getIsBlindAppend() {
    method getTxnId (line 265) | public Optional<String> getTxnId() {
    method getInCommitTimestamp (line 269) | public Optional<Long> getInCommitTimestamp() {
    method getOperationMetrics (line 273) | public Map<String, String> getOperationMetrics() {
    method setInCommitTimestamp (line 277) | public void setInCommitTimestamp(Optional<Long> inCommitTimestamp) {
    method toRow (line 286) | public Row toRow() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/DeletionVectorDescriptor.java
  class DeletionVectorDescriptor (line 42) | public class DeletionVectorDescriptor {
    method fromRow (line 47) | public static DeletionVectorDescriptor fromRow(Row row) {
    method fromColumnVector (line 62) | public static DeletionVectorDescriptor fromColumnVector(ColumnVector v...
    method DeletionVectorDescriptor (line 136) | public DeletionVectorDescriptor(
    method getStorageType (line 149) | public String getStorageType() {
    method getPathOrInlineDv (line 153) | public String getPathOrInlineDv() {
    method getOffset (line 157) | public Optional<Integer> getOffset() {
    method getSizeInBytes (line 161) | public int getSizeInBytes() {
    method getCardinality (line 165) | public long getCardinality() {
    method getUniqueId (line 169) | public String getUniqueId() {
    method serializeToBase64 (line 183) | public String serializeToBase64() {
    method isInline (line 206) | public boolean isInline() {
    method isOnDisk (line 210) | public boolean isOnDisk() {
    method inlineData (line 214) | public byte[] inlineData() {
    method getAbsolutePath (line 220) | public String getAbsolutePath(String tableLocation) {
    method assembleDeletionVectorPath (line 253) | private Path assembleDeletionVectorPath(String targetParentPath, UUID ...
    method toString (line 262) | @Override
    method toRow (line 271) | public Row toRow() {
    method equals (line 289) | @Override
    method hashCode (line 305) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/DomainMetadata.java
  class DomainMetadata (line 32) | public class DomainMetadata {
    method isUserControlledDomain (line 39) | public static boolean isUserControlledDomain(String domain) {
    method isSystemDomainSupportedSetFromTxn (line 54) | public static boolean isSystemDomainSupportedSetFromTxn(String domain) {
    method fromColumnVector (line 65) | public static DomainMetadata fromColumnVector(ColumnVector vector, int...
    method fromRow (line 84) | public static DomainMetadata fromRow(Row row) {
    method DomainMetadata (line 113) | public DomainMetadata(String domain, String configuration, boolean rem...
    method getDomain (line 119) | public String getDomain() {
    method getConfiguration (line 123) | public String getConfiguration() {
    method isRemoved (line 127) | public boolean isRemoved() {
    method toRow (line 136) | public Row toRow() {
    method removed (line 145) | public DomainMetadata removed() {
    method toString (line 150) | @Override
    method equals (line 157) | @Override
    method hashCode (line 167) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/Format.java
  class Format (line 29) | public class Format implements Serializable {
    method fromColumnVector (line 32) | public static Format fromColumnVector(ColumnVector vector, int rowId) {
    method Format (line 55) | public Format(String provider, Map<String, String> options) {
    method Format (line 60) | public Format() {
    method getProvider (line 65) | public String getProvider() {
    method getOptions (line 69) | public Map<String, String> getOptions() {
    method toRow (line 78) | public Row toRow() {
    method toString (line 86) | @Override
    method equals (line 91) | @Override
    method hashCode (line 100) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/GenerateIcebergCompatActionUtils.java
  class GenerateIcebergCompatActionUtils (line 49) | public final class GenerateIcebergCompatActionUtils {
    method generateIcebergCompatWriterV1AddAction (line 69) | public static Row generateIcebergCompatWriterV1AddAction(
    method generateIcebergCompatWriterV1AddAction (line 110) | public static Row generateIcebergCompatWriterV1AddAction(
    method generateIcebergCompatWriterV3AddAction (line 144) | public static Row generateIcebergCompatWriterV3AddAction(
    method generateIcebergCompatWriterV1RemoveAction (line 210) | public static Row generateIcebergCompatWriterV1RemoveAction(
    method generateIcebergCompatWriterV3RemoveAction (line 266) | public static Row generateIcebergCompatWriterV3RemoveAction(
    method validateIcebergWriterCompatV1Enabled (line 325) | private static void validateIcebergWriterCompatV1Enabled(Map<String, S...
    method validateIcebergWriterCompatV3Enabled (line 340) | private static void validateIcebergWriterCompatV3Enabled(Map<String, S...
    method validateIcebergDeletionVectorsEnabled (line 354) | private static void validateIcebergDeletionVectorsEnabled(Map<String, ...
    method validateMaxRetriesSetToZero (line 369) | private static void validateMaxRetriesSetToZero(Row transactionState) {
    method blockUpdatingAppendOnlyTables (line 379) | private static void blockUpdatingAppendOnlyTables(
    method blockPartitionedTables (line 388) | private static void blockPartitionedTables(
    method convertRemoveDataFileStatus (line 408) | @VisibleForTesting
    method createRemoveFileRowWithExtendedFileMetadata (line 431) | @VisibleForTesting

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/Metadata.java
  class Metadata (line 36) | public class Metadata implements Serializable {
    method fromRow (line 39) | public static Metadata fromRow(Row row) {
    method fromColumnVector (line 46) | public static Metadata fromColumnVector(ColumnVector vector, int rowId) {
    method Metadata (line 103) | public Metadata(
    method Metadata (line 125) | private Metadata(
    method withMergedConfiguration (line 171) | public Metadata withMergedConfiguration(Map<String, String> configurat...
    method withConfigurationKeysUnset (line 181) | public Metadata withConfigurationKeysUnset(Set<String> keysToUnset) {
    method withReplacedConfiguration (line 191) | public Metadata withReplacedConfiguration(Map<String, String> newConfi...
    method withNewSchema (line 204) | public Metadata withNewSchema(StructType schema) {
    method toString (line 217) | @Override
    method getSchemaString (line 251) | public String getSchemaString() {
    method getSchema (line 255) | public StructType getSchema() {
    method getPartitionColumns (line 259) | public ArrayValue getPartitionColumns() {
    method getPartitionColNames (line 264) | public Set<String> getPartitionColNames() {
    method getDataSchema (line 269) | public StructType getDataSchema() {
    method getId (line 273) | public String getId() {
    method getName (line 277) | public Optional<String> getName() {
    method getDescription (line 281) | public Optional<String> getDescription() {
    method getFormat (line 285) | public Format getFormat() {
    method getCreatedTime (line 289) | public Optional<Long> getCreatedTime() {
    method getConfigurationMapValue (line 293) | public MapValue getConfigurationMapValue() {
    method getConfiguration (line 297) | public Map<String, String> getConfiguration() {
    method getPhysicalSchema (line 307) | public StructType getPhysicalSchema() {
    method filterOutUnchangedProperties (line 319) | public Map<String, String> filterOutUnchangedProperties(Map<String, St...
    method toRow (line 334) | public Row toRow() {
    method hashCode (line 348) | @Override
    method equals (line 361) | @Override
    method loadPartitionColNames (line 378) | private Set<String> loadPartitionColNames() {
    method ensureNoMetadataColumns (line 394) | private void ensureNoMetadataColumns(StructType schema) {
    class SerializableMetadata (line 407) | private static class SerializableMetadata implements Serializable {
      method SerializableMetadata (line 420) | SerializableMetadata(Metadata metadata) {
      method readResolve (line 433) | private Object readResolve() {
    method writeReplace (line 458) | private Object writeReplace() {
    method readObject (line 463) | private void readObject(ObjectInputStream stream) throws InvalidObject...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/Protocol.java
  class Protocol (line 44) | public class Protocol implements Serializable {
    method fromRow (line 57) | public static Protocol fromRow(Row row) {
    method fromColumnVector (line 70) | public static Protocol fromColumnVector(ColumnVector vector, int rowId) {
    method Protocol (line 102) | public Protocol(int minReaderVersion, int minWriterVersion) {
    method Protocol (line 106) | public Protocol(
    method getMinReaderVersion (line 122) | public int getMinReaderVersion() {
    method getMinWriterVersion (line 127) | public int getMinWriterVersion() {
    method getReaderFeatures (line 135) | public Set<String> getReaderFeatures() {
    method getWriterFeatures (line 143) | public Set<String> getWriterFeatures() {
    method getReaderAndWriterFeatures (line 151) | public Set<String> getReaderAndWriterFeatures() {
    method supportsReaderFeatures (line 162) | public boolean supportsReaderFeatures() {
    method supportsWriterFeatures (line 170) | public boolean supportsWriterFeatures() {
    method toString (line 174) | @Override
    method equals (line 185) | @Override
    method hashCode (line 197) | @Override
    method toRow (line 208) | public Row toRow() {
    method getImplicitlySupportedFeatures (line 241) | public Set<TableFeature> getImplicitlySupportedFeatures() {
    method getExplicitlySupportedFeatures (line 269) | public Set<TableFeature> getExplicitlySupportedFeatures() {
    method getImplicitlyAndExplicitlySupportedFeatures (line 284) | public Set<TableFeature> getImplicitlyAndExplicitlySupportedFeatures() {
    method getImplicitlyAndExplicitlySupportedReaderWriterFeatures (line 297) | public Set<TableFeature> getImplicitlyAndExplicitlySupportedReaderWrit...
    method withFeatures (line 311) | public Protocol withFeatures(Iterable<TableFeature> newFeatures) {
    method withFeature (line 344) | public Protocol withFeature(TableFeature feature) {
    method canUpgradeTo (line 396) | public boolean canUpgradeTo(Protocol to) {
    method normalized (line 417) | public Protocol normalized() {
    method denormalized (line 455) | public Protocol denormalized() {
    method denormalizedNormalized (line 474) | public Protocol denormalizedNormalized() {
    method merge (line 482) | public Protocol merge(Protocol... others) {
    method supportsFeature (line 521) | public boolean supportsFeature(TableFeature feature) {
    method validate (line 538) | protected void validate() {
    method isLegacyProtocol (line 601) | private boolean isLegacyProtocol() {
    method isFeatureProtocol (line 606) | private boolean isFeatureProtocol() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/RemoveFile.java
  class RemoveFile (line 26) | public class RemoveFile extends RowBackedAction {
    method RemoveFile (line 50) | public RemoveFile(Row row) {
    method getPath (line 54) | public String getPath() {
    method getDeletionTimestamp (line 58) | public Optional<Long> getDeletionTimestamp() {
    method getDataChange (line 64) | public boolean getDataChange() {
    method getExtendedFileMetadata (line 68) | public Optional<Boolean> getExtendedFileMetadata() {
    method getPartitionValues (line 74) | public Optional<MapValue> getPartitionValues() {
    method getSize (line 80) | public Optional<Long> getSize() {
    method getStatsJson (line 86) | public Optional<String> getStatsJson() {
    method getNumRecords (line 92) | public Optional<Long> getNumRecords() {
    method getStats (line 115) | public Optional<DataFileStatistics> getStats(StructType physicalSchema) {
    method getTags (line 124) | public Optional<MapValue> getTags() {
    method getDeletionVector (line 129) | public Optional<DeletionVectorDescriptor> getDeletionVector() {
    method getBaseRowId (line 135) | public Optional<Long> getBaseRowId() {
    method getDefaultRowCommitVersion (line 140) | public Optional<Long> getDefaultRowCommitVersion() {
    method toString (line 145) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/RowBackedAction.java
  class RowBackedAction (line 33) | public abstract class RowBackedAction {
    method RowBackedAction (line 38) | protected RowBackedAction(Row row) {
    method getFieldIndex (line 46) | protected int getFieldIndex(String fieldName) {
    method getFieldIndexOpt (line 57) | protected Optional<Integer> getFieldIndexOpt(String fieldName) {
    method toRowWithOverriddenValue (line 66) | protected Row toRowWithOverriddenValue(String fieldName, Object value) {
    method toRow (line 72) | public final Row toRow() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/SetTransaction.java
  class SetTransaction (line 27) | public class SetTransaction {
    method fromColumnVector (line 34) | public static SetTransaction fromColumnVector(ColumnVector vector, int...
    method SetTransaction (line 50) | public SetTransaction(String appId, Long version, Optional<Long> lastU...
    method getAppId (line 56) | public String getAppId() {
    method getVersion (line 60) | public long getVersion() {
    method getLastUpdated (line 64) | public Optional<Long> getLastUpdated() {
    method toRow (line 73) | public Row toRow() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/actions/SingleAction.java
  class SingleAction (line 25) | public class SingleAction {
    method createAddFileSingleAction (line 82) | public static Row createAddFileSingleAction(Row addFile) {
    method createProtocolSingleAction (line 88) | public static Row createProtocolSingleAction(Row protocol) {
    method createMetadataSingleAction (line 94) | public static Row createMetadataSingleAction(Row metadata) {
    method createRemoveFileSingleAction (line 100) | public static Row createRemoveFileSingleAction(Row remove) {
    method createCommitInfoSingleAction (line 106) | public static Row createCommitInfoSingleAction(Row commitInfo) {
    method createDomainMetadataSingleAction (line 112) | public static Row createDomainMetadataSingleAction(Row domainMetadata) {
    method createTxnSingleAction (line 117) | public static Row createTxnSingleAction(Row txn) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checkpoints/CheckpointInstance.java
  class CheckpointInstance (line 28) | public class CheckpointInstance implements Comparable<CheckpointInstance> {
    type CheckpointFormat (line 30) | public enum CheckpointFormat {
      method usesSidecars (line 40) | public boolean usesSidecars() {
    method CheckpointInstance (line 55) | public CheckpointInstance(String path) {
    method CheckpointInstance (line 85) | public CheckpointInstance(long version) {
    method CheckpointInstance (line 89) | public CheckpointInstance(long version, Optional<Integer> numParts) {
    method isNotLaterThan (line 100) | boolean isNotLaterThan(CheckpointInstance other) {
    method isEarlierThan (line 107) | boolean isEarlierThan(CheckpointInstance other) {
    method getCorrespondingFiles (line 114) | public List<Path> getCorrespondingFiles(Path path) {
    method compareTo (line 139) | @Override
    method toString (line 164) | @Override
    method equals (line 177) | @Override
    method hashCode (line 190) | @Override
    method getPathName (line 198) | private String getPathName(String path) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checkpoints/CheckpointMetaData.java
  class CheckpointMetaData (line 29) | public class CheckpointMetaData {
    method fromRow (line 30) | public static CheckpointMetaData fromRow(Row row) {
    method CheckpointMetaData (line 50) | public CheckpointMetaData(long version, long size, Optional<Long> part...
    method CheckpointMetaData (line 54) | public CheckpointMetaData(
    method toRow (line 62) | public Row toRow() {
    method toString (line 74) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checkpoints/CheckpointMetadataAction.java
  class CheckpointMetadataAction (line 30) | public class CheckpointMetadataAction {
    method CheckpointMetadataAction (line 40) | public CheckpointMetadataAction(long version, Map<String, String> tags) {
    method getVersion (line 45) | public long getVersion() {
    method getTags (line 49) | public Map<String, String> getTags() {
    method toRow (line 53) | public Row toRow() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checkpoints/Checkpointer.java
  class Checkpointer (line 47) | public class Checkpointer {
    method checkpoint (line 60) | public static void checkpoint(Engine engine, Clock clock, SnapshotImpl...
    method shouldPerformLogCleanup (line 128) | private static boolean shouldPerformLogCleanup(SnapshotImpl snapshot) {
    method getLatestCompleteCheckpointFromList (line 143) | public static Optional<CheckpointInstance> getLatestCompleteCheckpoint...
    method findLastCompleteCheckpointBefore (line 173) | public static Optional<CheckpointInstance> findLastCompleteCheckpointB...
    method findLastCompleteCheckpointBeforeHelper (line 182) | public static Tuple2<Optional<CheckpointInstance>, Long> findLastCompl...
    method validCheckpointFile (line 261) | private static boolean validCheckpointFile(FileStatus fileStatus) {
    method Checkpointer (line 273) | public Checkpointer(Path logPath) {
    method readLastCheckpointFile (line 278) | public Optional<CheckpointMetaData> readLastCheckpointFile(Engine engi...
    method writeLastCheckpointFile (line 289) | public void writeLastCheckpointFile(Engine engine, CheckpointMetaData ...
    method loadMetadataFromFile (line 311) | private Optional<CheckpointMetaData> loadMetadataFromFile(Engine engin...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checkpoints/SidecarFile.java
  class SidecarFile (line 28) | public class SidecarFile {
    method fromColumnVector (line 35) | public static SidecarFile fromColumnVector(ColumnVector vector, int ro...
    method SidecarFile (line 49) | public SidecarFile(String path, long sizeInBytes, long modificationTim...
    method getPath (line 55) | public String getPath() {
    method getSizeInBytes (line 59) | public long getSizeInBytes() {
    method getModificationTime (line 63) | public long getModificationTime() {
    method toRow (line 67) | public Row toRow() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checksum/CRCInfo.java
  class CRCInfo (line 41) | public class CRCInfo {
    method fromColumnarBatch (line 72) | public static Optional<CRCInfo> fromColumnarBatch(
    method CRCInfo (line 139) | public CRCInfo(
    method getVersion (line 172) | public long getVersion() {
    method getMetadata (line 177) | public Metadata getMetadata() {
    method getProtocol (line 182) | public Protocol getProtocol() {
    method getNumFiles (line 186) | public long getNumFiles() {
    method getTableSizeBytes (line 190) | public long getTableSizeBytes() {
    method getTxnId (line 194) | public Optional<String> getTxnId() {
    method getDomainMetadata (line 198) | public Optional<Set<DomainMetadata>> getDomainMetadata() {
    method getFileSizeHistogram (line 203) | public Optional<FileSizeHistogram> getFileSizeHistogram() {
    method toRow (line 212) | public Row toRow() {
    method hashCode (line 239) | @Override
    method equals (line 252) | @Override
    method getSchemaIndex (line 268) | private static int getSchemaIndex(String fieldName) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checksum/ChecksumReader.java
  class ChecksumReader (line 31) | public class ChecksumReader {
    method tryReadChecksumFile (line 42) | public static Optional<CRCInfo> tryReadChecksumFile(Engine engine, Fil...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checksum/ChecksumUtils.java
  class ChecksumUtils (line 46) | public class ChecksumUtils {
    method ChecksumUtils (line 48) | private ChecksumUtils() {}
    method computeStateAndWriteChecksum (line 99) | public static void computeStateAndWriteChecksum(Engine engine, LogSegm...
    method buildCrcInfoWithFullLogReplay (line 143) | private static CRCInfo buildCrcInfoWithFullLogReplay(
    method buildCrcInfoIncrementally (line 220) | private static Optional<CRCInfo> buildCrcInfoIncrementally(
    method processAddRecord (line 369) | private static void processAddRecord(ColumnVector addVector, StateTrac...
    method processDomainMetadataRecord (line 384) | private static void processDomainMetadataRecord(
    method processMetadataRecord (line 395) | private static void processMetadataRecord(
    method processProtocolRecord (line 405) | private static void processProtocolRecord(
    method getNonRemovedDomainMetadata (line 415) | private static Set<DomainMetadata> getNonRemovedDomainMetadata(StateTr...
    class StateTracker (line 422) | private static class StateTracker {
    method validateDeltaContinuity (line 432) | private static void validateDeltaContinuity(List<FileStatus> deltas, l...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/checksum/ChecksumWriter.java
  class ChecksumWriter (line 31) | public class ChecksumWriter {
    method ChecksumWriter (line 37) | public ChecksumWriter(Path logPath) {
    method writeCheckSum (line 42) | public void writeCheckSum(Engine engine, CRCInfo crcInfo) throws IOExc...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/clustering/ClusteringMetadataDomain.java
  class ClusteringMetadataDomain (line 28) | public final class ClusteringMetadataDomain extends JsonMetadataDomain {
    method fromClusteringColumns (line 38) | public static ClusteringMetadataDomain fromClusteringColumns(List<Colu...
    method fromJsonConfiguration (line 50) | public static ClusteringMetadataDomain fromJsonConfiguration(String js...
    method fromSnapshot (line 61) | public static Optional<ClusteringMetadataDomain> fromSnapshot(Snapshot...
    method ClusteringMetadataDomain (line 73) | @JsonCreator
    method getDomainName (line 79) | @Override
    method getClusteringColumns (line 84) | @JsonIgnore

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/clustering/ClusteringUtils.java
  class ClusteringUtils (line 23) | public class ClusteringUtils {
    method ClusteringUtils (line 25) | private ClusteringUtils() {
    method getClusteringDomainMetadata (line 33) | public static DomainMetadata getClusteringDomainMetadata(List<Column> ...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/columndefaults/ColumnDefaults.java
  class ColumnDefaults (line 37) | public class ColumnDefaults {
    method blockWriteIfEnabled (line 42) | public static void blockWriteIfEnabled(Row transactionState) {
    method validateSchema (line 61) | public static void validateSchema(
    method validateSchemaForIcebergCompat (line 94) | public static void validateSchemaForIcebergCompat(StructType schema, S...
    method extractFieldsWithDefaultValues (line 108) | private static Stream<StructField> extractFieldsWithDefaultValues(Stru...
    method getRawDefaultValue (line 115) | public static String getRawDefaultValue(StructField field) {
    method validateLiteral (line 133) | private static void validateLiteral(DataType type, String value) {
    method stripQuotes (line 187) | private static String stripQuotes(String input, boolean require) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/commit/DefaultFileSystemManagedTableOnlyCommitter.java
  class DefaultFileSystemManagedTableOnlyCommitter (line 39) | public class DefaultFileSystemManagedTableOnlyCommitter implements Commi...
    method DefaultFileSystemManagedTableOnlyCommitter (line 47) | private DefaultFileSystemManagedTableOnlyCommitter() {}
    method commit (line 49) | @Override
    method validateProtocol (line 90) | private void validateProtocol(Protocol protocol) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/commitrange/CommitRangeBuilderImpl.java
  class CommitRangeBuilderImpl (line 39) | public class CommitRangeBuilderImpl implements CommitRangeBuilder {
    class Context (line 41) | public static class Context {
      method Context (line 48) | public Context(String unresolvedPath, CommitBoundary startBoundary) {
    method CommitRangeBuilderImpl (line 56) | public CommitRangeBuilderImpl(String unresolvedPath, CommitBoundary st...
    method withEndBoundary (line 64) | @Override
    method withLogData (line 70) | @Override
    method withMaxCatalogVersion (line 76) | @Override
    method build (line 83) | @Override
    method validateInputOnBuild (line 93) | private void validateInputOnBuild() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/commitrange/CommitRangeFactory.java
  class CommitRangeFactory (line 43) | class CommitRangeFactory {
    method CommitRangeFactory (line 51) | CommitRangeFactory(Engine engine, CommitRangeBuilderImpl.Context ctx) {
    method create (line 57) | CommitRangeImpl create(Engine engine) {
    method resolveStartVersion (line 93) | private long resolveStartVersion(Engine engine, List<ParsedCatalogComm...
    method resolveEndVersionIfSpecified (line 116) | private Optional<Long> resolveEndVersionIfSpecified(
    method validateVersionRange (line 143) | private void validateVersionRange(long startVersion, Optional<Long> en...
    method logResolvedVersions (line 152) | private void logResolvedVersions(long startVersion, Optional<Long> end...
    method extractLatestVersion (line 162) | private long extractLatestVersion(List<ParsedDeltaData> deltaDatas) {
    method getFileBasedRatifiedCommits (line 166) | private List<ParsedCatalogCommitData> getFileBasedRatifiedCommits() {
    method getDeltasForVersionRangeWithCatalogPriority (line 184) | private List<ParsedDeltaData> getDeltasForVersionRangeWithCatalogPrior...
    method getPublishedDeltasInVersionRange (line 216) | private List<ParsedDeltaData> getPublishedDeltasInVersionRange(
    method validatePublishedPlusRatifiedDeltas (line 247) | private void validatePublishedPlusRatifiedDeltas(
    method validateDeltasMatchVersionRange (line 275) | private void validateDeltasMatchVersionRange(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/commitrange/CommitRangeImpl.java
  class CommitRangeImpl (line 41) | public class CommitRangeImpl implements CommitRange {
    method CommitRangeImpl (line 51) | public CommitRangeImpl(
    method getStartVersion (line 73) | @Override
    method getEndVersion (line 78) | @Override
    method getQueryStartBoundary (line 83) | @Override
    method getQueryEndBoundary (line 88) | @Override
    method getDeltaFiles (line 93) | @VisibleForTesting
    method getActions (line 98) | @Override
    method getCommitActions (line 108) | @Override
    method validateParameters (line 120) | private void validateParameters(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/compaction/LogCompactionWriter.java
  class LogCompactionWriter (line 41) | public class LogCompactionWriter {
    method LogCompactionWriter (line 54) | public LogCompactionWriter(
    method writeLogCompactionFile (line 67) | public void writeLogCompactionFile(Engine engine) throws IOException {
    method shouldCompact (line 124) | public static boolean shouldCompact(long commitVersion, long compactio...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/ChildVectorBasedRow.java
  class ChildVectorBasedRow (line 26) | public abstract class ChildVectorBasedRow implements Row {
    method ChildVectorBasedRow (line 31) | public ChildVectorBasedRow(int rowId, StructType schema) {
    method getSchema (line 36) | @Override
    method isNullAt (line 41) | @Override
    method getBoolean (line 46) | @Override
    method getByte (line 51) | @Override
    method getShort (line 56) | @Override
    method getInt (line 61) | @Override
    method getLong (line 66) | @Override
    method getFloat (line 71) | @Override
    method getDouble (line 76) | @Override
    method getString (line 81) | @Override
    method getDecimal (line 86) | @Override
    method getBinary (line 91) | @Override
    method getStruct (line 96) | @Override
    method getArray (line 101) | @Override
    method getMap (line 106) | @Override
    method getChild (line 111) | protected abstract ColumnVector getChild(int ordinal);

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/ColumnarBatchRow.java
  class ColumnarBatchRow (line 23) | public class ColumnarBatchRow extends ChildVectorBasedRow {
    method ColumnarBatchRow (line 27) | public ColumnarBatchRow(ColumnarBatch columnarBatch, int rowId) {
    method getChild (line 32) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/DelegateRow.java
  class DelegateRow (line 33) | public class DelegateRow implements Row {
    method DelegateRow (line 44) | public DelegateRow(Row row, Map<Integer, Object> overrides) {
    method getSchema (line 61) | @Override
    method isNullAt (line 66) | @Override
    method getBoolean (line 74) | @Override
    method getByte (line 83) | @Override
    method getShort (line 92) | @Override
    method getInt (line 101) | @Override
    method getLong (line 110) | @Override
    method getFloat (line 119) | @Override
    method getDouble (line 128) | @Override
    method getString (line 137) | @Override
    method getDecimal (line 146) | @Override
    method getBinary (line 155) | @Override
    method getStruct (line 164) | @Override
    method getArray (line 173) | @Override
    method getMap (line 184) | @Override
    method throwIfUnsafeAccess (line 195) | private void throwIfUnsafeAccess(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/GenericColumnVector.java
  class GenericColumnVector (line 27) | public class GenericColumnVector implements ColumnVector {
    method GenericColumnVector (line 31) | public GenericColumnVector(List<?> values, DataType dataType) {
    method getDataType (line 36) | @Override
    method getSize (line 41) | @Override
    method close (line 46) | @Override
    method isNullAt (line 51) | @Override
    method getBoolean (line 57) | @Override
    method getByte (line 63) | @Override
    method getShort (line 69) | @Override
    method getInt (line 75) | @Override
    method getLong (line 81) | @Override
    method getFloat (line 90) | @Override
    method getDouble (line 96) | @Override
    method getDecimal (line 102) | @Override
    method getString (line 108) | @Override
    method getBinary (line 114) | @Override
    method getArray (line 120) | @Override
    method getMap (line 126) | @Override
    method getChild (line 132) | @Override
    method validateRowId (line 143) | private void validateRowId(int rowId) {
    method getValidatedValue (line 147) | private Object getValidatedValue(int rowId, Class<?> expectedType) {
    method extractChildValues (line 155) | private List<?> extractChildValues(int ordinal, DataType childDatatype) {
    method extractChildValue (line 161) | private Object extractChildValue(Object element, int ordinal, DataType...
    method extractTypedValue (line 172) | private Object extractTypedValue(Row row, int ordinal, DataType childD...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/GenericRow.java
  class GenericRow (line 29) | public class GenericRow implements Row {
    method GenericRow (line 38) | public GenericRow(StructType schema, Map<Integer, Object> ordinalToVal...
    method getSchema (line 43) | @Override
    method isNullAt (line 48) | @Override
    method getBoolean (line 53) | @Override
    method getByte (line 59) | @Override
    method getShort (line 65) | @Override
    method getInt (line 71) | @Override
    method getLong (line 77) | @Override
    method getFloat (line 83) | @Override
    method getDouble (line 89) | @Override
    method getString (line 95) | @Override
    method getDecimal (line 101) | @Override
    method getBinary (line 107) | @Override
    method getStruct (line 113) | @Override
    method getArray (line 119) | @Override
    method getMap (line 126) | @Override
    method getValue (line 133) | private Object getValue(int ordinal) {
    method throwIfUnsafeAccess (line 137) | private void throwIfUnsafeAccess(
    method dataType (line 149) | private DataType dataType(int ordinal) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/ScanStateRow.java
  class ScanStateRow (line 36) | public class ScanStateRow extends GenericRow {
    method of (line 52) | public static ScanStateRow of(
    method ScanStateRow (line 69) | public ScanStateRow(HashMap<Integer, Object> valueMap) {
    method getConfiguration (line 80) | public static Map<String, String> getConfiguration(Row scanState) {
    method getLogicalSchema (line 91) | public static StructType getLogicalSchema(Row scanState) {
    method getPhysicalDataReadSchema (line 104) | public static StructType getPhysicalDataReadSchema(Row scanState) {
    method getPartitionColumns (line 116) | public static List<String> getPartitionColumns(Row scanState) {
    method getColumnMappingMode (line 124) | public static ColumnMappingMode getColumnMappingMode(Row scanState) {
    method getTableRoot (line 134) | public static Path getTableRoot(Row scanState) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/SelectionColumnVector.java
  class SelectionColumnVector (line 25) | public class SelectionColumnVector implements ColumnVector {
    method SelectionColumnVector (line 30) | public SelectionColumnVector(RoaringBitmapArray bitmap, ColumnVector r...
    method getDataType (line 35) | @Override
    method getSize (line 40) | @Override
    method close (line 45) | @Override
    method isNullAt (line 50) | @Override
    method getBoolean (line 55) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/StructRow.java
  class StructRow (line 25) | public class StructRow extends ChildVectorBasedRow {
    method fromStructVector (line 27) | public static StructRow fromStructVector(ColumnVector columnVector, in...
    method StructRow (line 38) | private StructRow(ColumnVector structVector, int rowId, StructType sch...
    method getChild (line 43) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/data/TransactionStateRow.java
  class TransactionStateRow (line 35) | public class TransactionStateRow extends GenericRow {
    method of (line 53) | public static TransactionStateRow of(
    method TransactionStateRow (line 67) | private TransactionStateRow(HashMap<Integer, Object> valueMap) {
    method getLogicalSchema (line 78) | public static StructType getLogicalSchema(Row transactionState) {
    method getPhysicalSchema (line 91) | public static StructType getPhysicalSchema(Row transactionState) {
    method getConfiguration (line 104) | public static Map<String, String> getConfiguration(Row transactionStat...
    method isIcebergCompatV2Enabled (line 115) | public static boolean isIcebergCompatV2Enabled(Row transactionState) {
    method isIcebergCompatV3Enabled (line 128) | public static boolean isIcebergCompatV3Enabled(Row transactionState) {
    method getColumnMappingMode (line 141) | public static ColumnMapping.ColumnMappingMode getColumnMappingMode(Row...
    method getPartitionColumnsList (line 155) | public static List<String> getPartitionColumnsList(Row transactionStat...
    method getTablePath (line 167) | public static String getTablePath(Row transactionState) {
    method getMaxRetries (line 175) | public static int getMaxRetries(Row transactionState) {
    method getProtocol (line 186) | public static Protocol getProtocol(Row transactionState) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/deletionvectors/Base85Codec.java
  class Base85Codec (line 34) | public final class Base85Codec {
    method getEncodeMap (line 45) | private static byte[] getEncodeMap() {
    method getDecodeMap (line 67) | private static byte[] getDecodeMap() {
    method decodeUUID (line 84) | public static UUID decodeUUID(String encoded) {
    method decodeBytes (line 95) | public static byte[] decodeBytes(String encoded, int outputLength) {
    method decodeAlignedBytes (line 113) | public static byte[] decodeAlignedBytes(String encoded) {
    method decodeBlocks (line 122) | private static ByteBuffer decodeBlocks(String encoded) {
    method uuidFromByteBuffer (line 159) | private static UUID uuidFromByteBuffer(ByteBuffer buffer) {
    method encodeUUID (line 171) | public static String encodeUUID(UUID id) {
    method uuidToByteBuffer (line 176) | private static ByteBuffer uuidToByteBuffer(UUID id) {
    method encodeBlocks (line 189) | private static String encodeBlocks(ByteBuffer buffer) {
    method encodeBytes (line 218) | public static String encodeBytes(byte[] input) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/deletionvectors/DeletionVectorStoredBitmap.java
  class DeletionVectorStoredBitmap (line 39) | public class DeletionVectorStoredBitmap {
    method DeletionVectorStoredBitmap (line 44) | public DeletionVectorStoredBitmap(
    method load (line 54) | public RoaringBitmapArray load(FileSystemClient fileSystemClient) thro...
    method loadFromStream (line 95) | private RoaringBitmapArray loadFromStream(ByteArrayInputStream stream)...
    method calculateChecksum (line 124) | private int calculateChecksum(byte[] data) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/deletionvectors/DeletionVectorUtils.java
  class DeletionVectorUtils (line 26) | public class DeletionVectorUtils {
    method loadNewDvAndBitmap (line 27) | public static Tuple2<DeletionVectorDescriptor, RoaringBitmapArray> loa...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/deletionvectors/RoaringBitmapArray.java
  class RoaringBitmapArray (line 50) | public final class RoaringBitmapArray {
    method highBytes (line 64) | static int highBytes(long value) {
    method lowBytes (line 72) | static int lowBytes(long value) {
    method composeFromHighLowBytes (line 85) | static long composeFromHighLowBytes(int high, int low) {
    method readFrom (line 91) | static RoaringBitmapArray readFrom(byte[] bytes) throws IOException {
    method deserialize (line 113) | void deserialize(ByteBuffer buffer) throws IOException {
    method contains (line 132) | public boolean contains(long value) {
    class NativeRoaringBitmapArraySerializationFormat (line 153) | static class NativeRoaringBitmapArraySerializationFormat {
      method deserialize (line 158) | static RoaringBitmap[] deserialize(ByteBuffer buffer) throws IOExcep...
    class PortableRoaringBitmapArraySerializationFormat (line 188) | static class PortableRoaringBitmapArraySerializationFormat {
      method deserialize (line 193) | static RoaringBitmap[] deserialize(ByteBuffer buffer) throws IOExcep...
    method decomposeHighLowBytes (line 236) | static Tuple2<Integer, Integer> decomposeHighLowBytes(long value) {
    method add (line 240) | public void add(long value) {
    method extendBitmaps (line 250) | private void extendBitmaps(int newLength) {
    method create (line 268) | public static RoaringBitmapArray create(long... values) {
    method toArray (line 276) | public long[] toArray() {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/LogDataUtils.java
  class LogDataUtils (line 26) | public final class LogDataUtils {
    method LogDataUtils (line 28) | private LogDataUtils() {}
    method validateLogDataContainsOnlyRatifiedStagedCommits (line 30) | public static void validateLogDataContainsOnlyRatifiedStagedCommits(
    method validateLogDataIsSortedContiguous (line 39) | public static void validateLogDataIsSortedContiguous(List<? extends Pa...
    method combinePublishedAndRatifiedDeltasWithCatalogPriority (line 67) | public static List<ParsedDeltaData> combinePublishedAndRatifiedDeltasW...

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedCatalogCommitData.java
  class ParsedCatalogCommitData (line 34) | public final class ParsedCatalogCommitData extends ParsedDeltaData {
    method forFileStatus (line 36) | public static ParsedCatalogCommitData forFileStatus(FileStatus fileSta...
    method forInlineData (line 47) | public static ParsedCatalogCommitData forInlineData(long version, Colu...
    method ParsedCatalogCommitData (line 51) | private ParsedCatalogCommitData(
    method getGroupByCategoryClass (line 56) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedCheckpointData.java
  class ParsedCheckpointData (line 27) | public abstract class ParsedCheckpointData extends ParsedLogData
    method forFileStatus (line 30) | public static ParsedCheckpointData forFileStatus(FileStatus fileStatus) {
    type CheckpointTypePriority (line 48) | protected enum CheckpointTypePriority {
    method ParsedCheckpointData (line 54) | protected ParsedCheckpointData(
    method getCheckpointTypePriority (line 63) | protected abstract CheckpointTypePriority getCheckpointTypePriority();
    method compareToSameType (line 69) | protected abstract int compareToSameType(ParsedCheckpointData that);
    method getGroupByCategoryClass (line 71) | @Override
    method compareTo (line 91) | @Override
    method compareByDataSource (line 118) | protected final int compareByDataSource(ParsedCheckpointData that) {

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedChecksumData.java
  class ParsedChecksumData (line 33) | public final class ParsedChecksumData extends ParsedLogData {
    method forFileStatus (line 35) | public static ParsedChecksumData forFileStatus(FileStatus fileStatus) {
    method ParsedChecksumData (line 46) | private ParsedChecksumData(
    method getGroupByCategoryClass (line 51) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedClassicCheckpointData.java
  class ParsedClassicCheckpointData (line 31) | public final class ParsedClassicCheckpointData extends ParsedCheckpointD...
    method forFileStatus (line 33) | public static ParsedClassicCheckpointData forFileStatus(FileStatus fil...
    method ParsedClassicCheckpointData (line 44) | private ParsedClassicCheckpointData(
    method getCheckpointTypePriority (line 49) | @Override
    method compareToSameType (line 54) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedDeltaData.java
  class ParsedDeltaData (line 25) | public abstract class ParsedDeltaData extends ParsedLogData {
    method forFileStatus (line 27) | public static ParsedDeltaData forFileStatus(FileStatus fileStatus) {
    method ParsedDeltaData (line 39) | protected ParsedDeltaData(

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedLogCompactionData.java
  class ParsedLogCompactionData (line 37) | public final class ParsedLogCompactionData extends ParsedLogData {
    method forFileStatus (line 38) | public static ParsedLogCompactionData forFileStatus(FileStatus fileSta...
    method ParsedLogCompactionData (line 52) | private ParsedLogCompactionData(
    method getGroupByCategoryClass (line 65) | @Override
    method appendAdditionalToStringFields (line 70) | @Override
    method equals (line 75) | @Override
    method hashCode (line 87) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedLogData.java
  class ParsedLogData (line 55) | public abstract class ParsedLogData {
    method forFileStatus (line 57) | public static ParsedLogData forFileStatus(FileStatus fileStatus) {
    method ParsedLogData (line 81) | protected ParsedLogData(
    method isFile (line 96) | public boolean isFile() {
    method isInline (line 104) | public boolean isInline() {
    method getVersion (line 109) | public long getVersion() {
    method getFileStatus (line 118) | public FileStatus getFileStatus() {
    method getInlineData (line 127) | public ColumnarBatch getInlineData() {
    method getGroupByCategoryClass (line 132) | public abstract Class<? extends ParsedLogData> getGroupByCategoryClass();
    method appendAdditionalToStringFields (line 135) | protected void appendAdditionalToStringFields(StringBuilder sb) {
    method equals (line 139) | @Override
    method hashCode (line 150) | @Override
    method toString (line 155) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedMultiPartCheckpointData.java
  class ParsedMultiPartCheckpointData (line 33) | public final class ParsedMultiPartCheckpointData extends ParsedCheckpoin...
    method forFileStatus (line 34) | public static ParsedMultiPartCheckpointData forFileStatus(FileStatus f...
    method ParsedMultiPartCheckpointData (line 50) | private ParsedMultiPartCheckpointData(
    method getCheckpointTypePriority (line 63) | @Override
    method compareToSameType (line 68) | @Override
    method appendAdditionalToStringFields (line 81) | @Override
    method equals (line 86) | @Override
    method hashCode (line 98) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedPublishedDeltaData.java
  class ParsedPublishedDeltaData (line 31) | public final class ParsedPublishedDeltaData extends ParsedDeltaData {
    method forFileStatus (line 33) | public static ParsedPublishedDeltaData forFileStatus(FileStatus fileSt...
    method ParsedPublishedDeltaData (line 44) | private ParsedPublishedDeltaData(
    method getGroupByCategoryClass (line 49) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/files/ParsedV2CheckpointData.java
  class ParsedV2CheckpointData (line 31) | public final class ParsedV2CheckpointData extends ParsedCheckpointData {
    method forFileStatus (line 33) | public static ParsedV2CheckpointData forFileStatus(FileStatus fileStat...
    method ParsedV2CheckpointData (line 44) | private ParsedV2CheckpointData(
    method getCheckpointTypePriority (line 49) | @Override
    method compareToSameType (line 54) | @Override

FILE: kernel/kernel-api/src/main/java/io/delta/kernel/internal/fs/Path.java
  class Path (line 32) | public class Path implements Comparable<Path>, Serializable, ObjectInput...
    method Path (line 62) | public Path(String parent, String child) {
    method Path (line 72) | public Path(Path parent, String child) {
    method Path (line 82) | public Path(String parent, Path child) {
    method Path (line 92) | public Path(Path parent, Path child) {
    method checkPathArg (line 114) | private void checkPathArg(String path) throws IllegalArgumentException {
    method Path (line 130) | public Path(String pathString) throws IllegalArgumentException {
    method Path (line 174) | public Path(URI aUri) {
    method Path (line 185) | public Path(String scheme, String authority, String path) {
    method initialize (line 202) | private void initialize(String scheme, String authority, String path, ...
    method normalizePath (line 219) | private static String normalizePath(String scheme, String path) {
    method containsRepeatedSlash (line 249) | private static boolean containsRepeatedSlash(String path) {
    method hasWindowsDrive (line 257) | private static boolean hasWindowsDrive(String path) {
    method startPositionWithoutWindowsDrive (line 261) | private static int startPositionWithoutWindowsDrive(String path) {
    method toUri (line 274) | public URI toUri() {
    method isUriPathAbsolute (line 283) | public boolean isUriPathAbsolute() {
    method isAbsolute (line 294) | public boolean isAbsolute() {
    method i
Copy disabled (too large) Download .json
Condensed preview — 3757 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (24,839K chars).
[
  {
    "path": ".gitattributes",
    "chars": 53,
    "preview": "*.bat text eol=crlf\n*.cmd text eol=crlf\n*.bin binary\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 738,
    "preview": "# CODEOWNERS file for Delta Lake\n# This file defines code owners who must approve changes to specific files/directories."
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-issue.md",
    "chars": 1416,
    "preview": "---\nname: Bug Issue\nabout: Use this template for reporting a bug\nlabels: 'bug'\ntitle: '[BUG]'\n\n---\n\n## Bug\n\n#### Which D"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.md",
    "chars": 1480,
    "preview": "---\nname: Feature Request\nabout: Use this template for raising a feature request\nlabels: 'enhancement'\ntitle: '[Feature "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/protocol-rfc.md",
    "chars": 1036,
    "preview": "---\nname: Protocol Change Request\nabout: Use this template to propose a new feature that impacts the Delta protocol spec"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1999,
    "preview": "<!--\nThanks for sending a pull request!  Here are some tips for you:\n  1. If this is your first time, please read our co"
  },
  {
    "path": ".github/workflows/build.yaml",
    "chars": 823,
    "preview": "name: \"Delta Build\"\non:\n  push:\n    paths-ignore:\n      - '**.md'\n      - '**.txt'\n  pull_request:\n    paths-ignore:\n   "
  },
  {
    "path": ".github/workflows/flink_test.yaml",
    "chars": 1905,
    "preview": "name: \"Delta Flink\"\n\non: [push, pull_request]\n\n# Cancel previous runs when new commits are pushed\nconcurrency:\n  group: "
  },
  {
    "path": ".github/workflows/iceberg_test.yaml",
    "chars": 2364,
    "preview": "name: \"Delta Iceberg Latest\"\non:\n  push:\n    paths-ignore:\n      - '**.md'\n      - '**.txt'\n  pull_request:\n    paths-ig"
  },
  {
    "path": ".github/workflows/kernel_docs.yaml",
    "chars": 1707,
    "preview": "# Simple workflow for deploying static content to GitHub Pages\nname: Deploy static content to Pages\n\non:\n  # Allows you "
  },
  {
    "path": ".github/workflows/kernel_test.yaml",
    "chars": 2876,
    "preview": "name: \"Delta Kernel\"\n\non:\n  push:\n    paths-ignore:\n      - '**.md'\n      - '**.txt'\n  pull_request:\n    paths-ignore:\n "
  },
  {
    "path": ".github/workflows/kernel_unitycatalog_test.yaml",
    "chars": 985,
    "preview": "name: \"Kernel Unity Catalog\"\non:\n  push:\n    paths:\n      - 'build.sbt'\n      - 'version.sbt'\n      - 'kernel/**/*.scala"
  },
  {
    "path": ".github/workflows/publish_docs.yaml",
    "chars": 3641,
    "preview": "name: Publish Docs\n\non:\n  push:\n    branches:\n      - master\n    paths:\n      - docs/**\n  release:\n    types:\n      - pu"
  },
  {
    "path": ".github/workflows/spark_examples_test.yaml",
    "chars": 5334,
    "preview": "name: \"Delta Spark Publishing and Examples\"\non:\n  push:\n    paths-ignore:\n      - '**.md'\n      - '**.txt'\n  pull_reques"
  },
  {
    "path": ".github/workflows/spark_python_test.yaml",
    "chars": 6458,
    "preview": "name: \"Delta Spark Python\"\non:\n  push:\n    paths-ignore:\n      - '**.md'\n      - '**.txt'\n  pull_request:\n    paths-igno"
  },
  {
    "path": ".github/workflows/spark_test.yaml",
    "chars": 6425,
    "preview": "name: \"Delta Spark\"\non:\n  push:\n    paths-ignore:\n      - '**.md'\n      - '**.txt'\n  pull_request:\n    paths-ignore:\n   "
  },
  {
    "path": ".github/workflows/unidoc.yaml",
    "chars": 545,
    "preview": "  name: \"Unidoc\"\n  on: [push, pull_request]\n  jobs:\n    build:\n      name: \"U: Scala ${{ matrix.scala }}\"\n      runs-on:"
  },
  {
    "path": ".gitignore",
    "chars": 1974,
    "preview": "*#*#\n*.#*\n*.iml\n*.ipr\n*.iws\n*.pyc\n*.pyo\n*.swp\n*~\n.DS_Store\n.ammonite\n.bloop\n.bsp\n.cache\n.classpath\n.ensime\n.ensime_cache"
  },
  {
    "path": ".sbtopts",
    "chars": 9,
    "preview": "-J-Xmx4G\n"
  },
  {
    "path": ".scalafmt.conf",
    "chars": 1254,
    "preview": "# Copyright (2025) The Delta Lake Project Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n#"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3597,
    "preview": "# Delta Lake Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontr"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 4906,
    "preview": "We happily welcome contributions to Delta Lake. We use [GitHub Issues](/../../issues/) to track community reported issue"
  },
  {
    "path": "Dockerfile",
    "chars": 2297,
    "preview": "#\n# Copyright (2021) The Delta Lake Project Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "LICENSE.txt",
    "chars": 21864,
    "preview": "Copyright (2021) The Delta Lake Project Authors.  All rights reserved.\n\n\n                                 Apache License"
  },
  {
    "path": "NOTICE.txt",
    "chars": 963,
    "preview": "Delta Lake\nCopyright (2021) The Delta Lake Project Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "PROTOCOL.md",
    "chars": 194207,
    "preview": "<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD "
  },
  {
    "path": "README.md",
    "chars": 11346,
    "preview": "<img src=\"docs/src/assets/delta-lake-logo-light.svg\" width=\"200\" alt=\"Delta Lake Logo\"></img>\n\n[![Test](https://github.c"
  },
  {
    "path": "benchmarks/README.md",
    "chars": 14141,
    "preview": "# Benchmarks \n\n## Overview\nThis is a basic framework for writing benchmarks to measure Delta's performance. It is curren"
  },
  {
    "path": "benchmarks/build/sbt",
    "chars": 6485,
    "preview": "#!/usr/bin/env bash\n\n#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreem"
  },
  {
    "path": "benchmarks/build/sbt-launch-lib.bash",
    "chars": 5123,
    "preview": "#!/usr/bin/env bash\n#\n\n# A library to simplify using the SBT launcher from other packages.\n# Note: This should be used b"
  },
  {
    "path": "benchmarks/build.sbt",
    "chars": 1148,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/.terraform.lock.hcl",
    "chars": 1184,
    "preview": "# This file is maintained automatically by \"terraform init\".\n# Manual edits may be lost in future updates.\n\nprovider \"re"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/README.md",
    "chars": 3063,
    "preview": "# Create infrastructure with Terraform\n\n1. Install [Terraform](https://learn.hashicorp.com/tutorials/terraform/install-c"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/main.tf",
    "chars": 883,
    "preview": "module \"networking\" {\n  source = \"./modules/networking\"\n\n  availability_zone1 = var.availability_zone1\n  availability_zo"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/networking/main.tf",
    "chars": 998,
    "preview": "resource \"aws_vpc\" \"this\" {\n  cidr_block = \"10.0.0.0/16\"\n}\n\nresource \"aws_subnet\" \"benchmarks_subnet1\" {\n  vpc_id       "
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/networking/outputs.tf",
    "chars": 182,
    "preview": "output \"vpc_id\" {\n  value = aws_vpc.this.id\n}\n\noutput \"subnet1_id\" {\n  value = aws_subnet.benchmarks_subnet1.id\n}\n\noutpu"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/networking/variables.tf",
    "chars": 101,
    "preview": "variable \"availability_zone1\" {\n  type = string\n}\n\nvariable \"availability_zone2\" {\n  type = string\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/processing/main.tf",
    "chars": 9091,
    "preview": "resource \"aws_db_instance\" \"metastore_service\" {\n  engine                 = \"mysql\"\n  engine_version         = \"8.0.28\"\n"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/processing/outputs.tf",
    "chars": 88,
    "preview": "output \"master_node_address\" {\n  value = aws_emr_cluster.benchmarks.master_public_dns\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/processing/variables.tf",
    "chars": 515,
    "preview": "variable \"availability_zone1\" {\n  type = string\n}\n\nvariable \"vpc_id\" {\n  type = string\n}\n\nvariable \"subnet1_id\" {\n  type"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/storage/main.tf",
    "chars": 85,
    "preview": "resource \"aws_s3_bucket\" \"benchmarks_data\" {\n  bucket = var.benchmarks_bucket_name\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/modules/storage/variables.tf",
    "chars": 54,
    "preview": "variable \"benchmarks_bucket_name\" {\n  type = string\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/outputs.tf",
    "chars": 81,
    "preview": "output \"master_node_address\" {\n  value = module.processing.master_node_address\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/providers.tf",
    "chars": 82,
    "preview": "provider \"aws\" {\n  region = var.region\n  default_tags {\n    tags = var.tags\n  }\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/variables.tf",
    "chars": 1620,
    "preview": "variable \"region\" {\n  description = \"The default region to manage resources in.\"\n  type        = string\n  default     = "
  },
  {
    "path": "benchmarks/infrastructure/aws/terraform/versions.tf",
    "chars": 119,
    "preview": "terraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \"~> 4.15.1\"\n    }\n  }\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/.terraform.lock.hcl",
    "chars": 2266,
    "preview": "# This file is maintained automatically by \"terraform init\".\n# Manual edits may be lost in future updates.\n\nprovider \"re"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/README.md",
    "chars": 2011,
    "preview": "# Create infrastructure with Terraform\n\n1. Install [Terraform](https://learn.hashicorp.com/tutorials/terraform/install-c"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/main.tf",
    "chars": 451,
    "preview": "module \"processing\" {\n  source = \"./modules/processing\"\n\n  project          = var.project\n  credentials_file = var.crede"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/modules/processing/data.tf",
    "chars": 305,
    "preview": "data \"google_client_openid_userinfo\" \"me\" {\n}\n\ndata \"google_compute_instance\" \"benchmarks_master\" {\n  provider   = googl"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/modules/processing/main.tf",
    "chars": 1433,
    "preview": "resource \"google_os_login_ssh_public_key\" \"key_to_login_to_master_node\" {\n  user = data.google_client_openid_userinfo.me"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/modules/processing/outputs.tf",
    "chars": 133,
    "preview": "output \"master_node_address\" {\n  value = data.google_compute_instance.benchmarks_master.network_interface.0.access_confi"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/modules/processing/variables.tf",
    "chars": 305,
    "preview": "variable \"project\" {\n  type = string\n}\n\nvariable \"credentials_file\" {\n  type = string\n}\n\nvariable \"public_key_path\" {\n  "
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/modules/storage/main.tf",
    "chars": 201,
    "preview": "resource \"google_storage_bucket\" \"benchmarks_data\" {\n  provider      = google\n  name          = var.bucket_name\n  locati"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/modules/storage/variables.tf",
    "chars": 126,
    "preview": "variable \"bucket_name\" {\n  type = string\n}\n\nvariable \"region\" {\n  type = string\n}\n\nvariable \"labels\" {\n  type = map(stri"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/outputs.tf",
    "chars": 81,
    "preview": "output \"master_node_address\" {\n  value = module.processing.master_node_address\n}\n"
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/providers.tf",
    "chars": 296,
    "preview": "provider \"google\" {\n  credentials = file(var.credentials_file)\n  project     = var.project\n  region      = var.region\n  "
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/variables.tf",
    "chars": 1214,
    "preview": "variable \"project\" {\n  description = \"The ID of the GCP project.\"\n  type        = string\n}\n\nvariable \"credentials_file\" "
  },
  {
    "path": "benchmarks/infrastructure/gcp/terraform/versions.tf",
    "chars": 213,
    "preview": "terraform {\n  required_providers {\n    google = {\n      source  = \"hashicorp/google\"\n      version = \"4.22.0\"\n    }\n    "
  },
  {
    "path": "benchmarks/project/build.properties",
    "chars": 1552,
    "preview": "#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE"
  },
  {
    "path": "benchmarks/project/plugins.sbt",
    "chars": 57,
    "preview": "addSbtPlugin(\"com.eed3si9n\" % \"sbt-assembly\" % \"0.15.0\")\n"
  },
  {
    "path": "benchmarks/run-benchmark.py",
    "chars": 6003,
    "preview": "#!/usr/bin/env python3\n\n#\n# Copyright (2021) The Delta Lake Project Authors.\n#\n# Licensed under the Apache License, Vers"
  },
  {
    "path": "benchmarks/scripts/benchmarks.py",
    "chars": 21160,
    "preview": "#\n# Copyright (2021) The Delta Lake Project Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "benchmarks/scripts/utils.py",
    "chars": 2127,
    "preview": "#\n# Copyright (2021) The Delta Lake Project Authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/Benchmark.scala",
    "chars": 10002,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/MergeBenchmark.scala",
    "chars": 5003,
    "preview": "/*\n * Copyright (2023) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/MergeDataLoad.scala",
    "chars": 8619,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/MergeTestCases.scala",
    "chars": 6919,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/TPCDSBenchmark.scala",
    "chars": 4029,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/TPCDSBenchmarkQueries.scala",
    "chars": 1294586,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/TPCDSDataLoad.scala",
    "chars": 34613,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/benchmark/TestBenchmark.scala",
    "chars": 2809,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "benchmarks/src/main/scala/org/apache/spark/SparkUtils.scala",
    "chars": 2019,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "build/sbt",
    "chars": 6440,
    "preview": "#!/usr/bin/env bash\n\n#\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreem"
  },
  {
    "path": "build/sbt-config/repositories",
    "chars": 1413,
    "preview": "[repositories]\n  local\n  local-preloaded-ivy: file:///${sbt.preloaded-${sbt.global.base-${user.home}/.sbt}/preloaded/}, "
  },
  {
    "path": "build/sbt-launch-lib.bash",
    "chars": 5648,
    "preview": "#!/usr/bin/env bash\n#\n\n# A library to simplify using the SBT launcher from other packages.\n# Note: This should be used b"
  },
  {
    "path": "build.sbt",
    "chars": 75664,
    "preview": "/*\n * Copyright (2021) The Delta Lake Project Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
  },
  {
    "path": "connectors/.gitignore",
    "chars": 1505,
    "preview": "*#*#\n*.#*\n*.iml\n*.ipr\n*.iws\n*.pyc\n*.pyo\n*.swp\n*~\n.DS_Store\n.bsp\n.cache\n.classpath\n.ensime\n.ensime_cache/\n.ensime_lucene\n"
  },
  {
    "path": "connectors/README.md",
    "chars": 227,
    "preview": "Connectors projects are no longer maintained in the `master` branch and new releases due to migration to the Delta Kerne"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/124-decimal-decode-bug/_delta_log/00000000000000000000.json",
    "chars": 911,
    "preview": "{\"commitInfo\":{\"timestamp\":1636689272898,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000000.json",
    "chars": 719,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728454095,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000001.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728458439,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000002.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728459288,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000003.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728460020,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000004.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728460726,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000005.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728461405,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000006.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728462063,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000007.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728462739,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000008.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728463394,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000009.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728464026,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000010.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728464667,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/00000000000000000011.json",
    "chars": 409,
    "preview": "{\"commitInfo\":{\"timestamp\":1633728465909,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/125-iterator-bug/_delta_log/_last_checkpoint",
    "chars": 25,
    "preview": "{\"version\":10,\"size\":13}\n"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-decimal-table/_delta_log/00000000000000000000.json",
    "chars": 2705,
    "preview": "{\"commitInfo\":{\"timestamp\":1690853005164,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-decimal-table-legacy/_delta_log/00000000000000000000.json",
    "chars": 2705,
    "preview": "{\"commitInfo\":{\"timestamp\":1690853019754,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000000.json",
    "chars": 959,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426732135,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000001.json",
    "chars": 655,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426734180,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000002.json",
    "chars": 655,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426734787,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000003.json",
    "chars": 655,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426735371,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000004.json",
    "chars": 655,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426735942,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000005.json",
    "chars": 1040,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426737153,\"operation\":\"DELETE\",\"operationParameters\":{\"predicate\":\"[\\\"((id#1904L >= 5) AN"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000006.json",
    "chars": 1044,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426737814,\"operation\":\"DELETE\",\"operationParameters\":{\"predicate\":\"[\\\"((id#2606L >= 15) A"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000007.json",
    "chars": 1044,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426738561,\"operation\":\"DELETE\",\"operationParameters\":{\"predicate\":\"[\\\"((id#3297L >= 25) A"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000008.json",
    "chars": 1044,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426739285,\"operation\":\"DELETE\",\"operationParameters\":{\"predicate\":\"[\\\"((id#3988L >= 35) A"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000009.json",
    "chars": 1044,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426740025,\"operation\":\"DELETE\",\"operationParameters\":{\"predicate\":\"[\\\"((id#4679L >= 45) A"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000010.json",
    "chars": 655,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426740500,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000011.json",
    "chars": 656,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426741681,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000012.json",
    "chars": 656,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426742288,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/00000000000000000013.json",
    "chars": 1226,
    "preview": "{\"commitInfo\":{\"timestamp\":1691426743015,\"operation\":\"DELETE\",\"operationParameters\":{\"predicate\":\"[\\\"(id#6991L >= 66)\\\"]"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-deletes-checkpoint/_delta_log/_last_checkpoint",
    "chars": 4720,
    "preview": "{\"version\":10,\"size\":13,\"sizeInBytes\":16479,\"numOfAddFiles\":6,\"checkpointSchema\":{\"type\":\"struct\",\"fields\":[{\"name\":\"txn"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-merge/_delta_log/00000000000000000000.json",
    "chars": 1418,
    "preview": "{\"commitInfo\":{\"timestamp\":1697587480772,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-merge/_delta_log/00000000000000000001.json",
    "chars": 1863,
    "preview": "{\"commitInfo\":{\"timestamp\":1697587497062,\"operation\":\"MERGE\",\"operationParameters\":{\"predicate\":\"[\\\"(id#480L = cast(id#4"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-overwrite-restore/_delta_log/00000000000000000000.json",
    "chars": 1246,
    "preview": "{\"commitInfo\":{\"timestamp\":1697588664008,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-overwrite-restore/_delta_log/00000000000000000001.json",
    "chars": 938,
    "preview": "{\"commitInfo\":{\"timestamp\":1697588676444,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-overwrite-restore/_delta_log/00000000000000000002.json",
    "chars": 1754,
    "preview": "{\"commitInfo\":{\"timestamp\":1697588681190,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Overwrite\",\"partitionBy\":\"[]"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-overwrite-restore/_delta_log/00000000000000000003.json",
    "chars": 2533,
    "preview": "{\"commitInfo\":{\"timestamp\":1697588691204,\"operation\":\"RESTORE\",\"operationParameters\":{\"version\":1,\"timestamp\":null},\"rea"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-overwrite-restore/_delta_log/_last_checkpoint",
    "chars": 4718,
    "preview": "{\"version\":3,\"size\":8,\"sizeInBytes\":16053,\"numOfAddFiles\":4,\"checkpointSchema\":{\"type\":\"struct\",\"fields\":[{\"name\":\"txn\","
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-updates/_delta_log/00000000000000000000.json",
    "chars": 1418,
    "preview": "{\"commitInfo\":{\"timestamp\":1697587748016,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-inserts-updates/_delta_log/00000000000000000001.json",
    "chars": 1159,
    "preview": "{\"commitInfo\":{\"timestamp\":1697587762295,\"operation\":\"UPDATE\",\"operationParameters\":{\"predicate\":\"[\\\"(id#480 < 50)\\\"]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-vacuum-protocol-check-feature/_delta_log/00000000000000000000.json",
    "chars": 1418,
    "preview": "{\"commitInfo\":{\"timestamp\":1711484004670,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/basic-with-vacuum-protocol-check-feature/_delta_log/00000000000000000001.json",
    "chars": 872,
    "preview": "{\"commitInfo\":{\"timestamp\":1711484006901,\"operation\":\"SET TBLPROPERTIES\",\"operationParameters\":{\"properties\":\"{\\\"delta.f"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-normal-a/_delta_log/00000000000000000000.json",
    "chars": 353,
    "preview": "{\"protocol\":{\"minReaderVersion\":1,\"minWriterVersion\":2}}\n{\"metaData\":{\"id\":\"7afc4b76-09fb-4b06-836d-f9972b9c1f91\",\"forma"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-normal-a/_delta_log/00000000000000000001.json",
    "chars": 102,
    "preview": "{\"remove\":{\"path\":\"file:/some/unqualified/absolute/path\",\"deletionTimestamp\":200,\"dataChange\":false}}\n"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-normal-b/_delta_log/00000000000000000000.json",
    "chars": 353,
    "preview": "{\"protocol\":{\"minReaderVersion\":1,\"minWriterVersion\":2}}\n{\"metaData\":{\"id\":\"6b8e62a0-dd56-4453-b00b-9f9669076189\",\"forma"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-normal-b/_delta_log/00000000000000000001.json",
    "chars": 104,
    "preview": "{\"remove\":{\"path\":\"file:///some/unqualified/absolute/path\",\"deletionTimestamp\":200,\"dataChange\":false}}\n"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-special-a/_delta_log/00000000000000000000.json",
    "chars": 359,
    "preview": "{\"protocol\":{\"minReaderVersion\":1,\"minWriterVersion\":2}}\n{\"metaData\":{\"id\":\"b2facba1-1669-43f3-9b1d-7580c207873e\",\"forma"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-special-a/_delta_log/00000000000000000001.json",
    "chars": 108,
    "preview": "{\"remove\":{\"path\":\"file:/some/unqualified/with%20space/p@%23h\",\"deletionTimestamp\":200,\"dataChange\":false}}\n"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-special-b/_delta_log/00000000000000000000.json",
    "chars": 359,
    "preview": "{\"protocol\":{\"minReaderVersion\":1,\"minWriterVersion\":2}}\n{\"metaData\":{\"id\":\"c23cd784-bc31-46e5-a95b-73bcbe1111a5\",\"forma"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/canonicalized-paths-special-b/_delta_log/00000000000000000001.json",
    "chars": 110,
    "preview": "{\"remove\":{\"path\":\"file:///some/unqualified/with%20space/p@%23h\",\"deletionTimestamp\":200,\"dataChange\":false}}\n"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/commit-info-containing-arbitrary-operationParams-types/_delta_log/00000000000000000000.crc",
    "chars": 986,
    "preview": "{\"txnId\":\"bda32d72-442d-4705-9a8c-16093eb31744\",\"tableSizeBytes\":452,\"numFiles\":1,\"numMetadata\":1,\"numProtocol\":1,\"setTr"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/commit-info-containing-arbitrary-operationParams-types/_delta_log/00000000000000000000.json",
    "chars": 1312,
    "preview": "{\"commitInfo\":{\"timestamp\":1740185390903,\"operation\":\"CREATE TABLE AS SELECT\",\"operationParameters\":{\"partitionBy\":\"[\\\"m"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/commit-info-containing-arbitrary-operationParams-types/_delta_log/00000000000000000001.crc",
    "chars": 1272,
    "preview": "{\"txnId\":\"0d7d28b8-55c2-4d8b-b48e-88b22c90aed1\",\"tableSizeBytes\":904,\"numFiles\":2,\"numMetadata\":1,\"numProtocol\":1,\"setTr"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/commit-info-containing-arbitrary-operationParams-types/_delta_log/00000000000000000001.json",
    "chars": 670,
    "preview": "{\"commitInfo\":{\"timestamp\":1740185395669,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/commit-info-containing-arbitrary-operationParams-types/_delta_log/00000000000000000002.crc",
    "chars": 1272,
    "preview": "{\"txnId\":\"79b3e3aa-82dc-4c18-b95e-8b50089b55c7\",\"tableSizeBytes\":904,\"numFiles\":2,\"numMetadata\":1,\"numProtocol\":1,\"setTr"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/commit-info-containing-arbitrary-operationParams-types/_delta_log/00000000000000000002.json",
    "chars": 1672,
    "preview": "{\"commitInfo\":{\"timestamp\":1740185397394,\"operation\":\"OPTIMIZE\",\"operationParameters\":{\"predicate\":\"[]\",\"zOrderBy\":\"[\\\"i"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000000.json",
    "chars": 437,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723979876,\"operation\":\"Manual Update\",\"operationParameters\":{},\"isBlindAppend\":true}}\n{\"p"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000001.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723980484,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":0,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000002.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723981300,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":1,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000003.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723982125,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":2,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000004.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723982971,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":3,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000005.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723984006,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":4,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000006.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723985117,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":5,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000007.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723986119,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":6,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000008.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723987024,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":7,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000009.json",
    "chars": 223,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723987921,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":8,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/00000000000000000010.json",
    "chars": 224,
    "preview": "{\"commitInfo\":{\"timestamp\":1603723988863,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":9,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint/_delta_log/_last_checkpoint",
    "chars": 25,
    "preview": "{\"version\":10,\"size\":13}\n"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000000.json",
    "chars": 1233,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654175172,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000001.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654186351,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000002.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654189454,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000003.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654191877,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000004.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654194175,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000005.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654195998,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000006.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654197786,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000007.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654200341,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000008.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654202124,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000009.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654203783,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000010.json",
    "chars": 927,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654205382,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/00000000000000000011.json",
    "chars": 5382,
    "preview": "{\"commitInfo\":{\"timestamp\":1697654211950,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Overwrite\",\"partitionBy\":\"[]"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/corrupted-last-checkpoint-kernel/_delta_log/_last_checkpoint",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-absolute-paths-escaped-chars/_delta_log/00000000000000000000.json",
    "chars": 408,
    "preview": "{\"commitInfo\":{\"timestamp\":1603387084639,\"operation\":\"Manual Update\",\"operationParameters\":{},\"isBlindAppend\":true}}\n{\"p"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-absolute-paths-escaped-chars/_delta_log/00000000000000000001.json",
    "chars": 258,
    "preview": "{\"commitInfo\":{\"timestamp\":1603387085189,\"operation\":\"Manual Update\",\"operationParameters\":{},\"readVersion\":0,\"isBlindAp"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-array-complex-objects/_delta_log/00000000000000000000.json",
    "chars": 1887,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724039052,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-array-primitives/_delta_log/00000000000000000000.json",
    "chars": 2213,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724038064,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-date-types-America/Los_Angeles/_delta_log/00000000000000000000.json",
    "chars": 926,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724034349,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-date-types-Asia/Beirut/_delta_log/00000000000000000000.json",
    "chars": 926,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724036152,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-date-types-Etc/GMT+9/_delta_log/00000000000000000000.json",
    "chars": 926,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724035263,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-date-types-Iceland/_delta_log/00000000000000000000.json",
    "chars": 926,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724032094,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-date-types-JST/_delta_log/00000000000000000000.json",
    "chars": 926,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724037072,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-date-types-PST/_delta_log/00000000000000000000.json",
    "chars": 926,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724033415,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-date-types-UTC/_delta_log/00000000000000000000.json",
    "chars": 926,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724030655,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-escaped-chars/_delta_log/00000000000000000000.json",
    "chars": 778,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724042582,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[\\\"_2"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-escaped-chars/_delta_log/00000000000000000001.json",
    "chars": 364,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724043128,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[\\\"_2"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-escaped-chars/_delta_log/00000000000000000002.json",
    "chars": 364,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724043721,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[\\\"_2"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-map/_delta_log/00000000000000000000.json",
    "chars": 1931,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724039953,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-nested-struct/_delta_log/00000000000000000000.json",
    "chars": 1326,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724040818,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-nullable-field-invalid-schema-key/_delta_log/00000000000000000000.json",
    "chars": 923,
    "preview": "{\"commitInfo\":{\"timestamp\":1603724041694,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-partition-values/_delta_log/00000000000000000000.json",
    "chars": 4621,
    "preview": "{\"commitInfo\":{\"timestamp\":1636147668568,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-primitives/_delta_log/00000000000000000000.json",
    "chars": 1614,
    "preview": "{\"commitInfo\":{\"timestamp\":1607520163636,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-timestamp_ntz/_delta_log/00000000000000000000.json",
    "chars": 969,
    "preview": "{\"commitInfo\":{\"timestamp\":1712333988110,\"operation\":\"CREATE TABLE\",\"operationParameters\":{\"partitionBy\":\"[\\\"tsNtzPartit"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-timestamp_ntz/_delta_log/00000000000000000001.json",
    "chars": 2180,
    "preview": "{\"commitInfo\":{\"timestamp\":1712333992682,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-timestamp_ntz-id-mode/_delta_log/00000000000000000000.json",
    "chars": 1477,
    "preview": "{\"commitInfo\":{\"timestamp\":1712333993464,\"operation\":\"CREATE TABLE\",\"operationParameters\":{\"partitionBy\":\"[\\\"tsNtzPartit"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-timestamp_ntz-id-mode/_delta_log/00000000000000000001.json",
    "chars": 3268,
    "preview": "{\"commitInfo\":{\"timestamp\":1712333994313,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-timestamp_ntz-name-mode/_delta_log/00000000000000000000.json",
    "chars": 1481,
    "preview": "{\"commitInfo\":{\"timestamp\":1712333994816,\"operation\":\"CREATE TABLE\",\"operationParameters\":{\"partitionBy\":\"[\\\"tsNtzPartit"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-reader-timestamp_ntz-name-mode/_delta_log/00000000000000000001.json",
    "chars": 3268,
    "preview": "{\"commitInfo\":{\"timestamp\":1712333995537,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-basic-stats-all-types/_delta_log/00000000000000000000.json",
    "chars": 2228,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847172421,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-basic-stats-all-types-checkpoint/_delta_log/00000000000000000000.json",
    "chars": 2258,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847197221,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-basic-stats-all-types-columnmapping-id/_delta_log/00000000000000000000.json",
    "chars": 4338,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847194834,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-basic-stats-all-types-columnmapping-name/_delta_log/00000000000000000000.json",
    "chars": 4340,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847190800,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-change-stats-collected-across-versions/_delta_log/00000000000000000000.json",
    "chars": 1077,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847199416,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-change-stats-collected-across-versions/_delta_log/00000000000000000001.json",
    "chars": 740,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847201143,\"operation\":\"SET TBLPROPERTIES\",\"operationParameters\":{\"properties\":\"{\\\"delta.d"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-change-stats-collected-across-versions/_delta_log/00000000000000000002.json",
    "chars": 658,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847203311,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-change-stats-collected-across-versions/_delta_log/00000000000000000003.json",
    "chars": 740,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847204921,\"operation\":\"SET TBLPROPERTIES\",\"operationParameters\":{\"properties\":\"{\\\"delta.d"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-change-stats-collected-across-versions/_delta_log/00000000000000000004.json",
    "chars": 577,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847206522,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-partition-and-data-column/_delta_log/00000000000000000000.json",
    "chars": 1069,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847208280,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-partition-and-data-column/_delta_log/00000000000000000001.json",
    "chars": 685,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847209741,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-partition-and-data-column/_delta_log/00000000000000000002.json",
    "chars": 685,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847211152,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/data-skipping-partition-and-data-column/_delta_log/00000000000000000003.json",
    "chars": 685,
    "preview": "{\"commitInfo\":{\"timestamp\":1704847212753,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"Append\",\"partitionBy\":\"[]\"},"
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/decimal-various-scale-precision/_delta_log/00000000000000000000.json",
    "chars": 5700,
    "preview": "{\"commitInfo\":{\"timestamp\":1717778521300,\"operation\":\"WRITE\",\"operationParameters\":{\"mode\":\"ErrorIfExists\",\"partitionBy\""
  },
  {
    "path": "connectors/golden-tables/src/main/resources/golden/delete-re-add-same-file-different-transactions/_delta_log/00000000000000000000.json",
    "chars": 683,
    "preview": "{\"commitInfo\":{\"timestamp\":1697064953062,\"operation\":\"Manual Update\",\"operationParameters\":{},\"isolationLevel\":\"Serializ"
  }
]

// ... and 3557 more files (download for full content)

About this extraction

This page contains the full source code of the delta-io/delta GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3757 files (22.5 MB), approximately 6.1M tokens, and a symbol index with 6957 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!