@gscdump/engine 1.4.0 → 1.4.1
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/dist/adapters/duckdb-node.d.mts +7 -0
- package/dist/adapters/duckdb-node.mjs +94 -0
- package/dist/adapters/filesystem.d.mts +1 -1
- package/dist/adapters/filesystem.mjs +1 -1
- package/dist/adapters/hyparquet.d.mts +4 -3
- package/dist/adapters/hyparquet.mjs +7 -3
- package/dist/adapters/node-harness.d.mts +38 -0
- package/dist/adapters/node-harness.mjs +47 -0
- package/dist/adapters/node.d.mts +4 -100
- package/dist/adapters/node.mjs +4 -240
- package/dist/adapters/parquet-attach.d.mts +23 -0
- package/dist/adapters/parquet-attach.mjs +21 -0
- package/dist/adapters/r2-manifest.d.mts +82 -0
- package/dist/adapters/r2-manifest.mjs +364 -0
- package/dist/adapters/r2.d.mts +1 -1
- package/dist/adapters/read-optional.mjs +15 -0
- package/dist/adapters/snapshot-attach.d.mts +38 -0
- package/dist/adapters/snapshot-attach.mjs +85 -0
- package/dist/analysis-types.d.mts +56 -1
- package/dist/analyzer/define.d.mts +48 -0
- package/dist/analyzer/define.mjs +60 -0
- package/dist/analyzer/dispatch.d.mts +17 -0
- package/dist/analyzer/index.d.mts +4 -14
- package/dist/analyzer/index.mjs +4 -112
- package/dist/analyzer/registry.d.mts +33 -0
- package/dist/analyzer/registry.mjs +49 -0
- package/dist/analyzer/types.d.mts +95 -0
- package/dist/analyzer/types.mjs +5 -0
- package/dist/coerce.d.mts +4 -0
- package/dist/compaction.d.mts +14 -0
- package/dist/{_chunks/parquet-plan.mjs → compaction.mjs} +2 -138
- package/dist/contracts.d.mts +1 -2
- package/dist/{_chunks/schema.d.mts → drizzle-schema.d.mts} +2 -34
- package/dist/{_chunks/schema.mjs → drizzle-schema.mjs} +2 -78
- package/dist/{_chunks/snapshot.d.mts → duckdb.d.mts} +1 -14
- package/dist/duckdb.mjs +207 -0
- package/dist/engine.d.mts +4 -0
- package/dist/engine.mjs +385 -0
- package/dist/entities.d.mts +3 -52
- package/dist/entities.mjs +867 -2
- package/dist/errors.d.mts +114 -1
- package/dist/gc.mjs +92 -0
- package/dist/iceberg/append-sink.d.mts +14 -0
- package/dist/iceberg/append-sink.mjs +142 -0
- package/dist/iceberg/catalog.d.mts +71 -0
- package/dist/iceberg/catalog.mjs +109 -0
- package/dist/iceberg/index.d.mts +4 -13
- package/dist/iceberg/index.mjs +3 -244
- package/dist/iceberg/overwrite-writer.d.mts +161 -0
- package/dist/iceberg/overwrite-writer.mjs +102 -0
- package/dist/iceberg/pyiceberg-runtime.mjs +34 -0
- package/dist/iceberg/schema.d.mts +69 -0
- package/dist/{_chunks/schema2.mjs → iceberg/schema.mjs} +3 -2
- package/dist/index.d.mts +14 -190
- package/dist/index.mjs +10 -645
- package/dist/ingest-accumulator.d.mts +1 -1
- package/dist/ingest.d.mts +1 -1
- package/dist/layout.d.mts +31 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.bitreader.mjs +88 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.blocks.mjs +120 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.context.mjs +1805 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.contextmap.mjs +49 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.dictionary.mjs +984 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.huffman.mjs +266 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.mjs +340 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.prefix.mjs +109 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.streams.mjs +21 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/brotli.transform.mjs +190 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/compressors.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/gzip.huffman.mjs +121 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/gzip.mjs +176 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet-compressors@1.1.1/node_modules/hyparquet-compressors/src/lz4.mjs +52 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/bloom.mjs +93 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/bytewriter.mjs +91 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/column.mjs +186 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/datapage.mjs +113 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/delta.mjs +111 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/dictionary.mjs +99 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/dremel.mjs +116 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/encoding.mjs +51 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/geospatial.mjs +84 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/indexes.mjs +31 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/metadata.mjs +138 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/node.mjs +8 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/parquet-writer.mjs +139 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/plain.mjs +68 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/schema.mjs +254 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/snappy.mjs +125 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/splitstream.mjs +38 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/thrift.mjs +79 -0
- package/dist/{_chunks/libs/hyparquet-writer.d.mts → node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/types.d.mts} +2 -2
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/unconvert.mjs +247 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/variant.mjs +321 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/wkb.mjs +79 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/write-rows.mjs +122 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/src/write.mjs +5 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/bytewriter.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/index.d.mts +10 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/node.d.mts +3 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/parquet-writer.d.mts +2 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/schema.d.mts +2 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/wkb.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/write-rows.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet-writer@0.16.1_patch_hash_7a5e451ac7634d7546ac56bcc5eadacf7715a6241640c2b5a5bc0cfc9763b8ec/node_modules/hyparquet-writer/types/write.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/assemble.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/bloom.mjs +69 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/column.mjs +8 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/constants.mjs +80 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/convert.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/datapage.mjs +6 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/delta.mjs +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/encoding.mjs +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/filter.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/geoparquet.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/indexes.mjs +5 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/metadata.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/node.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/plain.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/plan.mjs +5 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/query.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/read.mjs +6 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/rowgroup.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/schema.mjs +54 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/snappy.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/thrift.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/types.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/utils.mjs +19 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/variant.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/wkb.mjs +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/src/xxhash.mjs +68 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/index.d.mts +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/indexes.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/metadata.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/node.d.mts +2 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/query.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/read.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/snappy.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.1/node_modules/hyparquet/types/utils.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/assemble.mjs +144 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/bloom.mjs +124 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/column.mjs +127 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/constants.mjs +75 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/convert.mjs +118 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/datapage.mjs +144 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/delta.mjs +65 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/encoding.mjs +76 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/filter.mjs +98 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/geoparquet.mjs +24 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/index.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/indexes.mjs +16 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/metadata.mjs +235 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/node.mjs +7 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/plain.mjs +78 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/plan.mjs +147 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/query.mjs +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/read.mjs +106 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/rowgroup.mjs +154 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/schema.mjs +75 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/snappy.mjs +70 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/thrift.mjs +86 -0
- package/dist/{_chunks/libs/hyparquet.d.mts → node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/types.d.mts} +6 -8
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/utils.mjs +31 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/variant.mjs +225 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/wkb.mjs +94 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/src/xxhash.mjs +68 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/index.d.mts +10 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/indexes.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/metadata.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/node.d.mts +3 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/query.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/read.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/snappy.d.mts +1 -0
- package/dist/node_modules/.pnpm/hyparquet@1.26.2/node_modules/hyparquet/types/utils.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/avro/avro.metadata.mjs +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/avro/avro.read.mjs +4 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/avro/avro.write.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/catalog/file.mjs +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/catalog/loadTable.mjs +3 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/catalog/rest.mjs +73 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/create.mjs +67 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/delete.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/fetch.mjs +8 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/index.mjs +13 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/json.mjs +147 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/manifest.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/metadata.mjs +3 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/prune.mjs +4 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/puffin/deletion-vector.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/puffin/puffin.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/puffin/roaring.mjs +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/read.mjs +9 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/s3.mjs +3 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/schema.mjs +76 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sigv4.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sql/icebergDataSource.mjs +8 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sql/icebergQuery.mjs +5 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/sql/whereFilter.mjs +1 -0
- package/dist/{_chunks/libs/icebird.d.mts → node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/types.d.mts} +5 -33
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/utils.mjs +8 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/commit.mjs +5 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/conversions.mjs +19 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/delete-file.mjs +3 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/geospatial.mjs +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/manifest-list.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/manifest.mjs +3 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/parquet.mjs +5 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/partition.mjs +75 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/rewrite.mjs +10 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/serde.mjs +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/snapshot.mjs +5 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/sort.mjs +3 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stage-deletion-vector.mjs +11 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stage-position-delete.mjs +8 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stage.mjs +10 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/stats.mjs +4 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/transform.mjs +60 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/src/write/write.mjs +45 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/catalog/file.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/catalog/rest.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/create.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/fetch.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/index.d.mts +13 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/manifest.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/metadata.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/read.d.mts +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/s3.d.mts +1 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/sql/icebergDataSource.d.mts +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/sql/icebergQuery.d.mts +2 -0
- package/dist/node_modules/.pnpm/icebird@0.8.15_patch_hash_d1902372376af18885e7c7dce807f1ecab86c2f86a9d1ff65d51e3b63b64b057/node_modules/icebird/types/write/write.d.mts +32 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/ast.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/backend/dataSource.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/accumulator.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/aggregates.mjs +10 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/execute.mjs +15 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/join.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/scanColumn.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/sort.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/streamingAggregate.mjs +9 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/utils.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/window.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/execute/yield.mjs +17 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/alias.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/binary.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/date.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/evaluate.mjs +15 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/math.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/regexp.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/expression/strings.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/index.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/index.mjs +9 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/expression.mjs +6 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/extractTables.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/functions.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/joins.mjs +7 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/parse.mjs +10 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/primary.mjs +8 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/state.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/tokenize.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/parse/types.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/plan/columns.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/plan/plan.mjs +7 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/plan/types.d.mts +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/bbox.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/equality.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/operations.mjs +5 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/pointRelations.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/primitives.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/segments.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/spatial.mjs +6 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/spatial/wkt.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/types.d.mts +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/aggregates.mjs +3 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/executionErrors.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/functions.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/keywords.mjs +1 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/parseErrors.mjs +2 -0
- package/dist/node_modules/.pnpm/squirreling@0.15.0/node_modules/squirreling/src/validation/tables.mjs +2 -0
- package/dist/parquet-plan.d.mts +15 -0
- package/dist/parquet-plan.mjs +139 -0
- package/dist/parquet-pushdown.mjs +58 -0
- package/dist/period/index.d.mts +52 -1
- package/dist/planner.d.mts +2 -14
- package/dist/planner.mjs +2 -1
- package/dist/profile.d.mts +21 -0
- package/dist/profile.mjs +27 -0
- package/dist/query-dim.d.mts +54 -0
- package/dist/query-dim.mjs +91 -0
- package/dist/report/define.d.mts +8 -0
- package/dist/report/define.mjs +15 -0
- package/dist/report/hash.d.mts +13 -0
- package/dist/report/hash.mjs +29 -0
- package/dist/report/index.d.mts +4 -170
- package/dist/report/index.mjs +3 -55
- package/dist/report/registry.d.mts +18 -0
- package/dist/report/registry.mjs +14 -0
- package/dist/report/types.d.mts +139 -0
- package/dist/resolver/adapter.d.mts +13 -0
- package/dist/resolver/adapter.mjs +27 -0
- package/dist/resolver/canonical-source.d.mts +5 -0
- package/dist/resolver/canonical-source.mjs +14 -0
- package/dist/resolver/compile.d.mts +15 -0
- package/dist/resolver/compile.mjs +396 -0
- package/dist/resolver/datasets.d.mts +16 -0
- package/dist/resolver/datasets.mjs +159 -0
- package/dist/resolver/extras-overlay.d.mts +37 -0
- package/dist/resolver/extras-overlay.mjs +17 -0
- package/dist/resolver/filter-utils.d.mts +10 -0
- package/dist/resolver/filter-utils.mjs +59 -0
- package/dist/resolver/fragments.d.mts +60 -0
- package/dist/resolver/fragments.mjs +206 -0
- package/dist/resolver/index.d.mts +11 -371
- package/dist/resolver/index.mjs +10 -1
- package/dist/resolver/pg-adapter.d.mts +56 -0
- package/dist/resolver/pg-adapter.mjs +110 -0
- package/dist/resolver/run-query.d.mts +172 -0
- package/dist/resolver/run-query.mjs +241 -0
- package/dist/resolver/schema-drift.d.mts +15 -0
- package/dist/resolver/schema-drift.mjs +12 -0
- package/dist/rollups.d.mts +4 -4
- package/dist/rollups.mjs +3 -2
- package/dist/schedule.mjs +100 -0
- package/dist/schema.d.mts +34 -1
- package/dist/schema.mjs +78 -1
- package/dist/sink-node.d.mts +1 -159
- package/dist/sink-node.mjs +1 -133
- package/dist/sink.d.mts +125 -0
- package/dist/sinks/in-memory-sink.d.mts +25 -0
- package/dist/sinks/in-memory-sink.mjs +61 -0
- package/dist/sinks/index.d.mts +2 -0
- package/dist/sinks/index.mjs +2 -0
- package/dist/snapshot.d.mts +14 -0
- package/dist/source/attached-table.d.mts +45 -0
- package/dist/source/attached-table.mjs +55 -0
- package/dist/source/create-sql-query-source.d.mts +24 -0
- package/dist/source/create-sql-query-source.mjs +28 -0
- package/dist/source/index.d.mts +6 -66
- package/dist/source/index.mjs +9 -82
- package/dist/source/source-types.d.mts +49 -0
- package/dist/{_chunks/storage.d.mts → storage.d.mts} +4 -14
- package/dist/sync-config.d.mts +36 -0
- package/dist/sync-config.mjs +98 -0
- package/dist/vendor/hysnappy-purejs.mjs +12 -1
- package/package.json +4 -4
- package/dist/_chunks/analysis-types.d.mts +0 -57
- package/dist/_chunks/contracts.d.mts +0 -1
- package/dist/_chunks/engine.mjs +0 -731
- package/dist/_chunks/entities.mjs +0 -967
- package/dist/_chunks/errors.d.mts +0 -115
- package/dist/_chunks/index.d.mts +0 -53
- package/dist/_chunks/libs/hyparquet-compressors.mjs +0 -2796
- package/dist/_chunks/libs/hyparquet-writer.mjs +0 -2524
- package/dist/_chunks/libs/hyparquet.mjs +0 -2596
- package/dist/_chunks/libs/icebird.mjs +0 -564
- package/dist/_chunks/registry.d.mts +0 -213
- package/dist/_chunks/resolver.mjs +0 -1220
- package/dist/_chunks/sink.d.mts +0 -257
- /package/dist/{_chunks → analyzer}/dispatch.mjs +0 -0
- /package/dist/{_chunks/coerce.mjs → coerce.mjs} +0 -0
- /package/dist/{_chunks/layout.mjs → layout.mjs} +0 -0
- /package/dist/{_chunks/manifest-store-utils.mjs → manifest-store-utils.mjs} +0 -0
- /package/dist/{_chunks/libs/fzstd.mjs → node_modules/.pnpm/fzstd@0.1.1/node_modules/fzstd/esm/index.mjs} +0 -0
- /package/dist/{_chunks → resolver}/types.d.mts +0 -0
- /package/dist/{_chunks/schedule.d.mts → schedule.d.mts} +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
function ByteWriter(initalSize = 1024) {
|
|
2
|
+
this.buffer = new ArrayBuffer(initalSize);
|
|
3
|
+
this.view = new DataView(this.buffer);
|
|
4
|
+
this.offset = 0;
|
|
5
|
+
this.index = 0;
|
|
6
|
+
return this;
|
|
7
|
+
}
|
|
8
|
+
ByteWriter.prototype.ensure = function(size) {
|
|
9
|
+
if (this.index + size > this.buffer.byteLength) {
|
|
10
|
+
const newSize = Math.max(this.buffer.byteLength * 2, this.index + size);
|
|
11
|
+
const newBuffer = new ArrayBuffer(newSize);
|
|
12
|
+
new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));
|
|
13
|
+
this.buffer = newBuffer;
|
|
14
|
+
this.view = new DataView(this.buffer);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
ByteWriter.prototype.finish = function() {};
|
|
18
|
+
ByteWriter.prototype.getBuffer = function() {
|
|
19
|
+
return this.buffer.slice(0, this.index);
|
|
20
|
+
};
|
|
21
|
+
ByteWriter.prototype.getBytes = function() {
|
|
22
|
+
return new Uint8Array(this.buffer, 0, this.index);
|
|
23
|
+
};
|
|
24
|
+
ByteWriter.prototype.appendUint8 = function(value) {
|
|
25
|
+
this.ensure(this.index + 1);
|
|
26
|
+
this.view.setUint8(this.index, value);
|
|
27
|
+
this.offset++;
|
|
28
|
+
this.index++;
|
|
29
|
+
};
|
|
30
|
+
ByteWriter.prototype.appendUint32 = function(value) {
|
|
31
|
+
this.ensure(this.index + 4);
|
|
32
|
+
this.view.setUint32(this.index, value, true);
|
|
33
|
+
this.offset += 4;
|
|
34
|
+
this.index += 4;
|
|
35
|
+
};
|
|
36
|
+
ByteWriter.prototype.appendInt32 = function(value) {
|
|
37
|
+
this.ensure(this.index + 4);
|
|
38
|
+
this.view.setInt32(this.index, value, true);
|
|
39
|
+
this.offset += 4;
|
|
40
|
+
this.index += 4;
|
|
41
|
+
};
|
|
42
|
+
ByteWriter.prototype.appendInt64 = function(value) {
|
|
43
|
+
this.ensure(this.index + 8);
|
|
44
|
+
this.view.setBigInt64(this.index, BigInt(value), true);
|
|
45
|
+
this.offset += 8;
|
|
46
|
+
this.index += 8;
|
|
47
|
+
};
|
|
48
|
+
ByteWriter.prototype.appendFloat32 = function(value) {
|
|
49
|
+
this.ensure(this.index + 8);
|
|
50
|
+
this.view.setFloat32(this.index, value, true);
|
|
51
|
+
this.offset += 4;
|
|
52
|
+
this.index += 4;
|
|
53
|
+
};
|
|
54
|
+
ByteWriter.prototype.appendFloat64 = function(value) {
|
|
55
|
+
this.ensure(this.index + 8);
|
|
56
|
+
this.view.setFloat64(this.index, value, true);
|
|
57
|
+
this.offset += 8;
|
|
58
|
+
this.index += 8;
|
|
59
|
+
};
|
|
60
|
+
ByteWriter.prototype.appendBuffer = function(value) {
|
|
61
|
+
this.appendBytes(new Uint8Array(value));
|
|
62
|
+
};
|
|
63
|
+
ByteWriter.prototype.appendBytes = function(value) {
|
|
64
|
+
this.ensure(this.index + value.length);
|
|
65
|
+
new Uint8Array(this.buffer, this.index, value.length).set(value);
|
|
66
|
+
this.offset += value.length;
|
|
67
|
+
this.index += value.length;
|
|
68
|
+
};
|
|
69
|
+
ByteWriter.prototype.appendVarInt = function(value) {
|
|
70
|
+
while (true) if ((value & -128) === 0) {
|
|
71
|
+
this.appendUint8(value);
|
|
72
|
+
return;
|
|
73
|
+
} else {
|
|
74
|
+
this.appendUint8(value & 127 | 128);
|
|
75
|
+
value >>>= 7;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
ByteWriter.prototype.appendVarBigInt = function(value) {
|
|
79
|
+
while (true) if ((value & -128n) === 0n) {
|
|
80
|
+
this.appendUint8(Number(value));
|
|
81
|
+
return;
|
|
82
|
+
} else {
|
|
83
|
+
this.appendUint8(Number(value & 127n | 128n));
|
|
84
|
+
value >>= 7n;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
ByteWriter.prototype.appendZigZag = function(value) {
|
|
88
|
+
if (typeof value === "number") this.appendVarInt(value << 1 ^ value >> 31);
|
|
89
|
+
else this.appendVarBigInt(value << 1n ^ value >> 63n);
|
|
90
|
+
};
|
|
91
|
+
export { ByteWriter };
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { BloomBuilder } from "./bloom.mjs";
|
|
2
|
+
import { writeDataPageV2 } from "./datapage.mjs";
|
|
3
|
+
import { estimateValueSize, useDictionary, writeDictionaryPage } from "./dictionary.mjs";
|
|
4
|
+
import { geospatialStatistics } from "./geospatial.mjs";
|
|
5
|
+
import { unconvert, unconvertMinMax } from "./unconvert.mjs";
|
|
6
|
+
function writeColumn({ writer, column, pageData }) {
|
|
7
|
+
const { columnName, element, schemaPath, stats, pageSize, encoding: userEncoding } = column;
|
|
8
|
+
const { type, type_length } = element;
|
|
9
|
+
if (!type) throw new Error(`column ${columnName} cannot determine type`);
|
|
10
|
+
const { values, definitionLevels, repetitionLevels, maxDefinitionLevel } = pageData;
|
|
11
|
+
const offsetStart = writer.offset;
|
|
12
|
+
const encodings = [];
|
|
13
|
+
const isGeospatial = element?.logical_type?.type === "GEOMETRY" || element?.logical_type?.type === "GEOGRAPHY";
|
|
14
|
+
const statistics = stats ? getStatistics(values) : void 0;
|
|
15
|
+
const geospatial_statistics = stats && isGeospatial ? geospatialStatistics(values) : void 0;
|
|
16
|
+
let bloomFilter;
|
|
17
|
+
if (column.bloomFilter) {
|
|
18
|
+
const builder = new BloomBuilder(element, typeof column.bloomFilter === "object" ? column.bloomFilter : void 0);
|
|
19
|
+
for (const v of values) builder.insert(v);
|
|
20
|
+
bloomFilter = builder.finalize();
|
|
21
|
+
}
|
|
22
|
+
let dictionary_page_offset;
|
|
23
|
+
const { dictionary, indexes } = useDictionary(values, type, type_length, userEncoding, pageSize);
|
|
24
|
+
let encoding;
|
|
25
|
+
let writeValues;
|
|
26
|
+
let writeType = type;
|
|
27
|
+
if (dictionary && indexes) {
|
|
28
|
+
writeValues = indexes;
|
|
29
|
+
writeType = "INT32";
|
|
30
|
+
encoding = "RLE_DICTIONARY";
|
|
31
|
+
dictionary_page_offset = BigInt(writer.offset);
|
|
32
|
+
writeDictionaryPage(writer, column, unconvert(element, dictionary));
|
|
33
|
+
} else {
|
|
34
|
+
writeValues = unconvert(element, values);
|
|
35
|
+
encoding = userEncoding ?? (type === "BOOLEAN" && values.length > 16 ? "RLE" : "PLAIN");
|
|
36
|
+
}
|
|
37
|
+
encodings.push(encoding);
|
|
38
|
+
const pageBoundaries = getPageBoundaries(writeValues, writeType, type_length, pageSize);
|
|
39
|
+
const columnIndex = column.columnIndex && pageBoundaries.length > 1 ? {
|
|
40
|
+
null_pages: [],
|
|
41
|
+
min_values: [],
|
|
42
|
+
max_values: [],
|
|
43
|
+
boundary_order: "UNORDERED",
|
|
44
|
+
null_counts: []
|
|
45
|
+
} : void 0;
|
|
46
|
+
const offsetIndex = column.offsetIndex && pageBoundaries.length > 1 ? { page_locations: [] } : void 0;
|
|
47
|
+
const data_page_offset = BigInt(writer.offset);
|
|
48
|
+
let first_row_index = 0n;
|
|
49
|
+
let prevStart = 0;
|
|
50
|
+
let prevMinValue;
|
|
51
|
+
let prevMaxValue;
|
|
52
|
+
let ascending = true;
|
|
53
|
+
let descending = true;
|
|
54
|
+
for (const { start, end } of pageBoundaries) {
|
|
55
|
+
const pageOffset = writer.offset;
|
|
56
|
+
const pageChunk = {
|
|
57
|
+
values: writeValues.slice(start, end),
|
|
58
|
+
definitionLevels: definitionLevels.slice(start, end),
|
|
59
|
+
repetitionLevels: repetitionLevels.slice(start, end),
|
|
60
|
+
maxDefinitionLevel
|
|
61
|
+
};
|
|
62
|
+
writeDataPageV2({
|
|
63
|
+
writer,
|
|
64
|
+
column,
|
|
65
|
+
encoding,
|
|
66
|
+
pageData: pageChunk
|
|
67
|
+
});
|
|
68
|
+
if (columnIndex) {
|
|
69
|
+
const { min_value, max_value, null_count = 0n } = getStatistics(values.slice(start, end));
|
|
70
|
+
columnIndex.null_pages.push(null_count === BigInt(end - start));
|
|
71
|
+
columnIndex.min_values.push(unconvertMinMax(min_value, element, false) ?? /* @__PURE__ */ new Uint8Array());
|
|
72
|
+
columnIndex.max_values.push(unconvertMinMax(max_value, element, true) ?? /* @__PURE__ */ new Uint8Array());
|
|
73
|
+
columnIndex.null_counts?.push(null_count);
|
|
74
|
+
if (prevMinValue !== void 0 && min_value !== void 0) {
|
|
75
|
+
if (prevMinValue > min_value) ascending = false;
|
|
76
|
+
if (prevMinValue < min_value) descending = false;
|
|
77
|
+
}
|
|
78
|
+
if (prevMaxValue !== void 0 && max_value !== void 0) {
|
|
79
|
+
if (prevMaxValue > max_value) ascending = false;
|
|
80
|
+
if (prevMaxValue < max_value) descending = false;
|
|
81
|
+
}
|
|
82
|
+
prevMinValue = min_value;
|
|
83
|
+
prevMaxValue = max_value;
|
|
84
|
+
}
|
|
85
|
+
if (offsetIndex) {
|
|
86
|
+
if (repetitionLevels.length) {
|
|
87
|
+
for (let i = prevStart + 1; i <= start; i++) if (repetitionLevels[i] === 0) first_row_index++;
|
|
88
|
+
} else first_row_index = BigInt(start);
|
|
89
|
+
offsetIndex.page_locations.push({
|
|
90
|
+
offset: BigInt(pageOffset),
|
|
91
|
+
compressed_page_size: writer.offset - pageOffset,
|
|
92
|
+
first_row_index
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
prevStart = start;
|
|
96
|
+
}
|
|
97
|
+
if (columnIndex) {
|
|
98
|
+
if (ascending) columnIndex.boundary_order = "ASCENDING";
|
|
99
|
+
else if (descending) columnIndex.boundary_order = "DESCENDING";
|
|
100
|
+
}
|
|
101
|
+
let encoding_stats;
|
|
102
|
+
if (stats) {
|
|
103
|
+
encoding_stats = [];
|
|
104
|
+
if (dictionary_page_offset !== void 0) encoding_stats.push({
|
|
105
|
+
page_type: "DICTIONARY_PAGE",
|
|
106
|
+
encoding: "PLAIN",
|
|
107
|
+
count: 1
|
|
108
|
+
});
|
|
109
|
+
encoding_stats.push({
|
|
110
|
+
page_type: "DATA_PAGE_V2",
|
|
111
|
+
encoding,
|
|
112
|
+
count: pageBoundaries.length
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
chunk: {
|
|
117
|
+
meta_data: {
|
|
118
|
+
type,
|
|
119
|
+
encodings,
|
|
120
|
+
path_in_schema: schemaPath.slice(1).map((s) => s.name),
|
|
121
|
+
codec: column.codec ?? "UNCOMPRESSED",
|
|
122
|
+
num_values: BigInt(values.length),
|
|
123
|
+
total_compressed_size: BigInt(writer.offset - offsetStart),
|
|
124
|
+
total_uncompressed_size: BigInt(writer.offset - offsetStart),
|
|
125
|
+
data_page_offset,
|
|
126
|
+
dictionary_page_offset,
|
|
127
|
+
statistics,
|
|
128
|
+
encoding_stats,
|
|
129
|
+
geospatial_statistics
|
|
130
|
+
},
|
|
131
|
+
file_offset: BigInt(offsetStart)
|
|
132
|
+
},
|
|
133
|
+
columnIndex,
|
|
134
|
+
offsetIndex,
|
|
135
|
+
bloomFilter
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function getPageBoundaries(values, type, type_length, pageSize) {
|
|
139
|
+
if (!pageSize) return [{
|
|
140
|
+
start: 0,
|
|
141
|
+
end: values.length
|
|
142
|
+
}];
|
|
143
|
+
const boundaries = [];
|
|
144
|
+
let start = 0;
|
|
145
|
+
let accumulatedBytes = 0;
|
|
146
|
+
for (let i = 0; i < values.length; i++) {
|
|
147
|
+
const valueSize = estimateValueSize(values[i], type, type_length);
|
|
148
|
+
accumulatedBytes += valueSize;
|
|
149
|
+
if (accumulatedBytes >= pageSize && i > start) {
|
|
150
|
+
boundaries.push({
|
|
151
|
+
start,
|
|
152
|
+
end: i
|
|
153
|
+
});
|
|
154
|
+
start = i;
|
|
155
|
+
accumulatedBytes = valueSize;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (start < values.length) boundaries.push({
|
|
159
|
+
start,
|
|
160
|
+
end: values.length
|
|
161
|
+
});
|
|
162
|
+
return boundaries;
|
|
163
|
+
}
|
|
164
|
+
function getStatistics(values) {
|
|
165
|
+
let min_value = void 0;
|
|
166
|
+
let max_value = void 0;
|
|
167
|
+
let null_count = 0n;
|
|
168
|
+
for (const value of values) {
|
|
169
|
+
if (value === null || value === void 0) {
|
|
170
|
+
null_count++;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (typeof value === "object") continue;
|
|
174
|
+
if (typeof value === "number" && Number.isNaN(value)) continue;
|
|
175
|
+
if (min_value === void 0 || value < min_value) min_value = value;
|
|
176
|
+
if (max_value === void 0 || value > max_value) max_value = value;
|
|
177
|
+
}
|
|
178
|
+
if (min_value === 0) min_value = -0;
|
|
179
|
+
if (max_value === 0) max_value = 0;
|
|
180
|
+
return {
|
|
181
|
+
min_value,
|
|
182
|
+
max_value,
|
|
183
|
+
null_count
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export { writeColumn };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ByteWriter } from "./bytewriter.mjs";
|
|
2
|
+
import { serializeTCompactProtocol } from "./thrift.mjs";
|
|
3
|
+
import { Encodings, PageTypes } from "../../../../hyparquet@1.26.1/node_modules/hyparquet/src/constants.mjs";
|
|
4
|
+
import { deltaBinaryPack, deltaByteArray, deltaLengthByteArray } from "./delta.mjs";
|
|
5
|
+
import { writeRleBitPackedHybrid } from "./encoding.mjs";
|
|
6
|
+
import { writePlain } from "./plain.mjs";
|
|
7
|
+
import { getMaxRepetitionLevel } from "./schema.mjs";
|
|
8
|
+
import { writeByteStreamSplit } from "./splitstream.mjs";
|
|
9
|
+
function writeDataPageV2({ writer, column, encoding, pageData }) {
|
|
10
|
+
const { columnName, element, codec, compressors } = column;
|
|
11
|
+
const { type, type_length, repetition_type } = element;
|
|
12
|
+
if (!type) throw new Error(`column ${columnName} cannot determine type`);
|
|
13
|
+
if (repetition_type === "REPEATED") throw new Error(`column ${columnName} repeated types not supported`);
|
|
14
|
+
const levelWriter = new ByteWriter();
|
|
15
|
+
const { definition_levels_byte_length, repetition_levels_byte_length, num_nulls, num_values, num_rows } = writeLevels(levelWriter, column, pageData);
|
|
16
|
+
const nonnull = num_nulls ? pageData.values.filter((v) => v !== null && v !== void 0) : pageData.values;
|
|
17
|
+
const page = new ByteWriter();
|
|
18
|
+
if (encoding === "PLAIN") writePlain(page, nonnull, type, type_length);
|
|
19
|
+
else if (encoding === "RLE") {
|
|
20
|
+
if (type !== "BOOLEAN") throw new Error("RLE encoding only supported for BOOLEAN type");
|
|
21
|
+
const rleData = new ByteWriter();
|
|
22
|
+
writeRleBitPackedHybrid(rleData, nonnull, 1);
|
|
23
|
+
page.appendUint32(rleData.offset);
|
|
24
|
+
page.appendBytes(rleData.getBytes());
|
|
25
|
+
} else if (encoding === "PLAIN_DICTIONARY" || encoding === "RLE_DICTIONARY") {
|
|
26
|
+
let maxValue = 0;
|
|
27
|
+
for (const v of nonnull) if (v > maxValue) maxValue = v;
|
|
28
|
+
const bitWidth = Math.ceil(Math.log2(maxValue + 1));
|
|
29
|
+
page.appendUint8(bitWidth);
|
|
30
|
+
writeRleBitPackedHybrid(page, nonnull, bitWidth);
|
|
31
|
+
} else if (encoding === "DELTA_BINARY_PACKED") {
|
|
32
|
+
if (type !== "INT32" && type !== "INT64") throw new Error("DELTA_BINARY_PACKED encoding only supported for INT32 and INT64 types");
|
|
33
|
+
deltaBinaryPack(page, nonnull);
|
|
34
|
+
} else if (encoding === "DELTA_LENGTH_BYTE_ARRAY") {
|
|
35
|
+
if (type !== "BYTE_ARRAY") throw new Error("DELTA_LENGTH_BYTE_ARRAY encoding only supported for BYTE_ARRAY type");
|
|
36
|
+
deltaLengthByteArray(page, nonnull);
|
|
37
|
+
} else if (encoding === "DELTA_BYTE_ARRAY") {
|
|
38
|
+
if (type !== "BYTE_ARRAY") throw new Error("DELTA_BYTE_ARRAY encoding only supported for BYTE_ARRAY type");
|
|
39
|
+
deltaByteArray(page, nonnull);
|
|
40
|
+
} else if (encoding === "BYTE_STREAM_SPLIT") writeByteStreamSplit(page, nonnull, type, type_length);
|
|
41
|
+
else throw new Error(`parquet unsupported encoding: ${encoding}`);
|
|
42
|
+
const pageBytes = page.getBytes();
|
|
43
|
+
const compressedBytes = compressors[codec]?.(pageBytes) ?? pageBytes;
|
|
44
|
+
writePageHeader(writer, {
|
|
45
|
+
type: "DATA_PAGE_V2",
|
|
46
|
+
uncompressed_page_size: levelWriter.offset + page.offset,
|
|
47
|
+
compressed_page_size: levelWriter.offset + compressedBytes.length,
|
|
48
|
+
data_page_header_v2: {
|
|
49
|
+
num_values,
|
|
50
|
+
num_nulls,
|
|
51
|
+
num_rows,
|
|
52
|
+
encoding,
|
|
53
|
+
definition_levels_byte_length,
|
|
54
|
+
repetition_levels_byte_length,
|
|
55
|
+
is_compressed: !!codec
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
writer.appendBytes(levelWriter.getBytes());
|
|
59
|
+
writer.appendBytes(compressedBytes);
|
|
60
|
+
}
|
|
61
|
+
function writePageHeader(writer, header) {
|
|
62
|
+
serializeTCompactProtocol(writer, {
|
|
63
|
+
field_1: PageTypes.indexOf(header.type),
|
|
64
|
+
field_2: header.uncompressed_page_size,
|
|
65
|
+
field_3: header.compressed_page_size,
|
|
66
|
+
field_4: header.crc,
|
|
67
|
+
field_5: header.data_page_header && {
|
|
68
|
+
field_1: header.data_page_header.num_values,
|
|
69
|
+
field_2: Encodings.indexOf(header.data_page_header.encoding),
|
|
70
|
+
field_3: Encodings.indexOf(header.data_page_header.definition_level_encoding),
|
|
71
|
+
field_4: Encodings.indexOf(header.data_page_header.repetition_level_encoding)
|
|
72
|
+
},
|
|
73
|
+
field_7: header.dictionary_page_header && {
|
|
74
|
+
field_1: header.dictionary_page_header.num_values,
|
|
75
|
+
field_2: Encodings.indexOf(header.dictionary_page_header.encoding)
|
|
76
|
+
},
|
|
77
|
+
field_8: header.data_page_header_v2 && {
|
|
78
|
+
field_1: header.data_page_header_v2.num_values,
|
|
79
|
+
field_2: header.data_page_header_v2.num_nulls,
|
|
80
|
+
field_3: header.data_page_header_v2.num_rows,
|
|
81
|
+
field_4: Encodings.indexOf(header.data_page_header_v2.encoding),
|
|
82
|
+
field_5: header.data_page_header_v2.definition_levels_byte_length,
|
|
83
|
+
field_6: header.data_page_header_v2.repetition_levels_byte_length,
|
|
84
|
+
field_7: header.data_page_header_v2.is_compressed ? void 0 : false
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function writeLevels(writer, column, dataPage) {
|
|
89
|
+
const { schemaPath } = column;
|
|
90
|
+
const { values, definitionLevels, repetitionLevels, maxDefinitionLevel } = dataPage;
|
|
91
|
+
const num_values = definitionLevels.length || values.length;
|
|
92
|
+
let num_nulls = 0;
|
|
93
|
+
let num_rows = 0;
|
|
94
|
+
if (repetitionLevels.length) {
|
|
95
|
+
for (let i = 0; i < repetitionLevels.length; i++) if (repetitionLevels[i] === 0) num_rows++;
|
|
96
|
+
} else num_rows = values.length;
|
|
97
|
+
if (definitionLevels.length) {
|
|
98
|
+
for (let i = 0; i < definitionLevels.length; i++) if (definitionLevels[i] < maxDefinitionLevel) num_nulls++;
|
|
99
|
+
}
|
|
100
|
+
const maxRepetitionLevel = getMaxRepetitionLevel(schemaPath);
|
|
101
|
+
let repetition_levels_byte_length = 0;
|
|
102
|
+
if (maxRepetitionLevel) repetition_levels_byte_length = writeRleBitPackedHybrid(writer, repetitionLevels, Math.ceil(Math.log2(maxRepetitionLevel + 1)));
|
|
103
|
+
let definition_levels_byte_length = 0;
|
|
104
|
+
if (maxDefinitionLevel) definition_levels_byte_length = writeRleBitPackedHybrid(writer, definitionLevels, Math.ceil(Math.log2(maxDefinitionLevel + 1)));
|
|
105
|
+
return {
|
|
106
|
+
definition_levels_byte_length,
|
|
107
|
+
repetition_levels_byte_length,
|
|
108
|
+
num_values,
|
|
109
|
+
num_nulls,
|
|
110
|
+
num_rows
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export { writeDataPageV2, writePageHeader };
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const BLOCK_SIZE = 128;
|
|
2
|
+
const MINIBLOCKS_PER_BLOCK = 4;
|
|
3
|
+
const VALUES_PER_MINIBLOCK = BLOCK_SIZE / MINIBLOCKS_PER_BLOCK;
|
|
4
|
+
function deltaBinaryPack(writer, values) {
|
|
5
|
+
const count = values.length;
|
|
6
|
+
if (count === 0) {
|
|
7
|
+
writer.appendVarInt(BLOCK_SIZE);
|
|
8
|
+
writer.appendVarInt(MINIBLOCKS_PER_BLOCK);
|
|
9
|
+
writer.appendVarInt(0);
|
|
10
|
+
writer.appendVarInt(0);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (typeof values[0] !== "number" && typeof values[0] !== "bigint") throw new Error("deltaBinaryPack only supports number or bigint arrays");
|
|
14
|
+
writer.appendVarInt(BLOCK_SIZE);
|
|
15
|
+
writer.appendVarInt(MINIBLOCKS_PER_BLOCK);
|
|
16
|
+
writer.appendVarInt(count);
|
|
17
|
+
writer.appendZigZag(values[0]);
|
|
18
|
+
let index = 1;
|
|
19
|
+
while (index < count) {
|
|
20
|
+
const blockEnd = Math.min(index + BLOCK_SIZE, count);
|
|
21
|
+
const blockSize = blockEnd - index;
|
|
22
|
+
const blockDeltas = new BigInt64Array(blockSize);
|
|
23
|
+
let minDelta = BigInt(values[index]) - BigInt(values[index - 1]);
|
|
24
|
+
blockDeltas[0] = minDelta;
|
|
25
|
+
for (let i = 1; i < blockSize; i++) {
|
|
26
|
+
const delta = BigInt(values[index + i]) - BigInt(values[index + i - 1]);
|
|
27
|
+
blockDeltas[i] = delta;
|
|
28
|
+
if (delta < minDelta) minDelta = delta;
|
|
29
|
+
}
|
|
30
|
+
writer.appendZigZag(minDelta);
|
|
31
|
+
const bitWidths = new Uint8Array(MINIBLOCKS_PER_BLOCK);
|
|
32
|
+
for (let mb = 0; mb < MINIBLOCKS_PER_BLOCK; mb++) {
|
|
33
|
+
const mbStart = mb * VALUES_PER_MINIBLOCK;
|
|
34
|
+
const mbEnd = Math.min(mbStart + VALUES_PER_MINIBLOCK, blockSize);
|
|
35
|
+
let maxAdjusted = 0n;
|
|
36
|
+
for (let i = mbStart; i < mbEnd; i++) {
|
|
37
|
+
const adjusted = blockDeltas[i] - minDelta;
|
|
38
|
+
if (adjusted > maxAdjusted) maxAdjusted = adjusted;
|
|
39
|
+
}
|
|
40
|
+
bitWidths[mb] = bitWidth(maxAdjusted);
|
|
41
|
+
}
|
|
42
|
+
writer.appendBytes(bitWidths);
|
|
43
|
+
for (let mb = 0; mb < MINIBLOCKS_PER_BLOCK; mb++) {
|
|
44
|
+
const bitWidth = bitWidths[mb];
|
|
45
|
+
if (bitWidth === 0) continue;
|
|
46
|
+
const mbStart = mb * VALUES_PER_MINIBLOCK;
|
|
47
|
+
const mbEnd = Math.min(mbStart + VALUES_PER_MINIBLOCK, blockSize);
|
|
48
|
+
let buffer = 0n;
|
|
49
|
+
let bitsUsed = 0;
|
|
50
|
+
for (let i = 0; i < VALUES_PER_MINIBLOCK; i++) {
|
|
51
|
+
const adjusted = mbStart + i < mbEnd ? blockDeltas[mbStart + i] - minDelta : 0n;
|
|
52
|
+
buffer |= adjusted << BigInt(bitsUsed);
|
|
53
|
+
bitsUsed += bitWidth;
|
|
54
|
+
while (bitsUsed >= 8) {
|
|
55
|
+
writer.appendUint8(Number(buffer & 255n));
|
|
56
|
+
buffer >>= 8n;
|
|
57
|
+
bitsUsed -= 8;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
index = blockEnd;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function deltaLengthByteArray(writer, values) {
|
|
65
|
+
const lengths = new Int32Array(values.length);
|
|
66
|
+
for (let i = 0; i < values.length; i++) {
|
|
67
|
+
const value = values[i];
|
|
68
|
+
if (!(value instanceof Uint8Array)) throw new Error("deltaLengthByteArray expects Uint8Array values");
|
|
69
|
+
lengths[i] = value.length;
|
|
70
|
+
}
|
|
71
|
+
deltaBinaryPack(writer, lengths);
|
|
72
|
+
for (const value of values) writer.appendBytes(value);
|
|
73
|
+
}
|
|
74
|
+
function deltaByteArray(writer, values) {
|
|
75
|
+
if (values.length === 0) {
|
|
76
|
+
deltaBinaryPack(writer, []);
|
|
77
|
+
deltaBinaryPack(writer, []);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const prefixLengths = new Int32Array(values.length);
|
|
81
|
+
const suffixLengths = new Int32Array(values.length);
|
|
82
|
+
const suffixes = new Array(values.length);
|
|
83
|
+
if (!(values[0] instanceof Uint8Array)) throw new Error("deltaByteArray expects Uint8Array values");
|
|
84
|
+
prefixLengths[0] = 0;
|
|
85
|
+
suffixLengths[0] = values[0].length;
|
|
86
|
+
suffixes[0] = values[0];
|
|
87
|
+
for (let i = 1; i < values.length; i++) {
|
|
88
|
+
const prev = values[i - 1];
|
|
89
|
+
const curr = values[i];
|
|
90
|
+
if (!(curr instanceof Uint8Array)) throw new Error("deltaByteArray expects Uint8Array values");
|
|
91
|
+
let prefixLen = 0;
|
|
92
|
+
const maxPrefix = Math.min(prev.length, curr.length);
|
|
93
|
+
while (prefixLen < maxPrefix && prev[prefixLen] === curr[prefixLen]) prefixLen++;
|
|
94
|
+
prefixLengths[i] = prefixLen;
|
|
95
|
+
suffixLengths[i] = curr.length - prefixLen;
|
|
96
|
+
suffixes[i] = curr.subarray(prefixLen);
|
|
97
|
+
}
|
|
98
|
+
deltaBinaryPack(writer, prefixLengths);
|
|
99
|
+
deltaBinaryPack(writer, suffixLengths);
|
|
100
|
+
for (const suffix of suffixes) writer.appendBytes(suffix);
|
|
101
|
+
}
|
|
102
|
+
function bitWidth(value) {
|
|
103
|
+
if (value === 0n) return 0;
|
|
104
|
+
let bits = 0;
|
|
105
|
+
while (value > 0n) {
|
|
106
|
+
bits++;
|
|
107
|
+
value >>= 1n;
|
|
108
|
+
}
|
|
109
|
+
return bits;
|
|
110
|
+
}
|
|
111
|
+
export { deltaBinaryPack, deltaByteArray, deltaLengthByteArray };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { ByteWriter } from "./bytewriter.mjs";
|
|
2
|
+
import { writePlain } from "./plain.mjs";
|
|
3
|
+
import { writePageHeader } from "./datapage.mjs";
|
|
4
|
+
function estimateValueSize(value, type, type_length) {
|
|
5
|
+
if (value === null || value === void 0) return 0;
|
|
6
|
+
if (type === "BOOLEAN") return .125;
|
|
7
|
+
if (type === "INT32" || type === "FLOAT") return 4;
|
|
8
|
+
if (type === "INT64" || type === "DOUBLE") return 8;
|
|
9
|
+
if (type === "INT96") return 12;
|
|
10
|
+
if (type === "FIXED_LEN_BYTE_ARRAY") return type_length ?? 0;
|
|
11
|
+
if (type === "BYTE_ARRAY") {
|
|
12
|
+
if (value instanceof Uint8Array) return value.byteLength;
|
|
13
|
+
if (typeof value === "string") return value.length;
|
|
14
|
+
}
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
17
|
+
function hashBytes(bytes) {
|
|
18
|
+
let h = 2166136261;
|
|
19
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
20
|
+
h ^= bytes[i];
|
|
21
|
+
h = Math.imul(h, 16777619);
|
|
22
|
+
}
|
|
23
|
+
return h >>> 0;
|
|
24
|
+
}
|
|
25
|
+
function bytesEqual(a, b) {
|
|
26
|
+
if (a.length !== b.length) return false;
|
|
27
|
+
for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
function useDictionary(values, type, type_length, encoding, pageSize) {
|
|
31
|
+
if (encoding && encoding !== "RLE_DICTIONARY") return {};
|
|
32
|
+
if (type === "BOOLEAN") return {};
|
|
33
|
+
const sample = values.slice(0, 1e3);
|
|
34
|
+
const sampleKeys = /* @__PURE__ */ new Set();
|
|
35
|
+
for (const value of sample) sampleKeys.add(value instanceof Uint8Array ? hashBytes(value) : value);
|
|
36
|
+
if (sampleKeys.size === 0 || sampleKeys.size / sample.length > .5) return {};
|
|
37
|
+
const dictionary = [];
|
|
38
|
+
const indexes = new Array(values.length);
|
|
39
|
+
const valueIndex = /* @__PURE__ */ new Map();
|
|
40
|
+
const hashBuckets = /* @__PURE__ */ new Map();
|
|
41
|
+
let dictSize = 0;
|
|
42
|
+
for (let i = 0; i < values.length; i++) {
|
|
43
|
+
const value = values[i];
|
|
44
|
+
if (value === null || value === void 0) continue;
|
|
45
|
+
let index;
|
|
46
|
+
if (value instanceof Uint8Array) {
|
|
47
|
+
const hash = hashBytes(value);
|
|
48
|
+
const bucket = hashBuckets.get(hash);
|
|
49
|
+
if (bucket) {
|
|
50
|
+
for (const j of bucket) if (bytesEqual(dictionary[j], value)) {
|
|
51
|
+
index = j;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (index === void 0) {
|
|
56
|
+
dictSize += value.byteLength;
|
|
57
|
+
if (pageSize && dictSize > pageSize) return {};
|
|
58
|
+
index = dictionary.length;
|
|
59
|
+
dictionary.push(value);
|
|
60
|
+
if (bucket) bucket.push(index);
|
|
61
|
+
else hashBuckets.set(hash, [index]);
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
index = valueIndex.get(value);
|
|
65
|
+
if (index === void 0) {
|
|
66
|
+
dictSize += estimateValueSize(value, type, type_length);
|
|
67
|
+
if (pageSize && dictSize > pageSize) return {};
|
|
68
|
+
index = dictionary.length;
|
|
69
|
+
dictionary.push(value);
|
|
70
|
+
valueIndex.set(value, index);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
indexes[i] = index;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
dictionary,
|
|
77
|
+
indexes
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function writeDictionaryPage(writer, column, dictionary) {
|
|
81
|
+
const { element, codec, compressors } = column;
|
|
82
|
+
const { type, type_length } = element;
|
|
83
|
+
if (!type) throw new Error(`column ${column.columnName} cannot determine type`);
|
|
84
|
+
const dictionaryPage = new ByteWriter();
|
|
85
|
+
writePlain(dictionaryPage, dictionary, type, type_length);
|
|
86
|
+
const dictionaryBytes = dictionaryPage.getBytes();
|
|
87
|
+
const compressedBytes = compressors[codec]?.(dictionaryBytes) ?? dictionaryBytes;
|
|
88
|
+
writePageHeader(writer, {
|
|
89
|
+
type: "DICTIONARY_PAGE",
|
|
90
|
+
uncompressed_page_size: dictionaryBytes.byteLength,
|
|
91
|
+
compressed_page_size: compressedBytes.byteLength,
|
|
92
|
+
dictionary_page_header: {
|
|
93
|
+
num_values: dictionary.length,
|
|
94
|
+
encoding: "PLAIN"
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
writer.appendBytes(compressedBytes);
|
|
98
|
+
}
|
|
99
|
+
export { estimateValueSize, useDictionary, writeDictionaryPage };
|