@sixb/ducklake 0.1.1 → 0.1.2
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/README.md +11 -4
- package/dist/index.js +40 -8
- package/dist/index.js.map +5 -5
- package/dist/internal/ducklake-row-reader.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/internal/ducklake-merge-session.ts +1 -0
- package/src/internal/ducklake-row-reader.ts +51 -27
- package/src/internal/ducklake-write-session.ts +4 -0
package/README.md
CHANGED
|
@@ -94,15 +94,22 @@ const report = await lakeStorage.runMaintenance({
|
|
|
94
94
|
Reads, writes, SQL previews, and SQL transforms use the same DuckDB runtime and
|
|
95
95
|
the same DuckLake PostgreSQL metadata pool. Work is serialized inside one
|
|
96
96
|
`DuckLakeStorage` instance, so a queued DuckDB operation makes later operations
|
|
97
|
-
wait. Only actual DuckDB work holds the runtime:
|
|
98
|
-
transforms, and metadata reads.
|
|
99
|
-
|
|
97
|
+
wait. Only actual DuckDB work holds the runtime: bounded read pages, batch
|
|
98
|
+
appends, commits, SQL transforms, and metadata reads.
|
|
99
|
+
|
|
100
|
+
Large `readRows(...)` calls materialize bounded pages, using a physical-row keyset when available,
|
|
101
|
+
and release the DuckDB queue between pages. This also applies when an explicit limit exceeds one
|
|
102
|
+
page. A JavaScript pipeline can therefore stream one DuckLake dataset directly into another on the
|
|
103
|
+
same provider without buffering the complete input or deadlocking at the destination appender's
|
|
104
|
+
first flush. The read remains pinned to one immutable snapshot and keeps its attachment lease until
|
|
105
|
+
the iterator completes or closes.
|
|
100
106
|
|
|
101
107
|
A write does not hold the runtime while its source iterable is producing rows.
|
|
102
108
|
`writeRows(...)` validates and stages rows in bounded in-memory batches, then
|
|
103
109
|
takes a queue slot only to flush each batch into the staging table. Slow external
|
|
104
110
|
reads (pagination, APIs, SFTP, retries) run outside the queue, so other reads and
|
|
105
|
-
write batches can interleave between a write's batches.
|
|
111
|
+
write batches can interleave between a write's batches. Large in-memory writes
|
|
112
|
+
also yield to the event loop between batches.
|
|
106
113
|
|
|
107
114
|
```txt
|
|
108
115
|
same provider instance:
|
package/dist/index.js
CHANGED
|
@@ -1784,6 +1784,9 @@ function isValidatedPrimaryKeyColumns(value) {
|
|
|
1784
1784
|
}
|
|
1785
1785
|
|
|
1786
1786
|
// src/internal/ducklake-row-reader.ts
|
|
1787
|
+
var READ_PAGE_ROWS = 5000;
|
|
1788
|
+
var PHYSICAL_ROW_ID_ALIAS = "__sixb_physical_row_id";
|
|
1789
|
+
|
|
1787
1790
|
class DuckLakeRowReader {
|
|
1788
1791
|
options;
|
|
1789
1792
|
connections;
|
|
@@ -1803,16 +1806,43 @@ class DuckLakeRowReader {
|
|
|
1803
1806
|
throw new LakeStorageError14(`[SixbDuckLake] Unknown dataset '${input.datasetId}'.`);
|
|
1804
1807
|
}
|
|
1805
1808
|
const version = await this.resolveVersion(runtime, tableRef, input.versionId);
|
|
1806
|
-
const snapshotId = parseVersionId(version.versionId);
|
|
1807
1809
|
const selectedColumns = this.resolveReadColumns(tableRef.datasetId, version.schema, input.columns);
|
|
1810
|
+
const snapshotId = parseVersionId(version.versionId);
|
|
1808
1811
|
const columnsSql = selectedColumns.map((column) => quoteIdentifier(column.name)).join(", ");
|
|
1809
1812
|
const tableSql = qualifiedTableName(this.options, tableRef.tableName);
|
|
1810
|
-
const
|
|
1811
|
-
const
|
|
1812
|
-
const
|
|
1813
|
-
const
|
|
1814
|
-
const
|
|
1815
|
-
|
|
1813
|
+
const schemaNames = new Set(version.schema.columns.map((column) => column.name.toLowerCase()));
|
|
1814
|
+
const canUsePhysicalRowId = !schemaNames.has("rowid") && !schemaNames.has(PHYSICAL_ROW_ID_ALIAS.toLowerCase());
|
|
1815
|
+
const orderSql = canUsePhysicalRowId ? " ORDER BY rowid" : "";
|
|
1816
|
+
const baseSql = `SELECT ${columnsSql} FROM ${tableSql} AT (VERSION => ${snapshotId})`;
|
|
1817
|
+
const requestedOffset = Math.max(0, Math.trunc(input.offset ?? 0));
|
|
1818
|
+
let remaining = input.limit === undefined ? undefined : Math.max(0, Math.trunc(input.limit));
|
|
1819
|
+
if (remaining === 0)
|
|
1820
|
+
return;
|
|
1821
|
+
let offset = requestedOffset;
|
|
1822
|
+
let physicalCursor = null;
|
|
1823
|
+
while (true) {
|
|
1824
|
+
const pageRows = remaining === undefined ? READ_PAGE_ROWS : Math.min(READ_PAGE_ROWS, remaining);
|
|
1825
|
+
const pageSql = canUsePhysicalRowId ? `SELECT rowid AS ${quoteIdentifier(PHYSICAL_ROW_ID_ALIAS)}, ${columnsSql}
|
|
1826
|
+
FROM ${tableSql} AT (VERSION => ${snapshotId})
|
|
1827
|
+
${physicalCursor === null ? "" : `WHERE rowid > ${physicalCursor}`}
|
|
1828
|
+
ORDER BY rowid LIMIT ${pageRows}
|
|
1829
|
+
${physicalCursor === null && offset > 0 ? `OFFSET ${offset}` : ""}` : `${baseSql}${orderSql} LIMIT ${pageRows} OFFSET ${offset}`;
|
|
1830
|
+
const rows = await runtime.query(pageSql);
|
|
1831
|
+
if (rows.length === 0)
|
|
1832
|
+
return;
|
|
1833
|
+
yield* this.normalizeRows(rows, selectedColumns);
|
|
1834
|
+
offset += rows.length;
|
|
1835
|
+
if (remaining !== undefined) {
|
|
1836
|
+
remaining -= rows.length;
|
|
1837
|
+
if (remaining === 0)
|
|
1838
|
+
return;
|
|
1839
|
+
}
|
|
1840
|
+
if (canUsePhysicalRowId) {
|
|
1841
|
+
physicalCursor = getBigIntLike(rows[rows.length - 1], PHYSICAL_ROW_ID_ALIAS);
|
|
1842
|
+
}
|
|
1843
|
+
if (rows.length < pageRows)
|
|
1844
|
+
return;
|
|
1845
|
+
}
|
|
1816
1846
|
} finally {
|
|
1817
1847
|
await lease.release();
|
|
1818
1848
|
}
|
|
@@ -3049,6 +3079,7 @@ class DuckLakeMergeSession {
|
|
|
3049
3079
|
if (batch.length >= MERGE_CHANGE_BATCH_SIZE) {
|
|
3050
3080
|
await this.appendBatchToStagingTable(batch);
|
|
3051
3081
|
batch = [];
|
|
3082
|
+
await Bun.sleep(0);
|
|
3052
3083
|
}
|
|
3053
3084
|
}
|
|
3054
3085
|
if (batch.length > 0) {
|
|
@@ -3164,6 +3195,7 @@ class DuckLakeWriteSession {
|
|
|
3164
3195
|
await this.appendBatchToStagingTable(batch, batchPrimaryKeys);
|
|
3165
3196
|
batch = [];
|
|
3166
3197
|
batchPrimaryKeys = new Set;
|
|
3198
|
+
await Bun.sleep(0);
|
|
3167
3199
|
}
|
|
3168
3200
|
}
|
|
3169
3201
|
if (batch.length > 0) {
|
|
@@ -3664,4 +3696,4 @@ export {
|
|
|
3664
3696
|
DuckLakeStorage
|
|
3665
3697
|
};
|
|
3666
3698
|
|
|
3667
|
-
//# debugId=
|
|
3699
|
+
//# debugId=36FC46708546A1DD64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"import type { DatasetDefinition } from \"@sixb/core\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport {\n getBigIntLike,\n getBoolean,\n getOptionalBigIntLike,\n getOptionalString,\n getString,\n} from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport {\n type DuckLakeCatalogColumn,\n duckLakeCatalogColumnsToDatasetPrimaryKey,\n duckLakeCatalogColumnsToDatasetSchema,\n} from \"./ducklake-catalog-schema\"\nimport { decodeDatasetTableName, encodeDatasetTableName } from \"./names\"\nimport { duckLakeAlias, duckLakeMetadataTableName, quoteSqlString, quoteSqlStringList } from \"./sql\"\n\ninterface CurrentDatasetTable {\n readonly datasetId: string\n readonly tableName: string\n readonly comment?: string\n}\n\ninterface CurrentDatasetPartition {\n readonly tableName: string\n readonly columnName: string\n readonly transform: string\n}\n\nexport interface ReadCurrentDatasetDefinitionsInput {\n readonly options: DuckLakeStorageOptions\n readonly runtime: DuckDbQueryRuntime\n readonly datasetIds?: readonly string[]\n}\n\nexport async function readCurrentDatasetDefinitions(\n input: ReadCurrentDatasetDefinitionsInput\n): Promise<Map<string, DatasetDefinition>> {\n if (input.datasetIds?.length === 0) {\n return new Map()\n }\n\n const tables = await readCurrentDatasetTables(input, input.datasetIds)\n if (tables.length === 0) {\n return new Map()\n }\n\n const tableNames = tables.map((table) => table.tableName)\n const columnsByTableName = groupColumnsByTableName(\n await readCurrentDatasetColumns(input, tableNames)\n )\n const partitionByTableName = groupPartitionsByTableName(\n await readCurrentDatasetPartitions(input, tableNames)\n )\n const definitions = new Map<string, DatasetDefinition>()\n\n for (const table of tables) {\n const columns = columnsByTableName.get(table.tableName) ?? []\n const primaryKey = duckLakeCatalogColumnsToDatasetPrimaryKey(table.tableName, columns)\n const partitionBy = partitionByTableName.get(table.tableName) ?? []\n definitions.set(table.datasetId, {\n kind: \"dataset\",\n id: table.datasetId,\n schema: duckLakeCatalogColumnsToDatasetSchema(table.tableName, columns),\n ...(primaryKey !== undefined ? { primaryKey } : {}),\n ...(partitionBy.length > 0 ? { partitionBy } : {}),\n ...(table.comment !== undefined ? { description: table.comment } : {}),\n })\n }\n\n return definitions\n}\n\nasync function readCurrentDatasetTables(\n input: ReadCurrentDatasetDefinitionsInput,\n datasetIds: readonly string[] | undefined\n): Promise<readonly CurrentDatasetTable[]> {\n if (datasetIds !== undefined && datasetIds.length === 0) {\n return []\n }\n\n const tableNameFilter =\n datasetIds === undefined\n ? \"\"\n : `AND table_name IN (${quoteSqlStringList(\n [...new Set(datasetIds)].map((datasetId) => encodeDatasetTableName(datasetId))\n )})`\n\n const rows = await input.runtime.query(\n `SELECT table_name, comment FROM duckdb_tables() WHERE database_name = ${quoteSqlString(\n duckLakeAlias(input.options)\n )} AND schema_name = 'main' ${tableNameFilter} AND NOT internal ORDER BY table_name`\n )\n\n const tables: CurrentDatasetTable[] = []\n for (const row of rows) {\n const tableName = getString(row, \"table_name\")\n const datasetId = decodeDatasetTableName(tableName)\n if (datasetId === null) {\n continue\n }\n\n tables.push({\n datasetId,\n tableName,\n comment: getOptionalString(row, \"comment\"),\n })\n }\n\n return tables\n}\n\nasync function readCurrentDatasetColumns(\n input: ReadCurrentDatasetDefinitionsInput,\n tableNames: readonly string[]\n): Promise<readonly DuckLakeCatalogColumn[]> {\n if (tableNames.length === 0) {\n return []\n }\n\n const ducklakeTable = duckLakeMetadataTableName(input.options, \"ducklake_table\")\n const ducklakeColumn = duckLakeMetadataTableName(input.options, \"ducklake_column\")\n const ducklakeColumnTag = duckLakeMetadataTableName(input.options, \"ducklake_column_tag\")\n const rows = await input.runtime.query(`\n SELECT\n table_meta.table_name,\n column_meta.column_id,\n column_meta.column_order,\n column_meta.column_name,\n column_meta.column_type,\n CAST(column_meta.nulls_allowed AS BOOLEAN) AS nulls_allowed,\n column_meta.parent_column,\n column_tag.\"value\" AS comment\n FROM ${ducklakeTable} table_meta\n JOIN ${ducklakeColumn} column_meta\n ON column_meta.table_id = table_meta.table_id\n AND column_meta.end_snapshot IS NULL\n LEFT JOIN ${ducklakeColumnTag} column_tag\n ON column_tag.table_id = column_meta.table_id\n AND column_tag.column_id = column_meta.column_id\n AND column_tag.\"key\" = 'comment'\n AND column_tag.end_snapshot IS NULL\n WHERE table_meta.end_snapshot IS NULL\n AND table_meta.table_name IN (${quoteSqlStringList(tableNames)})\n ORDER BY table_meta.table_name, column_meta.column_order\n `)\n\n return rows.map((row) => ({\n tableName: getString(row, \"table_name\"),\n columnId: getBigIntLike(row, \"column_id\"),\n columnOrder: getBigIntLike(row, \"column_order\"),\n columnName: getString(row, \"column_name\"),\n columnType: getString(row, \"column_type\"),\n nullsAllowed: getBoolean(row, \"nulls_allowed\"),\n parentColumnId: getOptionalBigIntLike(row, \"parent_column\"),\n comment: getOptionalString(row, \"comment\"),\n }))\n}\n\nasync function readCurrentDatasetPartitions(\n input: ReadCurrentDatasetDefinitionsInput,\n tableNames: readonly string[]\n): Promise<readonly CurrentDatasetPartition[]> {\n if (tableNames.length === 0) {\n return []\n }\n\n const ducklakeTable = duckLakeMetadataTableName(input.options, \"ducklake_table\")\n const ducklakePartitionInfo = duckLakeMetadataTableName(input.options, \"ducklake_partition_info\")\n const ducklakePartitionColumn = duckLakeMetadataTableName(\n input.options,\n \"ducklake_partition_column\"\n )\n const ducklakeColumn = duckLakeMetadataTableName(input.options, \"ducklake_column\")\n const rows = await input.runtime.query(`\n SELECT\n table_meta.table_name,\n column_meta.column_name,\n partition_column.transform\n FROM ${ducklakeTable} table_meta\n JOIN ${ducklakePartitionInfo} partition_info\n ON partition_info.table_id = table_meta.table_id\n AND partition_info.end_snapshot IS NULL\n JOIN ${ducklakePartitionColumn} partition_column\n ON partition_column.table_id = table_meta.table_id\n AND partition_column.partition_id = partition_info.partition_id\n JOIN ${ducklakeColumn} column_meta\n ON column_meta.table_id = table_meta.table_id\n AND column_meta.column_id = partition_column.column_id\n AND column_meta.end_snapshot IS NULL\n WHERE table_meta.end_snapshot IS NULL\n AND table_meta.table_name IN (${quoteSqlStringList(tableNames)})\n ORDER BY table_meta.table_name, partition_column.partition_key_index\n `)\n\n return rows.map((row) => {\n const partition = {\n tableName: getString(row, \"table_name\"),\n columnName: getString(row, \"column_name\"),\n transform: getString(row, \"transform\"),\n } satisfies CurrentDatasetPartition\n\n if (partition.transform !== \"identity\") {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset table '${partition.tableName}' uses unsupported DuckLake partition transform '${partition.transform}'.`\n )\n }\n\n return partition\n })\n}\n\nfunction groupColumnsByTableName(\n rows: readonly DuckLakeCatalogColumn[]\n): Map<string, DuckLakeCatalogColumn[]> {\n const result = new Map<string, DuckLakeCatalogColumn[]>()\n for (const row of rows) {\n const tableRows = result.get(row.tableName) ?? []\n tableRows.push(row)\n result.set(row.tableName, tableRows)\n }\n return result\n}\n\nfunction groupPartitionsByTableName(\n rows: readonly CurrentDatasetPartition[]\n): Map<string, string[]> {\n const result = new Map<string, string[]>()\n for (const row of rows) {\n const tablePartitions = result.get(row.tableName) ?? []\n tablePartitions.push(row.columnName)\n result.set(row.tableName, tablePartitions)\n }\n return result\n}\n",
|
|
17
17
|
"import { LakeStorageError } from \"@sixb/core/lake-storage\"\n\n/**\n * Prefix used for all Sixb dataset tables inside the DuckLake schema.\n */\nexport const DATASET_TABLE_PREFIX = \"sixb__ds__\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder(\"utf-8\", { fatal: true })\n\nfunction isInlineByte(byte: number): boolean {\n return (byte >= 0x61 && byte <= 0x7a) || (byte >= 0x30 && byte <= 0x39)\n}\n\nfunction isHexPair(value: string): boolean {\n return /^[0-9a-f]{2}$/.test(value)\n}\n\n/**\n * Encode a Sixb dataset id into a SQL identifier-safe table suffix.\n *\n * Common lowercase dotted ids stay readable by mapping \".\" to \"__\". Literal\n * underscores and all other non-inline UTF-8 bytes are encoded as \"_xx\" hex\n * escapes so decoding is collision-free.\n */\nfunction encodeDatasetId(datasetId: string): string {\n if (datasetId.trim().length === 0) {\n throw new LakeStorageError(\"[SixbDuckLake] Dataset id must not be empty.\")\n }\n\n let encoded = \"\"\n for (const byte of textEncoder.encode(datasetId)) {\n if (isInlineByte(byte)) {\n encoded += String.fromCharCode(byte)\n } else if (byte === 0x2e) {\n encoded += \"__\"\n } else {\n encoded += `_${byte.toString(16).padStart(2, \"0\")}`\n }\n }\n\n return encoded\n}\n\n/**\n * Decode a table suffix created by `encodeDatasetId`.\n *\n * Returns null for malformed provider table names so metadata scans can filter\n * defensively instead of throwing on unrelated tables.\n */\nfunction decodeDatasetId(encoded: string): string | null {\n if (encoded.length === 0) {\n return null\n }\n\n const bytes: number[] = []\n let index = 0\n\n while (index < encoded.length) {\n const char = encoded[index]\n const byte = char.charCodeAt(0)\n\n if (isInlineByte(byte)) {\n bytes.push(byte)\n index += 1\n continue\n }\n\n if (char !== \"_\") {\n return null\n }\n\n if (encoded[index + 1] === \"_\") {\n bytes.push(0x2e)\n index += 2\n continue\n }\n\n const hex = encoded.slice(index + 1, index + 3)\n if (!isHexPair(hex)) {\n return null\n }\n\n bytes.push(Number.parseInt(hex, 16))\n index += 3\n }\n\n try {\n return textDecoder.decode(new Uint8Array(bytes))\n } catch {\n return null\n }\n}\n\n/**\n * Convert a Sixb dataset id to its physical DuckLake table name.\n */\nexport function encodeDatasetTableName(datasetId: string): string {\n return `${DATASET_TABLE_PREFIX}${encodeDatasetId(datasetId)}`\n}\n\n/**\n * Decode a physical DuckLake table name back to a Sixb dataset id.\n */\nexport function decodeDatasetTableName(tableName: string): string | null {\n if (!tableName.startsWith(DATASET_TABLE_PREFIX)) {\n return null\n }\n\n return decodeDatasetId(tableName.slice(DATASET_TABLE_PREFIX.length))\n}\n",
|
|
18
18
|
"import { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type {\n DuckLakeMaintenanceOptions,\n DuckLakeMaintenanceReport,\n DuckLakeStorageOptions,\n} from \"../types\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport { duckLakeAlias, quoteSqlString } from \"./sql\"\n\nconst DEFAULT_RETENTION = \"7 days\"\n\ninterface MaintenanceCounts {\n readonly snapshots: number\n readonly oldFiles: number\n readonly orphanedFiles: number\n}\n\nexport class DuckLakeMaintenance {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager\n ) {}\n\n async runMaintenance(\n options: DuckLakeMaintenanceOptions = {}\n ): Promise<DuckLakeMaintenanceReport> {\n this.connections.assertOpen()\n\n const expireOlderThan = options.expireOlderThan ?? DEFAULT_RETENTION\n const deleteOlderThan = options.deleteOlderThan ?? expireOlderThan\n const dryRun = options.dryRun ?? false\n\n if (this.options.readOnly && !dryRun) {\n throw new LakeStorageError(\n \"[SixbDuckLake] DuckLake maintenance cannot run in read-only mode.\"\n )\n }\n\n return this.connections.withExclusiveAttached(async (runtime) => {\n const counts = await runMaintenanceProcedures(\n runtime,\n this.options,\n {\n expireOlderThan,\n deleteOlderThan,\n },\n dryRun\n )\n\n if (!dryRun) {\n this.connections.markLocalCatalogChanged()\n }\n\n return {\n dryRun,\n expireOlderThan,\n deleteOlderThan,\n ...counts,\n }\n })\n }\n}\n\nasync function runMaintenanceProcedures(\n runtime: DuckDbQueryRuntime,\n options: DuckLakeStorageOptions,\n retention: Pick<DuckLakeMaintenanceReport, \"expireOlderThan\" | \"deleteOlderThan\">,\n dryRun: boolean\n): Promise<MaintenanceCounts> {\n const aliasSql = quoteSqlString(duckLakeAlias(options))\n const snapshots = await runtime.query(\n maintenanceProcedureSql(\n \"ducklake_expire_snapshots\",\n aliasSql,\n retention.expireOlderThan,\n dryRun\n )\n )\n const oldFiles = await runtime.query(\n maintenanceProcedureSql(\n \"ducklake_cleanup_old_files\",\n aliasSql,\n retention.deleteOlderThan,\n dryRun\n )\n )\n const orphanedFiles = await runtime.query(\n maintenanceProcedureSql(\n \"ducklake_delete_orphaned_files\",\n aliasSql,\n retention.deleteOlderThan,\n dryRun\n )\n )\n\n return {\n snapshots: snapshots.length,\n oldFiles: oldFiles.length,\n orphanedFiles: orphanedFiles.length,\n }\n}\n\nfunction maintenanceProcedureSql(\n procedure: string,\n aliasSql: string,\n olderThan: string,\n dryRun: boolean\n): string {\n const olderThanSql = quoteSqlString(olderThan)\n const dryRunSql = dryRun ? \"dry_run => true, \" : \"\"\n return (\n `CALL ${procedure}(${aliasSql}, ${dryRunSql}` +\n `older_than => now() - INTERVAL ${olderThanSql})`\n )\n}\n",
|
|
19
|
-
"import type { DatasetColumnDefinition, DatasetRow } from \"@sixb/core\"\nimport type { DatasetVersion, ReadDatasetRowsInput } from \"@sixb/core/lake-storage\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport { type DatasetTableRef, resolveDatasetTableRef } from \"./ducklake-dataset-table-ref\"\nimport type { DuckLakeSnapshotReader } from \"./ducklake-snapshot-reader\"\nimport { normalizeReadValue } from \"./schema\"\nimport { qualifiedTableName, quoteIdentifier } from \"./sql\"\nimport { parseVersionId } from \"./versions\"\n\n/**\n * Reads dataset rows from DuckLake snapshots.\n *\n * This module owns the last mile of reads: resolve the requested Sixb version\n * to a DuckLake snapshot id, render a DuckLake time-travel query, and normalize\n * DuckDB values back into Sixb row shape.\n */\nexport class DuckLakeRowReader {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly snapshots: DuckLakeSnapshotReader\n ) {}\n\n async *readRows(input: ReadDatasetRowsInput): AsyncIterable<DatasetRow> {\n this.connections.assertOpen()\n\n const lease = await this.connections.acquireAttachedRuntime()\n try {\n const runtime = lease.runtime\n
|
|
19
|
+
"import type { DatasetColumnDefinition, DatasetRow } from \"@sixb/core\"\nimport type { DatasetVersion, ReadDatasetRowsInput } from \"@sixb/core/lake-storage\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport { getBigIntLike } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport { type DatasetTableRef, resolveDatasetTableRef } from \"./ducklake-dataset-table-ref\"\nimport type { DuckLakeSnapshotReader } from \"./ducklake-snapshot-reader\"\nimport { normalizeReadValue } from \"./schema\"\nimport { qualifiedTableName, quoteIdentifier } from \"./sql\"\nimport { parseVersionId } from \"./versions\"\n\n// Large reads release the provider's single DuckDB queue slot between bounded pages. Besides\n// bounding converted-row memory, this lets a JavaScript pipeline feed one DuckLake dataset into\n// another: the destination appender can use the runtime after each page instead of waiting forever\n// behind its own still-open source stream.\nconst READ_PAGE_ROWS = 5_000\nconst PHYSICAL_ROW_ID_ALIAS = \"__sixb_physical_row_id\"\n\n/**\n * Reads dataset rows from DuckLake snapshots.\n *\n * This module owns the last mile of reads: resolve the requested Sixb version\n * to a DuckLake snapshot id, render a DuckLake time-travel query, and normalize\n * DuckDB values back into Sixb row shape.\n */\nexport class DuckLakeRowReader {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly snapshots: DuckLakeSnapshotReader\n ) {}\n\n async *readRows(input: ReadDatasetRowsInput): AsyncIterable<DatasetRow> {\n this.connections.assertOpen()\n\n // Keep the attachment lease across pages so local catalogs do not pay DETACH/ATTACH for every\n // page. Individual query() calls still release the DuckDB queue before rows are yielded.\n const lease = await this.connections.acquireAttachedRuntime()\n try {\n const runtime = lease.runtime\n // Resolve latest exactly once so a paged read stays pinned even if another writer commits\n // between pages. DuckLake snapshots are immutable; every page names this snapshot.\n const tableRef = await resolveDatasetTableRef(this.options, runtime, input.datasetId)\n if (!tableRef) {\n throw new LakeStorageError(`[SixbDuckLake] Unknown dataset '${input.datasetId}'.`)\n }\n const version = await this.resolveVersion(runtime, tableRef, input.versionId)\n const selectedColumns = this.resolveReadColumns(\n tableRef.datasetId,\n version.schema,\n input.columns\n )\n const snapshotId = parseVersionId(version.versionId)\n const columnsSql = selectedColumns.map((column) => quoteIdentifier(column.name)).join(\", \")\n const tableSql = qualifiedTableName(this.options, tableRef.tableName)\n // A user column named `rowid` shadows DuckDB's virtual row id. In that edge case the\n // connection-level invariant still preserves insertion order; otherwise make it explicit.\n const schemaNames = new Set(version.schema.columns.map((column) => column.name.toLowerCase()))\n const canUsePhysicalRowId =\n !schemaNames.has(\"rowid\") && !schemaNames.has(PHYSICAL_ROW_ID_ALIAS.toLowerCase())\n const orderSql = canUsePhysicalRowId ? \" ORDER BY rowid\" : \"\"\n const baseSql = `SELECT ${columnsSql} FROM ${tableSql} AT (VERSION => ${snapshotId})`\n const requestedOffset = Math.max(0, Math.trunc(input.offset ?? 0))\n let remaining = input.limit === undefined ? undefined : Math.max(0, Math.trunc(input.limit))\n if (remaining === 0) return\n\n // Materialize one bounded page and release its queue operation before yielding it. A\n // consumer may enqueue another DuckLake operation while processing the yielded rows.\n // Holding a native stream open here would make that operation wait behind itself.\n let offset = requestedOffset\n let physicalCursor: bigint | null = null\n while (true) {\n const pageRows =\n remaining === undefined ? READ_PAGE_ROWS : Math.min(READ_PAGE_ROWS, remaining)\n const pageSql = canUsePhysicalRowId\n ? `SELECT rowid AS ${quoteIdentifier(PHYSICAL_ROW_ID_ALIAS)}, ${columnsSql}\n FROM ${tableSql} AT (VERSION => ${snapshotId})\n ${physicalCursor === null ? \"\" : `WHERE rowid > ${physicalCursor}`}\n ORDER BY rowid LIMIT ${pageRows}\n ${physicalCursor === null && offset > 0 ? `OFFSET ${offset}` : \"\"}`\n : `${baseSql}${orderSql} LIMIT ${pageRows} OFFSET ${offset}`\n const rows = await runtime.query(pageSql)\n if (rows.length === 0) return\n\n yield* this.normalizeRows(rows, selectedColumns)\n offset += rows.length\n if (remaining !== undefined) {\n remaining -= rows.length\n if (remaining === 0) return\n }\n if (canUsePhysicalRowId) {\n physicalCursor = getBigIntLike(rows[rows.length - 1]!, PHYSICAL_ROW_ID_ALIAS)\n }\n if (rows.length < pageRows) return\n }\n } finally {\n await lease.release()\n }\n }\n\n private async *normalizeRows(\n rows: Iterable<Record<string, unknown>> | AsyncIterable<Record<string, unknown>>,\n selectedColumns: readonly DatasetColumnDefinition[]\n ): AsyncIterable<DatasetRow> {\n for await (const row of rows) {\n const output: Record<string, unknown> = {}\n for (const column of selectedColumns) {\n output[column.name] = normalizeReadValue(row[column.name], column)\n }\n yield output\n }\n }\n\n private async resolveVersion(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n versionId?: string\n ): Promise<DatasetVersion> {\n if (versionId !== undefined) {\n const snapshotId = parseVersionId(versionId)\n const version = await this.snapshots.getVersionForTableRef(runtime, tableRef, snapshotId)\n if (!version) {\n this.throwNoCommittedVersion(tableRef.datasetId)\n }\n\n return version\n }\n\n const latestVersion = await this.snapshots.getLatestVersionForTableRef(runtime, tableRef)\n if (!latestVersion) {\n this.throwNoCommittedVersion(tableRef.datasetId)\n }\n\n return latestVersion\n }\n\n private resolveReadColumns(\n datasetId: string,\n schema: DatasetVersion[\"schema\"],\n columns?: readonly string[]\n ): readonly DatasetColumnDefinition[] {\n if (columns === undefined || columns.length === 0) {\n return schema.columns\n }\n\n const columnsByName = new Map(schema.columns.map((column) => [column.name, column] as const))\n\n return columns.map((columnName) => {\n const column = columnsByName.get(columnName)\n if (!column) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${datasetId}' does not have column '${columnName}' at the requested version.`\n )\n }\n\n return column\n })\n }\n\n private throwNoCommittedVersion(datasetId: string): never {\n throw new LakeStorageError(\n `[SixbDuckLake] No committed version found for dataset '${datasetId}'.`\n )\n }\n}\n",
|
|
20
20
|
"import type { DuckLakeStorageOptions } from \"../types\"\nimport { getBigIntLike } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport { encodeDatasetTableName } from \"./names\"\nimport { duckLakeMetadataTableName, quoteSqlString } from \"./sql\"\n\nexport interface DatasetTableRef {\n readonly datasetId: string\n readonly tableName: string\n readonly tableId: bigint\n}\n\nexport async function resolveDatasetTableRef(\n options: DuckLakeStorageOptions,\n runtime: DuckDbQueryRuntime,\n datasetId: string\n): Promise<DatasetTableRef | null> {\n const tableName = encodeDatasetTableName(datasetId)\n const ducklakeTable = duckLakeMetadataTableName(options, \"ducklake_table\")\n const [row] = await runtime.query(`\n SELECT table_id\n FROM ${ducklakeTable}\n WHERE table_name = ${quoteSqlString(tableName)}\n AND end_snapshot IS NULL\n LIMIT 1\n `)\n\n return row === undefined\n ? null\n : {\n datasetId,\n tableName,\n tableId: getBigIntLike(row, \"table_id\"),\n }\n}\n",
|
|
21
21
|
"import type { DatasetVersion } from \"@sixb/core/lake-storage\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\n\nexport interface SixbSchemaChangeMetadata {\n readonly addColumns?: readonly string[]\n}\n\nexport interface SixbCommitMetadata {\n readonly kind: \"datasetVersion\"\n readonly datasetId: string\n readonly commitId?: string\n readonly mode?: DatasetVersion[\"mode\"]\n readonly producer?: DatasetVersion[\"producer\"]\n readonly inputs?: DatasetVersion[\"inputs\"]\n readonly rowCount?: number\n readonly validatedPrimaryKeyColumns?: readonly string[]\n readonly schemaChange?: SixbSchemaChangeMetadata\n}\n\nexport function parseVersionId(versionId: string): string {\n if (!versionId.startsWith(\"ducklake:\")) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid DuckLake version id '${versionId}'.`)\n }\n\n const snapshotId = versionId.slice(\"ducklake:\".length)\n if (!/^\\d+$/.test(snapshotId)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid DuckLake version id '${versionId}'.`)\n }\n\n return snapshotId\n}\n\nexport function toVersionId(snapshotId: string): string {\n return `ducklake:${snapshotId}`\n}\n\nexport function parseCommitMetadata(value: unknown): SixbCommitMetadata | undefined {\n if (typeof value !== \"string\") {\n return undefined\n }\n\n let parsed: unknown\n try {\n parsed = JSON.parse(value)\n } catch {\n return undefined\n }\n\n if (\n !isRecord(parsed) ||\n !isRecord(parsed.sixb) ||\n parsed.sixb.kind !== \"datasetVersion\" ||\n typeof parsed.sixb.datasetId !== \"string\"\n ) {\n return undefined\n }\n\n const mode = parsed.sixb.mode\n const commitId = parsed.sixb.commitId\n const rowCount = parsed.sixb.rowCount\n const validatedPrimaryKeyColumns = parsed.sixb.validatedPrimaryKeyColumns\n\n return {\n kind: \"datasetVersion\",\n datasetId: parsed.sixb.datasetId,\n ...(typeof commitId === \"string\" ? { commitId } : {}),\n ...(mode === \"snapshot\" || mode === \"append\" || mode === \"merge\" || mode === \"schema\"\n ? { mode }\n : {}),\n ...(isDatasetProducer(parsed.sixb.producer) ? { producer: parsed.sixb.producer } : {}),\n ...(isDatasetVersionRefs(parsed.sixb.inputs) ? { inputs: parsed.sixb.inputs } : {}),\n ...(typeof commitId === \"string\" && isRowCount(rowCount) ? { rowCount } : {}),\n ...(typeof commitId === \"string\" && isValidatedPrimaryKeyColumns(validatedPrimaryKeyColumns)\n ? { validatedPrimaryKeyColumns }\n : {}),\n ...(isSchemaChangeMetadata(parsed.sixb.schemaChange)\n ? { schemaChange: parsed.sixb.schemaChange }\n : {}),\n }\n}\n\nexport function parseInlineDataChange(\n changesMade: string,\n tableId: bigint\n): { readonly hasDataChange: boolean; readonly hasDeleteChange: boolean } {\n const tableIdText = tableId.toString()\n let hasDataChange = false\n let hasDeleteChange = false\n\n for (const change of changesMade.split(\",\")) {\n const [kind, changedTableId] = change.split(\":\")\n if (changedTableId !== tableIdText) {\n continue\n }\n\n const normalizedKind = kind.toLowerCase()\n if (normalizedKind.includes(\"insert\") || normalizedKind.includes(\"delete\")) {\n hasDataChange = true\n }\n\n if (normalizedKind.includes(\"delete\")) {\n hasDeleteChange = true\n }\n }\n\n return { hasDataChange, hasDeleteChange }\n}\n\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction isDatasetProducer(value: unknown): value is NonNullable<DatasetVersion[\"producer\"]> {\n return (\n isRecord(value) &&\n (value.kind === \"sync\" || value.kind === \"pipeline\") &&\n optionalString(value.id) &&\n optionalString(value.runId)\n )\n}\n\nfunction isDatasetVersionRefs(value: unknown): value is NonNullable<DatasetVersion[\"inputs\"]> {\n return (\n Array.isArray(value) &&\n value.every(\n (item) =>\n isRecord(item) && typeof item.datasetId === \"string\" && typeof item.versionId === \"string\"\n )\n )\n}\n\nfunction isSchemaChangeMetadata(value: unknown): value is SixbSchemaChangeMetadata {\n return (\n isRecord(value) &&\n (value.addColumns === undefined ||\n (Array.isArray(value.addColumns) &&\n value.addColumns.every((columnName) => typeof columnName === \"string\")))\n )\n}\n\nfunction optionalString(value: unknown): boolean {\n return value === undefined || typeof value === \"string\"\n}\n\nfunction isRowCount(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0\n}\n\nfunction isValidatedPrimaryKeyColumns(value: unknown): value is readonly string[] {\n return (\n Array.isArray(value) &&\n value.length > 0 &&\n value.every((column) => typeof column === \"string\" && column.trim().length > 0) &&\n new Set(value).size === value.length\n )\n}\n",
|
|
22
22
|
"import type { DatasetDefinition } from \"@sixb/core\"\nimport type {\n DatasetCatalogState,\n DatasetLatestVersionSummary,\n DatasetVersion,\n DatasetVersionMode,\n DatasetVersionRef,\n} from \"@sixb/core/lake-storage\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport { getBigIntLike, getBoolean, getDate, getOptionalString, getString } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport type { DuckLakeDatasetCatalog } from \"./ducklake-dataset-catalog\"\nimport { type DatasetTableRef, resolveDatasetTableRef } from \"./ducklake-dataset-table-ref\"\nimport { encodeDatasetTableName } from \"./names\"\nimport { duckLakeMetadataTableName, quoteSqlString } from \"./sql\"\nimport {\n parseCommitMetadata,\n parseInlineDataChange,\n parseVersionId,\n type SixbCommitMetadata,\n toVersionId,\n} from \"./versions\"\n\ninterface DatasetSnapshotRow {\n readonly snapshotId: string\n readonly tableId: bigint\n readonly createdAt: Date\n readonly mode: DatasetVersionMode\n readonly parentSnapshotId?: string\n readonly metadata?: SixbCommitMetadata\n}\n\ninterface DatasetSnapshotCandidateRow {\n readonly snapshotId: string\n readonly createdAt: Date\n readonly changesMade: string\n readonly hasFileChange: boolean\n readonly hasFileDeleteChange: boolean\n readonly metadata?: SixbCommitMetadata\n}\n\ninterface SnapshotCandidateQueryInput {\n readonly tableId: bigint\n readonly exactSnapshotId?: string\n readonly beforeSnapshotId?: string\n readonly limit?: number\n}\n\ninterface VisibleSnapshotRowsInput {\n readonly datasetId: string\n readonly tableId: bigint\n readonly exactSnapshotId?: string\n readonly beforeSnapshotId?: string\n readonly visibleRowLimit?: number\n}\n\nexport interface DuckLakeVersionSummary {\n readonly datasetId: string\n readonly versionId: string\n readonly rowCount?: number\n readonly validatedPrimaryKeyColumns?: readonly string[]\n}\n\n/** One snapshot row from the shared catalog scan, before per-dataset filtering. */\ninterface CatalogScanSnapshot {\n readonly snapshotId: string\n readonly createdAt: Date\n readonly changesMade: string\n readonly metadata?: SixbCommitMetadata\n}\n\n/** Per (snapshot, table) file-change flags merged into the catalog scan. */\ninterface FileChangeFlags {\n readonly hasFileChange: boolean\n readonly hasFileDeleteChange: boolean\n}\n\nconst SNAPSHOT_ROW_BATCH_SIZE = 128\n\n// The bulk catalog scan shares one descending walk of recent snapshots across\n// all requested datasets, so its cost is bounded by this window rather than by\n// the dataset count. A dataset whose latest version is older than the window\n// reports a null latest version, which is acceptable for a catalog summary; the\n// detail routes still hydrate exact history.\nconst CATALOG_SNAPSHOT_SCAN_LIMIT = 512\n\n/**\n * Reconstructs Sixb DatasetVersion objects from DuckLake snapshots.\n *\n * DuckLake remains the source of truth for version ids, commit times, and\n * historical reads. Sixb commit metadata only hydrates fields DuckLake does\n * not know about, such as producer info and declared inputs.\n *\n * This class intentionally reads DuckLake metadata directly. The provider does\n * not keep a Sixb side table for versions; a Sixb version is a DuckLake\n * snapshot that either changed the dataset table or was explicitly tagged with\n * Sixb dataset metadata.\n */\nexport class DuckLakeSnapshotReader {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly datasets: DuckLakeDatasetCatalog\n ) {}\n\n async listVersions(datasetId: string, limit?: number): Promise<readonly DatasetVersion[]> {\n this.connections.assertOpen()\n\n return this.connections.withAttachedRuntime(async (runtime) => {\n const tableRef = await resolveDatasetTableRef(this.options, runtime, datasetId)\n if (!tableRef) {\n return []\n }\n\n return this.listVersionsForTableRef(runtime, tableRef, limit)\n })\n }\n\n async getLatestVersion(datasetId: string): Promise<DatasetVersion | null> {\n this.connections.assertOpen()\n\n return this.connections.withAttachedRuntime(async (runtime) => {\n const tableRef = await resolveDatasetTableRef(this.options, runtime, datasetId)\n if (!tableRef) {\n return null\n }\n\n return this.getLatestVersionForTableRef(runtime, tableRef)\n })\n }\n\n async getVersion(datasetId: string, versionId: string): Promise<DatasetVersion | null> {\n const snapshotId = parseVersionId(versionId)\n this.connections.assertOpen()\n\n return this.connections.withAttachedRuntime(async (runtime) => {\n const tableRef = await resolveDatasetTableRef(this.options, runtime, datasetId)\n if (!tableRef) {\n return null\n }\n\n return this.getVersionForTableRef(runtime, tableRef, snapshotId)\n })\n }\n\n /**\n * Bulk catalog-summary read used by the dataset list view.\n *\n * Resolves materialized state and a lightweight latest-version summary for\n * many datasets with a bounded number of metadata queries, never one snapshot\n * scan per dataset and never a count(*) over dataset contents.\n */\n async listDatasetCatalogState(\n datasetIds: readonly string[]\n ): Promise<readonly DatasetCatalogState[]> {\n this.connections.assertOpen()\n\n if (datasetIds.length === 0) {\n return []\n }\n\n return this.connections.withAttachedRuntime((runtime) =>\n this.collectDatasetCatalogState(runtime, datasetIds)\n )\n }\n\n private async collectDatasetCatalogState(\n runtime: DuckDbQueryRuntime,\n datasetIds: readonly string[]\n ): Promise<readonly DatasetCatalogState[]> {\n const uniqueIds = [...new Set(datasetIds)]\n const tableIdsByDatasetId = await this.resolveDatasetTableIds(runtime, uniqueIds)\n const latestRowByDatasetId = await this.resolveLatestSnapshotRows(runtime, tableIdsByDatasetId)\n\n return uniqueIds.map((datasetId) => {\n if (!tableIdsByDatasetId.has(datasetId)) {\n return { datasetId, materialized: false, latestVersion: null }\n }\n\n const row = latestRowByDatasetId.get(datasetId)\n return {\n datasetId,\n materialized: true,\n latestVersion: row ? this.snapshotRowToSummary(datasetId, row) : null,\n }\n })\n }\n\n private snapshotRowToSummary(\n datasetId: string,\n row: DatasetSnapshotRow\n ): DatasetLatestVersionSummary {\n return {\n datasetId,\n versionId: toVersionId(row.snapshotId),\n mode: row.mode,\n createdAt: row.createdAt,\n ...(row.metadata?.rowCount !== undefined ? { rowCount: row.metadata.rowCount } : {}),\n }\n }\n\n private async resolveDatasetTableIds(\n runtime: DuckDbQueryRuntime,\n datasetIds: readonly string[]\n ): Promise<Map<string, bigint>> {\n // Encoded table names are a collision-free bijection with dataset ids, so a\n // single `ducklake_table` read maps every requested id to its current table.\n const datasetIdByTableName = new Map<string, string>()\n for (const datasetId of datasetIds) {\n datasetIdByTableName.set(encodeDatasetTableName(datasetId), datasetId)\n }\n\n const ducklakeTable = duckLakeMetadataTableName(this.options, \"ducklake_table\")\n const tableNameList = [...datasetIdByTableName.keys()]\n .map((name) => quoteSqlString(name))\n .join(\", \")\n const rows = await runtime.query(`\n SELECT table_id, table_name\n FROM ${ducklakeTable}\n WHERE table_name IN (${tableNameList})\n AND end_snapshot IS NULL\n `)\n\n const tableIdsByDatasetId = new Map<string, bigint>()\n for (const row of rows) {\n const datasetId = datasetIdByTableName.get(getString(row, \"table_name\"))\n if (datasetId !== undefined) {\n tableIdsByDatasetId.set(datasetId, getBigIntLike(row, \"table_id\"))\n }\n }\n\n return tableIdsByDatasetId\n }\n\n /**\n * Resolve each dataset's latest snapshot row with one shared descending walk.\n *\n * The walk reuses {@link candidateToSnapshotRow} so Sixb visibility, mode\n * derivation, and the loud conflict rule match exact version hydration. Cost\n * is bounded by the snapshot window, not by the number of datasets.\n */\n private async resolveLatestSnapshotRows(\n runtime: DuckDbQueryRuntime,\n tableIdsByDatasetId: ReadonlyMap<string, bigint>\n ): Promise<Map<string, DatasetSnapshotRow>> {\n const result = new Map<string, DatasetSnapshotRow>()\n if (tableIdsByDatasetId.size === 0) {\n return result\n }\n\n const unresolved = new Map<string, bigint>(tableIdsByDatasetId)\n const tableIds = [...new Set(tableIdsByDatasetId.values())]\n\n let beforeSnapshotId: string | undefined\n let scanned = 0\n while (unresolved.size > 0 && scanned < CATALOG_SNAPSHOT_SCAN_LIMIT) {\n const candidates = await this.queryCatalogSnapshotBatch(\n runtime,\n beforeSnapshotId,\n SNAPSHOT_ROW_BATCH_SIZE\n )\n if (candidates.length === 0) {\n break\n }\n\n const fileFlags = await this.queryFileChangeFlags(\n runtime,\n candidates.map((candidate) => candidate.snapshotId),\n tableIds\n )\n\n for (const candidate of candidates) {\n scanned += 1\n for (const [datasetId, tableId] of [...unresolved]) {\n const flags = fileFlags.get(fileChangeKey(candidate.snapshotId, tableId))\n const row = this.candidateToSnapshotRow(datasetId, tableId, {\n snapshotId: candidate.snapshotId,\n createdAt: candidate.createdAt,\n changesMade: candidate.changesMade,\n hasFileChange: flags?.hasFileChange ?? false,\n hasFileDeleteChange: flags?.hasFileDeleteChange ?? false,\n ...(candidate.metadata !== undefined ? { metadata: candidate.metadata } : {}),\n })\n if (row) {\n result.set(datasetId, row)\n unresolved.delete(datasetId)\n }\n }\n\n if (unresolved.size === 0) {\n break\n }\n }\n\n if (candidates.length < SNAPSHOT_ROW_BATCH_SIZE) {\n break\n }\n beforeSnapshotId = candidates[candidates.length - 1]?.snapshotId\n }\n\n return result\n }\n\n private async queryCatalogSnapshotBatch(\n runtime: DuckDbQueryRuntime,\n beforeSnapshotId: string | undefined,\n limit: number\n ): Promise<readonly CatalogScanSnapshot[]> {\n const ducklakeSnapshot = duckLakeMetadataTableName(this.options, \"ducklake_snapshot\")\n const ducklakeSnapshotChanges = duckLakeMetadataTableName(\n this.options,\n \"ducklake_snapshot_changes\"\n )\n\n let whereSql = \"\"\n if (beforeSnapshotId !== undefined) {\n assertDuckLakeSnapshotId(beforeSnapshotId)\n whereSql = `WHERE snapshot.snapshot_id < ${beforeSnapshotId}`\n }\n\n const rows = await runtime.query(`\n SELECT\n snapshot.snapshot_id,\n snapshot.snapshot_time,\n changes.changes_made,\n changes.commit_extra_info\n FROM ${ducklakeSnapshot} snapshot\n JOIN ${ducklakeSnapshotChanges} changes ON changes.snapshot_id = snapshot.snapshot_id\n ${whereSql}\n ORDER BY snapshot.snapshot_id DESC\n LIMIT ${Math.max(0, Math.trunc(limit))}\n `)\n\n return rows.map((row) => {\n const metadata = parseCommitMetadata(getOptionalString(row, \"commit_extra_info\"))\n return {\n snapshotId: String(getBigIntLike(row, \"snapshot_id\")),\n createdAt: getDate(row, \"snapshot_time\"),\n changesMade: getString(row, \"changes_made\"),\n ...(metadata !== undefined ? { metadata } : {}),\n }\n })\n }\n\n private async queryFileChangeFlags(\n runtime: DuckDbQueryRuntime,\n snapshotIds: readonly string[],\n tableIds: readonly bigint[]\n ): Promise<Map<string, FileChangeFlags>> {\n const flags = new Map<string, FileChangeFlags>()\n if (snapshotIds.length === 0 || tableIds.length === 0) {\n return flags\n }\n\n for (const snapshotId of snapshotIds) {\n assertDuckLakeSnapshotId(snapshotId)\n }\n\n const snapshotIdList = snapshotIds.join(\", \")\n const tableIdList = tableIds.map((tableId) => tableId.toString()).join(\", \")\n const ducklakeDataFile = duckLakeMetadataTableName(this.options, \"ducklake_data_file\")\n const ducklakeDeleteFile = duckLakeMetadataTableName(this.options, \"ducklake_delete_file\")\n\n // Large tables keep their changes in data/delete files instead of inline\n // `changes_made`, so merge file-level changes for the scanned snapshots.\n const rows = await runtime.query(`\n WITH file_changes AS (\n SELECT begin_snapshot AS snapshot_id, table_id, false AS is_delete\n FROM ${ducklakeDataFile}\n WHERE table_id IN (${tableIdList}) AND begin_snapshot IN (${snapshotIdList})\n UNION ALL\n SELECT end_snapshot, table_id, true\n FROM ${ducklakeDataFile}\n WHERE table_id IN (${tableIdList}) AND end_snapshot IN (${snapshotIdList})\n UNION ALL\n SELECT begin_snapshot, table_id, true\n FROM ${ducklakeDeleteFile}\n WHERE table_id IN (${tableIdList}) AND begin_snapshot IN (${snapshotIdList})\n UNION ALL\n SELECT end_snapshot, table_id, true\n FROM ${ducklakeDeleteFile}\n WHERE table_id IN (${tableIdList}) AND end_snapshot IN (${snapshotIdList})\n )\n SELECT snapshot_id, table_id, bool_or(is_delete) AS has_delete\n FROM file_changes\n GROUP BY snapshot_id, table_id\n `)\n\n for (const row of rows) {\n const key = fileChangeKey(\n String(getBigIntLike(row, \"snapshot_id\")),\n getBigIntLike(row, \"table_id\")\n )\n flags.set(key, { hasFileChange: true, hasFileDeleteChange: getBoolean(row, \"has_delete\") })\n }\n\n return flags\n }\n\n private assertNoMetadataConflict(\n snapshotId: string,\n datasetId: string,\n metadata: SixbCommitMetadata | undefined\n ): void {\n if (metadata !== undefined && metadata.datasetId !== datasetId) {\n throw new LakeStorageError(\n `[SixbDuckLake] DuckLake snapshot '${snapshotId}' changed dataset '${datasetId}' but Sixb commit metadata references dataset '${metadata.datasetId}'.`\n )\n }\n }\n\n async getLatestVersionForDefinition(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition\n ): Promise<DatasetVersion | null> {\n const tableRef = await resolveDatasetTableRef(this.options, runtime, dataset.id)\n return tableRef ? this.getLatestVersionForTableRef(runtime, tableRef) : null\n }\n\n async getLatestVersionRefForDefinition(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition\n ): Promise<DatasetVersionRef | null> {\n const summary = await this.getLatestVersionSummaryForDefinition(runtime, dataset)\n return summary ? { datasetId: summary.datasetId, versionId: summary.versionId } : null\n }\n\n async getLatestVersionSummaryForDefinition(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition\n ): Promise<DuckLakeVersionSummary | null> {\n const tableRef = await resolveDatasetTableRef(this.options, runtime, dataset.id)\n if (!tableRef) {\n return null\n }\n\n const row = await this.getLatestSnapshotRowForTableRef(runtime, tableRef)\n if (!row) {\n return null\n }\n\n return {\n datasetId: tableRef.datasetId,\n versionId: toVersionId(row.snapshotId),\n ...(row.metadata?.rowCount !== undefined ? { rowCount: row.metadata.rowCount } : {}),\n ...(row.metadata?.validatedPrimaryKeyColumns !== undefined\n ? { validatedPrimaryKeyColumns: row.metadata.validatedPrimaryKeyColumns }\n : {}),\n }\n }\n\n async getVersionForSnapshot(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition,\n snapshotId: string\n ): Promise<DatasetVersion | null> {\n assertDuckLakeSnapshotId(snapshotId)\n\n const tableRef = await resolveDatasetTableRef(this.options, runtime, dataset.id)\n return tableRef ? this.getVersionForTableRef(runtime, tableRef, snapshotId) : null\n }\n\n async getVersionForTableRef(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n snapshotId: string\n ): Promise<DatasetVersion | null> {\n const match = await this.getSnapshotRowForTableRef(runtime, tableRef, snapshotId, {\n includeParent: true,\n })\n return match ? this.snapshotToVersion(runtime, tableRef, match) : null\n }\n\n async getVersionRefForSnapshot(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition,\n snapshotId: string\n ): Promise<DatasetVersionRef | null> {\n assertDuckLakeSnapshotId(snapshotId)\n\n const tableRef = await resolveDatasetTableRef(this.options, runtime, dataset.id)\n if (!tableRef) {\n return null\n }\n\n const row = await this.getSnapshotRowForTableRef(runtime, tableRef, snapshotId, {\n includeParent: false,\n })\n return row ? { datasetId: tableRef.datasetId, versionId: toVersionId(row.snapshotId) } : null\n }\n\n async listVersionsForDefinition(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition,\n limit?: number\n ): Promise<readonly DatasetVersion[]> {\n const tableRef = await resolveDatasetTableRef(this.options, runtime, dataset.id)\n return tableRef ? this.listVersionsForTableRef(runtime, tableRef, limit) : []\n }\n\n private async listVersionsForTableRef(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n limit?: number\n ): Promise<readonly DatasetVersion[]> {\n const limitedRows = await this.getSnapshotRowsForTableRef(runtime, tableRef, limit)\n const versions: DatasetVersion[] = []\n\n for (const row of limitedRows) {\n versions.push(await this.snapshotToVersion(runtime, tableRef, row))\n }\n\n return versions\n }\n\n async getLatestVersionForTableRef(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef\n ): Promise<DatasetVersion | null> {\n const [latest] = await this.listVersionsForTableRef(runtime, tableRef, 1)\n return latest ?? null\n }\n\n private async getLatestSnapshotRowForTableRef(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef\n ): Promise<DatasetSnapshotRow | null> {\n const [row] = await this.collectVisibleSnapshotRows(runtime, {\n datasetId: tableRef.datasetId,\n tableId: tableRef.tableId,\n visibleRowLimit: 1,\n })\n return row ?? null\n }\n\n private async getSnapshotRowForTableRef(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n snapshotId: string,\n options: { readonly includeParent: boolean }\n ): Promise<DatasetSnapshotRow | null> {\n assertDuckLakeSnapshotId(snapshotId)\n\n const [row] = await this.collectVisibleSnapshotRows(runtime, {\n datasetId: tableRef.datasetId,\n tableId: tableRef.tableId,\n exactSnapshotId: snapshotId,\n visibleRowLimit: 1,\n })\n if (!row) {\n return null\n }\n\n if (\n !options.includeParent ||\n (row.mode !== \"append\" && row.mode !== \"merge\" && row.mode !== \"schema\")\n ) {\n return row\n }\n\n const [parent] = await this.collectVisibleSnapshotRows(runtime, {\n datasetId: tableRef.datasetId,\n tableId: tableRef.tableId,\n beforeSnapshotId: snapshotId,\n visibleRowLimit: 1,\n })\n\n return parent ? { ...row, parentSnapshotId: parent.snapshotId } : row\n }\n\n private async getSnapshotRowsForTableRef(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n limit?: number\n ): Promise<readonly DatasetSnapshotRow[]> {\n const visibleLimit = limit === undefined ? undefined : Math.max(0, limit)\n if (visibleLimit === 0) {\n return []\n }\n\n const rows = await this.collectVisibleSnapshotRows(runtime, {\n datasetId: tableRef.datasetId,\n tableId: tableRef.tableId,\n visibleRowLimit: visibleLimit === undefined ? undefined : visibleLimit + 1,\n })\n const rowsWithParents = this.withParentSnapshotIds(rows)\n return visibleLimit === undefined ? rowsWithParents : rowsWithParents.slice(0, visibleLimit)\n }\n\n private async collectVisibleSnapshotRows(\n runtime: DuckDbQueryRuntime,\n input: VisibleSnapshotRowsInput\n ): Promise<readonly DatasetSnapshotRow[]> {\n if (input.visibleRowLimit !== undefined && input.visibleRowLimit <= 0) {\n return []\n }\n\n const snapshots: DatasetSnapshotRow[] = []\n let beforeSnapshotId = input.beforeSnapshotId\n\n while (input.visibleRowLimit === undefined || snapshots.length < input.visibleRowLimit) {\n const candidates = await this.querySnapshotCandidates(runtime, {\n tableId: input.tableId,\n exactSnapshotId: input.exactSnapshotId,\n beforeSnapshotId,\n limit: input.exactSnapshotId === undefined ? SNAPSHOT_ROW_BATCH_SIZE : 1,\n })\n if (candidates.length === 0) {\n break\n }\n\n for (const candidate of candidates) {\n const snapshot = this.candidateToSnapshotRow(input.datasetId, input.tableId, candidate)\n if (snapshot) {\n snapshots.push(snapshot)\n }\n\n if (input.visibleRowLimit !== undefined && snapshots.length >= input.visibleRowLimit) {\n break\n }\n }\n\n if (input.exactSnapshotId !== undefined || candidates.length < SNAPSHOT_ROW_BATCH_SIZE) {\n break\n }\n\n beforeSnapshotId = candidates[candidates.length - 1]?.snapshotId\n }\n\n return snapshots\n }\n\n private async querySnapshotCandidates(\n runtime: DuckDbQueryRuntime,\n input: SnapshotCandidateQueryInput\n ): Promise<readonly DatasetSnapshotCandidateRow[]> {\n if (input.limit !== undefined && input.limit <= 0) {\n return []\n }\n\n const where: string[] = []\n if (input.exactSnapshotId !== undefined) {\n assertDuckLakeSnapshotId(input.exactSnapshotId)\n where.push(`snapshot.snapshot_id = ${input.exactSnapshotId}`)\n }\n if (input.beforeSnapshotId !== undefined) {\n assertDuckLakeSnapshotId(input.beforeSnapshotId)\n where.push(`snapshot.snapshot_id < ${input.beforeSnapshotId}`)\n }\n\n const whereSql = where.length === 0 ? \"\" : `WHERE ${where.join(\" AND \")}`\n const limitSql =\n input.limit === undefined ? \"\" : `LIMIT ${Math.max(0, Math.trunc(input.limit))}`\n const ducklakeSnapshot = duckLakeMetadataTableName(this.options, \"ducklake_snapshot\")\n const ducklakeSnapshotChanges = duckLakeMetadataTableName(\n this.options,\n \"ducklake_snapshot_changes\"\n )\n const ducklakeDataFile = duckLakeMetadataTableName(this.options, \"ducklake_data_file\")\n const ducklakeDeleteFile = duckLakeMetadataTableName(this.options, \"ducklake_delete_file\")\n\n const rows = await runtime.query(`\n WITH candidate_snapshots AS (\n -- Recent DuckLake snapshots to inspect; Sixb visibility is filtered later.\n SELECT\n snapshot.snapshot_id,\n snapshot.snapshot_time,\n changes.changes_made,\n changes.commit_extra_info\n FROM ${ducklakeSnapshot} snapshot\n JOIN ${ducklakeSnapshotChanges} changes\n ON changes.snapshot_id = snapshot.snapshot_id\n ${whereSql}\n ORDER BY snapshot.snapshot_id DESC\n ${limitSql}\n ),\n file_changes AS (\n -- File metadata tells whether this table changed in each candidate snapshot.\n SELECT begin_snapshot AS snapshot_id, false AS is_delete_change\n FROM ${ducklakeDataFile}\n WHERE table_id = ${input.tableId}\n AND begin_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n UNION ALL\n SELECT end_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${ducklakeDataFile}\n WHERE table_id = ${input.tableId}\n AND end_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n UNION ALL\n SELECT begin_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${ducklakeDeleteFile}\n WHERE table_id = ${input.tableId}\n AND begin_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n UNION ALL\n SELECT end_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${ducklakeDeleteFile}\n WHERE table_id = ${input.tableId}\n AND end_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n ),\n file_changes_by_snapshot AS (\n -- Collapse file-level changes into one row per snapshot.\n SELECT\n snapshot_id,\n count(*) > 0 AS has_file_change,\n count(*) FILTER (WHERE is_delete_change) > 0 AS has_file_delete_change\n FROM file_changes\n GROUP BY snapshot_id\n )\n SELECT\n -- Keep metadata-only candidates; Sixb filters them with commit_extra_info.\n candidate.snapshot_id,\n candidate.snapshot_time,\n candidate.changes_made,\n candidate.commit_extra_info,\n coalesce(file_changes.has_file_change, false) AS has_file_change,\n coalesce(file_changes.has_file_delete_change, false) AS has_file_delete_change\n FROM candidate_snapshots candidate\n LEFT JOIN file_changes_by_snapshot file_changes\n ON file_changes.snapshot_id = candidate.snapshot_id\n ORDER BY candidate.snapshot_id DESC\n `)\n\n return rows.map((row) => {\n const metadata = parseCommitMetadata(row.commit_extra_info)\n return {\n snapshotId: String(getBigIntLike(row, \"snapshot_id\")),\n createdAt: getDate(row, \"snapshot_time\"),\n changesMade: getString(row, \"changes_made\"),\n hasFileChange: getBoolean(row, \"has_file_change\"),\n hasFileDeleteChange: getBoolean(row, \"has_file_delete_change\"),\n ...(metadata !== undefined ? { metadata } : {}),\n }\n })\n }\n\n private candidateToSnapshotRow(\n datasetId: string,\n tableId: bigint,\n candidate: DatasetSnapshotCandidateRow\n ): DatasetSnapshotRow | null {\n const inlineChange = parseInlineDataChange(candidate.changesMade, tableId)\n const hasDataChange = inlineChange.hasDataChange || candidate.hasFileChange\n const hasDeleteChange = inlineChange.hasDeleteChange || candidate.hasFileDeleteChange\n\n // Metadata-only snapshots are common for table comments, schema changes,\n // and other catalog operations. Treat them as dataset versions only when\n // their Sixb metadata names this dataset.\n if (!hasDataChange) {\n const metadata = candidate.metadata\n if (!metadata || metadata.datasetId !== datasetId) {\n return null\n }\n\n return {\n snapshotId: candidate.snapshotId,\n tableId,\n createdAt: candidate.createdAt,\n mode: metadata.mode ?? \"schema\",\n metadata,\n }\n }\n\n // A real data-change snapshot belongs to this dataset because DuckLake's\n // change metadata touched this table id. If Sixb metadata is present but\n // points elsewhere, fail loudly rather than hydrating the wrong lineage.\n this.assertNoMetadataConflict(candidate.snapshotId, datasetId, candidate.metadata)\n\n return {\n snapshotId: candidate.snapshotId,\n tableId,\n createdAt: candidate.createdAt,\n mode: candidate.metadata?.mode ?? (hasDeleteChange ? \"snapshot\" : \"append\"),\n ...(candidate.metadata !== undefined ? { metadata: candidate.metadata } : {}),\n }\n }\n\n private async snapshotToVersion(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n row: DatasetSnapshotRow\n ): Promise<DatasetVersion> {\n const schemaAtSnapshot = await this.datasets.getDatasetSchemaAtSnapshot(\n runtime,\n tableRef.datasetId,\n tableRef.tableName,\n tableRef.tableId,\n row.snapshotId\n )\n\n // DuckLake gives us version id, timestamp, and time travel. Sixb metadata\n // fills in caller intent such as append vs snapshot and producer lineage.\n // Version listing is a metadata path, so it only carries row counts already\n // stored in Sixb commit metadata and never counts historical table contents.\n\n return {\n datasetId: tableRef.datasetId,\n versionId: toVersionId(row.snapshotId),\n parentVersionId:\n row.parentSnapshotId === undefined ? undefined : toVersionId(row.parentSnapshotId),\n mode: row.mode,\n createdAt: row.createdAt,\n schema: schemaAtSnapshot,\n producer: row.metadata?.producer,\n inputs: row.metadata?.inputs,\n ...(row.metadata?.rowCount !== undefined ? { rowCount: row.metadata.rowCount } : {}),\n }\n }\n\n private withParentSnapshotIds(\n snapshots: readonly DatasetSnapshotRow[]\n ): readonly DatasetSnapshotRow[] {\n return snapshots.map((snapshot, index) => {\n // Parent ids track versions that reuse the previous dataset state.\n // Snapshot versions replace the rows, so time travel stands on the snapshot id.\n const parentSnapshotId =\n snapshot.mode === \"append\" || snapshot.mode === \"merge\" || snapshot.mode === \"schema\"\n ? snapshots[index + 1]?.snapshotId\n : undefined\n return parentSnapshotId === undefined ? snapshot : { ...snapshot, parentSnapshotId }\n })\n }\n}\n\nfunction assertDuckLakeSnapshotId(snapshotId: string): void {\n if (!/^\\d+$/.test(snapshotId)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid DuckLake snapshot id '${snapshotId}'.`)\n }\n}\n\nfunction fileChangeKey(snapshotId: string, tableId: bigint): string {\n return `${snapshotId}|${tableId}`\n}\n",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"import { randomUUID } from \"node:crypto\"\nimport {\n LakeStorageError,\n type SqlTransformBody,\n type SqlTransformRelation,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport { encodeDatasetTableName } from \"./names\"\nimport { qualifiedTableName } from \"./sql\"\nimport { parseVersionId } from \"./versions\"\n\nconst RELATION_PLACEHOLDER_PREFIX = \"__sixb_sql_transform_relation_\"\nconst RELATION_PLACEHOLDER_PATTERN = /__sixb_sql_transform_relation_[0-9a-f]{32}_[0-9]+__/g\n\nexport interface DuckLakeSqlTransformSourceRelation {\n readonly datasetId: string\n readonly versionId: string\n}\n\nexport interface RenderDuckLakeSqlTransformSqlInput {\n readonly options: Pick<DuckLakeStorageOptions, \"alias\">\n readonly sources: Readonly<Record<string, DuckLakeSqlTransformSourceRelation>>\n readonly sql: SqlTransformBody<\"duckdb\">\n}\n\ninterface DuckLakeSqlTransformRelationContext {\n readonly relations: Readonly<Record<string, SqlTransformRelation>>\n render(sql: string): string\n}\n\nclass DuckLakeSqlTransformRelation implements SqlTransformRelation {\n constructor(private readonly placeholder: string) {}\n\n toString(): string {\n return this.placeholder\n }\n}\n\nexport function renderDuckLakeSqlTransformSql(input: RenderDuckLakeSqlTransformSqlInput): string {\n const context = createDuckLakeSqlTransformRelationContext(input)\n const sql = input.sql(context.relations)\n\n if (typeof sql !== \"string\") {\n throw new LakeStorageError(\"[SixbDuckLake] SQL transform body must return a SQL string.\")\n }\n\n return context.render(sql)\n}\n\nfunction createDuckLakeSqlTransformRelationContext(\n input: Omit<RenderDuckLakeSqlTransformSqlInput, \"sql\">\n): DuckLakeSqlTransformRelationContext {\n const token = randomUUID().replaceAll(\"-\", \"\")\n const relations: Record<string, SqlTransformRelation> = Object.create(null)\n const replacements = new Map<string, string>()\n\n let index = 0\n for (const [sourceName, source] of Object.entries(input.sources)) {\n const placeholder = `${RELATION_PLACEHOLDER_PREFIX}${token}_${index}__`\n relations[sourceName] = Object.freeze(new DuckLakeSqlTransformRelation(placeholder))\n replacements.set(placeholder, renderDuckLakeSourceRelation(input.options, source))\n index += 1\n }\n\n return {\n relations: Object.freeze(relations),\n render(sql) {\n const rendered = sql.replace(RELATION_PLACEHOLDER_PATTERN, (placeholder) => {\n const replacement = replacements.get(placeholder)\n if (replacement === undefined) {\n throwUnresolvedPlaceholder()\n }\n\n return replacement\n })\n\n if (rendered.includes(RELATION_PLACEHOLDER_PREFIX)) {\n throwUnresolvedPlaceholder()\n }\n\n return rendered\n },\n }\n}\n\nfunction renderDuckLakeSourceRelation(\n options: Pick<DuckLakeStorageOptions, \"alias\">,\n source: DuckLakeSqlTransformSourceRelation\n): string {\n const snapshotId = parseVersionId(source.versionId)\n const tableName = encodeDatasetTableName(source.datasetId)\n return `(SELECT * FROM ${qualifiedTableName(options, tableName)} AT (VERSION => ${snapshotId}))`\n}\n\nfunction throwUnresolvedPlaceholder(): never {\n throw new LakeStorageError(\n \"[SixbDuckLake] SQL transform contains an unresolved relation placeholder.\"\n )\n}\n",
|
|
26
26
|
"import { randomUUID } from \"node:crypto\"\nimport type { DatasetDefinition } from \"@sixb/core\"\nimport type {\n BeginDatasetMergeInput,\n BeginDatasetWriteInput,\n DatasetMergeCommitResult,\n DatasetVersion,\n DatasetWriteCommitResult,\n DatasetWriteMode,\n LakeMergeSession,\n LakeWriteSession,\n} from \"@sixb/core/lake-storage\"\nimport { getDatasetPrimaryKeyColumns, LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport { localCatalogCoordinationKey } from \"./catalog-key\"\nimport {\n type ApplyDatasetRowsResult,\n applyDatasetRowsFromRelation,\n assertDatasetWriteMode,\n type CommitRowCount,\n} from \"./dataset-row-commit\"\nimport { applyDatasetMergeFromRelation } from \"./dataset-row-merge\"\nimport { getBigIntLike } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport type { DuckLakeDatasetCatalog } from \"./ducklake-dataset-catalog\"\nimport { createDuckLakeMergeSession, type DuckLakeCommitMergeInput } from \"./ducklake-merge-session\"\nimport type { DuckLakeSnapshotReader, DuckLakeVersionSummary } from \"./ducklake-snapshot-reader\"\nimport { createDuckLakeWriteSession, type DuckLakeCommitWriteInput } from \"./ducklake-write-session\"\nimport { duckLakeAlias, duckLakeMetadataTableName, quoteIdentifier, quoteSqlString } from \"./sql\"\nimport { parseCommitMetadata, type SixbCommitMetadata } from \"./versions\"\n\nexport interface DuckLakeCommitDatasetVersionInput {\n readonly dataset: DatasetDefinition\n readonly mode: DatasetWriteMode\n readonly expectedLatestVersionId?: string\n readonly commitMessage: string\n readonly producer?: BeginDatasetWriteInput[\"producer\"]\n readonly inputs?: BeginDatasetWriteInput[\"inputs\"]\n applyChanges(\n runtime: DuckDbQueryRuntime,\n context: DuckLakeApplyChangesContext\n ): Promise<ApplyDatasetRowsResult>\n}\n\ninterface DuckLakeCommitVersionOutcomeInput\n extends Omit<DuckLakeCommitDatasetVersionInput, \"expectedLatestVersionId\" | \"mode\"> {\n readonly mode: DatasetWriteMode | \"merge\"\n readonly expectedLatestVersionId?: string | null\n readonly allowInitialNoOp?: boolean\n readonly disableRetries?: boolean\n readonly optimisticOperation?: \"commit\" | \"merge commit\"\n}\n\ninterface DuckLakeCommitVersionOutcomeRuntimeInput extends DuckLakeCommitVersionOutcomeInput {\n readonly runtime: DuckDbQueryRuntime\n}\n\nexport interface DuckLakeApplyChangesContext {\n readonly previousRowCount?: number\n readonly validatedPrimaryKeyColumns?: readonly string[]\n}\n\n/**\n * Owns the durable DuckLake transaction for a staged Sixb write.\n *\n * Write sessions keep validation and temp staging table mechanics close to the\n * caller. This coordinator handles everything that changes shared DuckLake\n * state: attachment refresh, optimistic guards, row replacement/append,\n * commit_extra_info, no-op detection, and DatasetVersion hydration.\n */\nexport class DuckLakeWriteCoordinator {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly datasets: DuckLakeDatasetCatalog,\n private readonly snapshots: DuckLakeSnapshotReader\n ) {}\n\n async beginWrite(input: BeginDatasetWriteInput): Promise<LakeWriteSession> {\n this.connections.assertOpen()\n\n const definition = await this.datasets.getDataset(input.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[SixbDuckLake] Unknown dataset '${input.dataset.id}'.`)\n }\n\n this.datasets.assertSchema(definition)\n const mode = input.mode ?? \"snapshot\"\n assertDatasetWriteMode(mode, \"write\")\n\n // Staging tables are connection-scoped in DuckDB. In the single-runtime\n // model every active write session creates a uniquely named temp table on\n // the shared runtime; the durable commit later runs on that same\n // connection under an exclusive queue slot.\n const runtime = await this.connections.stagingRuntime()\n return createDuckLakeWriteSession({\n commitWrite: (options) => this.commitWrite(options),\n runtime,\n write: {\n ...input,\n dataset: definition,\n mode,\n },\n })\n }\n\n async beginMerge(input: BeginDatasetMergeInput): Promise<LakeMergeSession> {\n this.connections.assertOpen()\n\n const definition = await this.datasets.getDataset(input.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[SixbDuckLake] Unknown dataset '${input.dataset.id}'.`)\n }\n if (getDatasetPrimaryKeyColumns(definition) === null) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${definition.id}' must define a primaryKey before it can be merged.`\n )\n }\n\n this.datasets.assertSchema(definition)\n const latestVersion = await this.connections.withAttachedRuntime((runtime) =>\n this.snapshots.getLatestVersionForDefinition(runtime, definition)\n )\n if (\n input.expectedLatestVersionId !== undefined &&\n latestVersion?.versionId !== input.expectedLatestVersionId\n ) {\n throw new LakeStorageError(\n `[SixbDuckLake] Optimistic merge start failed for dataset '${definition.id}': expected latest version '${input.expectedLatestVersionId}', found '${latestVersion?.versionId ?? \"none\"}'.`\n )\n }\n const runtime = await this.connections.stagingRuntime()\n return createDuckLakeMergeSession({\n commitMerge: (options) => this.commitMerge(options),\n runtime,\n merge: { ...input, dataset: definition },\n baseVersionId: latestVersion?.versionId ?? null,\n })\n }\n\n private async commitWrite(input: DuckLakeCommitWriteInput): Promise<DatasetWriteCommitResult> {\n const definition = await this.datasets.getDataset(input.write.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[SixbDuckLake] Unknown dataset '${input.write.dataset.id}'.`)\n }\n\n const mode = input.write.mode ?? \"snapshot\"\n assertDatasetWriteMode(mode, \"write\")\n\n return this.commitDatasetVersion({\n dataset: definition,\n mode,\n expectedLatestVersionId: input.commit?.expectedLatestVersionId,\n commitMessage: input.commit?.commitMessage ?? `write dataset ${input.write.dataset.id}`,\n producer: input.write.producer,\n inputs: input.write.inputs,\n applyChanges: (runtime, context) =>\n this.applyStagedRows({\n ...input,\n runtime,\n previousRowCount: context.previousRowCount,\n }),\n })\n }\n\n private async commitMerge(input: DuckLakeCommitMergeInput): Promise<DatasetMergeCommitResult> {\n const definition = await this.datasets.getDataset(input.merge.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[SixbDuckLake] Unknown dataset '${input.merge.dataset.id}'.`)\n }\n if (getDatasetPrimaryKeyColumns(definition) === null) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${definition.id}' must define a primaryKey before it can be merged.`\n )\n }\n\n return this.withCommitRuntime((runtime) =>\n this.commitVersionOutcomeOnExclusiveRuntime(runtime, {\n dataset: definition,\n mode: \"merge\",\n expectedLatestVersionId: input.baseVersionId,\n allowInitialNoOp: true,\n disableRetries: true,\n optimisticOperation: \"merge commit\",\n commitMessage: input.commit?.commitMessage ?? `merge dataset ${definition.id}`,\n producer: input.merge.producer,\n inputs: input.merge.inputs,\n applyChanges: async (commitRuntime, context) => {\n const result = await applyDatasetMergeFromRelation({\n options: this.options,\n runtime: commitRuntime,\n dataset: definition,\n stagingTableName: input.stagingTableName,\n sequenceColumnName: input.sequenceColumnName,\n kindColumnName: input.kindColumnName,\n previousRowCount: context.previousRowCount,\n validatedPrimaryKeyColumns: context.validatedPrimaryKeyColumns,\n })\n if (result.sourceRowCount !== input.changesWritten) {\n throw new LakeStorageError(\n `[SixbDuckLake] Staged merge for dataset '${definition.id}' accepted ${input.changesWritten} change(s), but DuckLake saw ${result.sourceRowCount} source change(s) at commit time.`\n )\n }\n return result\n },\n })\n )\n }\n\n async commitDatasetVersion(\n input: DuckLakeCommitDatasetVersionInput\n ): Promise<DatasetWriteCommitResult> {\n return this.withCommitRuntime((runtime) =>\n this.commitDatasetVersionOnExclusiveRuntime(runtime, input)\n )\n }\n\n async withCommitRuntime<T>(run: (runtime: DuckDbQueryRuntime) => Promise<T>): Promise<T> {\n return withCatalogCommitLock(this.options, async () => {\n // `withExclusiveAttached` refreshes local catalogs before the exclusive\n // slot, then holds the local attachment boundary through the commit.\n return this.connections.withExclusiveAttached(run)\n })\n }\n\n async commitDatasetVersionOnExclusiveRuntime(\n runtime: DuckDbQueryRuntime,\n input: DuckLakeCommitDatasetVersionInput\n ): Promise<DatasetWriteCommitResult> {\n const result = await this.commitVersionOutcomeOnExclusiveRuntime(runtime, {\n ...input,\n // DuckLake has no primary-key constraint. Do not let its automatic retry replay a keyed\n // append after the collision checks ran against an older transaction snapshot.\n disableRetries:\n input.mode === \"append\" && getDatasetPrimaryKeyColumns(input.dataset) !== null,\n })\n if (result.version === null) {\n throw new LakeStorageError(\n `[SixbDuckLake] No DuckLake changes were committed for dataset '${input.dataset.id}', and no previous version exists.`\n )\n }\n\n return { ...result.version, outcome: result.outcome }\n }\n\n private async commitVersionOutcomeOnExclusiveRuntime(\n runtime: DuckDbQueryRuntime,\n input: DuckLakeCommitVersionOutcomeInput\n ): Promise<DatasetMergeCommitResult> {\n const runtimeInput = { ...input, runtime }\n return this.withGuardedRetrySetting(runtimeInput, () =>\n this.commitDatasetVersionUnlocked(runtimeInput)\n )\n }\n\n private async withGuardedRetrySetting<T>(\n input: DuckLakeCommitVersionOutcomeRuntimeInput,\n run: () => Promise<T>\n ): Promise<T> {\n if (input.expectedLatestVersionId === undefined && !input.disableRetries) {\n return run()\n }\n\n // DuckLake can retry transactions internally. Optimistic guards and keyed append constraint\n // checks must not be replayed against a different snapshot, so disable retries for this\n // exclusive commit and restore the runtime setting before releasing the queue.\n await input.runtime.run(\"SET ducklake_max_retry_count = 0\")\n let outcome:\n | { readonly kind: \"success\"; readonly value: T }\n | {\n readonly kind: \"error\"\n readonly error: unknown\n }\n\n try {\n outcome = { kind: \"success\", value: await run() }\n } catch (error) {\n outcome = { kind: \"error\", error }\n }\n\n try {\n await input.runtime.run(\"RESET ducklake_max_retry_count\")\n } catch {\n // The retry count is session state on a shared, long-lived connection.\n // If it cannot be restored, recycle the connection so a leftover value of\n // 0 cannot silently disable DuckLake auto-retry for a later unguarded\n // commit. The commit already succeeded or failed durably, so this cleanup\n // must never change the outcome reported to the caller.\n this.connections.poisonRuntime()\n }\n\n if (outcome.kind === \"error\") {\n throw outcome.error\n }\n\n return outcome.value\n }\n\n private async commitDatasetVersionUnlocked(\n input: DuckLakeCommitVersionOutcomeRuntimeInput\n ): Promise<DatasetMergeCommitResult> {\n // Capture the write connection's last committed DuckLake snapshot before\n // and after COMMIT. The commitId in DuckLake commit_extra_info proves\n // which snapshot belongs to this transaction.\n const previousWriteSnapshotId = await this.lastCommittedSnapshotId(input.runtime)\n\n await input.runtime.run(\"BEGIN TRANSACTION\")\n let committed = false\n try {\n // Guarded Sixb commits need compare-and-swap semantics. DuckLake can\n // automatically retry non-conflicting commits, so guarded transactions\n // disable retries and re-check the dataset head after BEGIN.\n const latestVersion = await this.latestVersionForCommit(input)\n if (input.expectedLatestVersionId !== undefined) {\n this.assertExpectedLatestVersion({\n datasetId: input.dataset.id,\n expectedLatestVersionId: input.expectedLatestVersionId,\n actualLatestVersionId: latestVersion?.versionId ?? null,\n operation: input.optimisticOperation ?? \"commit\",\n })\n }\n\n const changeResult = await input.applyChanges(input.runtime, {\n previousRowCount: latestVersion?.rowCount,\n validatedPrimaryKeyColumns: latestVersion?.validatedPrimaryKeyColumns,\n })\n const commitId = randomUUID()\n await this.setCommitMetadata(\n input,\n commitId,\n commitRowCount(input, changeResult, latestVersion)\n )\n\n await input.runtime.run(\"COMMIT\")\n committed = true\n\n const committedWriteSnapshotId = await this.lastCommittedSnapshotId(input.runtime)\n try {\n return await this.versionForCommittedWrite({\n ...input,\n commitId,\n previousWriteSnapshotId,\n committedWriteSnapshotId,\n changeResult,\n })\n } finally {\n await this.connections.detachLocalCatalogAfterCommit(input.runtime)\n }\n } catch (error) {\n if (!committed) {\n await this.rollbackTransaction(input.runtime)\n }\n throw error\n }\n }\n\n private async versionForCommittedWrite(\n input: DuckLakeCommitVersionOutcomeRuntimeInput & {\n readonly commitId: string\n readonly previousWriteSnapshotId: string | null\n readonly committedWriteSnapshotId: string | null\n readonly changeResult: ApplyDatasetRowsResult\n }\n ): Promise<DatasetMergeCommitResult> {\n // Hydrate the committed version on the same exclusive runtime. That keeps\n // snapshot matching and row-count fallback inside the same serialized\n // connection state that just committed.\n const ownSnapshotId = await this.findOwnSnapshotId(\n input.runtime,\n input.dataset.id,\n input.commitId,\n input.previousWriteSnapshotId,\n input.committedWriteSnapshotId\n )\n\n if (ownSnapshotId !== null) {\n const version = await this.snapshots.getVersionForSnapshot(\n input.runtime,\n input.dataset,\n ownSnapshotId\n )\n if (version) {\n return { outcome: \"created\", version }\n }\n\n throw new LakeStorageError(\n `[SixbDuckLake] DuckLake committed snapshot '${ownSnapshotId}' for dataset '${input.dataset.id}', but Sixb could not hydrate it as a dataset version.`\n )\n }\n\n if (!input.changeResult.dataChangeExpected) {\n const version = await this.versionForNoOpCommit(\n input.runtime,\n input.dataset,\n input.allowInitialNoOp ?? false\n )\n if (input.expectedLatestVersionId !== undefined) {\n this.assertExpectedLatestVersion({\n datasetId: input.dataset.id,\n expectedLatestVersionId: input.expectedLatestVersionId,\n actualLatestVersionId: version?.versionId ?? null,\n operation: input.optimisticOperation ?? \"commit\",\n })\n }\n return {\n outcome: \"unchanged\",\n version,\n }\n }\n\n if (input.committedWriteSnapshotId === input.previousWriteSnapshotId) {\n throw new LakeStorageError(\n `[SixbDuckLake] DuckLake commit for dataset '${input.dataset.id}' completed without producing a snapshot for this non-empty write.`\n )\n }\n\n throw new LakeStorageError(\n `[SixbDuckLake] DuckLake commit for dataset '${input.dataset.id}' completed, but Sixb could not find a matching snapshot for this write.`\n )\n }\n\n private async applyStagedRows(\n input: DuckLakeCommitWriteInput & {\n readonly runtime: DuckDbQueryRuntime\n readonly previousRowCount?: number\n }\n ): Promise<ApplyDatasetRowsResult> {\n const mode = input.write.mode ?? \"snapshot\"\n const result = await applyDatasetRowsFromRelation({\n options: this.options,\n runtime: input.runtime,\n dataset: input.write.dataset,\n mode,\n sourceRelationSql: quoteIdentifier(input.stagingTableName),\n previousRowCount: input.previousRowCount,\n })\n\n if (result.sourceRowCount !== input.rowsWritten) {\n throw new LakeStorageError(\n `[SixbDuckLake] Staged write for dataset '${input.write.dataset.id}' accepted ${input.rowsWritten} row(s), but DuckLake saw ${result.sourceRowCount} source row(s) at commit time.`\n )\n }\n\n return result\n }\n\n private async setCommitMetadata(\n input: DuckLakeCommitVersionOutcomeRuntimeInput,\n commitId: string,\n rowCount: CommitRowCount\n ): Promise<void> {\n // DuckLake stores this JSON on the snapshot it creates for the current\n // transaction. Version id, timestamp, and data-change detection still come\n // from DuckLake itself. commitId is only a transaction correlation token so\n // concurrent writers do not accidentally hydrate each other's snapshots.\n // Every keyed data path either replaces the baseline or validates its uniqueness before this\n // marker is persisted. Merge commits can therefore avoid repeating that full-table audit.\n const validatedPrimaryKeyColumns = getDatasetPrimaryKeyColumns(input.dataset)\n const metadata: SixbCommitMetadata = {\n kind: \"datasetVersion\",\n datasetId: input.dataset.id,\n commitId,\n mode: input.mode,\n producer: input.producer ? structuredClone(input.producer) : undefined,\n inputs: input.inputs ? structuredClone(input.inputs) : undefined,\n ...(rowCount.kind === \"exact\" ? { rowCount: rowCount.value } : {}),\n ...(validatedPrimaryKeyColumns !== null\n ? { validatedPrimaryKeyColumns: [...validatedPrimaryKeyColumns] }\n : {}),\n }\n\n await input.runtime.run(\n `CALL ${quoteIdentifier(duckLakeAlias(this.options))}.set_commit_message(${quoteSqlString(\n \"Sixb\"\n )}, ${quoteSqlString(input.commitMessage)}, extra_info => ${quoteSqlString(\n JSON.stringify({ sixb: metadata })\n )})`\n )\n }\n\n private async versionForNoOpCommit(\n runtime: DuckDbQueryRuntime,\n definition: DatasetDefinition,\n allowInitialNoOp: boolean\n ): Promise<DatasetVersion | null> {\n const latestVersion = await this.snapshots.getLatestVersionForDefinition(runtime, definition)\n if (latestVersion) {\n return latestVersion\n }\n\n if (allowInitialNoOp) {\n return null\n }\n\n throw new LakeStorageError(\n `[SixbDuckLake] No DuckLake changes were committed for dataset '${definition.id}', and no previous version exists.`\n )\n }\n\n private async rollbackTransaction(runtime: DuckDbQueryRuntime): Promise<void> {\n try {\n await runtime.run(\"ROLLBACK\")\n } catch {\n // Preserve the original write failure. DuckDB may already have closed\n // the transaction if COMMIT itself failed.\n }\n }\n\n private async latestVersionForCommit(\n input: DuckLakeCommitVersionOutcomeRuntimeInput\n ): Promise<DuckLakeVersionSummary | null> {\n if (input.expectedLatestVersionId === undefined && input.mode !== \"append\") {\n return null\n }\n\n return this.snapshots.getLatestVersionSummaryForDefinition(input.runtime, input.dataset)\n }\n\n private async lastCommittedSnapshotId(runtime: DuckDbQueryRuntime): Promise<string | null> {\n // DuckLake reports the last snapshot committed by this connection.\n const [row] = await runtime.query(\n `SELECT id FROM ${quoteIdentifier(duckLakeAlias(this.options))}.last_committed_snapshot()`\n )\n if (row === undefined || row.id === null || row.id === undefined) {\n return null\n }\n\n return String(getBigIntLike(row, \"id\"))\n }\n\n private async findSnapshotIdByCommitId(\n runtime: DuckDbQueryRuntime,\n datasetId: string,\n commitId: string,\n snapshotId?: string\n ): Promise<string | null> {\n if (snapshotId !== undefined) {\n assertDuckLakeSnapshotId(snapshotId)\n }\n\n const ducklakeSnapshotChanges = duckLakeMetadataTableName(\n this.options,\n \"ducklake_snapshot_changes\"\n )\n const whereSql = snapshotId === undefined ? \"\" : `WHERE snapshot_id = ${snapshotId}`\n const orderSql = snapshotId === undefined ? \"ORDER BY snapshot_id DESC\" : \"\"\n const rows = await runtime.query(`\n SELECT snapshot_id, commit_extra_info\n FROM ${ducklakeSnapshotChanges}\n ${whereSql}\n ${orderSql}\n `)\n\n for (const row of rows) {\n const metadata = parseCommitMetadata(row.commit_extra_info)\n if (metadata?.datasetId === datasetId && metadata.commitId === commitId) {\n return String(getBigIntLike(row, \"snapshot_id\"))\n }\n }\n\n return null\n }\n\n private async findOwnSnapshotId(\n runtime: DuckDbQueryRuntime,\n datasetId: string,\n commitId: string,\n previousWriteSnapshotId: string | null,\n committedWriteSnapshotId: string | null\n ): Promise<string | null> {\n if (committedWriteSnapshotId === null || committedWriteSnapshotId === previousWriteSnapshotId) {\n return null\n }\n\n const exactMatch = await this.findSnapshotIdByCommitId(\n runtime,\n datasetId,\n commitId,\n committedWriteSnapshotId\n )\n if (exactMatch !== null) {\n return exactMatch\n }\n\n // Defensive fallback for driver/version edge cases. The expected hot path\n // above reads a single metadata row keyed by last_committed_snapshot().\n return this.findSnapshotIdByCommitId(runtime, datasetId, commitId)\n }\n\n private assertExpectedLatestVersion(input: {\n readonly datasetId: string\n readonly expectedLatestVersionId?: string | null\n readonly actualLatestVersionId: string | null\n readonly operation: \"commit\" | \"merge commit\"\n }): void {\n if (input.expectedLatestVersionId === undefined) {\n return\n }\n\n if (input.actualLatestVersionId !== input.expectedLatestVersionId) {\n throw new LakeStorageError(\n `[SixbDuckLake] Optimistic ${input.operation} failed for dataset '${input.datasetId}': expected latest version '${input.expectedLatestVersionId ?? \"none\"}', found '${input.actualLatestVersionId ?? \"none\"}'.`\n )\n }\n }\n}\n\nfunction commitRowCount(\n input: Pick<DuckLakeCommitVersionOutcomeInput, \"expectedLatestVersionId\" | \"mode\">,\n changeResult: ApplyDatasetRowsResult,\n latestVersion: DuckLakeVersionSummary | null\n): CommitRowCount {\n // Unguarded append commits can be retried by DuckLake after this transaction\n // read the previous latest version. In that case previousRowCount +\n // sourceRowCount can underreport the committed snapshot, so omit metadata\n // and let hydration count the exact committed snapshot instead.\n if (input.mode === \"append\" && input.expectedLatestVersionId === undefined) {\n return { kind: \"unknown\" }\n }\n\n if (changeResult.resultingRowCount.kind === \"exact\") {\n return changeResult.resultingRowCount\n }\n\n if (input.mode === \"append\" && latestVersion === null) {\n return { kind: \"exact\", value: changeResult.sourceRowCount }\n }\n\n return { kind: \"unknown\" }\n}\n\nfunction assertDuckLakeSnapshotId(snapshotId: string): void {\n if (!/^\\d+$/.test(snapshotId)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid DuckLake snapshot id '${snapshotId}'.`)\n }\n}\n\n// Local metadata catalogs are useful for dev/test, but they do not have the\n// same multi-connection conflict behavior as PostgreSQL. Serialize local\n// commits within this process so a losing writer cannot hydrate another\n// connection's snapshot during DuckLake conflict handling.\nconst localCatalogCommitLocks = new Map<string, Promise<void>>()\n\nasync function withCatalogCommitLock<T>(\n options: DuckLakeStorageOptions,\n run: () => Promise<T>\n): Promise<T> {\n const key = localCatalogCoordinationKey(options)\n if (key === undefined) {\n return run()\n }\n\n const previous = localCatalogCommitLocks.get(key) ?? Promise.resolve()\n const ready = previous.catch(() => {})\n let release!: () => void\n const next = new Promise<void>((resolve) => {\n release = resolve\n })\n const current = ready.then(() => next)\n localCatalogCommitLocks.set(key, current)\n\n await ready\n try {\n return await run()\n } finally {\n release()\n if (localCatalogCommitLocks.get(key) === current) {\n localCatalogCommitLocks.delete(key)\n }\n }\n}\n",
|
|
27
27
|
"import type { DatasetDefinition } from \"@sixb/core\"\nimport { getDatasetPrimaryKeyColumns, LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport { type ApplyDatasetRowsResult, inspectUniqueKeyedRelation } from \"./dataset-row-commit\"\nimport { getBigIntLike } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport { encodeDatasetTableName } from \"./names\"\nimport { datasetSchemaColumnNamesSql } from \"./schema\"\nimport { qualifiedTableName, quoteIdentifier, quoteSqlString } from \"./sql\"\n\nexport interface ApplyDatasetMergeFromRelationInput {\n readonly options: DuckLakeStorageOptions\n readonly runtime: DuckDbQueryRuntime\n readonly dataset: DatasetDefinition\n readonly stagingTableName: string\n readonly sequenceColumnName: string\n readonly kindColumnName: string\n readonly previousRowCount?: number\n readonly validatedPrimaryKeyColumns?: readonly string[]\n}\n\ninterface MergeEffectCounts {\n readonly inserts: number\n readonly updates: number\n readonly deletes: number\n}\n\nexport async function applyDatasetMergeFromRelation(\n input: ApplyDatasetMergeFromRelationInput\n): Promise<ApplyDatasetRowsResult> {\n const primaryKeyColumns = getDatasetPrimaryKeyColumns(input.dataset)\n if (primaryKeyColumns === null) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${input.dataset.id}' must define a primaryKey before it can be merged.`\n )\n }\n\n const stagingTable = quoteIdentifier(input.stagingTableName)\n const targetTable = qualifiedTableName(input.options, encodeDatasetTableName(input.dataset.id))\n const sourceRowCount = await countRows(input.runtime, stagingTable)\n const previousRowCount = await currentBaselineRowCount(input, targetTable, primaryKeyColumns)\n\n return withMaterializedFinalChanges(input, primaryKeyColumns, async (finalChanges) => {\n const effects = await countMergeEffects(input, targetTable, finalChanges, primaryKeyColumns)\n const effectiveChangeCount = effects.inserts + effects.updates + effects.deletes\n\n if (effectiveChangeCount === 0) {\n return {\n dataChangeExpected: false,\n sourceRowCount,\n resultingRowCount: { kind: \"exact\", value: previousRowCount },\n }\n }\n\n const keyMatchSql = primaryKeyMatchSql(primaryKeyColumns, \"target\", \"source\")\n const rowDifferenceSql = datasetRowDifferenceSql(input.dataset, \"target\", \"source\")\n const kindColumn = `source.${quoteIdentifier(input.kindColumnName)}`\n\n await input.runtime.run(`\n DELETE FROM ${targetTable} AS target\n USING ${finalChanges} AS source\n WHERE ${keyMatchSql}\n AND (\n ${kindColumn} = ${quoteSqlString(\"delete\")}\n OR (\n ${kindColumn} = ${quoteSqlString(\"upsert\")}\n AND (${rowDifferenceSql})\n )\n )\n `)\n\n const columnsSql = datasetSchemaColumnNamesSql(input.dataset.schema)\n const selectedColumnsSql = input.dataset.schema.columns\n .map((column) => `source.${quoteIdentifier(column.name)}`)\n .join(\", \")\n const firstSequenceColumnName = firstSequenceName(input.sequenceColumnName)\n await input.runtime.run(`\n INSERT INTO ${targetTable} (${columnsSql})\n SELECT ${selectedColumnsSql}\n FROM ${finalChanges} AS source\n WHERE ${kindColumn} = ${quoteSqlString(\"upsert\")}\n AND NOT EXISTS (\n SELECT 1\n FROM ${targetTable} AS target\n WHERE ${keyMatchSql}\n )\n ORDER BY source.${quoteIdentifier(firstSequenceColumnName)}\n `)\n\n return {\n dataChangeExpected: true,\n sourceRowCount,\n resultingRowCount: {\n kind: \"exact\",\n value: previousRowCount + effects.inserts - effects.deletes,\n },\n }\n })\n}\n\nasync function currentBaselineRowCount(\n input: ApplyDatasetMergeFromRelationInput,\n targetTable: string,\n primaryKeyColumns: readonly string[]\n): Promise<number> {\n // Sixb writes mark keyed versions only after the write path has enforced uniqueness. Older or\n // external versions carry no marker and keep the full defensive audit.\n if (sameColumns(input.validatedPrimaryKeyColumns, primaryKeyColumns)) {\n return input.previousRowCount ?? countRows(input.runtime, targetTable)\n }\n\n return inspectUniqueKeyedRelation({\n runtime: input.runtime,\n dataset: input.dataset,\n relationSql: targetTable,\n context: \"current baseline\",\n })\n}\n\nasync function withMaterializedFinalChanges<T>(\n input: ApplyDatasetMergeFromRelationInput,\n primaryKeyColumns: readonly string[],\n run: (finalChangesTable: string) => Promise<T>\n): Promise<T> {\n const table = quoteIdentifier(`${input.stagingTableName}_final`)\n await input.runtime.run(`\n CREATE TEMP TABLE ${table} AS\n ${finalChangesSelectSql(input, primaryKeyColumns)}\n `)\n\n let outcome:\n | { readonly kind: \"success\"; readonly value: T }\n | { readonly kind: \"error\"; readonly error: unknown }\n try {\n outcome = { kind: \"success\", value: await run(table) }\n } catch (error) {\n outcome = { kind: \"error\", error }\n }\n\n try {\n await input.runtime.run(`DROP TABLE IF EXISTS ${table}`)\n } catch (cleanupError) {\n if (outcome.kind === \"success\") {\n throw cleanupError\n }\n }\n\n if (outcome.kind === \"error\") {\n throw outcome.error\n }\n\n return outcome.value\n}\n\nfunction finalChangesSelectSql(\n input: ApplyDatasetMergeFromRelationInput,\n primaryKeyColumns: readonly string[]\n): string {\n const sequenceColumn = quoteIdentifier(input.sequenceColumnName)\n const keyColumnsSql = primaryKeyColumns.map((column) => quoteIdentifier(column)).join(\", \")\n const rankColumn = quoteIdentifier(rankName(input.sequenceColumnName))\n const firstSequenceColumn = quoteIdentifier(firstSequenceName(input.sequenceColumnName))\n\n return `\n SELECT * EXCLUDE (${rankColumn})\n FROM (\n SELECT\n *,\n min(${sequenceColumn}) OVER (PARTITION BY ${keyColumnsSql}) AS ${firstSequenceColumn},\n row_number() OVER (\n PARTITION BY ${keyColumnsSql}\n ORDER BY ${sequenceColumn} DESC\n ) AS ${rankColumn}\n FROM ${quoteIdentifier(input.stagingTableName)}\n ) ranked_changes\n WHERE ${rankColumn} = 1\n `\n}\n\nasync function countMergeEffects(\n input: ApplyDatasetMergeFromRelationInput,\n targetTable: string,\n finalChanges: string,\n primaryKeyColumns: readonly string[]\n): Promise<MergeEffectCounts> {\n const matchColumn = primaryKeyColumns[0]\n if (matchColumn === undefined) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${input.dataset.id}' primaryKey must contain at least one column.`\n )\n }\n\n const keyMatchSql = primaryKeyMatchSql(primaryKeyColumns, \"target\", \"source\")\n const targetMatch = `target.${quoteIdentifier(matchColumn)} IS NOT NULL`\n const kindColumn = `source.${quoteIdentifier(input.kindColumnName)}`\n const rowDifferenceSql = datasetRowDifferenceSql(input.dataset, \"target\", \"source\")\n const [row] = await input.runtime.query(`\n SELECT\n count(*) FILTER (\n WHERE ${kindColumn} = ${quoteSqlString(\"upsert\")} AND NOT (${targetMatch})\n ) AS insert_count,\n count(*) FILTER (\n WHERE ${kindColumn} = ${quoteSqlString(\"upsert\")}\n AND ${targetMatch}\n AND (${rowDifferenceSql})\n ) AS update_count,\n count(*) FILTER (\n WHERE ${kindColumn} = ${quoteSqlString(\"delete\")} AND ${targetMatch}\n ) AS delete_count\n FROM ${finalChanges} AS source\n LEFT JOIN ${targetTable} AS target ON ${keyMatchSql}\n `)\n\n return {\n inserts: row === undefined ? 0 : Number(getBigIntLike(row, \"insert_count\")),\n updates: row === undefined ? 0 : Number(getBigIntLike(row, \"update_count\")),\n deletes: row === undefined ? 0 : Number(getBigIntLike(row, \"delete_count\")),\n }\n}\n\nfunction primaryKeyMatchSql(\n primaryKeyColumns: readonly string[],\n leftAlias: string,\n rightAlias: string\n): string {\n return primaryKeyColumns\n .map(\n (column) =>\n `${leftAlias}.${quoteIdentifier(column)} = ${rightAlias}.${quoteIdentifier(column)}`\n )\n .join(\" AND \")\n}\n\nfunction datasetRowDifferenceSql(\n dataset: DatasetDefinition,\n leftAlias: string,\n rightAlias: string\n): string {\n return dataset.schema.columns\n .map(\n (column) =>\n `${leftAlias}.${quoteIdentifier(column.name)} IS DISTINCT FROM ${rightAlias}.${quoteIdentifier(\n column.name\n )}`\n )\n .join(\" OR \")\n}\n\nasync function countRows(runtime: DuckDbQueryRuntime, relationSql: string): Promise<number> {\n const [row] = await runtime.query(`SELECT count(*) AS row_count FROM ${relationSql}`)\n return row === undefined ? 0 : Number(getBigIntLike(row, \"row_count\"))\n}\n\nfunction rankName(sequenceColumnName: string): string {\n return `${sequenceColumnName}_rank`\n}\n\nfunction firstSequenceName(sequenceColumnName: string): string {\n return `${sequenceColumnName}_first`\n}\n\nfunction sameColumns(left: readonly string[] | undefined, right: readonly string[]): boolean {\n return (\n left !== undefined &&\n left.length === right.length &&\n left.every((value, index) => value === right[index])\n )\n}\n",
|
|
28
|
-
"import { randomUUID } from \"node:crypto\"\nimport type { DatasetRow, MergeChange } from \"@sixb/core\"\nimport type {\n BeginDatasetMergeInput,\n CommitDatasetMergeInput,\n DatasetMergeCommitResult,\n LakeMergeSession,\n} from \"@sixb/core/lake-storage\"\nimport {\n cloneDatasetMergeChange,\n getDatasetMergeChangeValidationError,\n LakeStorageError,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckDbRuntime } from \"./duckdb-runtime\"\nimport { appendDatasetRow } from \"./row-appender\"\nimport { datasetSchemaToDuckDbNullableColumnsSql } from \"./schema\"\nimport { quoteIdentifier } from \"./sql\"\n\nexport interface DuckLakeCommitMergeInput {\n readonly merge: BeginDatasetMergeInput\n readonly baseVersionId: string | null\n readonly commit?: CommitDatasetMergeInput\n readonly stagingTableName: string\n readonly sequenceColumnName: string\n readonly kindColumnName: string\n readonly changesWritten: number\n}\n\ntype DuckLakeCommitMerge = (input: DuckLakeCommitMergeInput) => Promise<DatasetMergeCommitResult>\n\nconst MERGE_CHANGE_BATCH_SIZE = 1000\n\ninterface StagedMergeChange {\n readonly sequence: bigint\n readonly change: MergeChange<DatasetRow, DatasetRow>\n}\n\ninterface CreateDuckLakeMergeSessionInput {\n readonly commitMerge: DuckLakeCommitMerge\n readonly runtime: DuckDbRuntime\n readonly merge: BeginDatasetMergeInput\n readonly baseVersionId: string | null\n}\n\nexport async function createDuckLakeMergeSession(\n input: CreateDuckLakeMergeSessionInput\n): Promise<LakeMergeSession> {\n const suffix = randomUUID().replaceAll(\"-\", \"\")\n const stagingTableName = `sixb_merge_${suffix}`\n const sequenceColumnName = `sixb_merge_sequence_${suffix}`\n const kindColumnName = `sixb_merge_kind_${suffix}`\n\n await input.runtime.run(`\n CREATE TEMP TABLE ${quoteIdentifier(stagingTableName)} (\n ${quoteIdentifier(sequenceColumnName)} UBIGINT NOT NULL,\n ${quoteIdentifier(kindColumnName)} VARCHAR NOT NULL,\n ${datasetSchemaToDuckDbNullableColumnsSql(input.merge.dataset.schema)}\n )\n `)\n\n return new DuckLakeMergeSession(\n input.commitMerge,\n input.runtime,\n input.merge,\n input.baseVersionId,\n stagingTableName,\n sequenceColumnName,\n kindColumnName\n )\n}\n\nclass DuckLakeMergeSession implements LakeMergeSession {\n private closed = false\n private cleanedUp = false\n private nextSequence = 0n\n private changesWritten = 0\n\n constructor(\n private readonly commitMerge: DuckLakeCommitMerge,\n private readonly runtime: DuckDbRuntime,\n private readonly input: BeginDatasetMergeInput,\n private readonly baseVersionId: string | null,\n private readonly stagingTableName: string,\n private readonly sequenceColumnName: string,\n private readonly kindColumnName: string\n ) {}\n\n async writeChanges(\n changes:\n | Iterable<MergeChange<DatasetRow, DatasetRow>>\n | AsyncIterable<MergeChange<DatasetRow, DatasetRow>>\n ): Promise<void> {\n this.assertOpen()\n\n let batch: StagedMergeChange[] = []\n for await (const change of changes) {\n const validationError = getDatasetMergeChangeValidationError(change, this.input.dataset)\n if (validationError) {\n throw new LakeStorageError(`[SixbDuckLake] ${validationError}`)\n }\n\n batch.push({\n sequence: this.nextSequence,\n change: cloneDatasetMergeChange(change),\n })\n this.nextSequence += 1n\n\n if (batch.length >= MERGE_CHANGE_BATCH_SIZE) {\n await this.appendBatchToStagingTable(batch)\n batch = []\n }\n }\n\n if (batch.length > 0) {\n await this.appendBatchToStagingTable(batch)\n }\n }\n\n private async appendBatchToStagingTable(batch: readonly StagedMergeChange[]): Promise<void> {\n await this.runtime.withAppender(this.stagingTableName, (appender) => {\n for (const staged of batch) {\n appender.appendBigInt(staged.sequence)\n appender.appendVarchar(staged.change.kind)\n appendDatasetRow(\n appender,\n this.input.dataset.schema,\n staged.change.kind === \"upsert\" ? staged.change.row : staged.change.key\n )\n }\n })\n this.changesWritten += batch.length\n }\n\n async commit(input?: CommitDatasetMergeInput): Promise<DatasetMergeCommitResult> {\n this.assertOpen()\n this.closed = true\n\n let committed = false\n try {\n const result = await this.commitMerge({\n merge: this.input,\n baseVersionId: this.baseVersionId,\n commit: input,\n stagingTableName: this.stagingTableName,\n sequenceColumnName: this.sequenceColumnName,\n kindColumnName: this.kindColumnName,\n changesWritten: this.changesWritten,\n })\n committed = true\n await this.cleanup()\n return result\n } catch (error) {\n if (!committed) {\n await this.cleanup()\n }\n throw error\n }\n }\n\n async abort(): Promise<void> {\n if (this.closed) {\n return\n }\n\n this.closed = true\n await this.cleanup()\n }\n\n private assertOpen(): void {\n if (this.closed) {\n throw new LakeStorageError(\"[SixbDuckLake] Merge session is already closed.\")\n }\n }\n\n private async cleanup(): Promise<void> {\n if (this.cleanedUp) {\n return\n }\n\n this.cleanedUp = true\n try {\n await this.runtime.run(`DROP TABLE IF EXISTS ${quoteIdentifier(this.stagingTableName)}`)\n } catch {\n // Preserve the commit/abort outcome. Temp tables disappear when the storage runtime closes.\n }\n }\n}\n",
|
|
28
|
+
"import { randomUUID } from \"node:crypto\"\nimport type { DatasetRow, MergeChange } from \"@sixb/core\"\nimport type {\n BeginDatasetMergeInput,\n CommitDatasetMergeInput,\n DatasetMergeCommitResult,\n LakeMergeSession,\n} from \"@sixb/core/lake-storage\"\nimport {\n cloneDatasetMergeChange,\n getDatasetMergeChangeValidationError,\n LakeStorageError,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckDbRuntime } from \"./duckdb-runtime\"\nimport { appendDatasetRow } from \"./row-appender\"\nimport { datasetSchemaToDuckDbNullableColumnsSql } from \"./schema\"\nimport { quoteIdentifier } from \"./sql\"\n\nexport interface DuckLakeCommitMergeInput {\n readonly merge: BeginDatasetMergeInput\n readonly baseVersionId: string | null\n readonly commit?: CommitDatasetMergeInput\n readonly stagingTableName: string\n readonly sequenceColumnName: string\n readonly kindColumnName: string\n readonly changesWritten: number\n}\n\ntype DuckLakeCommitMerge = (input: DuckLakeCommitMergeInput) => Promise<DatasetMergeCommitResult>\n\nconst MERGE_CHANGE_BATCH_SIZE = 1000\n\ninterface StagedMergeChange {\n readonly sequence: bigint\n readonly change: MergeChange<DatasetRow, DatasetRow>\n}\n\ninterface CreateDuckLakeMergeSessionInput {\n readonly commitMerge: DuckLakeCommitMerge\n readonly runtime: DuckDbRuntime\n readonly merge: BeginDatasetMergeInput\n readonly baseVersionId: string | null\n}\n\nexport async function createDuckLakeMergeSession(\n input: CreateDuckLakeMergeSessionInput\n): Promise<LakeMergeSession> {\n const suffix = randomUUID().replaceAll(\"-\", \"\")\n const stagingTableName = `sixb_merge_${suffix}`\n const sequenceColumnName = `sixb_merge_sequence_${suffix}`\n const kindColumnName = `sixb_merge_kind_${suffix}`\n\n await input.runtime.run(`\n CREATE TEMP TABLE ${quoteIdentifier(stagingTableName)} (\n ${quoteIdentifier(sequenceColumnName)} UBIGINT NOT NULL,\n ${quoteIdentifier(kindColumnName)} VARCHAR NOT NULL,\n ${datasetSchemaToDuckDbNullableColumnsSql(input.merge.dataset.schema)}\n )\n `)\n\n return new DuckLakeMergeSession(\n input.commitMerge,\n input.runtime,\n input.merge,\n input.baseVersionId,\n stagingTableName,\n sequenceColumnName,\n kindColumnName\n )\n}\n\nclass DuckLakeMergeSession implements LakeMergeSession {\n private closed = false\n private cleanedUp = false\n private nextSequence = 0n\n private changesWritten = 0\n\n constructor(\n private readonly commitMerge: DuckLakeCommitMerge,\n private readonly runtime: DuckDbRuntime,\n private readonly input: BeginDatasetMergeInput,\n private readonly baseVersionId: string | null,\n private readonly stagingTableName: string,\n private readonly sequenceColumnName: string,\n private readonly kindColumnName: string\n ) {}\n\n async writeChanges(\n changes:\n | Iterable<MergeChange<DatasetRow, DatasetRow>>\n | AsyncIterable<MergeChange<DatasetRow, DatasetRow>>\n ): Promise<void> {\n this.assertOpen()\n\n let batch: StagedMergeChange[] = []\n for await (const change of changes) {\n const validationError = getDatasetMergeChangeValidationError(change, this.input.dataset)\n if (validationError) {\n throw new LakeStorageError(`[SixbDuckLake] ${validationError}`)\n }\n\n batch.push({\n sequence: this.nextSequence,\n change: cloneDatasetMergeChange(change),\n })\n this.nextSequence += 1n\n\n if (batch.length >= MERGE_CHANGE_BATCH_SIZE) {\n await this.appendBatchToStagingTable(batch)\n batch = []\n await Bun.sleep(0)\n }\n }\n\n if (batch.length > 0) {\n await this.appendBatchToStagingTable(batch)\n }\n }\n\n private async appendBatchToStagingTable(batch: readonly StagedMergeChange[]): Promise<void> {\n await this.runtime.withAppender(this.stagingTableName, (appender) => {\n for (const staged of batch) {\n appender.appendBigInt(staged.sequence)\n appender.appendVarchar(staged.change.kind)\n appendDatasetRow(\n appender,\n this.input.dataset.schema,\n staged.change.kind === \"upsert\" ? staged.change.row : staged.change.key\n )\n }\n })\n this.changesWritten += batch.length\n }\n\n async commit(input?: CommitDatasetMergeInput): Promise<DatasetMergeCommitResult> {\n this.assertOpen()\n this.closed = true\n\n let committed = false\n try {\n const result = await this.commitMerge({\n merge: this.input,\n baseVersionId: this.baseVersionId,\n commit: input,\n stagingTableName: this.stagingTableName,\n sequenceColumnName: this.sequenceColumnName,\n kindColumnName: this.kindColumnName,\n changesWritten: this.changesWritten,\n })\n committed = true\n await this.cleanup()\n return result\n } catch (error) {\n if (!committed) {\n await this.cleanup()\n }\n throw error\n }\n }\n\n async abort(): Promise<void> {\n if (this.closed) {\n return\n }\n\n this.closed = true\n await this.cleanup()\n }\n\n private assertOpen(): void {\n if (this.closed) {\n throw new LakeStorageError(\"[SixbDuckLake] Merge session is already closed.\")\n }\n }\n\n private async cleanup(): Promise<void> {\n if (this.cleanedUp) {\n return\n }\n\n this.cleanedUp = true\n try {\n await this.runtime.run(`DROP TABLE IF EXISTS ${quoteIdentifier(this.stagingTableName)}`)\n } catch {\n // Preserve the commit/abort outcome. Temp tables disappear when the storage runtime closes.\n }\n }\n}\n",
|
|
29
29
|
"import type { DuckDBValue } from \"@duckdb/node-api\"\nimport type { DatasetColumnDefinition, DatasetRow, DatasetSchema, FileRef } from \"@sixb/core\"\nimport { normalizeDuckDbDecimalValue } from \"./duckdb-decimal\"\nimport type { DuckDbAppender } from \"./duckdb-runtime\"\n\n/**\n * Append one validated dataset row into the staging table's DuckDB appender.\n */\nexport function appendDatasetRow(\n appender: DuckDbAppender,\n schema: DatasetSchema,\n row: DatasetRow\n): void {\n for (const column of schema.columns) {\n appendColumnValue(appender, column, row[column.name] ?? null)\n }\n\n appender.endRow()\n}\n\nfunction appendColumnValue(\n appender: DuckDbAppender,\n column: DatasetColumnDefinition,\n value: unknown\n): void {\n if (value === null || value === undefined) {\n appender.appendNull()\n return\n }\n\n switch (column.type) {\n case \"string\":\n appender.appendVarchar(value as string)\n return\n case \"boolean\":\n appender.appendBoolean(value as boolean)\n return\n case \"int64\":\n appender.appendBigInt(typeof value === \"bigint\" ? value : BigInt(value as string | number))\n return\n case \"float64\":\n appender.appendDouble(value as number)\n return\n case \"decimal\":\n appender.appendVarchar(normalizeDuckDbDecimalValue(value, column.name))\n return\n case \"date\":\n appender.appendVarchar(\n value instanceof Date ? value.toISOString().slice(0, 10) : String(value)\n )\n return\n case \"timestamp\":\n appender.appendVarchar(value instanceof Date ? value.toISOString() : String(value))\n return\n case \"json\":\n appender.appendVarchar(JSON.stringify(value))\n return\n case \"fileRef\":\n appender.appendStruct(fileRefToDuckDbStruct(value as FileRef))\n return\n }\n}\n\nfunction fileRefToDuckDbStruct(fileRef: FileRef): Readonly<Record<string, DuckDBValue>> {\n return {\n blobId: fileRef.blobId,\n digest: fileRef.digest,\n sizeBytes: BigInt(fileRef.sizeBytes),\n fileName: fileRef.fileName ?? null,\n mediaType: fileRef.mediaType ?? null,\n logicalPath: fileRef.logicalPath ?? null,\n }\n}\n",
|
|
30
|
-
"import { randomUUID } from \"node:crypto\"\nimport type { DatasetRow } from \"@sixb/core\"\nimport { getDatasetRowValidationError } from \"@sixb/core\"\nimport type {\n BeginDatasetWriteInput,\n CommitDatasetWriteInput,\n DatasetWriteCommitResult,\n LakeWriteSession,\n} from \"@sixb/core/lake-storage\"\nimport {\n encodeDatasetPrimaryKey,\n getDatasetPrimaryKeyColumns,\n LakeStorageError,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckDbRuntime } from \"./duckdb-runtime\"\nimport { appendDatasetRow } from \"./row-appender\"\nimport { datasetSchemaToDuckDbColumnsSql } from \"./schema\"\nimport { quoteIdentifier } from \"./sql\"\n\nexport interface DuckLakeCommitWriteInput {\n readonly write: BeginDatasetWriteInput\n readonly commit?: CommitDatasetWriteInput\n readonly stagingTableName: string\n readonly rowsWritten: number\n}\n\ntype DuckLakeCommitWrite = (options: DuckLakeCommitWriteInput) => Promise<DatasetWriteCommitResult>\n\n// Rows are staged in bounded in-memory batches so a slow source iterable never\n// holds the DuckDB runtime queue. Only the per-batch appender flush takes a\n// queue slot. 1000 keeps memory bounded while amortizing appender open/close.\nconst WRITE_ROW_BATCH_SIZE = 1000\n\ninterface CreateDuckLakeWriteSessionInput {\n readonly commitWrite: DuckLakeCommitWrite\n readonly runtime: DuckDbRuntime\n readonly write: BeginDatasetWriteInput\n}\n\nexport async function createDuckLakeWriteSession(\n input: CreateDuckLakeWriteSessionInput\n): Promise<LakeWriteSession> {\n const stagingTableName = `sixb_write_${randomUUID().replaceAll(\"-\", \"\")}`\n\n // The temp table lives only on this runtime connection. That keeps\n // partially written rows invisible until DuckLakeStorage commits them into\n // the durable dataset table.\n await input.runtime.run(\n `CREATE TEMP TABLE ${quoteIdentifier(stagingTableName)} (${datasetSchemaToDuckDbColumnsSql(\n input.write.dataset.schema\n )})`\n )\n\n return new DuckLakeWriteSession(input.commitWrite, input.runtime, input.write, stagingTableName)\n}\n\n/**\n * Package-private LakeWriteSession implementation for DuckLakeStorage.\n *\n * The session owns row validation, the connection-scoped staging table, and\n * cleanup. DuckLakeStorage owns the durable transaction because it has the\n * dataset/version context needed to build the returned DatasetVersion.\n */\nclass DuckLakeWriteSession implements LakeWriteSession {\n private closed = false\n private cleanedUp = false\n private rowsWritten = 0\n private readonly stagedPrimaryKeys = new Set<string>()\n\n constructor(\n private readonly commitWrite: DuckLakeCommitWrite,\n private readonly runtime: DuckDbRuntime,\n private readonly input: BeginDatasetWriteInput,\n private readonly stagingTableName: string\n ) {}\n\n async writeRows(rows: Iterable<DatasetRow> | AsyncIterable<DatasetRow>): Promise<void> {\n this.assertOpen()\n\n // Drain and validate the source OUTSIDE the DuckDB queue so slow external\n // reads (pagination, APIs, SFTP, retries) never hold a runtime slot. Only\n // appendBatchToStagingTable below briefly enters the queue.\n let batch: DatasetRow[] = []\n let batchPrimaryKeys = new Set<string>()\n for await (const row of rows) {\n const validationError = getDatasetRowValidationError(row, this.input.dataset)\n if (validationError) {\n throw new LakeStorageError(`[SixbDuckLake] ${validationError}`)\n }\n\n // Snapshot the validated row. Callers may reuse and mutate one row object\n // between yields, so the batch must not retain a live reference.\n const clonedRow = structuredClone(row)\n if (getDatasetPrimaryKeyColumns(this.input.dataset) !== null) {\n const primaryKey = encodeDatasetPrimaryKey(this.input.dataset, clonedRow)\n if (this.stagedPrimaryKeys.has(primaryKey) || batchPrimaryKeys.has(primaryKey)) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${this.input.dataset.id}' ${this.input.mode ?? \"snapshot\"} source contains duplicate primary key.`\n )\n }\n batchPrimaryKeys.add(primaryKey)\n }\n batch.push(clonedRow)\n\n if (batch.length >= WRITE_ROW_BATCH_SIZE) {\n await this.appendBatchToStagingTable(batch, batchPrimaryKeys)\n batch = []\n batchPrimaryKeys = new Set()\n }\n }\n\n if (batch.length > 0) {\n await this.appendBatchToStagingTable(batch, batchPrimaryKeys)\n }\n }\n\n private async appendBatchToStagingTable(\n batch: readonly DatasetRow[],\n primaryKeys: ReadonlySet<string>\n ): Promise<void> {\n // Synchronous callback: no awaits inside the queue slot. The appender\n // buffers and flushes the whole batch into the staging temp table on close.\n await this.runtime.withAppender(this.stagingTableName, (appender) => {\n for (const row of batch) {\n appendDatasetRow(appender, this.input.dataset.schema, row)\n }\n })\n // Count only rows actually appended -- commit asserts rowsWritten ===\n // sourceRowCount in the write coordinator.\n this.rowsWritten += batch.length\n for (const primaryKey of primaryKeys) {\n this.stagedPrimaryKeys.add(primaryKey)\n }\n }\n\n async commit(input?: CommitDatasetWriteInput): Promise<DatasetWriteCommitResult> {\n this.assertOpen()\n this.closed = true\n\n let committed = false\n try {\n const result = await this.commitWrite({\n write: this.input,\n commit: input,\n rowsWritten: this.rowsWritten,\n stagingTableName: this.stagingTableName,\n })\n committed = true\n // Even successful commits no longer need the staging table once rows\n // have been inserted into the durable DuckLake table.\n await this.cleanup()\n return result\n } catch (error) {\n if (!committed) {\n await this.cleanup()\n }\n throw error\n }\n }\n\n async abort(): Promise<void> {\n if (this.closed) {\n return\n }\n\n this.closed = true\n await this.cleanup()\n }\n\n private assertOpen(): void {\n if (this.closed) {\n throw new LakeStorageError(\"[SixbDuckLake] Write session is already closed.\")\n }\n }\n\n private async cleanup(): Promise<void> {\n if (this.cleanedUp) {\n return\n }\n\n this.cleanedUp = true\n await this.dropStagingTable()\n }\n\n private async dropStagingTable(): Promise<void> {\n try {\n await this.runtime.run(`DROP TABLE IF EXISTS ${quoteIdentifier(this.stagingTableName)}`)\n } catch {\n // Preserve the commit/abort failure. Temp tables are connection-scoped\n // and will disappear when the storage runtime closes.\n }\n }\n}\n",
|
|
30
|
+
"import { randomUUID } from \"node:crypto\"\nimport type { DatasetRow } from \"@sixb/core\"\nimport { getDatasetRowValidationError } from \"@sixb/core\"\nimport type {\n BeginDatasetWriteInput,\n CommitDatasetWriteInput,\n DatasetWriteCommitResult,\n LakeWriteSession,\n} from \"@sixb/core/lake-storage\"\nimport {\n encodeDatasetPrimaryKey,\n getDatasetPrimaryKeyColumns,\n LakeStorageError,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckDbRuntime } from \"./duckdb-runtime\"\nimport { appendDatasetRow } from \"./row-appender\"\nimport { datasetSchemaToDuckDbColumnsSql } from \"./schema\"\nimport { quoteIdentifier } from \"./sql\"\n\nexport interface DuckLakeCommitWriteInput {\n readonly write: BeginDatasetWriteInput\n readonly commit?: CommitDatasetWriteInput\n readonly stagingTableName: string\n readonly rowsWritten: number\n}\n\ntype DuckLakeCommitWrite = (options: DuckLakeCommitWriteInput) => Promise<DatasetWriteCommitResult>\n\n// Rows are staged in bounded in-memory batches so a slow source iterable never\n// holds the DuckDB runtime queue. Only the per-batch appender flush takes a\n// queue slot. 1000 keeps memory bounded while amortizing appender open/close.\nconst WRITE_ROW_BATCH_SIZE = 1000\n\ninterface CreateDuckLakeWriteSessionInput {\n readonly commitWrite: DuckLakeCommitWrite\n readonly runtime: DuckDbRuntime\n readonly write: BeginDatasetWriteInput\n}\n\nexport async function createDuckLakeWriteSession(\n input: CreateDuckLakeWriteSessionInput\n): Promise<LakeWriteSession> {\n const stagingTableName = `sixb_write_${randomUUID().replaceAll(\"-\", \"\")}`\n\n // The temp table lives only on this runtime connection. That keeps\n // partially written rows invisible until DuckLakeStorage commits them into\n // the durable dataset table.\n await input.runtime.run(\n `CREATE TEMP TABLE ${quoteIdentifier(stagingTableName)} (${datasetSchemaToDuckDbColumnsSql(\n input.write.dataset.schema\n )})`\n )\n\n return new DuckLakeWriteSession(input.commitWrite, input.runtime, input.write, stagingTableName)\n}\n\n/**\n * Package-private LakeWriteSession implementation for DuckLakeStorage.\n *\n * The session owns row validation, the connection-scoped staging table, and\n * cleanup. DuckLakeStorage owns the durable transaction because it has the\n * dataset/version context needed to build the returned DatasetVersion.\n */\nclass DuckLakeWriteSession implements LakeWriteSession {\n private closed = false\n private cleanedUp = false\n private rowsWritten = 0\n private readonly stagedPrimaryKeys = new Set<string>()\n\n constructor(\n private readonly commitWrite: DuckLakeCommitWrite,\n private readonly runtime: DuckDbRuntime,\n private readonly input: BeginDatasetWriteInput,\n private readonly stagingTableName: string\n ) {}\n\n async writeRows(rows: Iterable<DatasetRow> | AsyncIterable<DatasetRow>): Promise<void> {\n this.assertOpen()\n\n // Drain and validate the source OUTSIDE the DuckDB queue so slow external\n // reads (pagination, APIs, SFTP, retries) never hold a runtime slot. Only\n // appendBatchToStagingTable below briefly enters the queue.\n let batch: DatasetRow[] = []\n let batchPrimaryKeys = new Set<string>()\n for await (const row of rows) {\n const validationError = getDatasetRowValidationError(row, this.input.dataset)\n if (validationError) {\n throw new LakeStorageError(`[SixbDuckLake] ${validationError}`)\n }\n\n // Snapshot the validated row. Callers may reuse and mutate one row object\n // between yields, so the batch must not retain a live reference.\n const clonedRow = structuredClone(row)\n if (getDatasetPrimaryKeyColumns(this.input.dataset) !== null) {\n const primaryKey = encodeDatasetPrimaryKey(this.input.dataset, clonedRow)\n if (this.stagedPrimaryKeys.has(primaryKey) || batchPrimaryKeys.has(primaryKey)) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${this.input.dataset.id}' ${this.input.mode ?? \"snapshot\"} source contains duplicate primary key.`\n )\n }\n batchPrimaryKeys.add(primaryKey)\n }\n batch.push(clonedRow)\n\n if (batch.length >= WRITE_ROW_BATCH_SIZE) {\n await this.appendBatchToStagingTable(batch, batchPrimaryKeys)\n batch = []\n batchPrimaryKeys = new Set()\n // Native appender promises can settle through microtasks quickly enough to starve timers\n // across a large in-memory iterable. Yield once per bounded batch so API traffic remains\n // responsive without adding per-row scheduling overhead.\n await Bun.sleep(0)\n }\n }\n\n if (batch.length > 0) {\n await this.appendBatchToStagingTable(batch, batchPrimaryKeys)\n }\n }\n\n private async appendBatchToStagingTable(\n batch: readonly DatasetRow[],\n primaryKeys: ReadonlySet<string>\n ): Promise<void> {\n // Synchronous callback: no awaits inside the queue slot. The appender\n // buffers and flushes the whole batch into the staging temp table on close.\n await this.runtime.withAppender(this.stagingTableName, (appender) => {\n for (const row of batch) {\n appendDatasetRow(appender, this.input.dataset.schema, row)\n }\n })\n // Count only rows actually appended -- commit asserts rowsWritten ===\n // sourceRowCount in the write coordinator.\n this.rowsWritten += batch.length\n for (const primaryKey of primaryKeys) {\n this.stagedPrimaryKeys.add(primaryKey)\n }\n }\n\n async commit(input?: CommitDatasetWriteInput): Promise<DatasetWriteCommitResult> {\n this.assertOpen()\n this.closed = true\n\n let committed = false\n try {\n const result = await this.commitWrite({\n write: this.input,\n commit: input,\n rowsWritten: this.rowsWritten,\n stagingTableName: this.stagingTableName,\n })\n committed = true\n // Even successful commits no longer need the staging table once rows\n // have been inserted into the durable DuckLake table.\n await this.cleanup()\n return result\n } catch (error) {\n if (!committed) {\n await this.cleanup()\n }\n throw error\n }\n }\n\n async abort(): Promise<void> {\n if (this.closed) {\n return\n }\n\n this.closed = true\n await this.cleanup()\n }\n\n private assertOpen(): void {\n if (this.closed) {\n throw new LakeStorageError(\"[SixbDuckLake] Write session is already closed.\")\n }\n }\n\n private async cleanup(): Promise<void> {\n if (this.cleanedUp) {\n return\n }\n\n this.cleanedUp = true\n await this.dropStagingTable()\n }\n\n private async dropStagingTable(): Promise<void> {\n try {\n await this.runtime.run(`DROP TABLE IF EXISTS ${quoteIdentifier(this.stagingTableName)}`)\n } catch {\n // Preserve the commit/abort failure. Temp tables are connection-scoped\n // and will disappear when the storage runtime closes.\n }\n }\n}\n",
|
|
31
31
|
"import type { DatasetDefinition, DatasetRow, LakeStorageWithSql } from \"@sixb/core\"\nimport type {\n BeginDatasetMergeInput,\n BeginDatasetWriteInput,\n DatasetCatalogState,\n DatasetVersion,\n LakeMergeSession,\n LakeWriteSession,\n ReadDatasetRowsInput,\n} from \"@sixb/core/lake-storage\"\nimport { DuckLakeConnectionManager } from \"./internal/ducklake-connection-manager\"\nimport { DuckLakeDatasetCatalog } from \"./internal/ducklake-dataset-catalog\"\nimport { DuckLakeMaintenance } from \"./internal/ducklake-maintenance\"\nimport { DuckLakeRowReader } from \"./internal/ducklake-row-reader\"\nimport { DuckLakeSnapshotReader } from \"./internal/ducklake-snapshot-reader\"\nimport { DuckLakeSqlExecutor } from \"./internal/ducklake-sql-executor\"\nimport { DuckLakeWriteCoordinator } from \"./internal/ducklake-write-coordinator\"\nimport type {\n DuckLakeMaintenanceOptions,\n DuckLakeMaintenanceReport,\n DuckLakeStorageOptions,\n} from \"./types\"\n\n/**\n * DuckLake-backed implementation of Sixb's LakeStorage API.\n *\n * The public surface stays aligned with core LakeStorage while DuckLake owns\n * physical tables, schemas, snapshots, and transactions behind the provider.\n * Sixb-specific metadata is only used to reconstruct DatasetVersion shape.\n */\nexport class DuckLakeStorage implements LakeStorageWithSql<\"duckdb\"> {\n readonly standard = { id: \"ducklake\", version: \"1.0\" } as const\n readonly sql: DuckLakeSqlExecutor\n\n private readonly connections: DuckLakeConnectionManager\n private readonly datasets: DuckLakeDatasetCatalog\n private readonly maintenance: DuckLakeMaintenance\n private readonly rows: DuckLakeRowReader\n private readonly snapshotReader: DuckLakeSnapshotReader\n private readonly writes: DuckLakeWriteCoordinator\n\n constructor(options: DuckLakeStorageOptions) {\n const normalizedOptions: DuckLakeStorageOptions = {\n ...options,\n alias: options.alias ?? \"sixb_lake\",\n createIfNotExists: options.createIfNotExists ?? true,\n readOnly: options.readOnly ?? false,\n duckdb: {\n ...options.duckdb,\n path: options.duckdb?.path ?? \":memory:\",\n },\n }\n this.connections = new DuckLakeConnectionManager(normalizedOptions)\n this.datasets = new DuckLakeDatasetCatalog(normalizedOptions, this.connections)\n this.maintenance = new DuckLakeMaintenance(normalizedOptions, this.connections)\n this.snapshotReader = new DuckLakeSnapshotReader(\n normalizedOptions,\n this.connections,\n this.datasets\n )\n this.rows = new DuckLakeRowReader(normalizedOptions, this.connections, this.snapshotReader)\n this.writes = new DuckLakeWriteCoordinator(\n normalizedOptions,\n this.connections,\n this.datasets,\n this.snapshotReader\n )\n this.sql = new DuckLakeSqlExecutor(\n normalizedOptions,\n this.connections,\n this.datasets,\n this.snapshotReader,\n this.writes\n )\n }\n\n async createDataset(definition: DatasetDefinition): Promise<DatasetDefinition> {\n return this.datasets.createDataset(definition)\n }\n\n async assertDatasetDefinitionsCompatible(\n definitions: readonly DatasetDefinition[]\n ): Promise<void> {\n await this.datasets.assertDatasetDefinitionsCompatible(definitions)\n }\n\n async getDataset(datasetId: string): Promise<DatasetDefinition | null> {\n return this.datasets.getDataset(datasetId)\n }\n\n async listDatasets(): Promise<readonly DatasetDefinition[]> {\n return this.datasets.listDatasets()\n }\n\n async listDatasetCatalogState(\n datasetIds: readonly string[]\n ): Promise<readonly DatasetCatalogState[]> {\n return this.snapshotReader.listDatasetCatalogState(datasetIds)\n }\n\n async listVersions(datasetId: string, limit?: number): Promise<readonly DatasetVersion[]> {\n return this.snapshotReader.listVersions(datasetId, limit)\n }\n\n async beginWrite(input: BeginDatasetWriteInput): Promise<LakeWriteSession> {\n return this.writes.beginWrite(input)\n }\n\n async beginMerge(input: BeginDatasetMergeInput): Promise<LakeMergeSession> {\n return this.writes.beginMerge(input)\n }\n\n async getLatestVersion(datasetId: string): Promise<DatasetVersion | null> {\n return this.snapshotReader.getLatestVersion(datasetId)\n }\n\n async getVersion(datasetId: string, versionId: string): Promise<DatasetVersion | null> {\n return this.snapshotReader.getVersion(datasetId, versionId)\n }\n\n readRows(input: ReadDatasetRowsInput): AsyncIterable<DatasetRow> {\n return this.rows.readRows(input)\n }\n\n async runMaintenance(options?: DuckLakeMaintenanceOptions): Promise<DuckLakeMaintenanceReport> {\n return this.maintenance.runMaintenance(options)\n }\n\n /**\n * `close()` is provider-specific and intentionally not part of the core\n * LakeStorage interface.\n */\n async close(): Promise<void> {\n await this.connections.close()\n }\n}\n"
|
|
32
32
|
],
|
|
33
|
-
"mappings": "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",
|
|
34
|
-
"debugId": "
|
|
33
|
+
"mappings": "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",
|
|
34
|
+
"debugId": "36FC46708546A1DD64756E2164756E21",
|
|
35
35
|
"names": []
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ducklake-row-reader.d.ts","sourceRoot":"","sources":["../../src/internal/ducklake-row-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,UAAU,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAEnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"ducklake-row-reader.d.ts","sourceRoot":"","sources":["../../src/internal/ducklake-row-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,UAAU,EAAE,MAAM,YAAY,CAAA;AACrE,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAEnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAE9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAYxE;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,yBAAyB,EACtC,SAAS,EAAE,sBAAsB;IAG7C,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,aAAa,CAAC,UAAU,CAAC;YAoExD,aAAa;YAad,cAAc;IAuB5B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,uBAAuB;CAKhC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sixb/ducklake",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "DuckDB/DuckLake lake storage provider for Sixb",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sixb",
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"@duckdb/node-api": "^1.5.2-r.1"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"@sixb/core": "^0.1.
|
|
47
|
+
"@sixb/core": "^0.1.2"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@sixb/core": "0.1.
|
|
50
|
+
"@sixb/core": "0.1.2",
|
|
51
51
|
"@types/bun": "latest",
|
|
52
52
|
"typescript": "^5.7.0"
|
|
53
53
|
},
|
|
@@ -2,6 +2,7 @@ import type { DatasetColumnDefinition, DatasetRow } from "@sixb/core"
|
|
|
2
2
|
import type { DatasetVersion, ReadDatasetRowsInput } from "@sixb/core/lake-storage"
|
|
3
3
|
import { LakeStorageError } from "@sixb/core/lake-storage"
|
|
4
4
|
import type { DuckLakeStorageOptions } from "../types"
|
|
5
|
+
import { getBigIntLike } from "./duckdb-row"
|
|
5
6
|
import type { DuckDbQueryRuntime } from "./duckdb-runtime"
|
|
6
7
|
import type { DuckLakeConnectionManager } from "./ducklake-connection-manager"
|
|
7
8
|
import { type DatasetTableRef, resolveDatasetTableRef } from "./ducklake-dataset-table-ref"
|
|
@@ -10,6 +11,13 @@ import { normalizeReadValue } from "./schema"
|
|
|
10
11
|
import { qualifiedTableName, quoteIdentifier } from "./sql"
|
|
11
12
|
import { parseVersionId } from "./versions"
|
|
12
13
|
|
|
14
|
+
// Large reads release the provider's single DuckDB queue slot between bounded pages. Besides
|
|
15
|
+
// bounding converted-row memory, this lets a JavaScript pipeline feed one DuckLake dataset into
|
|
16
|
+
// another: the destination appender can use the runtime after each page instead of waiting forever
|
|
17
|
+
// behind its own still-open source stream.
|
|
18
|
+
const READ_PAGE_ROWS = 5_000
|
|
19
|
+
const PHYSICAL_ROW_ID_ALIAS = "__sixb_physical_row_id"
|
|
20
|
+
|
|
13
21
|
/**
|
|
14
22
|
* Reads dataset rows from DuckLake snapshots.
|
|
15
23
|
*
|
|
@@ -27,50 +35,66 @@ export class DuckLakeRowReader {
|
|
|
27
35
|
async *readRows(input: ReadDatasetRowsInput): AsyncIterable<DatasetRow> {
|
|
28
36
|
this.connections.assertOpen()
|
|
29
37
|
|
|
38
|
+
// Keep the attachment lease across pages so local catalogs do not pay DETACH/ATTACH for every
|
|
39
|
+
// page. Individual query() calls still release the DuckDB queue before rows are yielded.
|
|
30
40
|
const lease = await this.connections.acquireAttachedRuntime()
|
|
31
41
|
try {
|
|
32
42
|
const runtime = lease.runtime
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
// previews must not go through broad catalog introspection.
|
|
43
|
+
// Resolve latest exactly once so a paged read stays pinned even if another writer commits
|
|
44
|
+
// between pages. DuckLake snapshots are immutable; every page names this snapshot.
|
|
36
45
|
const tableRef = await resolveDatasetTableRef(this.options, runtime, input.datasetId)
|
|
37
46
|
if (!tableRef) {
|
|
38
47
|
throw new LakeStorageError(`[SixbDuckLake] Unknown dataset '${input.datasetId}'.`)
|
|
39
48
|
}
|
|
40
|
-
|
|
41
49
|
const version = await this.resolveVersion(runtime, tableRef, input.versionId)
|
|
42
|
-
const snapshotId = parseVersionId(version.versionId)
|
|
43
50
|
const selectedColumns = this.resolveReadColumns(
|
|
44
51
|
tableRef.datasetId,
|
|
45
52
|
version.schema,
|
|
46
53
|
input.columns
|
|
47
54
|
)
|
|
48
|
-
|
|
49
|
-
// Step 2: query DuckLake at the exact snapshot id. Version ids are just
|
|
50
|
-
// `ducklake:<snapshot_id>`, so reads can use native DuckLake time travel
|
|
51
|
-
// directly after validation.
|
|
55
|
+
const snapshotId = parseVersionId(version.versionId)
|
|
52
56
|
const columnsSql = selectedColumns.map((column) => quoteIdentifier(column.name)).join(", ")
|
|
53
57
|
const tableSql = qualifiedTableName(this.options, tableRef.tableName)
|
|
54
58
|
// A user column named `rowid` shadows DuckDB's virtual row id. In that edge case the
|
|
55
59
|
// connection-level invariant still preserves insertion order; otherwise make it explicit.
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
60
|
+
const schemaNames = new Set(version.schema.columns.map((column) => column.name.toLowerCase()))
|
|
61
|
+
const canUsePhysicalRowId =
|
|
62
|
+
!schemaNames.has("rowid") && !schemaNames.has(PHYSICAL_ROW_ID_ALIAS.toLowerCase())
|
|
63
|
+
const orderSql = canUsePhysicalRowId ? " ORDER BY rowid" : ""
|
|
64
|
+
const baseSql = `SELECT ${columnsSql} FROM ${tableSql} AT (VERSION => ${snapshotId})`
|
|
65
|
+
const requestedOffset = Math.max(0, Math.trunc(input.offset ?? 0))
|
|
66
|
+
let remaining = input.limit === undefined ? undefined : Math.max(0, Math.trunc(input.limit))
|
|
67
|
+
if (remaining === 0) return
|
|
68
|
+
|
|
69
|
+
// Materialize one bounded page and release its queue operation before yielding it. A
|
|
70
|
+
// consumer may enqueue another DuckLake operation while processing the yielded rows.
|
|
71
|
+
// Holding a native stream open here would make that operation wait behind itself.
|
|
72
|
+
let offset = requestedOffset
|
|
73
|
+
let physicalCursor: bigint | null = null
|
|
74
|
+
while (true) {
|
|
75
|
+
const pageRows =
|
|
76
|
+
remaining === undefined ? READ_PAGE_ROWS : Math.min(READ_PAGE_ROWS, remaining)
|
|
77
|
+
const pageSql = canUsePhysicalRowId
|
|
78
|
+
? `SELECT rowid AS ${quoteIdentifier(PHYSICAL_ROW_ID_ALIAS)}, ${columnsSql}
|
|
79
|
+
FROM ${tableSql} AT (VERSION => ${snapshotId})
|
|
80
|
+
${physicalCursor === null ? "" : `WHERE rowid > ${physicalCursor}`}
|
|
81
|
+
ORDER BY rowid LIMIT ${pageRows}
|
|
82
|
+
${physicalCursor === null && offset > 0 ? `OFFSET ${offset}` : ""}`
|
|
83
|
+
: `${baseSql}${orderSql} LIMIT ${pageRows} OFFSET ${offset}`
|
|
84
|
+
const rows = await runtime.query(pageSql)
|
|
85
|
+
if (rows.length === 0) return
|
|
86
|
+
|
|
87
|
+
yield* this.normalizeRows(rows, selectedColumns)
|
|
88
|
+
offset += rows.length
|
|
89
|
+
if (remaining !== undefined) {
|
|
90
|
+
remaining -= rows.length
|
|
91
|
+
if (remaining === 0) return
|
|
92
|
+
}
|
|
93
|
+
if (canUsePhysicalRowId) {
|
|
94
|
+
physicalCursor = getBigIntLike(rows[rows.length - 1]!, PHYSICAL_ROW_ID_ALIAS)
|
|
95
|
+
}
|
|
96
|
+
if (rows.length < pageRows) return
|
|
97
|
+
}
|
|
74
98
|
} finally {
|
|
75
99
|
await lease.release()
|
|
76
100
|
}
|
|
@@ -106,6 +106,10 @@ class DuckLakeWriteSession implements LakeWriteSession {
|
|
|
106
106
|
await this.appendBatchToStagingTable(batch, batchPrimaryKeys)
|
|
107
107
|
batch = []
|
|
108
108
|
batchPrimaryKeys = new Set()
|
|
109
|
+
// Native appender promises can settle through microtasks quickly enough to starve timers
|
|
110
|
+
// across a large in-memory iterable. Yield once per bounded batch so API traffic remains
|
|
111
|
+
// responsive without adding per-row scheduling overhead.
|
|
112
|
+
await Bun.sleep(0)
|
|
109
113
|
}
|
|
110
114
|
}
|
|
111
115
|
|