@sixb/ducklake 0.1.2 → 0.1.3

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 CHANGED
@@ -270,6 +270,10 @@ new rows to the existing target. Omitting a source `versionId` resolves the late
270
270
  committed version at execution time; providing a `versionId` pins that source for
271
271
  repeatable transforms.
272
272
 
273
+ DuckDB promotes `sum(BIGINT)` results to `HUGEINT`. When the matching target column is a Sixb
274
+ `int64`, the executor applies a checked conversion back to `BIGINT` before comparing or writing
275
+ rows. Values outside the signed 64-bit range fail the transform instead of being truncated.
276
+
273
277
  ## Definition Updates
274
278
 
275
279
  DuckLake supports schema evolution, and this provider exposes a small safe
package/dist/index.js CHANGED
@@ -2636,7 +2636,7 @@ class DuckLakeSqlExecutor {
2636
2636
  sources: sources.relations,
2637
2637
  sql: input.sql
2638
2638
  });
2639
- await this.assertResultSchemaMatchesTarget(runtime, target, sql);
2639
+ const checkedCasts = await this.assertResultSchemaMatchesTarget(runtime, target, sql);
2640
2640
  return this.writes.commitDatasetVersionOnExclusiveRuntime(runtime, {
2641
2641
  dataset: target,
2642
2642
  mode: input.mode,
@@ -2649,6 +2649,7 @@ class DuckLakeSqlExecutor {
2649
2649
  target,
2650
2650
  mode: input.mode,
2651
2651
  sql,
2652
+ checkedCasts,
2652
2653
  previousRowCount: context.previousRowCount
2653
2654
  })
2654
2655
  });
