@gscdump/lakehouse 3.2.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/THIRD-PARTY-LICENSES.md +2 -2
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/index.mjs +2 -1
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/node.mjs +2 -1
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/plan.mjs +115 -87
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.29.1/node_modules/hyparquet/src/read.mjs +78 -0
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.29.1/node_modules/hyparquet/src/scan.mjs +203 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/types/index.d.mts +1 -0
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.29.2/node_modules/hyparquet/src/snappy.mjs +68 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/avro/avro.read.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/fetch.mjs +14 -6
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/index.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/manifest.mjs +1 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/metadata.mjs +1 -9
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/read.mjs +45 -110
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/sql/icebergDataSource.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/sql/icebergQuery.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/types.d.mts +2 -2
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/manifest.mjs +45 -1
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244/node_modules/icebird/src/write/rewrite.mjs +296 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/stage.mjs +14 -8
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/write.mjs +2 -1
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/types/fetch.d.mts +1 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/types/index.d.mts +1 -1
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244/node_modules/icebird/types/metadata.d.mts +1 -0
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244/node_modules/icebird/types/read.d.mts +3 -0
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244/node_modules/icebird/types/sql/icebergDataSource.d.mts +2 -0
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244/node_modules/icebird/types/sql/icebergQuery.d.mts +2 -0
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/backend/batchAdapters.mjs +3 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/aggregates.mjs +2 -1
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/execute/batchResults.mjs +3 -0
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/execute/batches.mjs +4 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/execute.mjs +7 -1
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/execute/rowScope.mjs +2 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/streamingAggregate.mjs +4 -1
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/execute/utils.mjs +2 -0
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/expression/batch.mjs +10 -0
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/expression/binary.mjs +2 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/expression/evaluate.mjs +4 -3
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.16.2/node_modules/squirreling/src/expression/scalar.mjs +4 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/index.mjs +2 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/plan/columns.mjs +1 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/validation/tables.mjs +1 -0
- package/dist/_virtual/node_modules/.pnpm/unstorage@1.17.5_aws4fetch@1.0.20_db0@0.3.4_ioredis@5.10.1_supports-color@10.2.2_/node_modules/unstorage/drivers/db0.d.mts +1 -1
- package/dist/catalog.d.mts +3 -3
- package/dist/catalog.mjs +5 -5
- package/dist/dataset-runtime.mjs +1 -1
- package/dist/orphan-sweep.mjs +3 -3
- package/dist/unsafe-raw.d.mts +5 -5
- package/dist/unsafe-raw.mjs +5 -5
- package/dist/vendor/hysnappy-purejs.mjs +1 -1
- package/package.json +5 -5
- package/dist/_virtual/node_modules/.pnpm/hyparquet@1.28.2/node_modules/hyparquet/src/read.mjs +0 -128
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6/node_modules/icebird/src/write/rewrite.mjs +0 -174
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6/node_modules/icebird/types/read.d.mts +0 -2
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6/node_modules/icebird/types/sql/icebergDataSource.d.mts +0 -2
- package/dist/_virtual/node_modules/.pnpm/icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6/node_modules/icebird/types/sql/icebergQuery.d.mts +0 -2
- package/dist/_virtual/node_modules/.pnpm/squirreling@0.15.3/node_modules/squirreling/src/expression/binary.mjs +0 -1
- package/dist/_virtual/node_modules/.pnpm/{db0@0.3.4_drizzle-orm@1.0.0-rc.4_@cloudflare+workers-types@5.20260816.1_valibot@1.4.2_typescript@6.0.3__zod@4.4.3_ → db0@0.3.4_drizzle-orm@1.0.0-rc.4_@cloudflare+workers-types@5.20260827.1_valibot@1.4.2_typescript@6.0.3__zod@4.4.3_}/node_modules/db0/dist/index.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/assemble.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/bloom.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/column.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/constants.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/convert.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/datapage.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/delta.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/encoding.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/filter.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/geoparquet.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/indexes.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/metadata.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/plain.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/query.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/rowgroup.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/schema.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/snappy.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/thrift.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/types.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/utils.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/variant.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/wkb.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/src/xxhash.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/types/indexes.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/types/metadata.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/types/node.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/types/query.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/types/read.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2/node_modules/hyparquet/types/utils.d.mts → hyparquet@1.29.1/node_modules/hyparquet/types/scan.d.mts} +0 -0
- package/dist/_virtual/node_modules/.pnpm/{hyparquet@1.28.2 → hyparquet@1.29.1}/node_modules/hyparquet/types/snappy.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6/node_modules/icebird/types/create.d.mts → hyparquet@1.29.1/node_modules/hyparquet/types/utils.d.mts} +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/avro/avro.metadata.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/avro/avro.write.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/catalog/file.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/catalog/loadTable.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/catalog/rest.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/create.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/delete.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/json.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/prune.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/puffin/deletion-vector.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/puffin/puffin.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/puffin/roaring.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/s3.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/schema.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/sigv4.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/sql/whereFilter.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/utils.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/commit.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/conversions.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/delete-file.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/geospatial.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/manifest-list.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/parquet.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/partition.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/serde.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/snapshot.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/sort.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/stage-deletion-vector.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/stage-position-delete.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/stats.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/src/write/transform.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/types/catalog/file.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/types/catalog/rest.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6/node_modules/icebird/types/metadata.d.mts → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244/node_modules/icebird/types/create.d.mts} +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/types/manifest.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/types/s3.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{icebird@0.8.22_patch_hash=4fa7fd5702c4ce432fb2902c6abe07cc55565e87f6375b96ece63a10999712e6 → icebird@0.8.26_patch_hash=75eacba5b0363ee2a40baa0ef77c7fb20d06389025186ca95b514a927cad0244}/node_modules/icebird/types/write/write.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/ast.d.mts +0 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3/node_modules/squirreling/src/backend/dataSource.mjs → squirreling@0.16.2/node_modules/squirreling/src/backend/batch.mjs} +0 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3/node_modules/squirreling/src/execute/scanColumn.mjs → squirreling@0.16.2/node_modules/squirreling/src/backend/dataSource.mjs} +0 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/accumulator.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/join.mjs +1 -1
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3/node_modules/squirreling/src/execute/utils.mjs → squirreling@0.16.2/node_modules/squirreling/src/execute/scanColumn.mjs} +0 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/sort.mjs +0 -0
- package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/window.mjs +1 -1
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/execute/yield.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/expression/alias.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/expression/date.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/expression/math.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/expression/regexp.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/expression/strings.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/index.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/expression.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/extractTables.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/functions.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/joins.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/parse.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/primary.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/state.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/tokenize.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/parse/types.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/plan/plan.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/plan/types.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/bbox.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/equality.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/operations.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/pointRelations.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/primitives.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/segments.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/spatial.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/spatial/wkt.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/types.d.mts +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/validation/aggregates.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/validation/executionErrors.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/validation/functions.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/validation/keywords.mjs +0 -0
- /package/dist/_virtual/node_modules/.pnpm/{squirreling@0.15.3 → squirreling@0.16.2}/node_modules/squirreling/src/validation/parseErrors.mjs +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { parquetMetadataAsync } from "../../../../hyparquet@1.
|
|
2
|
-
import { asyncBufferFromUrl, cachedAsyncBuffer } from "../../../../hyparquet@1.
|
|
3
|
-
import { parquetReadObjects } from "../../../../hyparquet@1.
|
|
4
|
-
import "../../../../hyparquet@1.
|
|
1
|
+
import { parquetMetadataAsync } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/metadata.mjs";
|
|
2
|
+
import { asyncBufferFromUrl, cachedAsyncBuffer } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/utils.mjs";
|
|
3
|
+
import { parquetReadObjects } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/read.mjs";
|
|
4
|
+
import "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/node.mjs";
|
|
5
5
|
import { compressors } from "../../../../hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/compressors.mjs";
|
|
6
6
|
import "../../../../hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/index.mjs";
|
|
7
7
|
import { ByteWriter } from "../../../../hyparquet-writer@0.16.6_patch_hash=549d1fd1fb9614da77df9123bf6978a8fccfe1d9bb8882863ce6159f666e821a/node_modules/hyparquet-writer/src/bytewriter.mjs";
|
|
@@ -10,6 +10,12 @@ import { avroMetadata } from "./avro/avro.metadata.mjs";
|
|
|
10
10
|
import { avroRead } from "./avro/avro.read.mjs";
|
|
11
11
|
import { puffinReadDeletionVector } from "./puffin/puffin.mjs";
|
|
12
12
|
import { sanitize } from "./utils.mjs";
|
|
13
|
+
const SMALL_PARQUET_FILE_SIZE = 8388608;
|
|
14
|
+
const SMALL_PARQUET_FOOTER_SIZE = 131072;
|
|
15
|
+
function readParquetMetadata(file) {
|
|
16
|
+
if (file.byteLength >= SMALL_PARQUET_FILE_SIZE) return parquetMetadataAsync(file);
|
|
17
|
+
return parquetMetadataAsync(file, { initialFetchSize: SMALL_PARQUET_FOOTER_SIZE });
|
|
18
|
+
}
|
|
13
19
|
function translateS3Url(url) {
|
|
14
20
|
if (url.startsWith("s3a://") || url.startsWith("s3://")) {
|
|
15
21
|
const rest = url.slice(url.indexOf("://") + 3);
|
|
@@ -153,8 +159,10 @@ async function fetchDeleteMaps(deleteEntries, resolver) {
|
|
|
153
159
|
for (const pos of positions) set.add(pos);
|
|
154
160
|
addPositionDeleteGroup(positionDeletesMap, referenced_data_file, deleteEntry, set);
|
|
155
161
|
} else {
|
|
162
|
+
const metadata = await readParquetMetadata(file);
|
|
156
163
|
const deleteRows = await parquetReadObjects({
|
|
157
164
|
file,
|
|
165
|
+
metadata,
|
|
158
166
|
compressors
|
|
159
167
|
});
|
|
160
168
|
const positionsByPath = /* @__PURE__ */ new Map();
|
|
@@ -176,7 +184,7 @@ async function fetchDeleteMaps(deleteEntries, resolver) {
|
|
|
176
184
|
const equalityIds = deleteEntry.data_file.equality_ids;
|
|
177
185
|
if (sequence_number === void 0) throw new Error("equality delete missing sequence number");
|
|
178
186
|
if (!equalityIds?.length) throw new Error("equality delete missing equality_ids");
|
|
179
|
-
const metadata = await
|
|
187
|
+
const metadata = await readParquetMetadata(file);
|
|
180
188
|
const columnNamesById = equalityColumnNamesById(metadata, equalityIds);
|
|
181
189
|
const columns = equalityIds.map((id) => columnNamesById[id]);
|
|
182
190
|
const deleteRows = await parquetReadObjects({
|
|
@@ -261,4 +269,4 @@ async function fetchAvroRecords(url, resolver, byteLength) {
|
|
|
261
269
|
syncMarker
|
|
262
270
|
});
|
|
263
271
|
}
|
|
264
|
-
export { cachingResolver, fetchAvroRecords, fetchDeleteMaps, resolveText, s3Lister, s3ParseUrl, translateS3Url, urlResolver };
|
|
272
|
+
export { cachingResolver, fetchAvroRecords, fetchDeleteMaps, readParquetMetadata, resolveText, s3Lister, s3ParseUrl, translateS3Url, urlResolver };
|
|
@@ -4,10 +4,10 @@ import { icebergManifests } from "./manifest.mjs";
|
|
|
4
4
|
import { s3SignedResolver } from "./s3.mjs";
|
|
5
5
|
import "./metadata.mjs";
|
|
6
6
|
import "./create.mjs";
|
|
7
|
+
import "../../../../squirreling@0.16.2/node_modules/squirreling/src/index.mjs";
|
|
7
8
|
import "./read.mjs";
|
|
8
9
|
import { icebergAppend, icebergCreateTable, icebergDropTable } from "./write/write.mjs";
|
|
9
10
|
import "./catalog/file.mjs";
|
|
10
|
-
import "../../../../squirreling@0.15.3/node_modules/squirreling/src/index.mjs";
|
|
11
11
|
import "./sql/icebergDataSource.mjs";
|
|
12
12
|
import "./sql/icebergQuery.mjs";
|
|
13
13
|
export { icebergAppend, icebergCreateTable, icebergDropTable, icebergManifests, restCatalogConnect, restCatalogCreateNamespace, restCatalogListTables, restCatalogLoadTable, s3SignedResolver };
|
|
@@ -29,6 +29,7 @@ async function fetchOneManifest(manifest, resolver) {
|
|
|
29
29
|
const entries = await fetchAvroRecords(url, resolver, Number(manifest.manifest_length));
|
|
30
30
|
for (const entry of entries) {
|
|
31
31
|
entry.partition_spec_id = manifest.partition_spec_id ?? 0;
|
|
32
|
+
if (entry.snapshot_id == null) entry.snapshot_id = manifest.added_snapshot_id;
|
|
32
33
|
if (entry.sequence_number === void 0) entry.sequence_number = manifest.sequence_number ?? 0n;
|
|
33
34
|
if (entry.status === 1) {
|
|
34
35
|
if (entry.sequence_number === void 0) entry.sequence_number = manifest.sequence_number;
|
|
@@ -40,14 +40,6 @@ function icebergLatestVersion({ tableUrl, resolver, lister }) {
|
|
|
40
40
|
throw new Error(`failed to determine latest iceberg version of ${tableUrl}: ${err.message}`);
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
async function icebergMetadata({ tableUrl, metadataFileName, resolver, lister }) {
|
|
44
|
-
return (await resolveMetadata({
|
|
45
|
-
tableUrl,
|
|
46
|
-
metadataFileName,
|
|
47
|
-
resolver,
|
|
48
|
-
lister
|
|
49
|
-
})).metadata;
|
|
50
|
-
}
|
|
51
43
|
async function resolveMetadata({ tableUrl, metadataFileName, resolver, lister }) {
|
|
52
44
|
resolver ??= urlResolver();
|
|
53
45
|
lister ??= s3Lister();
|
|
@@ -161,4 +153,4 @@ function metadataFilePreference(file, paddedVersion) {
|
|
|
161
153
|
if (file.startsWith(`${paddedVersion}-`) && file.endsWith(".metadata.json.gz")) return 5;
|
|
162
154
|
return 6;
|
|
163
155
|
}
|
|
164
|
-
export { icebergLatestVersion,
|
|
156
|
+
export { icebergLatestVersion, loadLatestFileCatalogMetadata, resolveMetadata };
|
|
@@ -1,91 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import "../../../../hyparquet@1.
|
|
1
|
+
import { cachedAsyncBuffer } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/utils.mjs";
|
|
2
|
+
import { columnsNeededForFilter, matchFilter } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/filter.mjs";
|
|
3
|
+
import { parquetScan } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/scan.mjs";
|
|
4
|
+
import { parquetReadObjects } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/read.mjs";
|
|
5
|
+
import "../../../../hyparquet@1.29.1/node_modules/hyparquet/src/node.mjs";
|
|
5
6
|
import { compressors } from "../../../../hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/compressors.mjs";
|
|
6
7
|
import "../../../../hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/index.mjs";
|
|
7
8
|
import { equalityMatch, sanitize } from "./utils.mjs";
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import
|
|
9
|
+
import { readParquetMetadata } from "./fetch.mjs";
|
|
10
|
+
import "./manifest.mjs";
|
|
11
|
+
import "./metadata.mjs";
|
|
11
12
|
import { deleteFileAppliesToDataEntry } from "./delete.mjs";
|
|
12
|
-
|
|
13
|
-
async function
|
|
14
|
-
if (!tableUrl) throw new Error("tableUrl is required");
|
|
15
|
-
if (rowStart > rowEnd) throw new Error("rowStart must be less than rowEnd");
|
|
16
|
-
if (rowStart < 0) throw new Error("rowStart must be positive");
|
|
17
|
-
rowGroupConcurrency = normalizeRowGroupConcurrency(rowGroupConcurrency);
|
|
18
|
-
resolver ??= urlResolver();
|
|
19
|
-
metadata ??= await icebergMetadata({
|
|
20
|
-
tableUrl,
|
|
21
|
-
metadataFileName,
|
|
22
|
-
resolver,
|
|
23
|
-
lister
|
|
24
|
-
});
|
|
25
|
-
const manifestList = await icebergManifests({
|
|
26
|
-
metadata,
|
|
27
|
-
resolver,
|
|
28
|
-
snapshotId
|
|
29
|
-
});
|
|
30
|
-
const currentSchemaId = metadata["current-schema-id"];
|
|
31
|
-
const schema = metadata.schemas.find((s) => s["schema-id"] === currentSchemaId);
|
|
32
|
-
if (!schema) throw new Error("current schema not found in metadata");
|
|
33
|
-
const rowLineage = metadata["format-version"] >= 3;
|
|
34
|
-
const { dataEntries, deleteEntries } = splitManifestEntries(manifestList);
|
|
35
|
-
if (dataEntries.length === 0) throw new Error("No data manifest files found for current snapshot");
|
|
36
|
-
const hasDeletes = deleteEntries.length > 0;
|
|
37
|
-
const deleteMaps = fetchDeleteMaps(deleteEntries, resolver);
|
|
38
|
-
const totalRowsToRead = rowEnd === Infinity ? Infinity : rowEnd - rowStart;
|
|
39
|
-
let fileIndex = 0;
|
|
40
|
-
let skipRows = rowStart;
|
|
41
|
-
if (hasDeletes) skipRows = 0;
|
|
42
|
-
else while (fileIndex < dataEntries.length && skipRows >= dataEntries[fileIndex].data_file.record_count) {
|
|
43
|
-
skipRows -= Number(dataEntries[fileIndex].data_file.record_count);
|
|
44
|
-
fileIndex++;
|
|
45
|
-
}
|
|
46
|
-
const fileReads = [];
|
|
47
|
-
let rowsRemaining = hasDeletes ? Infinity : totalRowsToRead;
|
|
48
|
-
for (let i = fileIndex; i < dataEntries.length && rowsRemaining > 0; i++) {
|
|
49
|
-
const recordCount = Number(dataEntries[i].data_file.record_count);
|
|
50
|
-
const fileRowStart = i === fileIndex ? skipRows : 0;
|
|
51
|
-
const availableRows = recordCount - fileRowStart;
|
|
52
|
-
if (availableRows <= 0) continue;
|
|
53
|
-
const rowsToRead = rowsRemaining === Infinity ? availableRows : Math.min(rowsRemaining, availableRows);
|
|
54
|
-
fileReads.push({
|
|
55
|
-
entry: dataEntries[i],
|
|
56
|
-
fileRowStart,
|
|
57
|
-
fileRowEnd: fileRowStart + rowsToRead
|
|
58
|
-
});
|
|
59
|
-
if (rowsRemaining !== Infinity) rowsRemaining -= rowsToRead;
|
|
60
|
-
}
|
|
61
|
-
const { positionDeletesMap, equalityDeleteGroups } = await deleteMaps;
|
|
62
|
-
const rows = (await Promise.all(fileReads.map(async ({ entry, fileRowStart, fileRowEnd }) => {
|
|
63
|
-
const rows = [];
|
|
64
|
-
for await (const batch of readDataFile({
|
|
65
|
-
dataEntry: entry,
|
|
66
|
-
fileRowStart,
|
|
67
|
-
fileRowEnd,
|
|
68
|
-
schema,
|
|
69
|
-
metadata,
|
|
70
|
-
resolver,
|
|
71
|
-
rowLineage,
|
|
72
|
-
positionDeletesMap,
|
|
73
|
-
equalityDeleteGroups,
|
|
74
|
-
rowGroupConcurrency
|
|
75
|
-
})) concat(rows, batch);
|
|
76
|
-
return rows;
|
|
77
|
-
}))).flat();
|
|
78
|
-
if (!hasDeletes) return rows;
|
|
79
|
-
return rows.slice(rowStart, rowEnd === Infinity ? void 0 : rowEnd);
|
|
80
|
-
}
|
|
81
|
-
async function* readDataFile({ dataEntry, fileRowStart, fileRowEnd, schema, metadata, resolver, rowLineage, positionDeletesMap, equalityDeleteGroups, wantedColumns, rowGroupConcurrency = 1, filter, signal }) {
|
|
13
|
+
import "../../../../squirreling@0.16.2/node_modules/squirreling/src/index.mjs";
|
|
14
|
+
async function* readDataFile({ dataEntry, fileRowStart, fileRowEnd, schema, metadata, resolver, rowLineage, positionDeletesMap = /* @__PURE__ */ new Map(), equalityDeleteGroups = [], wantedColumns, rowGroupConcurrency = 1, filter, signal }) {
|
|
82
15
|
const { data_file, sequence_number, partition_spec_id } = dataEntry;
|
|
83
16
|
if (sequence_number === void 0) throw new Error("sequence number not found, check v2 inheritance logic");
|
|
84
17
|
const sequenceNumber = sequence_number;
|
|
85
18
|
const partitionSpec = metadata["partition-specs"].find((s) => s["spec-id"] === partition_spec_id);
|
|
86
19
|
const resolved = await resolver.reader(data_file.file_path, Number(data_file.file_size_in_bytes));
|
|
87
20
|
const asyncBuffer = cachedAsyncBuffer(resolved);
|
|
88
|
-
const parquetMetadata = await
|
|
21
|
+
const parquetMetadata = await readParquetMetadata(asyncBuffer);
|
|
89
22
|
const kv = parquetMetadata.key_value_metadata?.find((k) => k.key === "iceberg.schema");
|
|
90
23
|
let parquetIcebergSchema;
|
|
91
24
|
if (kv?.value) parquetIcebergSchema = JSON.parse(kv.value);
|
|
@@ -130,23 +63,40 @@ async function* readDataFile({ dataEntry, fileRowStart, fileRowEnd, schema, meta
|
|
|
130
63
|
if (parquetName) icebergToParquet[schema.fields[i].name] = parquetName;
|
|
131
64
|
}
|
|
132
65
|
const parquetFilter = filter ? remapFilterColumns(filter, icebergToParquet) : void 0;
|
|
133
|
-
|
|
66
|
+
const readColumns = [...parquetColumns];
|
|
67
|
+
if (parquetFilter) {
|
|
68
|
+
for (const column of columnsNeededForFilter(parquetFilter)) if (!readColumns.includes(column)) readColumns.push(column);
|
|
69
|
+
}
|
|
70
|
+
const scan = await parquetScan({
|
|
71
|
+
file: asyncBuffer,
|
|
72
|
+
metadata: parquetMetadata,
|
|
73
|
+
columns: readColumns,
|
|
74
|
+
pruningFilter: parquetFilter,
|
|
75
|
+
rowStart: fileRowStart,
|
|
76
|
+
rowEnd: fileRowEnd,
|
|
77
|
+
compressors,
|
|
78
|
+
filterStrict: false,
|
|
79
|
+
useBloomFilters: true,
|
|
80
|
+
usePageIndex: true,
|
|
81
|
+
utf8: false
|
|
82
|
+
});
|
|
83
|
+
if (signal?.aborted) throw new DOMException("Aborted", "AbortError");
|
|
84
|
+
async function readCandidateRange({ readStart, readEnd }) {
|
|
134
85
|
const rows = await parquetReadObjects({
|
|
135
86
|
file: asyncBuffer,
|
|
136
87
|
metadata: parquetMetadata,
|
|
137
|
-
columns:
|
|
88
|
+
columns: readColumns,
|
|
138
89
|
rowStart: readStart,
|
|
139
90
|
rowEnd: readEnd,
|
|
140
91
|
compressors,
|
|
141
|
-
|
|
142
|
-
filterStrict: false,
|
|
143
|
-
useBloomFilters: true,
|
|
92
|
+
useOffsetIndex: true,
|
|
144
93
|
utf8: false
|
|
145
94
|
});
|
|
146
95
|
const batch = [];
|
|
147
96
|
for (let idx = 0; idx < rows.length; idx++) {
|
|
148
97
|
const row = rows[idx];
|
|
149
98
|
const pos = BigInt(readStart + idx);
|
|
99
|
+
if (parquetFilter && !matchFilter(row, parquetFilter, false)) continue;
|
|
150
100
|
if (positionDeletes.has(pos)) continue;
|
|
151
101
|
if (applicableEqualityGroups.some((group) => group.rows.some((predicate) => equalityMatch(row, predicate, dataColumnNamesById)))) continue;
|
|
152
102
|
const mapped = {};
|
|
@@ -185,30 +135,15 @@ async function* readDataFile({ dataEntry, fileRowStart, fileRowEnd, schema, meta
|
|
|
185
135
|
}
|
|
186
136
|
return batch;
|
|
187
137
|
}
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
const rowCount = Number(rowGroup.num_rows);
|
|
193
|
-
const groupEnd = groupStart + rowCount;
|
|
194
|
-
if (groupEnd <= fileRowStart) {
|
|
195
|
-
groupStart = groupEnd;
|
|
196
|
-
continue;
|
|
197
|
-
}
|
|
198
|
-
if (groupStart >= fileRowEnd) break;
|
|
199
|
-
const readStart = Math.max(groupStart, fileRowStart);
|
|
200
|
-
const readEnd = Math.min(groupEnd, fileRowEnd);
|
|
201
|
-
rowGroupRanges.push({
|
|
202
|
-
readStart,
|
|
203
|
-
readEnd
|
|
204
|
-
});
|
|
205
|
-
groupStart = groupEnd;
|
|
206
|
-
}
|
|
138
|
+
const candidateRanges = scan.ranges.map(({ rowStart, rowEnd }) => ({
|
|
139
|
+
readStart: rowStart,
|
|
140
|
+
readEnd: rowEnd
|
|
141
|
+
}));
|
|
207
142
|
const concurrency = normalizeRowGroupConcurrency(rowGroupConcurrency);
|
|
208
|
-
if (concurrency === 1 ||
|
|
209
|
-
for (const range of
|
|
143
|
+
if (concurrency === 1 || candidateRanges.length <= 1) {
|
|
144
|
+
for (const range of candidateRanges) {
|
|
210
145
|
if (signal?.aborted) throw new DOMException("Aborted", "AbortError");
|
|
211
|
-
const batch = await
|
|
146
|
+
const batch = await readCandidateRange(range);
|
|
212
147
|
if (batch.length > 0) yield batch;
|
|
213
148
|
}
|
|
214
149
|
return;
|
|
@@ -217,21 +152,21 @@ async function* readDataFile({ dataEntry, fileRowStart, fileRowEnd, schema, meta
|
|
|
217
152
|
let nextStart = 0;
|
|
218
153
|
let nextYield = 0;
|
|
219
154
|
function startTask(index) {
|
|
220
|
-
const task =
|
|
155
|
+
const task = readCandidateRange(candidateRanges[index]).then((batch) => ({ batch }), (error) => ({ error }));
|
|
221
156
|
tasks.set(index, task);
|
|
222
157
|
}
|
|
223
|
-
while (nextStart <
|
|
158
|
+
while (nextStart < candidateRanges.length && tasks.size < concurrency) {
|
|
224
159
|
startTask(nextStart);
|
|
225
160
|
nextStart++;
|
|
226
161
|
}
|
|
227
|
-
while (nextYield <
|
|
162
|
+
while (nextYield < candidateRanges.length) {
|
|
228
163
|
if (signal?.aborted) throw new DOMException("Aborted", "AbortError");
|
|
229
164
|
const task = tasks.get(nextYield);
|
|
230
165
|
if (!task) throw new Error("internal row group scheduling error");
|
|
231
166
|
const result = await task;
|
|
232
167
|
tasks.delete(nextYield);
|
|
233
168
|
if (result.error) throw result.error;
|
|
234
|
-
while (nextStart <
|
|
169
|
+
while (nextStart < candidateRanges.length && tasks.size < concurrency) {
|
|
235
170
|
startTask(nextStart);
|
|
236
171
|
nextStart++;
|
|
237
172
|
}
|
|
@@ -322,4 +257,4 @@ function applyRowLineage(out, { row, pos, firstRowId, sequenceNumber, rowIdColum
|
|
|
322
257
|
else if (firstRowId != null) out._last_updated_sequence_number = sequenceNumber;
|
|
323
258
|
else out._last_updated_sequence_number = null;
|
|
324
259
|
}
|
|
325
|
-
export {
|
|
260
|
+
export { readDataFile };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "../fetch.mjs";
|
|
2
2
|
import "../manifest.mjs";
|
|
3
3
|
import "../metadata.mjs";
|
|
4
|
+
import "../../../../../squirreling@0.16.2/node_modules/squirreling/src/index.mjs";
|
|
4
5
|
import "../read.mjs";
|
|
5
|
-
import "../../../../../squirreling@0.15.3/node_modules/squirreling/src/index.mjs";
|
|
6
6
|
import "../prune.mjs";
|
|
7
7
|
import "./whereFilter.mjs";
|
|
8
8
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../fetch.mjs";
|
|
2
2
|
import "../catalog/loadTable.mjs";
|
|
3
|
-
import "../../../../../squirreling@0.
|
|
3
|
+
import "../../../../../squirreling@0.16.2/node_modules/squirreling/src/index.mjs";
|
|
4
4
|
import "./icebergDataSource.mjs";
|
|
5
5
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AsyncBuffer } from "../../../../hyparquet@1.
|
|
2
|
-
import "../../../../hyparquet@1.
|
|
1
|
+
import { AsyncBuffer } from "../../../../hyparquet@1.29.1/node_modules/hyparquet/types/index.mjs";
|
|
2
|
+
import "../../../../hyparquet@1.29.1/node_modules/hyparquet/types/node.mjs";
|
|
3
3
|
import { Writer } from "../../../../hyparquet-writer@0.16.6_patch_hash=549d1fd1fb9614da77df9123bf6978a8fccfe1d9bb8882863ce6159f666e821a/node_modules/hyparquet-writer/types/index.mjs";
|
|
4
4
|
import "../../../../hyparquet-writer@0.16.6_patch_hash=549d1fd1fb9614da77df9123bf6978a8fccfe1d9bb8882863ce6159f666e821a/node_modules/hyparquet-writer/types/node.mjs";
|
|
5
5
|
interface WriterOptions {
|
|
@@ -38,6 +38,16 @@ function manifestEntrySchema(schema, partitionSpec, formatVersion, manifestConte
|
|
|
38
38
|
mapField("nan_value_counts", 137, "k138_v139", 138, 139, "long"),
|
|
39
39
|
mapField("lower_bounds", 125, "k126_v127", 126, 127, "bytes"),
|
|
40
40
|
mapField("upper_bounds", 128, "k129_v130", 129, 130, "bytes"),
|
|
41
|
+
{
|
|
42
|
+
name: "split_offsets",
|
|
43
|
+
type: ["null", {
|
|
44
|
+
type: "array",
|
|
45
|
+
items: "long",
|
|
46
|
+
"element-id": 133
|
|
47
|
+
}],
|
|
48
|
+
default: null,
|
|
49
|
+
"field-id": 132
|
|
50
|
+
},
|
|
41
51
|
{
|
|
42
52
|
name: "sort_order_id",
|
|
43
53
|
type: ["null", "int"],
|
|
@@ -151,6 +161,7 @@ function icebergSchemaJson(schema) {
|
|
|
151
161
|
}
|
|
152
162
|
function encodeMap(m) {
|
|
153
163
|
if (!m) return null;
|
|
164
|
+
if (Array.isArray(m)) return m.length ? m : null;
|
|
154
165
|
const entries = Object.entries(m);
|
|
155
166
|
if (!entries.length) return null;
|
|
156
167
|
return entries.map(([k, value]) => ({
|
|
@@ -169,6 +180,7 @@ function writeDataManifest({ writer, schema, partitionSpec, snapshotId, dataFile
|
|
|
169
180
|
records,
|
|
170
181
|
metadata: {
|
|
171
182
|
"format-version": String(formatVersion),
|
|
183
|
+
"schema-id": String(schema["schema-id"]),
|
|
172
184
|
content: "data",
|
|
173
185
|
schema: icebergSchemaJson(schema),
|
|
174
186
|
"partition-spec": partitionSpecJson(partitionSpec),
|
|
@@ -188,6 +200,7 @@ function writeDeleteManifest({ writer, schema, partitionSpec, snapshotId, delete
|
|
|
188
200
|
records,
|
|
189
201
|
metadata: {
|
|
190
202
|
"format-version": String(formatVersion),
|
|
203
|
+
"schema-id": String(schema["schema-id"]),
|
|
191
204
|
content: "deletes",
|
|
192
205
|
schema: icebergSchemaJson(schema),
|
|
193
206
|
"partition-spec": partitionSpecJson(partitionSpec),
|
|
@@ -195,6 +208,35 @@ function writeDeleteManifest({ writer, schema, partitionSpec, snapshotId, delete
|
|
|
195
208
|
}
|
|
196
209
|
});
|
|
197
210
|
}
|
|
211
|
+
function writeExistingDataManifest({ writer, schema, partitionSpec, entries, formatVersion = 2 }) {
|
|
212
|
+
const records = entries.map((entry) => {
|
|
213
|
+
const dataFile = entry.data_file;
|
|
214
|
+
if (entry.status === 2) throw new Error("writeExistingDataManifest cannot rewrite deleted entries as existing");
|
|
215
|
+
if (dataFile.content !== 0) throw new Error(`writeExistingDataManifest expects data files (content=0), got content=${dataFile.content}`);
|
|
216
|
+
if (entry.partition_spec_id !== partitionSpec["spec-id"]) throw new Error(`existing data entry partition spec ${entry.partition_spec_id} does not match ${partitionSpec["spec-id"]}`);
|
|
217
|
+
const record = manifestEntryRecord(dataFile, schema, partitionSpec, 0n, formatVersion, 0);
|
|
218
|
+
record.status = 0;
|
|
219
|
+
record.snapshot_id = entry.snapshot_id ?? null;
|
|
220
|
+
record.sequence_number = entry.sequence_number ?? null;
|
|
221
|
+
record.file_sequence_number = entry.file_sequence_number ?? null;
|
|
222
|
+
if (record.snapshot_id == null) throw new Error("existing data manifest entry missing snapshot id");
|
|
223
|
+
if (record.sequence_number == null || record.file_sequence_number == null) throw new Error("existing data manifest entry missing sequence numbers");
|
|
224
|
+
return record;
|
|
225
|
+
});
|
|
226
|
+
return avroWrite({
|
|
227
|
+
writer,
|
|
228
|
+
schema: manifestEntrySchema(schema, partitionSpec, formatVersion, 0),
|
|
229
|
+
records,
|
|
230
|
+
metadata: {
|
|
231
|
+
"format-version": String(formatVersion),
|
|
232
|
+
"schema-id": String(schema["schema-id"]),
|
|
233
|
+
content: "data",
|
|
234
|
+
schema: icebergSchemaJson(schema),
|
|
235
|
+
"partition-spec": partitionSpecJson(partitionSpec),
|
|
236
|
+
"partition-spec-id": String(partitionSpec["spec-id"])
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}
|
|
198
240
|
function writeExistingDeleteManifest({ writer, schema, partitionSpec, entries, formatVersion = 2 }) {
|
|
199
241
|
const records = entries.map((entry) => {
|
|
200
242
|
const deleteFile = entry.data_file;
|
|
@@ -213,6 +255,7 @@ function writeExistingDeleteManifest({ writer, schema, partitionSpec, entries, f
|
|
|
213
255
|
records,
|
|
214
256
|
metadata: {
|
|
215
257
|
"format-version": String(formatVersion),
|
|
258
|
+
"schema-id": String(schema["schema-id"]),
|
|
216
259
|
content: "deletes",
|
|
217
260
|
schema: icebergSchemaJson(schema),
|
|
218
261
|
"partition-spec": partitionSpecJson(partitionSpec),
|
|
@@ -234,6 +277,7 @@ function manifestEntryRecord(dataFile, schema, partitionSpec, snapshotId, format
|
|
|
234
277
|
nan_value_counts: encodeMap(dataFile.nan_value_counts),
|
|
235
278
|
lower_bounds: encodeMap(dataFile.lower_bounds),
|
|
236
279
|
upper_bounds: encodeMap(dataFile.upper_bounds),
|
|
280
|
+
split_offsets: dataFile.split_offsets?.length ? dataFile.split_offsets : null,
|
|
237
281
|
sort_order_id: dataFile.content === 1 ? null : dataFile.sort_order_id ?? 0
|
|
238
282
|
};
|
|
239
283
|
if (manifestContent === 1) {
|
|
@@ -253,4 +297,4 @@ function manifestEntryRecord(dataFile, schema, partitionSpec, snapshotId, format
|
|
|
253
297
|
data_file: dataFileRecord
|
|
254
298
|
};
|
|
255
299
|
}
|
|
256
|
-
export { writeDataManifest, writeDeleteManifest, writeExistingDeleteManifest };
|
|
300
|
+
export { writeDataManifest, writeDeleteManifest, writeExistingDataManifest, writeExistingDeleteManifest };
|