@@ -2708,6 +2709,7 @@ class DuckLakeSqlExecutor {
2708
2709
  const rows = await runtime.query(`DESCRIBE SELECT * FROM (${sql}) AS sixb_sql_transform_result_schema`);
2709
2710
  const actualColumns = rows.map((row) => resultColumnFromDescribeRow(row));
2710
2711
  const expectedColumns = target.schema.columns;
2712
+ const checkedCasts = [];
2711
2713
  if (actualColumns.length !== expectedColumns.length) {
2712
2714
  throwResultSchemaMismatch(target.id, `expected ${expectedColumns.length} columns, got ${actualColumns.length}`);
2713
2715
  }
@@ -2717,10 +2719,20 @@ class DuckLakeSqlExecutor {
2717
2719
  if (actual.name !== expected.name) {
2718
2720
  throwResultSchemaMismatch(target.id, `column ${index + 1} should be '${expected.name}', got '${actual.name}'`);
2719
2721
  }
2720
- if (actual.type !== expected.type) {
2721
- throwResultSchemaMismatch(target.id, `column '${expected.name}' should have type '${expected.type}', got '${actual.type}'`);
2722
+ const actualDatasetType = findDatasetColumnTypeForDuckDbSql(actual.typeSql);
2723
+ if (actualDatasetType === expected.type) {
2724
+ continue;
2725
+ }
2726
+ if (isCheckedInt64Cast(actual.typeSql, expected.type)) {
2727
+ checkedCasts.push({
2728
+ columnName: expected.name,
2729
+ targetTypeSql: datasetColumnTypeToDuckDbSql(expected.type)
2730
+ });
2731
+ continue;
2722
2732
  }
2733
+ throwResultSchemaMismatch(target.id, `column '${expected.name}' should have type '${expected.type}', got '${actualDatasetType ?? actual.typeSql}'`);
2723
2734
  }
2735
+ return checkedCasts;
2724
2736
  }
2725
2737
  async applySqlTransform(input) {
2726
2738
  const tempTableName = `sixb_sql_transform_${randomUUID3().replaceAll("-", "")}`;
@@ -2728,6 +2740,9 @@ class DuckLakeSqlExecutor {
2728
2740
  await input.runtime.run(`CREATE TEMP TABLE ${tempTable} AS SELECT * FROM (${input.sql}) AS sixb_sql_transform_result`);
2729
2741
  let result;
2730
2742
  try {
2743
+ for (const checkedCast of input.checkedCasts) {
2744
+ await input.runtime.run(`ALTER TABLE ${tempTable} ALTER COLUMN ${quoteIdentifier(checkedCast.columnName)} SET DATA TYPE ${checkedCast.targetTypeSql}`);
2745
+ }
2731
2746
  result = await applyDatasetRowsFromRelation({
2732
2747
  options: this.options,
2733
2748
  runtime: input.runtime,
@@ -2757,8 +2772,12 @@ function buildPreviewSql(sql, limit) {
2757
2772
  }
2758
2773
  function resultColumnFromDescribeRow(row) {
2759
2774
  const name = getString(row, "column_name");
2760
- const type = duckDbTypeToDatasetColumnType(getString(row, "column_type"));
2761
- return { name, type };
2775
+ const typeSql = getString(row, "column_type");
2776
+ return { name, typeSql };
2777
+ }
2778
+ function isCheckedInt64Cast(actualTypeSql, expectedType) {
2779
+ const normalizedType = actualTypeSql.trim().toUpperCase();
2780
+ return expectedType === "int64" && (normalizedType === "HUGEINT" || normalizedType === "INT128");
2762
2781
  }
2763
2782
  function normalizePreviewRow(row) {
2764
2783
  const normalized = {};
@@ -3432,6 +3451,7 @@ class DuckLakeWriteCoordinator {
3432
3451
  previousRowCount: latestVersion?.rowCount,
3433
3452
  validatedPrimaryKeyColumns: latestVersion?.validatedPrimaryKeyColumns
3434
3453
  });
3454
+ await this.ensureInitialNoOpHasSnapshot(input, changeResult, latestVersion);
3435
3455
  const commitId = randomUUID6();
3436
3456
  await this.setCommitMetadata(input, commitId, commitRowCount(input, changeResult, latestVersion));
3437
3457
  await input.runtime.run("COMMIT");
@@ -3513,6 +3533,18 @@ class DuckLakeWriteCoordinator {
3513
3533
  };
3514
3534
  await input.runtime.run(`CALL ${quoteIdentifier(duckLakeAlias(this.options))}.set_commit_message(${quoteSqlString("Sixb")}, ${quoteSqlString(input.commitMessage)}, extra_info => ${quoteSqlString(JSON.stringify({ sixb: metadata }))})`);
3515
3535
  }
3536
+ async ensureInitialNoOpHasSnapshot(input, changeResult, knownLatestVersion) {
3537
+ if (changeResult.dataChangeExpected || input.allowInitialNoOp) {
3538
+ return;
3539
+ }
3540
+ const latestVersion = knownLatestVersion ?? await this.snapshots.getLatestVersionSummaryForDefinition(input.runtime, input.dataset);
3541
+ if (latestVersion) {
3542
+ return;
3543
+ }
3544
+ const table = qualifiedTableName(this.options, encodeDatasetTableName(input.dataset.id));
3545
+ const descriptionSql = input.dataset.description === undefined ? "NULL" : quoteSqlString(input.dataset.description);
3546
+ await input.runtime.run(`COMMENT ON TABLE ${table} IS ${descriptionSql}`);
3547
+ }
3516
3548
  async versionForNoOpCommit(runtime, definition, allowInitialNoOp) {
3517
3549
  const latestVersion = await this.snapshots.getLatestVersionForDefinition(runtime, definition);
3518
3550
  if (latestVersion) {
@@ -3696,4 +3728,4 @@ export {
3696
3728
  DuckLakeStorage
3697
3729
  };
3698
3730
 
3699
- //# debugId=36FC46708546A1DD64756E2164756E21
3731
+ //# debugId=85151472B319A47E64756E2164756E21
package/dist/index.js.map CHANGED
@@ -20,17 +20,17 @@
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",
23
- "import { randomUUID } from \"node:crypto\"\nimport type { DatasetColumnDefinition, DatasetDefinition, DatasetRow } from \"@sixb/core\"\nimport {\n type DatasetVersionRef,\n type DatasetWriteCommitResult,\n type DatasetWriteMode,\n type ExecuteSqlTransformInput,\n type LakeSqlExecutor,\n LakeStorageError,\n type PreviewSqlTransformInput,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport {\n type ApplyDatasetRowsResult,\n applyDatasetRowsFromRelation,\n assertDatasetWriteMode,\n} from \"./dataset-row-commit\"\nimport { 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 { DuckLakeSnapshotReader } from \"./ducklake-snapshot-reader\"\nimport type { DuckLakeWriteCoordinator } from \"./ducklake-write-coordinator\"\nimport { duckDbTypeToDatasetColumnType } from \"./schema\"\nimport { quoteIdentifier } from \"./sql\"\nimport {\n type DuckLakeSqlTransformSourceRelation,\n renderDuckLakeSqlTransformSql,\n} from \"./sql-transform-relations\"\nimport { parseVersionId } from \"./versions\"\n\nconst DEFAULT_PREVIEW_LIMIT = 100\nconst MAX_PREVIEW_LIMIT = 1_000\n\ninterface ResolvedDuckLakeSqlTransformSources {\n readonly relations: Readonly<Record<string, DuckLakeSqlTransformSourceRelation>>\n readonly inputs: readonly DatasetVersionRef[]\n}\n\ninterface ApplySqlTransformInput {\n readonly runtime: DuckDbQueryRuntime\n readonly target: DatasetDefinition\n readonly mode: DatasetWriteMode\n readonly sql: string\n readonly previousRowCount?: number\n}\n\n/**\n * DuckDB-backed SQL transform executor for DuckLakeStorage.\n */\nexport class DuckLakeSqlExecutor implements LakeSqlExecutor<\"duckdb\"> {\n readonly dialect = \"duckdb\" as const\n readonly capabilities = {\n preview: true,\n supportsAppend: true,\n supportsSnapshot: true,\n }\n\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly datasets: DuckLakeDatasetCatalog,\n private readonly snapshots: DuckLakeSnapshotReader,\n private readonly writes: DuckLakeWriteCoordinator\n ) {}\n\n async *preview(input: PreviewSqlTransformInput<\"duckdb\">): AsyncIterable<DatasetRow> {\n this.connections.assertOpen()\n\n const rows = await this.connections.withAttachedRuntime(async (runtime) => {\n const sources = await this.resolveSources(runtime, input.sources)\n const sql = renderDuckLakeSqlTransformSql({\n options: this.options,\n sources: sources.relations,\n sql: input.sql,\n })\n return runtime.query(buildPreviewSql(sql, previewLimit(input.limit)))\n })\n\n for (const row of rows) {\n yield normalizePreviewRow(row)\n }\n }\n\n async execute(input: ExecuteSqlTransformInput<\"duckdb\">): Promise<DatasetWriteCommitResult> {\n this.connections.assertOpen()\n assertDatasetWriteMode(input.mode, \"SQL transform\")\n\n return this.writes.withCommitRuntime(async (runtime) => {\n const target = await this.resolveTargetDataset(runtime, input.target)\n const sources = await this.resolveSources(runtime, input.sources)\n const sql = renderDuckLakeSqlTransformSql({\n options: this.options,\n sources: sources.relations,\n sql: input.sql,\n })\n\n await this.assertResultSchemaMatchesTarget(runtime, target, sql)\n\n return this.writes.commitDatasetVersionOnExclusiveRuntime(runtime, {\n dataset: target,\n mode: input.mode,\n expectedLatestVersionId: input.expectedLatestVersionId,\n commitMessage: input.commitMessage ?? `execute SQL transform for dataset ${target.id}`,\n producer: input.producer,\n inputs: sources.inputs,\n applyChanges: (runtime, context) =>\n this.applySqlTransform({\n runtime,\n target,\n mode: input.mode,\n sql,\n previousRowCount: context.previousRowCount,\n }),\n })\n })\n }\n\n private async resolveSources(\n runtime: DuckDbQueryRuntime,\n sources: PreviewSqlTransformInput<\"duckdb\">[\"sources\"]\n ): Promise<ResolvedDuckLakeSqlTransformSources> {\n const relations: Record<string, DuckLakeSqlTransformSourceRelation> = Object.create(null)\n const inputs: DatasetVersionRef[] = []\n\n for (const [sourceName, source] of Object.entries(sources)) {\n const definition = await this.resolveSourceDataset(runtime, source.dataset)\n const versionRef = await this.resolveSourceVersion(runtime, definition, source.versionId)\n\n relations[sourceName] = {\n datasetId: definition.id,\n versionId: versionRef.versionId,\n }\n inputs.push({\n datasetId: definition.id,\n versionId: versionRef.versionId,\n })\n }\n\n return {\n relations: Object.freeze(relations),\n inputs: Object.freeze(inputs),\n }\n }\n\n private async resolveSourceDataset(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition\n ): Promise<DatasetDefinition> {\n const definition = await this.datasets.getDatasetOnRuntime(runtime, dataset.id)\n if (!definition) {\n throw new LakeStorageError(\n `[SixbDuckLake] Unknown SQL transform source dataset '${dataset.id}'.`\n )\n }\n\n return definition\n }\n\n private async resolveTargetDataset(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition\n ): Promise<DatasetDefinition> {\n const definition = await this.datasets.getDatasetOnRuntime(runtime, dataset.id)\n if (!definition) {\n throw new LakeStorageError(\n `[SixbDuckLake] Unknown SQL transform target dataset '${dataset.id}'.`\n )\n }\n\n this.datasets.assertSchema(definition)\n return definition\n }\n\n private async resolveSourceVersion(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition,\n versionId?: string\n ): Promise<DatasetVersionRef> {\n if (versionId !== undefined) {\n const snapshotId = parseVersionId(versionId)\n const versionRef = await this.snapshots.getVersionRefForSnapshot(runtime, dataset, snapshotId)\n if (versionRef) {\n return versionRef\n }\n\n throwNoCommittedSourceVersion(dataset.id)\n }\n\n const latestVersionRef = await this.snapshots.getLatestVersionRefForDefinition(runtime, dataset)\n if (latestVersionRef) {\n return latestVersionRef\n }\n\n throwNoCommittedSourceVersion(dataset.id)\n }\n\n private async assertResultSchemaMatchesTarget(\n runtime: DuckDbQueryRuntime,\n target: DatasetDefinition,\n sql: string\n ): Promise<void> {\n const rows = await runtime.query(\n `DESCRIBE SELECT * FROM (${sql}) AS sixb_sql_transform_result_schema`\n )\n const actualColumns = rows.map((row) => resultColumnFromDescribeRow(row))\n const expectedColumns = target.schema.columns\n\n if (actualColumns.length !== expectedColumns.length) {\n throwResultSchemaMismatch(\n target.id,\n `expected ${expectedColumns.length} columns, got ${actualColumns.length}`\n )\n }\n\n for (let index = 0; index < expectedColumns.length; index += 1) {\n const expected = expectedColumns[index]\n const actual = actualColumns[index]\n\n if (actual.name !== expected.name) {\n throwResultSchemaMismatch(\n target.id,\n `column ${index + 1} should be '${expected.name}', got '${actual.name}'`\n )\n }\n\n if (actual.type !== expected.type) {\n throwResultSchemaMismatch(\n target.id,\n `column '${expected.name}' should have type '${expected.type}', got '${actual.type}'`\n )\n }\n }\n }\n\n private async applySqlTransform(input: ApplySqlTransformInput): Promise<ApplyDatasetRowsResult> {\n const tempTableName = `sixb_sql_transform_${randomUUID().replaceAll(\"-\", \"\")}`\n const tempTable = quoteIdentifier(tempTableName)\n\n await input.runtime.run(\n `CREATE TEMP TABLE ${tempTable} AS SELECT * FROM (${input.sql}) AS sixb_sql_transform_result`\n )\n\n let result: ApplyDatasetRowsResult\n try {\n result = await applyDatasetRowsFromRelation({\n options: this.options,\n runtime: input.runtime,\n dataset: input.target,\n mode: input.mode,\n sourceRelationSql: tempTable,\n previousRowCount: input.previousRowCount,\n })\n } catch (error) {\n try {\n await input.runtime.run(`DROP TABLE IF EXISTS ${tempTable}`)\n } catch {\n // Preserve the write failure. DuckDB rejects cleanup statements while\n // the transaction is aborted; the coordinator will roll it back next.\n }\n throw error\n }\n\n await input.runtime.run(`DROP TABLE IF EXISTS ${tempTable}`)\n return result\n }\n}\n\nfunction previewLimit(limit: number | undefined): number {\n if (limit === undefined || !Number.isFinite(limit)) {\n return DEFAULT_PREVIEW_LIMIT\n }\n\n return Math.min(Math.max(0, Math.trunc(limit)), MAX_PREVIEW_LIMIT)\n}\n\nfunction buildPreviewSql(sql: string, limit: number): string {\n return `SELECT * FROM (${sql}) AS sixb_sql_transform_preview LIMIT ${limit}`\n}\n\nfunction resultColumnFromDescribeRow(\n row: Readonly<Record<string, unknown>>\n): DatasetColumnDefinition {\n const name = getString(row, \"column_name\")\n const type = duckDbTypeToDatasetColumnType(getString(row, \"column_type\"))\n\n return { name, type }\n}\n\nfunction normalizePreviewRow(row: Readonly<Record<string, unknown>>): DatasetRow {\n const normalized: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(row)) {\n normalized[key] = normalizePreviewValue(value)\n }\n\n return normalized\n}\n\nfunction normalizePreviewValue(value: unknown): unknown {\n if (typeof value === \"bigint\") {\n return value.toString()\n }\n\n if (value instanceof Date) {\n return value.toISOString()\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => normalizePreviewValue(item))\n }\n\n if (typeof value === \"object\" && value !== null) {\n const normalized: Record<string, unknown> = {}\n for (const [key, child] of Object.entries(value)) {\n normalized[key] = normalizePreviewValue(child)\n }\n return normalized\n }\n\n return value\n}\n\nfunction throwNoCommittedSourceVersion(datasetId: string): never {\n throw new LakeStorageError(\n `[SixbDuckLake] No committed version found for SQL transform source dataset '${datasetId}'.`\n )\n}\n\nfunction throwResultSchemaMismatch(datasetId: string, detail: string): never {\n throw new LakeStorageError(\n `[SixbDuckLake] SQL transform result schema does not match target dataset '${datasetId}': ${detail}.`\n )\n}\n",
23
+ "import { randomUUID } from \"node:crypto\"\nimport type { DatasetColumnDefinition, DatasetDefinition, DatasetRow } from \"@sixb/core\"\nimport {\n type DatasetVersionRef,\n type DatasetWriteCommitResult,\n type DatasetWriteMode,\n type ExecuteSqlTransformInput,\n type LakeSqlExecutor,\n LakeStorageError,\n type PreviewSqlTransformInput,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport {\n type ApplyDatasetRowsResult,\n applyDatasetRowsFromRelation,\n assertDatasetWriteMode,\n} from \"./dataset-row-commit\"\nimport { findDatasetColumnTypeForDuckDbSql } from \"./duckdb-column-types\"\nimport { 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 { DuckLakeSnapshotReader } from \"./ducklake-snapshot-reader\"\nimport type { DuckLakeWriteCoordinator } from \"./ducklake-write-coordinator\"\nimport { datasetColumnTypeToDuckDbSql } from \"./schema\"\nimport { quoteIdentifier } from \"./sql\"\nimport {\n type DuckLakeSqlTransformSourceRelation,\n renderDuckLakeSqlTransformSql,\n} from \"./sql-transform-relations\"\nimport { parseVersionId } from \"./versions\"\n\nconst DEFAULT_PREVIEW_LIMIT = 100\nconst MAX_PREVIEW_LIMIT = 1_000\n\ninterface ResolvedDuckLakeSqlTransformSources {\n readonly relations: Readonly<Record<string, DuckLakeSqlTransformSourceRelation>>\n readonly inputs: readonly DatasetVersionRef[]\n}\n\ninterface ApplySqlTransformInput {\n readonly runtime: DuckDbQueryRuntime\n readonly target: DatasetDefinition\n readonly mode: DatasetWriteMode\n readonly sql: string\n readonly checkedCasts: readonly SqlTransformCheckedCast[]\n readonly previousRowCount?: number\n}\n\ninterface SqlTransformResultColumn {\n readonly name: string\n readonly typeSql: string\n}\n\ninterface SqlTransformCheckedCast {\n readonly columnName: string\n readonly targetTypeSql: string\n}\n\n/**\n * DuckDB-backed SQL transform executor for DuckLakeStorage.\n */\nexport class DuckLakeSqlExecutor implements LakeSqlExecutor<\"duckdb\"> {\n readonly dialect = \"duckdb\" as const\n readonly capabilities = {\n preview: true,\n supportsAppend: true,\n supportsSnapshot: true,\n }\n\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly datasets: DuckLakeDatasetCatalog,\n private readonly snapshots: DuckLakeSnapshotReader,\n private readonly writes: DuckLakeWriteCoordinator\n ) {}\n\n async *preview(input: PreviewSqlTransformInput<\"duckdb\">): AsyncIterable<DatasetRow> {\n this.connections.assertOpen()\n\n const rows = await this.connections.withAttachedRuntime(async (runtime) => {\n const sources = await this.resolveSources(runtime, input.sources)\n const sql = renderDuckLakeSqlTransformSql({\n options: this.options,\n sources: sources.relations,\n sql: input.sql,\n })\n return runtime.query(buildPreviewSql(sql, previewLimit(input.limit)))\n })\n\n for (const row of rows) {\n yield normalizePreviewRow(row)\n }\n }\n\n async execute(input: ExecuteSqlTransformInput<\"duckdb\">): Promise<DatasetWriteCommitResult> {\n this.connections.assertOpen()\n assertDatasetWriteMode(input.mode, \"SQL transform\")\n\n return this.writes.withCommitRuntime(async (runtime) => {\n const target = await this.resolveTargetDataset(runtime, input.target)\n const sources = await this.resolveSources(runtime, input.sources)\n const sql = renderDuckLakeSqlTransformSql({\n options: this.options,\n sources: sources.relations,\n sql: input.sql,\n })\n\n const checkedCasts = await this.assertResultSchemaMatchesTarget(runtime, target, sql)\n\n return this.writes.commitDatasetVersionOnExclusiveRuntime(runtime, {\n dataset: target,\n mode: input.mode,\n expectedLatestVersionId: input.expectedLatestVersionId,\n commitMessage: input.commitMessage ?? `execute SQL transform for dataset ${target.id}`,\n producer: input.producer,\n inputs: sources.inputs,\n applyChanges: (runtime, context) =>\n this.applySqlTransform({\n runtime,\n target,\n mode: input.mode,\n sql,\n checkedCasts,\n previousRowCount: context.previousRowCount,\n }),\n })\n })\n }\n\n private async resolveSources(\n runtime: DuckDbQueryRuntime,\n sources: PreviewSqlTransformInput<\"duckdb\">[\"sources\"]\n ): Promise<ResolvedDuckLakeSqlTransformSources> {\n const relations: Record<string, DuckLakeSqlTransformSourceRelation> = Object.create(null)\n const inputs: DatasetVersionRef[] = []\n\n for (const [sourceName, source] of Object.entries(sources)) {\n const definition = await this.resolveSourceDataset(runtime, source.dataset)\n const versionRef = await this.resolveSourceVersion(runtime, definition, source.versionId)\n\n relations[sourceName] = {\n datasetId: definition.id,\n versionId: versionRef.versionId,\n }\n inputs.push({\n datasetId: definition.id,\n versionId: versionRef.versionId,\n })\n }\n\n return {\n relations: Object.freeze(relations),\n inputs: Object.freeze(inputs),\n }\n }\n\n private async resolveSourceDataset(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition\n ): Promise<DatasetDefinition> {\n const definition = await this.datasets.getDatasetOnRuntime(runtime, dataset.id)\n if (!definition) {\n throw new LakeStorageError(\n `[SixbDuckLake] Unknown SQL transform source dataset '${dataset.id}'.`\n )\n }\n\n return definition\n }\n\n private async resolveTargetDataset(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition\n ): Promise<DatasetDefinition> {\n const definition = await this.datasets.getDatasetOnRuntime(runtime, dataset.id)\n if (!definition) {\n throw new LakeStorageError(\n `[SixbDuckLake] Unknown SQL transform target dataset '${dataset.id}'.`\n )\n }\n\n this.datasets.assertSchema(definition)\n return definition\n }\n\n private async resolveSourceVersion(\n runtime: DuckDbQueryRuntime,\n dataset: DatasetDefinition,\n versionId?: string\n ): Promise<DatasetVersionRef> {\n if (versionId !== undefined) {\n const snapshotId = parseVersionId(versionId)\n const versionRef = await this.snapshots.getVersionRefForSnapshot(runtime, dataset, snapshotId)\n if (versionRef) {\n return versionRef\n }\n\n throwNoCommittedSourceVersion(dataset.id)\n }\n\n const latestVersionRef = await this.snapshots.getLatestVersionRefForDefinition(runtime, dataset)\n if (latestVersionRef) {\n return latestVersionRef\n }\n\n throwNoCommittedSourceVersion(dataset.id)\n }\n\n private async assertResultSchemaMatchesTarget(\n runtime: DuckDbQueryRuntime,\n target: DatasetDefinition,\n sql: string\n ): Promise<readonly SqlTransformCheckedCast[]> {\n const rows = await runtime.query(\n `DESCRIBE SELECT * FROM (${sql}) AS sixb_sql_transform_result_schema`\n )\n const actualColumns = rows.map((row) => resultColumnFromDescribeRow(row))\n const expectedColumns = target.schema.columns\n const checkedCasts: SqlTransformCheckedCast[] = []\n\n if (actualColumns.length !== expectedColumns.length) {\n throwResultSchemaMismatch(\n target.id,\n `expected ${expectedColumns.length} columns, got ${actualColumns.length}`\n )\n }\n\n for (let index = 0; index < expectedColumns.length; index += 1) {\n const expected = expectedColumns[index]\n const actual = actualColumns[index]\n\n if (actual.name !== expected.name) {\n throwResultSchemaMismatch(\n target.id,\n `column ${index + 1} should be '${expected.name}', got '${actual.name}'`\n )\n }\n\n const actualDatasetType = findDatasetColumnTypeForDuckDbSql(actual.typeSql)\n if (actualDatasetType === expected.type) {\n continue\n }\n\n if (isCheckedInt64Cast(actual.typeSql, expected.type)) {\n checkedCasts.push({\n columnName: expected.name,\n targetTypeSql: datasetColumnTypeToDuckDbSql(expected.type),\n })\n continue\n }\n\n throwResultSchemaMismatch(\n target.id,\n `column '${expected.name}' should have type '${expected.type}', got '${actualDatasetType ?? actual.typeSql}'`\n )\n }\n\n return checkedCasts\n }\n\n private async applySqlTransform(input: ApplySqlTransformInput): Promise<ApplyDatasetRowsResult> {\n const tempTableName = `sixb_sql_transform_${randomUUID().replaceAll(\"-\", \"\")}`\n const tempTable = quoteIdentifier(tempTableName)\n\n await input.runtime.run(\n `CREATE TEMP TABLE ${tempTable} AS SELECT * FROM (${input.sql}) AS sixb_sql_transform_result`\n )\n\n let result: ApplyDatasetRowsResult\n try {\n for (const checkedCast of input.checkedCasts) {\n await input.runtime.run(\n `ALTER TABLE ${tempTable} ALTER COLUMN ${quoteIdentifier(\n checkedCast.columnName\n )} SET DATA TYPE ${checkedCast.targetTypeSql}`\n )\n }\n\n result = await applyDatasetRowsFromRelation({\n options: this.options,\n runtime: input.runtime,\n dataset: input.target,\n mode: input.mode,\n sourceRelationSql: tempTable,\n previousRowCount: input.previousRowCount,\n })\n } catch (error) {\n try {\n await input.runtime.run(`DROP TABLE IF EXISTS ${tempTable}`)\n } catch {\n // Preserve the write failure. DuckDB rejects cleanup statements while\n // the transaction is aborted; the coordinator will roll it back next.\n }\n throw error\n }\n\n await input.runtime.run(`DROP TABLE IF EXISTS ${tempTable}`)\n return result\n }\n}\n\nfunction previewLimit(limit: number | undefined): number {\n if (limit === undefined || !Number.isFinite(limit)) {\n return DEFAULT_PREVIEW_LIMIT\n }\n\n return Math.min(Math.max(0, Math.trunc(limit)), MAX_PREVIEW_LIMIT)\n}\n\nfunction buildPreviewSql(sql: string, limit: number): string {\n return `SELECT * FROM (${sql}) AS sixb_sql_transform_preview LIMIT ${limit}`\n}\n\nfunction resultColumnFromDescribeRow(\n row: Readonly<Record<string, unknown>>\n): SqlTransformResultColumn {\n const name = getString(row, \"column_name\")\n const typeSql = getString(row, \"column_type\")\n\n return { name, typeSql }\n}\n\nfunction isCheckedInt64Cast(\n actualTypeSql: string,\n expectedType: DatasetColumnDefinition[\"type\"]\n): boolean {\n const normalizedType = actualTypeSql.trim().toUpperCase()\n return expectedType === \"int64\" && (normalizedType === \"HUGEINT\" || normalizedType === \"INT128\")\n}\n\nfunction normalizePreviewRow(row: Readonly<Record<string, unknown>>): DatasetRow {\n const normalized: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(row)) {\n normalized[key] = normalizePreviewValue(value)\n }\n\n return normalized\n}\n\nfunction normalizePreviewValue(value: unknown): unknown {\n if (typeof value === \"bigint\") {\n return value.toString()\n }\n\n if (value instanceof Date) {\n return value.toISOString()\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => normalizePreviewValue(item))\n }\n\n if (typeof value === \"object\" && value !== null) {\n const normalized: Record<string, unknown> = {}\n for (const [key, child] of Object.entries(value)) {\n normalized[key] = normalizePreviewValue(child)\n }\n return normalized\n }\n\n return value\n}\n\nfunction throwNoCommittedSourceVersion(datasetId: string): never {\n throw new LakeStorageError(\n `[SixbDuckLake] No committed version found for SQL transform source dataset '${datasetId}'.`\n )\n}\n\nfunction throwResultSchemaMismatch(datasetId: string, detail: string): never {\n throw new LakeStorageError(\n `[SixbDuckLake] SQL transform result schema does not match target dataset '${datasetId}': ${detail}.`\n )\n}\n",
24
24
  "import type { DatasetDefinition } from \"@sixb/core\"\nimport {\n type DatasetWriteMode,\n getDatasetPrimaryKeyColumns,\n LakeStorageError,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport { getBigIntLike } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport { encodeDatasetTableName } from \"./names\"\nimport { datasetSchemaColumnNamesSql } from \"./schema\"\nimport { qualifiedTableName, quoteIdentifier } from \"./sql\"\n\nexport type CommitRowCount =\n | { readonly kind: \"exact\"; readonly value: number }\n | { readonly kind: \"unknown\" }\n\nexport interface ApplyDatasetRowsResult {\n readonly dataChangeExpected: boolean\n readonly sourceRowCount: number\n readonly resultingRowCount: CommitRowCount\n}\n\nexport function assertDatasetWriteMode(\n mode: unknown,\n operation: string\n): asserts mode is DatasetWriteMode {\n if (mode !== \"snapshot\" && mode !== \"append\") {\n throw new LakeStorageError(\n `[SixbDuckLake] Invalid ${operation} mode '${String(mode)}'. Expected 'snapshot' or 'append'.`\n )\n }\n}\n\nexport async function applyDatasetRowsFromRelation(input: {\n readonly options: DuckLakeStorageOptions\n readonly runtime: DuckDbQueryRuntime\n readonly dataset: DatasetDefinition\n readonly mode: DatasetWriteMode\n /** Provider-rendered relation SQL, such as a quoted staging or temp table. */\n readonly sourceRelationSql: string\n readonly previousRowCount?: number\n}): Promise<ApplyDatasetRowsResult> {\n const tableName = encodeDatasetTableName(input.dataset.id)\n const table = qualifiedTableName(input.options, tableName)\n const columnsSql = datasetSchemaColumnNamesSql(input.dataset.schema)\n const primaryKeyColumns = getDatasetPrimaryKeyColumns(input.dataset)\n\n if (primaryKeyColumns !== null) {\n await inspectUniqueKeyedRelation({\n runtime: input.runtime,\n dataset: input.dataset,\n relationSql: input.sourceRelationSql,\n context: `${input.mode} source`,\n })\n\n if (input.mode === \"append\") {\n await inspectUniqueKeyedRelation({\n runtime: input.runtime,\n dataset: input.dataset,\n relationSql: table,\n context: \"current baseline\",\n })\n await assertNoPrimaryKeyOverlap({\n runtime: input.runtime,\n dataset: input.dataset,\n leftRelationSql: input.sourceRelationSql,\n rightRelationSql: table,\n context: \"append\",\n })\n }\n }\n\n if (input.mode === \"snapshot\") {\n const source = await fingerprintRelation(input.runtime, input.sourceRelationSql, columnsSql)\n const target = await fingerprintRelation(input.runtime, table, columnsSql)\n\n if (sameFingerprint(source, target)) {\n return {\n dataChangeExpected: false,\n sourceRowCount: source.rowCount,\n resultingRowCount: { kind: \"exact\", value: target.rowCount },\n }\n }\n\n await input.runtime.run(`DELETE FROM ${table}`)\n await input.runtime.run(\n `INSERT INTO ${table} (${columnsSql}) SELECT ${columnsSql} FROM ${input.sourceRelationSql}`\n )\n\n return {\n dataChangeExpected: source.rowCount > 0 || target.rowCount > 0,\n sourceRowCount: source.rowCount,\n resultingRowCount: { kind: \"exact\", value: source.rowCount },\n }\n }\n\n const sourceRowCount = await countRows(input.runtime, input.sourceRelationSql)\n await input.runtime.run(\n `INSERT INTO ${table} (${columnsSql}) SELECT ${columnsSql} FROM ${input.sourceRelationSql}`\n )\n\n return {\n dataChangeExpected: sourceRowCount > 0,\n sourceRowCount,\n resultingRowCount:\n input.previousRowCount === undefined\n ? { kind: \"unknown\" }\n : { kind: \"exact\", value: input.previousRowCount + sourceRowCount },\n }\n}\n\nexport async function inspectUniqueKeyedRelation(input: {\n readonly runtime: DuckDbQueryRuntime\n readonly dataset: DatasetDefinition\n readonly relationSql: string\n readonly context: string\n}): Promise<number> {\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 rows can be keyed.`\n )\n }\n\n const keysSql = primaryKeyColumns.map((column) => quoteIdentifier(column)).join(\", \")\n const [row] = await input.runtime.query(`\n SELECT\n count(*) AS row_count,\n coalesce(max(key_count), 0) AS max_key_count\n FROM (\n SELECT count(*) OVER (PARTITION BY ${keysSql}) AS key_count\n FROM ${input.relationSql}\n ) keyed_rows\n `)\n\n const rowCount = row === undefined ? 0 : Number(getBigIntLike(row, \"row_count\"))\n const maxKeyCount = row === undefined ? 0 : Number(getBigIntLike(row, \"max_key_count\"))\n if (maxKeyCount > 1) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${input.dataset.id}' ${input.context} contains duplicate primary key.`\n )\n }\n\n return rowCount\n}\n\nasync function assertNoPrimaryKeyOverlap(input: {\n readonly runtime: DuckDbQueryRuntime\n readonly dataset: DatasetDefinition\n readonly leftRelationSql: string\n readonly rightRelationSql: string\n readonly context: string\n}): Promise<void> {\n const primaryKeyColumns = getDatasetPrimaryKeyColumns(input.dataset)\n if (primaryKeyColumns === null) {\n return\n }\n\n const matchSql = primaryKeyColumns\n .map((column) => `left_rows.${quoteIdentifier(column)} = right_rows.${quoteIdentifier(column)}`)\n .join(\" AND \")\n const [collision] = await input.runtime.query(`\n SELECT 1\n FROM ${input.leftRelationSql} left_rows\n JOIN ${input.rightRelationSql} right_rows ON ${matchSql}\n LIMIT 1\n `)\n if (collision !== undefined) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${input.dataset.id}' ${input.context} contains duplicate primary key.`\n )\n }\n}\n\ninterface RelationFingerprint {\n readonly rowCount: number\n readonly hashSum: string\n readonly hashXor: string\n}\n\nasync function fingerprintRelation(\n runtime: DuckDbQueryRuntime,\n relationSql: string,\n columnsSql: string\n): Promise<RelationFingerprint> {\n const [row] = await runtime.query(`\n SELECT\n count(*) AS row_count,\n coalesce(sum(hash(${columnsSql})::HUGEINT), 0::HUGEINT) AS hash_sum,\n coalesce(bit_xor(hash('sixb:snapshot:v1', ${columnsSql})), 0::UBIGINT) AS hash_xor\n FROM ${relationSql}\n `)\n\n if (row === undefined) {\n return { rowCount: 0, hashSum: \"0\", hashXor: \"0\" }\n }\n\n return {\n rowCount: Number(getBigIntLike(row, \"row_count\")),\n hashSum: getBigIntLike(row, \"hash_sum\").toString(),\n hashXor: getBigIntLike(row, \"hash_xor\").toString(),\n }\n}\n\nfunction sameFingerprint(left: RelationFingerprint, right: RelationFingerprint): boolean {\n return (\n left.rowCount === right.rowCount &&\n left.hashSum === right.hashSum &&\n left.hashXor === right.hashXor\n )\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 if (row === undefined) {\n return 0\n }\n\n return Number(getBigIntLike(row, \"row_count\"))\n}\n",
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
- "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",
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 { encodeDatasetTableName } from \"./names\"\nimport {\n duckLakeAlias,\n duckLakeMetadataTableName,\n qualifiedTableName,\n quoteIdentifier,\n quoteSqlString,\n} 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 await this.ensureInitialNoOpHasSnapshot(input, changeResult, latestVersion)\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 ensureInitialNoOpHasSnapshot(\n input: DuckLakeCommitVersionOutcomeRuntimeInput,\n changeResult: ApplyDatasetRowsResult,\n knownLatestVersion: DuckLakeVersionSummary | null\n ): Promise<void> {\n if (changeResult.dataChangeExpected || input.allowInitialNoOp) {\n return\n }\n\n const latestVersion =\n knownLatestVersion ??\n (await this.snapshots.getLatestVersionSummaryForDefinition(input.runtime, input.dataset))\n if (latestVersion) {\n return\n }\n\n // DuckLake 1.5.2 does not create a snapshot for a transaction whose data and metadata are\n // unchanged, and set_commit_message alone cannot force one. Reapplying the current table\n // comment is an idempotent metadata write: it leaves the visible DatasetDefinition unchanged\n // while giving the first empty write a real DuckLake snapshot for time travel and lineage.\n const table = qualifiedTableName(this.options, encodeDatasetTableName(input.dataset.id))\n const descriptionSql =\n input.dataset.description === undefined ? \"NULL\" : quoteSqlString(input.dataset.description)\n await input.runtime.run(`COMMENT ON TABLE ${table} IS ${descriptionSql}`)\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
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
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": "36FC46708546A1DD64756E2164756E21",
33
+ "mappings": "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",
34
+ "debugId": "85151472B319A47E64756E2164756E21",
35
35
  "names": []
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ducklake-sql-executor.d.ts","sourceRoot":"","sources":["../../src/internal/ducklake-sql-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8C,UAAU,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,EAEL,KAAK,wBAAwB,EAE7B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EAEpB,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAQtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAyB5E;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe,CAAC,QAAQ,CAAC;IASjE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZzB,QAAQ,CAAC,OAAO,EAAG,QAAQ,CAAS;IACpC,QAAQ,CAAC,YAAY;;;;MAIpB;gBAGkB,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,sBAAsB,EACjC,MAAM,EAAE,wBAAwB;IAG5C,OAAO,CAAC,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC;IAkB9E,OAAO,CAAC,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC;YAkC7E,cAAc;YA2Bd,oBAAoB;YAcpB,oBAAoB;YAepB,oBAAoB;YAuBpB,+BAA+B;YAsC/B,iBAAiB;CA+BhC"}
1
+ {"version":3,"file":"ducklake-sql-executor.d.ts","sourceRoot":"","sources":["../../src/internal/ducklake-sql-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8C,UAAU,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,EAEL,KAAK,wBAAwB,EAE7B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EAEpB,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAStD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAoC5E;;GAEG;AACH,qBAAa,mBAAoB,YAAW,eAAe,CAAC,QAAQ,CAAC;IASjE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZzB,QAAQ,CAAC,OAAO,EAAG,QAAQ,CAAS;IACpC,QAAQ,CAAC,YAAY;;;;MAIpB;gBAGkB,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,sBAAsB,EACjC,MAAM,EAAE,wBAAwB;IAG5C,OAAO,CAAC,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC;IAkB9E,OAAO,CAAC,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC;YAmC7E,cAAc;YA2Bd,oBAAoB;YAcpB,oBAAoB;YAepB,oBAAoB;YAuBpB,+BAA+B;YAoD/B,iBAAiB;CAuChC"}
@@ -46,6 +46,7 @@ export declare class DuckLakeWriteCoordinator {
46
46
  private versionForCommittedWrite;
47
47
  private applyStagedRows;
48
48
  private setCommitMetadata;
49
+ private ensureInitialNoOpHasSnapshot;
49
50
  private versionForNoOpCommit;
50
51
  private rollbackTransaction;
51
52
  private latestVersionForCommit;
@@ -1 +1 @@
1
- {"version":3,"file":"ducklake-write-coordinator.d.ts","sourceRoot":"","sources":["../../src/internal/ducklake-write-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EAGtB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EACL,KAAK,sBAAsB,EAI5B,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAA0B,MAAM,4BAA4B,CAAA;AAKhG,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAClD,YAAY,CACV,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAAA;CACnC;AAeD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACxD;AAED;;;;;;;GAOG;AACH,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAHT,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,sBAAsB;IAG9C,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4BpE,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAkC5D,WAAW;YAyBX,WAAW;IA4CnB,oBAAoB,CACxB,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,wBAAwB,CAAC;IAM9B,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAQlF,sCAAsC,CAC1C,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,wBAAwB,CAAC;YAiBtB,sCAAsC;YAUtC,uBAAuB;YA2CvB,4BAA4B;YA0D5B,wBAAwB;YAiExB,eAAe;YAyBf,iBAAiB;YAkCjB,oBAAoB;YAmBpB,mBAAmB;YASnB,sBAAsB;YAUtB,uBAAuB;YAYvB,wBAAwB;YAiCxB,iBAAiB;IA0B/B,OAAO,CAAC,2BAA2B;CAgBpC"}
1
+ {"version":3,"file":"ducklake-write-coordinator.d.ts","sourceRoot":"","sources":["../../src/internal/ducklake-write-coordinator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EAGtB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EACL,KAAK,sBAAsB,EAI5B,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAA0B,MAAM,4BAA4B,CAAA;AAYhG,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;IAC/B,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAClD,YAAY,CACV,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAAA;CACnC;AAeD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACxD;AAED;;;;;;;GAOG;AACH,qBAAa,wBAAwB;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAHT,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,sBAAsB;IAG9C,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4BpE,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAkC5D,WAAW;YAyBX,WAAW;IA4CnB,oBAAoB,CACxB,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,wBAAwB,CAAC;IAM9B,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAQlF,sCAAsC,CAC1C,OAAO,EAAE,kBAAkB,EAC3B,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,wBAAwB,CAAC;YAiBtB,sCAAsC;YAUtC,uBAAuB;YA2CvB,4BAA4B;YA2D5B,wBAAwB;YAiExB,eAAe;YAyBf,iBAAiB;YAkCjB,4BAA4B;YA0B5B,oBAAoB;YAmBpB,mBAAmB;YASnB,sBAAsB;YAUtB,uBAAuB;YAYvB,wBAAwB;YAiCxB,iBAAiB;IA0B/B,OAAO,CAAC,2BAA2B;CAgBpC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sixb/ducklake",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
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.2"
47
+ "@sixb/core": "^0.1.4"
48
48
  },
49
49
  "devDependencies": {
50
- "@sixb/core": "0.1.2",
50
+ "@sixb/core": "0.1.4",
51
51
  "@types/bun": "latest",
52
52
  "typescript": "^5.7.0"
53
53
  },
@@ -15,13 +15,14 @@ import {
15
15
  applyDatasetRowsFromRelation,
16
16
  assertDatasetWriteMode,
17
17
  } from "./dataset-row-commit"
18
+ import { findDatasetColumnTypeForDuckDbSql } from "./duckdb-column-types"
18
19
  import { getString } from "./duckdb-row"
19
20
  import type { DuckDbQueryRuntime } from "./duckdb-runtime"
20
21
  import type { DuckLakeConnectionManager } from "./ducklake-connection-manager"
21
22
  import type { DuckLakeDatasetCatalog } from "./ducklake-dataset-catalog"
22
23
  import type { DuckLakeSnapshotReader } from "./ducklake-snapshot-reader"
23
24
  import type { DuckLakeWriteCoordinator } from "./ducklake-write-coordinator"
24
- import { duckDbTypeToDatasetColumnType } from "./schema"
25
+ import { datasetColumnTypeToDuckDbSql } from "./schema"
25
26
  import { quoteIdentifier } from "./sql"
26
27
  import {
27
28
  type DuckLakeSqlTransformSourceRelation,
@@ -42,9 +43,20 @@ interface ApplySqlTransformInput {
42
43
  readonly target: DatasetDefinition
43
44
  readonly mode: DatasetWriteMode
44
45
  readonly sql: string
46
+ readonly checkedCasts: readonly SqlTransformCheckedCast[]
45
47
  readonly previousRowCount?: number
46
48
  }
47
49
 
50
+ interface SqlTransformResultColumn {
51
+ readonly name: string
52
+ readonly typeSql: string
53
+ }
54
+
55
+ interface SqlTransformCheckedCast {
56
+ readonly columnName: string
57
+ readonly targetTypeSql: string
58
+ }
59
+
48
60
  /**
49
61
  * DuckDB-backed SQL transform executor for DuckLakeStorage.
50
62
  */
@@ -95,7 +107,7 @@ export class DuckLakeSqlExecutor implements LakeSqlExecutor<"duckdb"> {
95
107
  sql: input.sql,
96
108
  })
97
109
 
98
- await this.assertResultSchemaMatchesTarget(runtime, target, sql)
110
+ const checkedCasts = await this.assertResultSchemaMatchesTarget(runtime, target, sql)
99
111
 
100
112
  return this.writes.commitDatasetVersionOnExclusiveRuntime(runtime, {
101
113
  dataset: target,
@@ -110,6 +122,7 @@ export class DuckLakeSqlExecutor implements LakeSqlExecutor<"duckdb"> {
110
122
  target,
111
123
  mode: input.mode,
112
124
  sql,
125
+ checkedCasts,
113
126
  previousRowCount: context.previousRowCount,
114
127
  }),
115
128
  })
@@ -199,12 +212,13 @@ export class DuckLakeSqlExecutor implements LakeSqlExecutor<"duckdb"> {
199
212
  runtime: DuckDbQueryRuntime,
200
213
  target: DatasetDefinition,
201
214
  sql: string
202
- ): Promise<void> {
215
+ ): Promise<readonly SqlTransformCheckedCast[]> {
203
216
  const rows = await runtime.query(
204
217
  `DESCRIBE SELECT * FROM (${sql}) AS sixb_sql_transform_result_schema`
205
218
  )
206
219
  const actualColumns = rows.map((row) => resultColumnFromDescribeRow(row))
207
220
  const expectedColumns = target.schema.columns
221
+ const checkedCasts: SqlTransformCheckedCast[] = []
208
222
 
209
223
  if (actualColumns.length !== expectedColumns.length) {
210
224
  throwResultSchemaMismatch(
@@ -224,13 +238,26 @@ export class DuckLakeSqlExecutor implements LakeSqlExecutor<"duckdb"> {
224
238
  )
225
239
  }
226
240
 
227
- if (actual.type !== expected.type) {
228
- throwResultSchemaMismatch(
229
- target.id,
230
- `column '${expected.name}' should have type '${expected.type}', got '${actual.type}'`
231
- )
241
+ const actualDatasetType = findDatasetColumnTypeForDuckDbSql(actual.typeSql)
242
+ if (actualDatasetType === expected.type) {
243
+ continue
232
244
  }
245
+
246
+ if (isCheckedInt64Cast(actual.typeSql, expected.type)) {
247
+ checkedCasts.push({
248
+ columnName: expected.name,
249
+ targetTypeSql: datasetColumnTypeToDuckDbSql(expected.type),
250
+ })
251
+ continue
252
+ }
253
+
254
+ throwResultSchemaMismatch(
255
+ target.id,
256
+ `column '${expected.name}' should have type '${expected.type}', got '${actualDatasetType ?? actual.typeSql}'`
257
+ )
233
258
  }
259
+
260
+ return checkedCasts
234
261
  }
235
262
 
236
263
  private async applySqlTransform(input: ApplySqlTransformInput): Promise<ApplyDatasetRowsResult> {
@@ -243,6 +270,14 @@ export class DuckLakeSqlExecutor implements LakeSqlExecutor<"duckdb"> {
243
270
 
244
271
  let result: ApplyDatasetRowsResult
245
272
  try {
273
+ for (const checkedCast of input.checkedCasts) {
274
+ await input.runtime.run(
275
+ `ALTER TABLE ${tempTable} ALTER COLUMN ${quoteIdentifier(
276
+ checkedCast.columnName
277
+ )} SET DATA TYPE ${checkedCast.targetTypeSql}`
278
+ )
279
+ }
280
+
246
281
  result = await applyDatasetRowsFromRelation({
247
282
  options: this.options,
248
283
  runtime: input.runtime,
@@ -280,11 +315,19 @@ function buildPreviewSql(sql: string, limit: number): string {
280
315
 
281
316
  function resultColumnFromDescribeRow(
282
317
  row: Readonly<Record<string, unknown>>
283
- ): DatasetColumnDefinition {
318
+ ): SqlTransformResultColumn {
284
319
  const name = getString(row, "column_name")
285
- const type = duckDbTypeToDatasetColumnType(getString(row, "column_type"))
320
+ const typeSql = getString(row, "column_type")
321
+
322
+ return { name, typeSql }
323
+ }
286
324
 
287
- return { name, type }
325
+ function isCheckedInt64Cast(
326
+ actualTypeSql: string,
327
+ expectedType: DatasetColumnDefinition["type"]
328
+ ): boolean {
329
+ const normalizedType = actualTypeSql.trim().toUpperCase()
330
+ return expectedType === "int64" && (normalizedType === "HUGEINT" || normalizedType === "INT128")
288
331
  }
289
332
 
290
333
  function normalizePreviewRow(row: Readonly<Record<string, unknown>>): DatasetRow {
@@ -27,7 +27,14 @@ import type { DuckLakeDatasetCatalog } from "./ducklake-dataset-catalog"
27
27
  import { createDuckLakeMergeSession, type DuckLakeCommitMergeInput } from "./ducklake-merge-session"
28
28
  import type { DuckLakeSnapshotReader, DuckLakeVersionSummary } from "./ducklake-snapshot-reader"
29
29
  import { createDuckLakeWriteSession, type DuckLakeCommitWriteInput } from "./ducklake-write-session"
30
- import { duckLakeAlias, duckLakeMetadataTableName, quoteIdentifier, quoteSqlString } from "./sql"
30
+ import { encodeDatasetTableName } from "./names"
31
+ import {
32
+ duckLakeAlias,
33
+ duckLakeMetadataTableName,
34
+ qualifiedTableName,
35
+ quoteIdentifier,
36
+ quoteSqlString,
37
+ } from "./sql"
31
38
  import { parseCommitMetadata, type SixbCommitMetadata } from "./versions"
32
39
 
33
40
  export interface DuckLakeCommitDatasetVersionInput {
@@ -325,6 +332,7 @@ export class DuckLakeWriteCoordinator {
325
332
  previousRowCount: latestVersion?.rowCount,
326
333
  validatedPrimaryKeyColumns: latestVersion?.validatedPrimaryKeyColumns,
327
334
  })
335
+ await this.ensureInitialNoOpHasSnapshot(input, changeResult, latestVersion)
328
336
  const commitId = randomUUID()
329
337
  await this.setCommitMetadata(
330
338
  input,
@@ -479,6 +487,32 @@ export class DuckLakeWriteCoordinator {
479
487
  )
480
488
  }
481
489
 
490
+ private async ensureInitialNoOpHasSnapshot(
491
+ input: DuckLakeCommitVersionOutcomeRuntimeInput,
492
+ changeResult: ApplyDatasetRowsResult,
493
+ knownLatestVersion: DuckLakeVersionSummary | null
494
+ ): Promise<void> {
495
+ if (changeResult.dataChangeExpected || input.allowInitialNoOp) {
496
+ return
497
+ }
498
+
499
+ const latestVersion =
500
+ knownLatestVersion ??
501
+ (await this.snapshots.getLatestVersionSummaryForDefinition(input.runtime, input.dataset))
502
+ if (latestVersion) {
503
+ return
504
+ }
505
+
506
+ // DuckLake 1.5.2 does not create a snapshot for a transaction whose data and metadata are
507
+ // unchanged, and set_commit_message alone cannot force one. Reapplying the current table
508
+ // comment is an idempotent metadata write: it leaves the visible DatasetDefinition unchanged
509
+ // while giving the first empty write a real DuckLake snapshot for time travel and lineage.
510
+ const table = qualifiedTableName(this.options, encodeDatasetTableName(input.dataset.id))
511
+ const descriptionSql =
512
+ input.dataset.description === undefined ? "NULL" : quoteSqlString(input.dataset.description)
513
+ await input.runtime.run(`COMMENT ON TABLE ${table} IS ${descriptionSql}`)
514
+ }
515
+
482
516
  private async versionForNoOpCommit(
483
517
  runtime: DuckDbQueryRuntime,
484
518
  definition: DatasetDefinition,