@sixb/ducklake 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -5,7 +5,7 @@
5
5
  "import { randomUUID } from \"node:crypto\"\nimport type { DatasetColumnDefinition, DatasetRow } from \"@sixb/core\"\nimport {\n type DatasetChanges,\n type DatasetRowChange,\n LakeStorageError,\n type ReadDatasetChangesInput,\n resolveDatasetChangeColumns,\n} from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport { getBigIntLike } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport { resolveDatasetTableRef } from \"./ducklake-dataset-table-ref\"\nimport type { DuckLakeSnapshotReader } from \"./ducklake-snapshot-reader\"\nimport { normalizeReadValue } from \"./schema\"\nimport { qualifiedTableName, quoteIdentifier } from \"./sql\"\nimport { parseVersionId } from \"./versions\"\n\nconst PAGE_ROWS = 5_000\n\n/** Compare once in DuckDB, then page only the delta without holding the connection between yields. */\nexport class DuckLakeChangeReader {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly snapshots: DuckLakeSnapshotReader\n ) {}\n\n async readChanges(input: ReadDatasetChangesInput): Promise<DatasetChanges | null> {\n input.signal?.throwIfAborted()\n const before = await this.snapshots.getVersion(input.datasetId, input.fromVersionId)\n const after = await this.snapshots.getVersion(input.datasetId, input.toVersionId)\n const columns = resolveDatasetChangeColumns(input, before, after)\n if (!columns) return null\n const lease = await this.connections.acquireAttachedRuntime()\n const runtime = lease.runtime\n const temporary = quoteIdentifier(`sixb_delta_${randomUUID().replaceAll(\"-\", \"\")}`)\n let retained = false\n let created = false\n try {\n const ref = await resolveDatasetTableRef(this.options, runtime, input.datasetId)\n if (!ref) return null\n const table = qualifiedTableName(this.options, ref.tableName)\n const oldRelation = `${table} AT (VERSION => ${parseVersionId(input.fromVersionId)})`\n const newRelation = `${table} AT (VERSION => ${parseVersionId(input.toVersionId)})`\n const previousCount = await uniqueRowCount(runtime, oldRelation, input.keyColumns)\n const nextCount = await uniqueRowCount(runtime, newRelation, input.keyColumns)\n if (previousCount === null || nextCount === null) return null\n input.signal?.throwIfAborted()\n const key = quoteIdentifier(input.keyColumns[0]!)\n const values = columns.flatMap((column, index) => [\n `b.${quoteIdentifier(column.name)} AS b${index}`,\n `a.${quoteIdentifier(column.name)} AS a${index}`,\n ])\n const join = input.keyColumns\n .map((name) => `b.${quoteIdentifier(name)} = a.${quoteIdentifier(name)}`)\n .join(\" AND \")\n const changed = columns\n .map(\n (column) =>\n `b.${quoteIdentifier(column.name)} IS DISTINCT FROM a.${quoteIdentifier(column.name)}`\n )\n .join(\" OR \")\n // The native change feed reflects DELETE/INSERT writes: snapshot ingestion can produce 2N\n // physical changes for one logical edit. Compare the pinned states instead of replaying it.\n await runtime.run(`CREATE TEMP TABLE ${temporary} AS\n SELECT b.${key} IS NOT NULL AS before_present, a.${key} IS NOT NULL AS after_present,\n ${values.join(\", \")}\n FROM (SELECT * FROM ${oldRelation}) b\n FULL OUTER JOIN (SELECT * FROM ${newRelation}) a ON ${join}\n WHERE b.${key} IS NULL OR a.${key} IS NULL OR ${changed}`)\n created = true\n const [count] = await runtime.query(`SELECT count(*) AS count FROM ${temporary}`)\n const changeCount = safeCount(count!, \"count\")\n input.signal?.throwIfAborted()\n let closePromise: Promise<void> | undefined\n const close = () => {\n closePromise ??= runtime.run(`DROP TABLE IF EXISTS ${temporary}`)\n return closePromise\n }\n const changes = (async function* (): AsyncIterable<DatasetRowChange> {\n try {\n let cursor = -1n\n let delivered = 0\n while (delivered < changeCount) {\n input.signal?.throwIfAborted()\n if (closePromise) throw new LakeStorageError(\"[SixbDuckLake] Change reader is closed.\")\n const page = await runtime.query(`SELECT rowid AS position, * FROM ${temporary}\n WHERE rowid > ${cursor} ORDER BY rowid LIMIT ${PAGE_ROWS}`)\n if (page.length === 0)\n throw new LakeStorageError(\n \"[SixbDuckLake] Change read ended before its declared count.\"\n )\n for (const row of page) {\n input.signal?.throwIfAborted()\n delivered++\n yield {\n before: row.before_present === true ? rowImage(row, \"b\", columns) : null,\n after: row.after_present === true ? rowImage(row, \"a\", columns) : null,\n }\n }\n cursor = getBigIntLike(page[page.length - 1]!, \"position\")\n }\n } finally {\n await close()\n }\n })()\n retained = true\n return { fromRowCount: previousCount, toRowCount: nextCount, changeCount, changes, close }\n } finally {\n // The delta is a DuckDB temp table, independent of the attached DuckLake catalog. Release\n // the local attachment lock before returning it, otherwise consumer lake operations deadlock.\n try {\n if (!retained && created) await runtime.run(`DROP TABLE IF EXISTS ${temporary}`)\n } finally {\n await lease.release()\n }\n }\n }\n}\n\nasync function uniqueRowCount(\n runtime: DuckDbQueryRuntime,\n relation: string,\n keys: readonly string[]\n): Promise<number | null> {\n const names = keys.map(quoteIdentifier)\n const invalid = names.map((name) => `${name} IS NULL OR trim(${name}) = ''`).join(\" OR \")\n const [row] = await runtime.query(`SELECT count(*) AS total,\n count(DISTINCT (${names.join(\", \")})) AS unique_keys,\n count(*) FILTER (WHERE ${invalid}) AS invalid_keys FROM ${relation}`)\n const count = safeCount(row!, \"total\")\n return safeCount(row!, \"unique_keys\") === count && safeCount(row!, \"invalid_keys\") === 0\n ? count\n : null\n}\n\nfunction safeCount(row: Readonly<Record<string, unknown>>, name: string): number {\n const count = Number(getBigIntLike(row, name))\n if (!Number.isSafeInteger(count) || count < 0)\n throw new LakeStorageError(\"[SixbDuckLake] Change count exceeds the supported integer range.\")\n return count\n}\n\nfunction rowImage(\n row: Readonly<Record<string, unknown>>,\n prefix: \"a\" | \"b\",\n columns: readonly DatasetColumnDefinition[]\n): DatasetRow {\n return Object.fromEntries(\n columns.map((column, index) => [\n column.name,\n normalizeReadValue(row[`${prefix}${index}`], column),\n ])\n )\n}\n",
6
6
  "import { LakeStorageError } from \"@sixb/core/lake-storage\"\n\nexport type DuckDbRow = Readonly<Record<string, unknown>>\n\nexport function getString(row: DuckDbRow, key: string): string {\n const value = row[key]\n if (typeof value !== \"string\") {\n throw new LakeStorageError(\n `[SixbDuckLake] Expected DuckDB column '${key}' to be a string, got ${typeof value}.`\n )\n }\n\n return value\n}\n\nexport function getOptionalString(row: DuckDbRow, key: string): string | undefined {\n const value = row[key]\n if (value === null || value === undefined) {\n return undefined\n }\n\n if (typeof value !== \"string\") {\n throw new LakeStorageError(\n `[SixbDuckLake] Expected DuckDB column '${key}' to be a string, got ${typeof value}.`\n )\n }\n\n return value\n}\n\nexport function getBoolean(row: DuckDbRow, key: string): boolean {\n const value = row[key]\n if (typeof value !== \"boolean\") {\n throw new LakeStorageError(\n `[SixbDuckLake] Expected DuckDB column '${key}' to be a boolean, got ${typeof value}.`\n )\n }\n\n return value\n}\n\nexport function getBigIntLike(row: DuckDbRow, key: string): bigint {\n const value = row[key]\n if (typeof value === \"bigint\") {\n return value\n }\n\n if (typeof value === \"number\" && Number.isInteger(value)) {\n return BigInt(value)\n }\n\n if (typeof value === \"string\" && /^-?\\d+$/.test(value)) {\n return BigInt(value)\n }\n\n throw new LakeStorageError(\n `[SixbDuckLake] Expected DuckDB column '${key}' to be an integer, got ${typeof value}.`\n )\n}\n\nexport function getOptionalBigIntLike(row: DuckDbRow, key: string): bigint | undefined {\n const value = row[key]\n if (value === null || value === undefined) {\n return undefined\n }\n\n return getBigIntLike(row, key)\n}\n\nexport function getDate(row: DuckDbRow, key: string): Date {\n const value = row[key]\n if (value instanceof Date) {\n return value\n }\n\n if (typeof value === \"string\") {\n return new Date(value)\n }\n\n throw new LakeStorageError(\n `[SixbDuckLake] Expected DuckDB column '${key}' to be a date, got ${typeof value}.`\n )\n}\n",
7
7
  "import { LakeStorageError } from \"@sixb/core/lake-storage\"\n\n/**\n * Prefix used for all Sixb dataset tables inside the DuckLake schema.\n */\nexport const DATASET_TABLE_PREFIX = \"sixb__ds__\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder(\"utf-8\", { fatal: true })\n\nfunction isInlineByte(byte: number): boolean {\n return (byte >= 0x61 && byte <= 0x7a) || (byte >= 0x30 && byte <= 0x39)\n}\n\nfunction isHexPair(value: string): boolean {\n return /^[0-9a-f]{2}$/.test(value)\n}\n\n/**\n * Encode a Sixb dataset id into a SQL identifier-safe table suffix.\n *\n * Common lowercase dotted ids stay readable by mapping \".\" to \"__\". Literal\n * underscores and all other non-inline UTF-8 bytes are encoded as \"_xx\" hex\n * escapes so decoding is collision-free.\n */\nfunction encodeDatasetId(datasetId: string): string {\n if (datasetId.trim().length === 0) {\n throw new LakeStorageError(\"[SixbDuckLake] Dataset id must not be empty.\")\n }\n\n let encoded = \"\"\n for (const byte of textEncoder.encode(datasetId)) {\n if (isInlineByte(byte)) {\n encoded += String.fromCharCode(byte)\n } else if (byte === 0x2e) {\n encoded += \"__\"\n } else {\n encoded += `_${byte.toString(16).padStart(2, \"0\")}`\n }\n }\n\n return encoded\n}\n\n/**\n * Decode a table suffix created by `encodeDatasetId`.\n *\n * Returns null for malformed provider table names so metadata scans can filter\n * defensively instead of throwing on unrelated tables.\n */\nfunction decodeDatasetId(encoded: string): string | null {\n if (encoded.length === 0) {\n return null\n }\n\n const bytes: number[] = []\n let index = 0\n\n while (index < encoded.length) {\n const char = encoded[index]\n const byte = char.charCodeAt(0)\n\n if (isInlineByte(byte)) {\n bytes.push(byte)\n index += 1\n continue\n }\n\n if (char !== \"_\") {\n return null\n }\n\n if (encoded[index + 1] === \"_\") {\n bytes.push(0x2e)\n index += 2\n continue\n }\n\n const hex = encoded.slice(index + 1, index + 3)\n if (!isHexPair(hex)) {\n return null\n }\n\n bytes.push(Number.parseInt(hex, 16))\n index += 3\n }\n\n try {\n return textDecoder.decode(new Uint8Array(bytes))\n } catch {\n return null\n }\n}\n\n/**\n * Convert a Sixb dataset id to its physical DuckLake table name.\n */\nexport function encodeDatasetTableName(datasetId: string): string {\n return `${DATASET_TABLE_PREFIX}${encodeDatasetId(datasetId)}`\n}\n\n/** Current source-ordering state, deliberately outside the dataset table namespace. */\nexport function encodeDatasetSequenceTableName(datasetId: string): string {\n return `sixb__seq__${encodeDatasetTableName(datasetId)}`\n}\n\n/**\n * Decode a physical DuckLake table name back to a Sixb dataset id.\n */\nexport function decodeDatasetTableName(tableName: string): string | null {\n if (!tableName.startsWith(DATASET_TABLE_PREFIX)) {\n return null\n }\n\n return decodeDatasetId(tableName.slice(DATASET_TABLE_PREFIX.length))\n}\n",
8
- "import { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type {\n AzureSecretOptions,\n DuckDbSecretOptions,\n DuckLakeCatalogOptions,\n DuckLakeStorageOptions,\n GcsSecretOptions,\n PostgresDuckLakeCatalogOptions,\n R2SecretOptions,\n S3SecretOptions,\n} from \"../types\"\n\nconst DEFAULT_ALIAS = \"sixb_lake\"\n\n/**\n * Resolve the DuckLake attachment alias used by all provider SQL.\n */\nexport function duckLakeAlias(options: Pick<DuckLakeStorageOptions, \"alias\">): string {\n return options.alias ?? DEFAULT_ALIAS\n}\n\n/**\n * DuckLake exposes catalog metadata through an attached DuckDB database whose\n * name is derived from the user-facing DuckLake alias.\n */\nfunction duckLakeMetadataCatalog(options: Pick<DuckLakeStorageOptions, \"alias\">): string {\n return `__ducklake_metadata_${duckLakeAlias(options)}`\n}\n\n/**\n * Configure the PostgreSQL extension pool used by DuckLake's attached metadata\n * catalog. DuckDB worker threads can otherwise pin pooled Postgres connections\n * in the thread-local cache until the pool is exhausted during repeated\n * DuckLake metadata reads.\n */\nexport function buildConfigurePostgresMetadataPoolSql(\n options: Pick<DuckLakeStorageOptions, \"alias\" | \"postgresPool\">\n): string {\n const parameters = [\n `catalog_name=${quoteSqlString(duckLakeMetadataCatalog(options))}`,\n ...postgresPoolParameters(options.postgresPool).map(({ name, value }) => `${name}=${value}`),\n ]\n\n return `FROM postgres_configure_pool(${parameters.join(\", \")})`\n}\n\n/**\n * Configure DuckDB's PostgreSQL extension before ATTACH. These settings only\n * affect databases attached after they are set.\n */\nexport function buildSetPostgresPoolSql(\n options: Pick<DuckLakeStorageOptions, \"postgresPool\">\n): readonly string[] {\n return postgresPoolParameters(options.postgresPool).map(\n ({ name, value }) => `SET pg_pool_${name} = ${value}`\n )\n}\n\n/**\n * Render a fully-qualified DuckLake metadata table path.\n *\n * PostgreSQL catalogs expose DuckLake metadata tables under the configured\n * metadata schema inside the attached metadata catalog. Local catalogs use\n * DuckDB's default `main` schema.\n */\nexport function duckLakeMetadataTableName(\n options: Pick<DuckLakeStorageOptions, \"alias\" | \"catalog\">,\n tableName: string\n): string {\n const schemaName =\n options.catalog.type === \"postgres\" ? (options.catalog.metadataSchema ?? \"main\") : \"main\"\n\n return `${quoteIdentifier(duckLakeMetadataCatalog(options))}.${quoteIdentifier(\n schemaName\n )}.${quoteIdentifier(tableName)}`\n}\n\n/**\n * Quote a SQL identifier after validating it is already identifier-shaped.\n *\n * Dataset table names are produced by `names.ts`; user text should never be\n * passed here without first going through a deterministic encoder.\n */\nexport function quoteIdentifier(identifier: string): string {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(identifier)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid SQL identifier '${identifier}'.`)\n }\n\n return `\"${identifier}\"`\n}\n\n/**\n * Quote a SQL string literal for DDL statements that DuckDB does not parameterize.\n */\nexport function quoteSqlString(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`\n}\n\nexport function quoteSqlStringList(values: readonly string[]): string {\n return values.map((value) => quoteSqlString(value)).join(\", \")\n}\n\n/**\n * Render a fully-qualified table path.\n */\nexport function qualifiedTableName(\n options: Pick<DuckLakeStorageOptions, \"alias\">,\n tableName: string\n): string {\n return `${quoteIdentifier(duckLakeAlias(options))}.main.${quoteIdentifier(tableName)}`\n}\n\n/**\n * Build the catalog URI expected by DuckLake's ATTACH statement.\n */\nexport function catalogUri(catalog: DuckLakeCatalogOptions): string {\n switch (catalog.type) {\n case \"duckdb\":\n return `ducklake:${catalog.path}`\n case \"sqlite\":\n return `ducklake:sqlite:${catalog.path}`\n case \"postgres\":\n return `ducklake:postgres:${postgresConnectionString(catalog)}`\n case \"custom\":\n return `ducklake:${catalog.uri}`\n }\n}\n\n/**\n * Render typed PostgreSQL options to the libpq connection string DuckLake expects.\n */\nexport function postgresConnectionString(catalog: PostgresDuckLakeCatalogOptions): string {\n const parameters: string[] = []\n const names = new Set<string>()\n\n appendPostgresConnectionParameter(parameters, names, \"dbname\", catalog.database)\n appendPostgresConnectionParameter(parameters, names, \"host\", catalog.host)\n appendPostgresConnectionParameter(parameters, names, \"port\", catalog.port)\n appendPostgresConnectionParameter(parameters, names, \"user\", catalog.user)\n appendPostgresConnectionParameter(parameters, names, \"password\", catalog.password)\n appendPostgresConnectionParameter(parameters, names, \"sslmode\", catalog.sslMode)\n appendPostgresConnectionParameter(parameters, names, \"application_name\", catalog.applicationName)\n appendPostgresConnectionParameter(\n parameters,\n names,\n \"connect_timeout\",\n catalog.connectTimeoutSeconds\n )\n\n for (const [name, value] of Object.entries(catalog.parameters ?? {})) {\n appendPostgresConnectionParameter(parameters, names, name, value)\n }\n\n return parameters.join(\" \")\n}\n\n/**\n * Catalog extensions that must be available before ATTACH.\n */\nfunction catalogExtensions(catalog: DuckLakeCatalogOptions): readonly string[] {\n switch (catalog.type) {\n case \"duckdb\":\n return []\n case \"sqlite\":\n return [\"sqlite\"]\n case \"postgres\":\n return [\"postgres\"]\n case \"custom\":\n return catalog.extensions ?? []\n }\n}\n\n/**\n * Extensions needed by the catalog, data path, and typed secrets.\n */\nexport function requiredExtensions(options: DuckLakeStorageOptions): readonly string[] {\n const extensions = new Set<string>(catalogExtensions(options.catalog))\n\n for (const extension of storageExtensions(options.dataPath)) {\n extensions.add(extension)\n }\n\n for (const secret of options.secrets ?? []) {\n for (const extension of secretExtensions(secret)) {\n extensions.add(extension)\n }\n }\n\n return [...extensions]\n}\n\n/**\n * Build a typed DuckDB CREATE SECRET statement.\n */\nexport function buildCreateSecretSql(secret: DuckDbSecretOptions): string {\n const persistence = secret.persistent ? \"PERSISTENT \" : \"TEMPORARY \"\n const nameSql = secret.name === undefined ? \"\" : `${quoteIdentifier(secret.name)} `\n return `CREATE OR REPLACE ${persistence}SECRET ${nameSql}(${secretParameters(secret).join(\", \")})`\n}\n\n/**\n * Build the DuckLake ATTACH statement from public provider options.\n */\nexport function buildAttachSql(options: DuckLakeStorageOptions): string {\n const parameters: string[] = []\n\n if (options.dataPath !== undefined) {\n parameters.push(`DATA_PATH ${quoteSqlString(options.dataPath)}`)\n }\n\n parameters.push(`CREATE_IF_NOT_EXISTS ${options.createIfNotExists ?? true}`)\n\n if (options.readOnly) {\n parameters.push(\"READ_ONLY\")\n }\n\n if (options.catalog.type === \"postgres\" && options.catalog.metadataSchema !== undefined) {\n parameters.push(`METADATA_SCHEMA ${quoteSqlString(options.catalog.metadataSchema)}`)\n }\n\n if (\n options.catalog.type === \"custom\" &&\n options.catalog.metadataParameters !== undefined &&\n Object.keys(options.catalog.metadataParameters).length > 0\n ) {\n const entries = Object.entries(options.catalog.metadataParameters).map(\n ([key, value]) => `${quoteSqlString(key)}: ${quoteSqlString(value)}`\n )\n parameters.push(`METADATA_PARAMETERS MAP {${entries.join(\", \")}}`)\n }\n\n return `ATTACH ${quoteSqlString(catalogUri(options.catalog))} AS ${quoteIdentifier(\n duckLakeAlias(options)\n )} (${parameters.join(\", \")})`\n}\n\nfunction storageExtensions(path: string | undefined): readonly string[] {\n if (path === undefined) {\n return []\n }\n\n switch (pathScheme(path)) {\n case \"s3\":\n case \"r2\":\n case \"gcs\":\n case \"gs\":\n return [\"httpfs\"]\n case \"az\":\n case \"azure\":\n case \"abfss\":\n return [\"azure\"]\n default:\n return []\n }\n}\n\n/**\n * The single source of truth for PostgreSQL pool options. Both the pre-attach\n * `SET pg_pool_*` form and the post-attach `postgres_configure_pool(...)` form\n * render from this list so the two stay in sync. `name` is the unprefixed\n * option key; `value` is already rendered (numbers/booleans bare, strings\n * quoted as SQL literals).\n */\nfunction postgresPoolParameters(\n pool: DuckLakeStorageOptions[\"postgresPool\"]\n): readonly { readonly name: string; readonly value: string }[] {\n const parameters: { name: string; value: string }[] = [\n { name: \"enable_thread_local_cache\", value: String(pool?.enableThreadLocalCache ?? false) },\n ]\n\n appendPoolNumber(parameters, \"max_connections\", pool?.maxConnections)\n appendPoolNumber(parameters, \"wait_timeout_millis\", pool?.waitTimeoutMillis)\n appendPoolNumber(parameters, \"max_lifetime_millis\", pool?.maxLifetimeMillis)\n appendPoolNumber(parameters, \"idle_timeout_millis\", pool?.idleTimeoutMillis)\n\n if (pool?.enableReaperThread !== undefined) {\n parameters.push({ name: \"enable_reaper_thread\", value: String(pool.enableReaperThread) })\n }\n\n if (pool?.healthCheckQuery !== undefined) {\n parameters.push({ name: \"health_check_query\", value: quoteSqlString(pool.healthCheckQuery) })\n }\n\n return parameters\n}\n\nfunction appendPoolNumber(\n parameters: { name: string; value: string }[],\n name: string,\n value: number | undefined\n): void {\n if (value === undefined) {\n return\n }\n\n parameters.push({ name, value: String(value) })\n}\n\nfunction secretExtensions(secret: DuckDbSecretOptions): readonly string[] {\n switch (secret.type) {\n case \"s3\":\n case \"r2\":\n case \"gcs\":\n return [\"httpfs\"]\n case \"azure\":\n return [\"azure\"]\n }\n}\n\nfunction secretParameters(secret: DuckDbSecretOptions): readonly string[] {\n switch (secret.type) {\n case \"s3\":\n return withCommonSecretParameters(secret, [\n \"TYPE s3\",\n ...s3ApiSecretParameters(secret),\n ...optionalStringParameter(\"KMS_KEY_ID\", secret.kmsKeyId),\n ...optionalBooleanParameter(\"REQUESTER_PAYS\", secret.requesterPays),\n ])\n case \"r2\":\n return withCommonSecretParameters(secret, [\n \"TYPE r2\",\n ...s3ApiSecretParameters(secret),\n ...optionalStringParameter(\"ACCOUNT_ID\", secret.accountId),\n ])\n case \"gcs\":\n return withCommonSecretParameters(secret, [\"TYPE gcs\", ...s3ApiSecretParameters(secret)])\n case \"azure\":\n return withCommonSecretParameters(secret, azureSecretParameters(secret))\n }\n}\n\nfunction s3ApiSecretParameters(\n secret: S3SecretOptions | R2SecretOptions | GcsSecretOptions\n): readonly string[] {\n return [\n ...optionalIdentifierParameter(\"PROVIDER\", secret.provider),\n ...optionalStringParameter(\"KEY_ID\", secret.keyId),\n ...optionalStringParameter(\"SECRET\", secret.secret),\n ...optionalStringParameter(\"SESSION_TOKEN\", secret.sessionToken),\n ...optionalStringParameter(\"REGION\", secret.region),\n ...optionalStringParameter(\"ENDPOINT\", secret.endpoint),\n ...optionalStringParameter(\"URL_STYLE\", secret.urlStyle),\n ...optionalBooleanParameter(\"USE_SSL\", secret.useSsl),\n ...optionalBooleanParameter(\"VERIFY_SSL\", secret.verifySsl),\n ...optionalStringParameter(\"CHAIN\", secret.chain),\n ...optionalStringParameter(\"PROFILE\", secret.profile),\n ]\n}\n\nfunction azureSecretParameters(secret: AzureSecretOptions): readonly string[] {\n if (\n secret.tenantId !== undefined ||\n secret.clientId !== undefined ||\n secret.clientSecret !== undefined\n ) {\n return [\n \"TYPE azure\",\n \"PROVIDER service_principal\",\n ...optionalStringParameter(\"TENANT_ID\", secret.tenantId),\n ...optionalStringParameter(\"CLIENT_ID\", secret.clientId),\n ...optionalStringParameter(\"CLIENT_SECRET\", secret.clientSecret),\n ...optionalStringParameter(\"ACCOUNT_NAME\", secret.accountName),\n ]\n }\n\n const connectionString =\n secret.connectionString ??\n (secret.accountName !== undefined && secret.accountKey !== undefined\n ? `DefaultEndpointsProtocol=https;AccountName=${secret.accountName};AccountKey=${secret.accountKey};EndpointSuffix=core.windows.net`\n : undefined)\n\n if (connectionString !== undefined) {\n return [\"TYPE azure\", ...optionalStringParameter(\"CONNECTION_STRING\", connectionString)]\n }\n\n return [\n \"TYPE azure\",\n \"PROVIDER credential_chain\",\n ...optionalStringParameter(\"ACCOUNT_NAME\", secret.accountName),\n ]\n}\n\nfunction withCommonSecretParameters(\n secret: DuckDbSecretOptions,\n parameters: readonly string[]\n): readonly string[] {\n return [...parameters, ...optionalStringParameter(\"SCOPE\", secret.scope)]\n}\n\nfunction optionalStringParameter(name: string, value: string | undefined): readonly string[] {\n return value === undefined ? [] : [`${name} ${quoteSqlString(value)}`]\n}\n\nfunction optionalBooleanParameter(name: string, value: boolean | undefined): readonly string[] {\n return value === undefined ? [] : [`${name} ${value}`]\n}\n\nfunction optionalIdentifierParameter(name: string, value: string | undefined): readonly string[] {\n if (value === undefined) {\n return []\n }\n\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(value)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid SQL identifier '${value}'.`)\n }\n\n return [`${name} ${value}`]\n}\n\nfunction appendPostgresConnectionParameter(\n parameters: string[],\n names: Set<string>,\n name: string,\n value: string | number | boolean | undefined\n): void {\n if (value === undefined) {\n return\n }\n\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid PostgreSQL catalog parameter '${name}'.`)\n }\n\n const normalizedName = name.toLowerCase()\n if (names.has(normalizedName)) {\n throw new LakeStorageError(`[SixbDuckLake] Duplicate PostgreSQL catalog parameter '${name}'.`)\n }\n\n names.add(normalizedName)\n parameters.push(`${name}=${quotePostgresConnectionValue(String(value))}`)\n}\n\nfunction quotePostgresConnectionValue(value: string): string {\n return `'${value.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll(\"'\", \"\\\\'\")}'`\n}\n\nfunction pathScheme(path: string): string | null {\n const match = /^([a-z][a-z0-9+.-]*):\\/\\//i.exec(path)\n return match ? match[1].toLowerCase() : null\n}\n",
8
+ "import { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type {\n AzureSecretOptions,\n DuckDbSecretOptions,\n DuckLakeCatalogOptions,\n DuckLakeStorageOptions,\n GcsSecretOptions,\n PostgresDuckLakeCatalogOptions,\n R2SecretOptions,\n S3SecretOptions,\n} from \"../types\"\n\nconst DEFAULT_ALIAS = \"sixb_lake\"\n\n/**\n * Resolve the DuckLake attachment alias used by all provider SQL.\n */\nexport function duckLakeAlias(options: Pick<DuckLakeStorageOptions, \"alias\">): string {\n return options.alias ?? DEFAULT_ALIAS\n}\n\n/**\n * DuckLake exposes catalog metadata through an attached DuckDB database whose\n * name is derived from the user-facing DuckLake alias.\n */\nfunction duckLakeMetadataCatalog(options: Pick<DuckLakeStorageOptions, \"alias\">): string {\n return `__ducklake_metadata_${duckLakeAlias(options)}`\n}\n\n/**\n * Configure the PostgreSQL extension pool used by DuckLake's attached metadata\n * catalog. DuckDB worker threads can otherwise pin pooled Postgres connections\n * in the thread-local cache until the pool is exhausted during repeated\n * DuckLake metadata reads.\n */\nexport function buildConfigurePostgresMetadataPoolSql(\n options: Pick<DuckLakeStorageOptions, \"alias\" | \"postgresPool\">\n): string {\n const parameters = [\n `catalog_name=${quoteSqlString(duckLakeMetadataCatalog(options))}`,\n ...postgresPoolParameters(options.postgresPool).map(({ name, value }) => `${name}=${value}`),\n ]\n\n return `FROM postgres_configure_pool(${parameters.join(\", \")})`\n}\n\n/**\n * Configure DuckDB's PostgreSQL extension before ATTACH. These settings only\n * affect databases attached after they are set.\n */\nexport function buildSetPostgresPoolSql(\n options: Pick<DuckLakeStorageOptions, \"postgresPool\">\n): readonly string[] {\n return postgresPoolParameters(options.postgresPool).map(\n ({ name, value }) => `SET pg_pool_${name} = ${value}`\n )\n}\n\n/**\n * Render a fully-qualified DuckLake metadata table path.\n *\n * PostgreSQL catalogs expose DuckLake metadata tables under the configured\n * metadata schema (PostgreSQL's `public` by default) inside the attached\n * metadata catalog. Local catalogs use DuckDB's default `main` schema.\n */\nexport function duckLakeMetadataTableName(\n options: Pick<DuckLakeStorageOptions, \"alias\" | \"catalog\">,\n tableName: string\n): string {\n return `${quoteIdentifier(duckLakeMetadataCatalog(options))}.${quoteIdentifier(\n duckLakeMetadataSchema(options)\n )}.${quoteIdentifier(tableName)}`\n}\n\n/**\n * Render a metadata query that runs where the catalog lives.\n *\n * DuckDB's PostgreSQL scanner pushes comparisons and constant IN lists down to PostgreSQL, but not\n * string matching, so a query that filters on text would copy the whole column into DuckDB. On a\n * PostgreSQL catalog the query therefore runs server-side through `postgres_query`; elsewhere the\n * catalog is local and DuckDB runs it. `build` must produce SQL that both dialects accept.\n */\nexport function buildDuckLakeMetadataQuery(\n options: Pick<DuckLakeStorageOptions, \"alias\" | \"catalog\">,\n build: (table: (tableName: string) => string) => string\n): string {\n if (options.catalog.type !== \"postgres\") {\n return build((tableName) => duckLakeMetadataTableName(options, tableName))\n }\n\n // Unqualified names follow the connection's search path, as DuckLake's own writes do.\n const schema = options.catalog.metadataSchema\n const sql = build((tableName) =>\n schema === undefined\n ? quoteIdentifier(tableName)\n : `${quoteIdentifier(schema)}.${quoteIdentifier(tableName)}`\n )\n return `SELECT * FROM postgres_query(${quoteSqlString(duckLakeMetadataCatalog(options))}, ${quoteSqlString(sql)})`\n}\n\nfunction duckLakeMetadataSchema(options: Pick<DuckLakeStorageOptions, \"catalog\">): string {\n if (options.catalog.type !== \"postgres\") return \"main\"\n // Without a metadata schema DuckLake writes to PostgreSQL's default schema.\n return options.catalog.metadataSchema ?? \"public\"\n}\n\n/**\n * Quote a SQL identifier after validating it is already identifier-shaped.\n *\n * Dataset table names are produced by `names.ts`; user text should never be\n * passed here without first going through a deterministic encoder.\n */\nexport function quoteIdentifier(identifier: string): string {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(identifier)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid SQL identifier '${identifier}'.`)\n }\n\n return `\"${identifier}\"`\n}\n\n/**\n * Quote a SQL string literal for DDL statements that DuckDB does not parameterize.\n */\nexport function quoteSqlString(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`\n}\n\nexport function quoteSqlStringList(values: readonly string[]): string {\n return values.map((value) => quoteSqlString(value)).join(\", \")\n}\n\n/**\n * Render a fully-qualified table path.\n */\nexport function qualifiedTableName(\n options: Pick<DuckLakeStorageOptions, \"alias\">,\n tableName: string\n): string {\n return `${quoteIdentifier(duckLakeAlias(options))}.main.${quoteIdentifier(tableName)}`\n}\n\n/**\n * Build the catalog URI expected by DuckLake's ATTACH statement.\n */\nexport function catalogUri(catalog: DuckLakeCatalogOptions): string {\n switch (catalog.type) {\n case \"duckdb\":\n return `ducklake:${catalog.path}`\n case \"sqlite\":\n return `ducklake:sqlite:${catalog.path}`\n case \"postgres\":\n return `ducklake:postgres:${postgresConnectionString(catalog)}`\n case \"custom\":\n return `ducklake:${catalog.uri}`\n }\n}\n\n/**\n * Render typed PostgreSQL options to the libpq connection string DuckLake expects.\n */\nexport function postgresConnectionString(catalog: PostgresDuckLakeCatalogOptions): string {\n const parameters: string[] = []\n const names = new Set<string>()\n\n appendPostgresConnectionParameter(parameters, names, \"dbname\", catalog.database)\n appendPostgresConnectionParameter(parameters, names, \"host\", catalog.host)\n appendPostgresConnectionParameter(parameters, names, \"port\", catalog.port)\n appendPostgresConnectionParameter(parameters, names, \"user\", catalog.user)\n appendPostgresConnectionParameter(parameters, names, \"password\", catalog.password)\n appendPostgresConnectionParameter(parameters, names, \"sslmode\", catalog.sslMode)\n appendPostgresConnectionParameter(parameters, names, \"application_name\", catalog.applicationName)\n appendPostgresConnectionParameter(\n parameters,\n names,\n \"connect_timeout\",\n catalog.connectTimeoutSeconds\n )\n\n for (const [name, value] of Object.entries(catalog.parameters ?? {})) {\n appendPostgresConnectionParameter(parameters, names, name, value)\n }\n\n return parameters.join(\" \")\n}\n\n/**\n * Catalog extensions that must be available before ATTACH.\n */\nfunction catalogExtensions(catalog: DuckLakeCatalogOptions): readonly string[] {\n switch (catalog.type) {\n case \"duckdb\":\n return []\n case \"sqlite\":\n return [\"sqlite\"]\n case \"postgres\":\n return [\"postgres\"]\n case \"custom\":\n return catalog.extensions ?? []\n }\n}\n\n/**\n * Extensions needed by the catalog, data path, and typed secrets.\n */\nexport function requiredExtensions(options: DuckLakeStorageOptions): readonly string[] {\n const extensions = new Set<string>(catalogExtensions(options.catalog))\n\n for (const extension of storageExtensions(options.dataPath)) {\n extensions.add(extension)\n }\n\n for (const secret of options.secrets ?? []) {\n for (const extension of secretExtensions(secret)) {\n extensions.add(extension)\n }\n }\n\n return [...extensions]\n}\n\n/**\n * Build a typed DuckDB CREATE SECRET statement.\n */\nexport function buildCreateSecretSql(secret: DuckDbSecretOptions): string {\n const persistence = secret.persistent ? \"PERSISTENT \" : \"TEMPORARY \"\n const nameSql = secret.name === undefined ? \"\" : `${quoteIdentifier(secret.name)} `\n return `CREATE OR REPLACE ${persistence}SECRET ${nameSql}(${secretParameters(secret).join(\", \")})`\n}\n\n/**\n * Build the DuckLake ATTACH statement from public provider options.\n */\nexport function buildAttachSql(options: DuckLakeStorageOptions): string {\n const parameters: string[] = []\n\n if (options.dataPath !== undefined) {\n parameters.push(`DATA_PATH ${quoteSqlString(options.dataPath)}`)\n }\n\n parameters.push(`CREATE_IF_NOT_EXISTS ${options.createIfNotExists ?? true}`)\n\n if (options.readOnly) {\n parameters.push(\"READ_ONLY\")\n }\n\n if (options.catalog.type === \"postgres\" && options.catalog.metadataSchema !== undefined) {\n parameters.push(`METADATA_SCHEMA ${quoteSqlString(options.catalog.metadataSchema)}`)\n }\n\n if (\n options.catalog.type === \"custom\" &&\n options.catalog.metadataParameters !== undefined &&\n Object.keys(options.catalog.metadataParameters).length > 0\n ) {\n const entries = Object.entries(options.catalog.metadataParameters).map(\n ([key, value]) => `${quoteSqlString(key)}: ${quoteSqlString(value)}`\n )\n parameters.push(`METADATA_PARAMETERS MAP {${entries.join(\", \")}}`)\n }\n\n return `ATTACH ${quoteSqlString(catalogUri(options.catalog))} AS ${quoteIdentifier(\n duckLakeAlias(options)\n )} (${parameters.join(\", \")})`\n}\n\nfunction storageExtensions(path: string | undefined): readonly string[] {\n if (path === undefined) {\n return []\n }\n\n switch (pathScheme(path)) {\n case \"s3\":\n case \"r2\":\n case \"gcs\":\n case \"gs\":\n return [\"httpfs\"]\n case \"az\":\n case \"azure\":\n case \"abfss\":\n return [\"azure\"]\n default:\n return []\n }\n}\n\n/**\n * The single source of truth for PostgreSQL pool options. Both the pre-attach\n * `SET pg_pool_*` form and the post-attach `postgres_configure_pool(...)` form\n * render from this list so the two stay in sync. `name` is the unprefixed\n * option key; `value` is already rendered (numbers/booleans bare, strings\n * quoted as SQL literals).\n */\nfunction postgresPoolParameters(\n pool: DuckLakeStorageOptions[\"postgresPool\"]\n): readonly { readonly name: string; readonly value: string }[] {\n const parameters: { name: string; value: string }[] = [\n { name: \"enable_thread_local_cache\", value: String(pool?.enableThreadLocalCache ?? false) },\n ]\n\n appendPoolNumber(parameters, \"max_connections\", pool?.maxConnections)\n appendPoolNumber(parameters, \"wait_timeout_millis\", pool?.waitTimeoutMillis)\n appendPoolNumber(parameters, \"max_lifetime_millis\", pool?.maxLifetimeMillis)\n appendPoolNumber(parameters, \"idle_timeout_millis\", pool?.idleTimeoutMillis)\n\n if (pool?.enableReaperThread !== undefined) {\n parameters.push({ name: \"enable_reaper_thread\", value: String(pool.enableReaperThread) })\n }\n\n if (pool?.healthCheckQuery !== undefined) {\n parameters.push({ name: \"health_check_query\", value: quoteSqlString(pool.healthCheckQuery) })\n }\n\n return parameters\n}\n\nfunction appendPoolNumber(\n parameters: { name: string; value: string }[],\n name: string,\n value: number | undefined\n): void {\n if (value === undefined) {\n return\n }\n\n parameters.push({ name, value: String(value) })\n}\n\nfunction secretExtensions(secret: DuckDbSecretOptions): readonly string[] {\n switch (secret.type) {\n case \"s3\":\n case \"r2\":\n case \"gcs\":\n return [\"httpfs\"]\n case \"azure\":\n return [\"azure\"]\n }\n}\n\nfunction secretParameters(secret: DuckDbSecretOptions): readonly string[] {\n switch (secret.type) {\n case \"s3\":\n return withCommonSecretParameters(secret, [\n \"TYPE s3\",\n ...s3ApiSecretParameters(secret),\n ...optionalStringParameter(\"KMS_KEY_ID\", secret.kmsKeyId),\n ...optionalBooleanParameter(\"REQUESTER_PAYS\", secret.requesterPays),\n ])\n case \"r2\":\n return withCommonSecretParameters(secret, [\n \"TYPE r2\",\n ...s3ApiSecretParameters(secret),\n ...optionalStringParameter(\"ACCOUNT_ID\", secret.accountId),\n ])\n case \"gcs\":\n return withCommonSecretParameters(secret, [\"TYPE gcs\", ...s3ApiSecretParameters(secret)])\n case \"azure\":\n return withCommonSecretParameters(secret, azureSecretParameters(secret))\n }\n}\n\nfunction s3ApiSecretParameters(\n secret: S3SecretOptions | R2SecretOptions | GcsSecretOptions\n): readonly string[] {\n return [\n ...optionalIdentifierParameter(\"PROVIDER\", secret.provider),\n ...optionalStringParameter(\"KEY_ID\", secret.keyId),\n ...optionalStringParameter(\"SECRET\", secret.secret),\n ...optionalStringParameter(\"SESSION_TOKEN\", secret.sessionToken),\n ...optionalStringParameter(\"REGION\", secret.region),\n ...optionalStringParameter(\"ENDPOINT\", secret.endpoint),\n ...optionalStringParameter(\"URL_STYLE\", secret.urlStyle),\n ...optionalBooleanParameter(\"USE_SSL\", secret.useSsl),\n ...optionalBooleanParameter(\"VERIFY_SSL\", secret.verifySsl),\n ...optionalStringParameter(\"CHAIN\", secret.chain),\n ...optionalStringParameter(\"PROFILE\", secret.profile),\n ]\n}\n\nfunction azureSecretParameters(secret: AzureSecretOptions): readonly string[] {\n if (\n secret.tenantId !== undefined ||\n secret.clientId !== undefined ||\n secret.clientSecret !== undefined\n ) {\n return [\n \"TYPE azure\",\n \"PROVIDER service_principal\",\n ...optionalStringParameter(\"TENANT_ID\", secret.tenantId),\n ...optionalStringParameter(\"CLIENT_ID\", secret.clientId),\n ...optionalStringParameter(\"CLIENT_SECRET\", secret.clientSecret),\n ...optionalStringParameter(\"ACCOUNT_NAME\", secret.accountName),\n ]\n }\n\n const connectionString =\n secret.connectionString ??\n (secret.accountName !== undefined && secret.accountKey !== undefined\n ? `DefaultEndpointsProtocol=https;AccountName=${secret.accountName};AccountKey=${secret.accountKey};EndpointSuffix=core.windows.net`\n : undefined)\n\n if (connectionString !== undefined) {\n return [\"TYPE azure\", ...optionalStringParameter(\"CONNECTION_STRING\", connectionString)]\n }\n\n return [\n \"TYPE azure\",\n \"PROVIDER credential_chain\",\n ...optionalStringParameter(\"ACCOUNT_NAME\", secret.accountName),\n ]\n}\n\nfunction withCommonSecretParameters(\n secret: DuckDbSecretOptions,\n parameters: readonly string[]\n): readonly string[] {\n return [...parameters, ...optionalStringParameter(\"SCOPE\", secret.scope)]\n}\n\nfunction optionalStringParameter(name: string, value: string | undefined): readonly string[] {\n return value === undefined ? [] : [`${name} ${quoteSqlString(value)}`]\n}\n\nfunction optionalBooleanParameter(name: string, value: boolean | undefined): readonly string[] {\n return value === undefined ? [] : [`${name} ${value}`]\n}\n\nfunction optionalIdentifierParameter(name: string, value: string | undefined): readonly string[] {\n if (value === undefined) {\n return []\n }\n\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(value)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid SQL identifier '${value}'.`)\n }\n\n return [`${name} ${value}`]\n}\n\nfunction appendPostgresConnectionParameter(\n parameters: string[],\n names: Set<string>,\n name: string,\n value: string | number | boolean | undefined\n): void {\n if (value === undefined) {\n return\n }\n\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid PostgreSQL catalog parameter '${name}'.`)\n }\n\n const normalizedName = name.toLowerCase()\n if (names.has(normalizedName)) {\n throw new LakeStorageError(`[SixbDuckLake] Duplicate PostgreSQL catalog parameter '${name}'.`)\n }\n\n names.add(normalizedName)\n parameters.push(`${name}=${quotePostgresConnectionValue(String(value))}`)\n}\n\nfunction quotePostgresConnectionValue(value: string): string {\n return `'${value.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll(\"'\", \"\\\\'\")}'`\n}\n\nfunction pathScheme(path: string): string | null {\n const match = /^([a-z][a-z0-9+.-]*):\\/\\//i.exec(path)\n return match ? match[1].toLowerCase() : null\n}\n",
9
9
  "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",
10
10
  "import type { DatasetColumnDefinition, DatasetColumnType, DatasetSchema, FileRef } from \"@sixb/core\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport { DUCKDB_COLUMN_TYPES, findDatasetColumnTypeForDuckDbSql } from \"./duckdb-column-types\"\nimport { normalizeDuckDbDecimalValue } from \"./duckdb-decimal\"\nimport { quoteIdentifier } from \"./sql\"\n\n/**\n * Normalized column metadata read from DuckDB/DuckLake introspection queries.\n */\nexport interface DuckDbColumnMetadata {\n readonly name: string\n readonly type: string\n readonly nullable: boolean\n}\n\n/**\n * Map a Sixb dataset column type to the DuckDB type used in CREATE TABLE.\n */\nexport function datasetColumnTypeToDuckDbSql(type: DatasetColumnType): string {\n return DUCKDB_COLUMN_TYPES[type].sql\n}\n\n/**\n * Reconstruct a Sixb dataset column type from DuckDB column metadata.\n */\nexport function duckDbTypeToDatasetColumnType(typeSql: string): DatasetColumnType {\n const type = findDatasetColumnTypeForDuckDbSql(typeSql)\n if (type) {\n return type\n }\n\n throw new LakeStorageError(\n `[SixbDuckLake] DuckDB column type '${typeSql}' cannot be mapped to a Sixb dataset column type.`\n )\n}\n\n/**\n * Render one Sixb dataset column as DuckDB DDL.\n */\nexport function datasetColumnToDuckDbSql(column: DatasetColumnDefinition): string {\n const nullableSql = column.nullable ? \"\" : \" NOT NULL\"\n return `${quoteIdentifier(column.name)} ${datasetColumnTypeToDuckDbSql(column.type)}${nullableSql}`\n}\n\n/**\n * Render the column list used by CREATE TABLE and staging table DDL.\n */\nexport function datasetSchemaToDuckDbColumnsSql(schema: DatasetSchema): string {\n return schema.columns.map((column) => datasetColumnToDuckDbSql(column)).join(\", \")\n}\n\n/** Render a dataset schema for merge staging, where delete rows leave non-key values null. */\nexport function datasetSchemaToDuckDbNullableColumnsSql(schema: DatasetSchema): string {\n return schema.columns\n .map((column) => `${quoteIdentifier(column.name)} ${datasetColumnTypeToDuckDbSql(column.type)}`)\n .join(\", \")\n}\n\n/**\n * Render the column list used by INSERT ... SELECT operations.\n */\nexport function datasetSchemaColumnNamesSql(schema: DatasetSchema): string {\n return schema.columns.map((column) => quoteIdentifier(column.name)).join(\", \")\n}\n\n/**\n * Convert DuckDB column metadata back into a Sixb dataset schema.\n */\nexport function duckDbColumnsToDatasetSchema(\n columns: readonly DuckDbColumnMetadata[]\n): DatasetSchema {\n return {\n columns: columns.map((column) => ({\n name: column.name,\n type: duckDbTypeToDatasetColumnType(column.type),\n ...(column.nullable ? { nullable: true } : {}),\n })),\n }\n}\n\nexport function normalizeReadValue(value: unknown, column: DatasetColumnDefinition): unknown {\n if (value === null || value === undefined) {\n return null\n }\n\n switch (column.type) {\n case \"int64\":\n return typeof value === \"bigint\" ? value.toString() : value\n case \"decimal\":\n return normalizeDuckDbDecimalValue(value, column.name)\n case \"date\":\n return value instanceof Date ? value.toISOString().slice(0, 10) : String(value)\n case \"timestamp\":\n return value instanceof Date ? value.toISOString() : String(value)\n case \"json\":\n return typeof value === \"string\" ? JSON.parse(value) : value\n case \"fileRef\":\n return normalizeFileRef(value)\n default:\n return value\n }\n}\n\nfunction normalizeFileRef(value: unknown): FileRef {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new LakeStorageError(\"[SixbDuckLake] DuckDB fileRef value must be a struct.\")\n }\n\n const record = value as Record<string, unknown>\n return {\n blobId: getStringField(record, \"blobId\"),\n digest: getStringField(record, \"digest\") as FileRef[\"digest\"],\n sizeBytes: getIntegerField(record, \"sizeBytes\"),\n fileName: getOptionalStringField(record, \"fileName\"),\n mediaType: getOptionalStringField(record, \"mediaType\"),\n logicalPath: getOptionalStringField(record, \"logicalPath\"),\n }\n}\n\nfunction getStringField(record: Readonly<Record<string, unknown>>, key: string): string {\n const value = record[key]\n if (typeof value !== \"string\") {\n throw new LakeStorageError(`[SixbDuckLake] DuckDB fileRef field '${key}' must be a string.`)\n }\n\n return value\n}\n\nfunction getOptionalStringField(\n record: Readonly<Record<string, unknown>>,\n key: string\n): string | undefined {\n const value = record[key]\n if (value === null || value === undefined) {\n return undefined\n }\n\n if (typeof value !== \"string\") {\n throw new LakeStorageError(`[SixbDuckLake] DuckDB fileRef field '${key}' must be a string.`)\n }\n\n return value\n}\n\nfunction getIntegerField(record: Readonly<Record<string, unknown>>, key: string): number {\n const value = record[key]\n if (typeof value === \"number\" && Number.isInteger(value)) {\n return value\n }\n\n if (typeof value === \"bigint\") {\n return Number(value)\n }\n\n throw new LakeStorageError(`[SixbDuckLake] DuckDB fileRef field '${key}' must be an integer.`)\n}\n",
11
11
  "import type { DatasetColumnType } from \"@sixb/core\"\n\ninterface DuckDbColumnTypeMapping {\n readonly sql: string\n readonly matches: (typeSql: string) => boolean\n}\n\ninterface DuckDbDecimalTypeMapping extends DuckDbColumnTypeMapping {\n readonly precision: number\n readonly scale: number\n}\n\nfunction normalizeDuckDbTypeSql(typeSql: string): string {\n return typeSql\n .trim()\n .toUpperCase()\n .replace(/\\s+/g, \" \")\n .replace(/\\s*([(),])\\s*/g, \"$1\")\n}\n\nfunction defineDuckDbColumnType<const Sql extends string>(\n sql: Sql,\n aliases: readonly string[] = []\n): DuckDbColumnTypeMapping & { readonly sql: Sql } {\n const acceptedTypes = new Set([sql, ...aliases].map(normalizeDuckDbTypeSql))\n return {\n sql,\n matches: (typeSql) => acceptedTypes.has(normalizeDuckDbTypeSql(typeSql)),\n }\n}\n\nfunction defineDuckDbDecimalType(precision: number, scale: number): DuckDbDecimalTypeMapping {\n return {\n ...defineDuckDbColumnType(`DECIMAL(${precision}, ${scale})`),\n precision,\n scale,\n }\n}\n\n/**\n * DuckDB representations used for every Sixb dataset column type.\n *\n * Each entry owns both its CREATE TABLE representation and the metadata\n * spellings accepted when reconstructing a Sixb dataset schema.\n */\nexport const DUCKDB_COLUMN_TYPES = {\n string: defineDuckDbColumnType(\"VARCHAR\"),\n boolean: defineDuckDbColumnType(\"BOOLEAN\"),\n int64: defineDuckDbColumnType(\"BIGINT\", [\"INT64\"]),\n float64: defineDuckDbColumnType(\"DOUBLE\", [\"FLOAT64\"]),\n decimal: defineDuckDbDecimalType(38, 9),\n date: defineDuckDbColumnType(\"DATE\"),\n timestamp: defineDuckDbColumnType(\"TIMESTAMPTZ\", [\"TIMESTAMP WITH TIME ZONE\"]),\n json: defineDuckDbColumnType(\"JSON\"),\n fileRef: defineDuckDbColumnType(\n \"STRUCT(blobId VARCHAR, digest VARCHAR, sizeBytes BIGINT, fileName VARCHAR, mediaType VARCHAR, logicalPath VARCHAR)\"\n ),\n} satisfies Record<DatasetColumnType, DuckDbColumnTypeMapping>\n\nexport function findDatasetColumnTypeForDuckDbSql(typeSql: string): DatasetColumnType | undefined {\n for (const type of Object.keys(DUCKDB_COLUMN_TYPES) as DatasetColumnType[]) {\n if (DUCKDB_COLUMN_TYPES[type].matches(typeSql)) {\n return type\n }\n }\n\n return undefined\n}\n",
@@ -22,7 +22,7 @@
22
22
  "import type { DatasetDefinition } from \"@sixb/core\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport {\n getBigIntLike,\n getBoolean,\n getOptionalBigIntLike,\n getOptionalString,\n getString,\n} from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport {\n DATASET_SEQUENCE_COLUMN_COMMENT,\n type DuckLakeCatalogColumn,\n duckLakeCatalogColumnsToDatasetPrimaryKey,\n duckLakeCatalogColumnsToDatasetSchema,\n} from \"./ducklake-catalog-schema\"\nimport { decodeDatasetTableName, encodeDatasetTableName } from \"./names\"\nimport { duckLakeAlias, duckLakeMetadataTableName, quoteSqlString, quoteSqlStringList } from \"./sql\"\n\ninterface CurrentDatasetTable {\n readonly datasetId: string\n readonly tableName: string\n readonly comment?: string\n}\n\ninterface CurrentDatasetPartition {\n readonly tableName: string\n readonly columnName: string\n readonly transform: string\n}\n\nexport interface ReadCurrentDatasetDefinitionsInput {\n readonly options: DuckLakeStorageOptions\n readonly runtime: DuckDbQueryRuntime\n readonly datasetIds?: readonly string[]\n}\n\nexport async function readCurrentDatasetDefinitions(\n input: ReadCurrentDatasetDefinitionsInput\n): Promise<Map<string, DatasetDefinition>> {\n if (input.datasetIds?.length === 0) {\n return new Map()\n }\n\n const tables = await readCurrentDatasetTables(input, input.datasetIds)\n if (tables.length === 0) {\n return new Map()\n }\n\n const tableNames = tables.map((table) => table.tableName)\n const columnsByTableName = groupColumnsByTableName(\n await readCurrentDatasetColumns(input, tableNames)\n )\n const partitionByTableName = groupPartitionsByTableName(\n await readCurrentDatasetPartitions(input, tableNames)\n )\n const definitions = new Map<string, DatasetDefinition>()\n\n for (const table of tables) {\n const columns = columnsByTableName.get(table.tableName) ?? []\n const primaryKey = duckLakeCatalogColumnsToDatasetPrimaryKey(table.tableName, columns)\n const sequenceBy = columns.find(\n (column) => column.comment === DATASET_SEQUENCE_COLUMN_COMMENT\n )?.columnName\n const partitionBy = partitionByTableName.get(table.tableName) ?? []\n definitions.set(table.datasetId, {\n kind: \"dataset\",\n id: table.datasetId,\n schema: duckLakeCatalogColumnsToDatasetSchema(table.tableName, columns),\n ...(primaryKey !== undefined ? { primaryKey } : {}),\n ...(sequenceBy !== undefined ? { sequenceBy } : {}),\n ...(partitionBy.length > 0 ? { partitionBy } : {}),\n ...(table.comment !== undefined ? { description: table.comment } : {}),\n })\n }\n\n return definitions\n}\n\nasync function readCurrentDatasetTables(\n input: ReadCurrentDatasetDefinitionsInput,\n datasetIds: readonly string[] | undefined\n): Promise<readonly CurrentDatasetTable[]> {\n if (datasetIds !== undefined && datasetIds.length === 0) {\n return []\n }\n\n const tableNameFilter =\n datasetIds === undefined\n ? \"\"\n : `AND table_name IN (${quoteSqlStringList(\n [...new Set(datasetIds)].map((datasetId) => encodeDatasetTableName(datasetId))\n )})`\n\n const rows = await input.runtime.query(\n `SELECT table_name, comment FROM duckdb_tables() WHERE database_name = ${quoteSqlString(\n duckLakeAlias(input.options)\n )} AND schema_name = 'main' ${tableNameFilter} AND NOT internal ORDER BY table_name`\n )\n\n const tables: CurrentDatasetTable[] = []\n for (const row of rows) {\n const tableName = getString(row, \"table_name\")\n const datasetId = decodeDatasetTableName(tableName)\n if (datasetId === null) {\n continue\n }\n\n tables.push({\n datasetId,\n tableName,\n comment: getOptionalString(row, \"comment\"),\n })\n }\n\n return tables\n}\n\nasync function readCurrentDatasetColumns(\n input: ReadCurrentDatasetDefinitionsInput,\n tableNames: readonly string[]\n): Promise<readonly DuckLakeCatalogColumn[]> {\n if (tableNames.length === 0) {\n return []\n }\n\n const ducklakeTable = duckLakeMetadataTableName(input.options, \"ducklake_table\")\n const ducklakeColumn = duckLakeMetadataTableName(input.options, \"ducklake_column\")\n const ducklakeColumnTag = duckLakeMetadataTableName(input.options, \"ducklake_column_tag\")\n const rows = await input.runtime.query(`\n SELECT\n table_meta.table_name,\n column_meta.column_id,\n column_meta.column_order,\n column_meta.column_name,\n column_meta.column_type,\n CAST(column_meta.nulls_allowed AS BOOLEAN) AS nulls_allowed,\n column_meta.parent_column,\n column_tag.\"value\" AS comment\n FROM ${ducklakeTable} table_meta\n JOIN ${ducklakeColumn} column_meta\n ON column_meta.table_id = table_meta.table_id\n AND column_meta.end_snapshot IS NULL\n LEFT JOIN ${ducklakeColumnTag} column_tag\n ON column_tag.table_id = column_meta.table_id\n AND column_tag.column_id = column_meta.column_id\n AND column_tag.\"key\" = 'comment'\n AND column_tag.end_snapshot IS NULL\n WHERE table_meta.end_snapshot IS NULL\n AND table_meta.table_name IN (${quoteSqlStringList(tableNames)})\n ORDER BY table_meta.table_name, column_meta.column_order\n `)\n\n return rows.map((row) => ({\n tableName: getString(row, \"table_name\"),\n columnId: getBigIntLike(row, \"column_id\"),\n columnOrder: getBigIntLike(row, \"column_order\"),\n columnName: getString(row, \"column_name\"),\n columnType: getString(row, \"column_type\"),\n nullsAllowed: getBoolean(row, \"nulls_allowed\"),\n parentColumnId: getOptionalBigIntLike(row, \"parent_column\"),\n comment: getOptionalString(row, \"comment\"),\n }))\n}\n\nasync function readCurrentDatasetPartitions(\n input: ReadCurrentDatasetDefinitionsInput,\n tableNames: readonly string[]\n): Promise<readonly CurrentDatasetPartition[]> {\n if (tableNames.length === 0) {\n return []\n }\n\n const ducklakeTable = duckLakeMetadataTableName(input.options, \"ducklake_table\")\n const ducklakePartitionInfo = duckLakeMetadataTableName(input.options, \"ducklake_partition_info\")\n const ducklakePartitionColumn = duckLakeMetadataTableName(\n input.options,\n \"ducklake_partition_column\"\n )\n const ducklakeColumn = duckLakeMetadataTableName(input.options, \"ducklake_column\")\n const rows = await input.runtime.query(`\n SELECT\n table_meta.table_name,\n column_meta.column_name,\n partition_column.transform\n FROM ${ducklakeTable} table_meta\n JOIN ${ducklakePartitionInfo} partition_info\n ON partition_info.table_id = table_meta.table_id\n AND partition_info.end_snapshot IS NULL\n JOIN ${ducklakePartitionColumn} partition_column\n ON partition_column.table_id = table_meta.table_id\n AND partition_column.partition_id = partition_info.partition_id\n JOIN ${ducklakeColumn} column_meta\n ON column_meta.table_id = table_meta.table_id\n AND column_meta.column_id = partition_column.column_id\n AND column_meta.end_snapshot IS NULL\n WHERE table_meta.end_snapshot IS NULL\n AND table_meta.table_name IN (${quoteSqlStringList(tableNames)})\n ORDER BY table_meta.table_name, partition_column.partition_key_index\n `)\n\n return rows.map((row) => {\n const partition = {\n tableName: getString(row, \"table_name\"),\n columnName: getString(row, \"column_name\"),\n transform: getString(row, \"transform\"),\n } satisfies CurrentDatasetPartition\n\n if (partition.transform !== \"identity\") {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset table '${partition.tableName}' uses unsupported DuckLake partition transform '${partition.transform}'.`\n )\n }\n\n return partition\n })\n}\n\nfunction groupColumnsByTableName(\n rows: readonly DuckLakeCatalogColumn[]\n): Map<string, DuckLakeCatalogColumn[]> {\n const result = new Map<string, DuckLakeCatalogColumn[]>()\n for (const row of rows) {\n const tableRows = result.get(row.tableName) ?? []\n tableRows.push(row)\n result.set(row.tableName, tableRows)\n }\n return result\n}\n\nfunction groupPartitionsByTableName(\n rows: readonly CurrentDatasetPartition[]\n): Map<string, string[]> {\n const result = new Map<string, string[]>()\n for (const row of rows) {\n const tablePartitions = result.get(row.tableName) ?? []\n tablePartitions.push(row.columnName)\n result.set(row.tableName, tablePartitions)\n }\n return result\n}\n",
23
23
  "import { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type {\n DuckLakeMaintenanceOptions,\n DuckLakeMaintenanceReport,\n DuckLakeStorageOptions,\n} from \"../types\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport { duckLakeAlias, quoteSqlString } from \"./sql\"\n\nconst DEFAULT_RETENTION = \"7 days\"\n\ninterface MaintenanceCounts {\n readonly snapshots: number\n readonly oldFiles: number\n readonly orphanedFiles: number\n}\n\nexport class DuckLakeMaintenance {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager\n ) {}\n\n async runMaintenance(\n options: DuckLakeMaintenanceOptions = {}\n ): Promise<DuckLakeMaintenanceReport> {\n this.connections.assertOpen()\n\n const expireOlderThan = options.expireOlderThan ?? DEFAULT_RETENTION\n const deleteOlderThan = options.deleteOlderThan ?? expireOlderThan\n const dryRun = options.dryRun ?? false\n\n if (this.options.readOnly && !dryRun) {\n throw new LakeStorageError(\n \"[SixbDuckLake] DuckLake maintenance cannot run in read-only mode.\"\n )\n }\n\n return this.connections.withMaintenanceRuntime(async (runtime) => {\n const counts = await runMaintenanceProcedures(\n runtime,\n this.options,\n {\n expireOlderThan,\n deleteOlderThan,\n },\n dryRun\n )\n\n if (!dryRun) {\n this.connections.markLocalCatalogChanged()\n }\n\n return {\n dryRun,\n expireOlderThan,\n deleteOlderThan,\n ...counts,\n }\n })\n }\n}\n\nasync function runMaintenanceProcedures(\n runtime: DuckDbQueryRuntime,\n options: DuckLakeStorageOptions,\n retention: Pick<DuckLakeMaintenanceReport, \"expireOlderThan\" | \"deleteOlderThan\">,\n dryRun: boolean\n): Promise<MaintenanceCounts> {\n const aliasSql = quoteSqlString(duckLakeAlias(options))\n const snapshots = await runtime.query(\n maintenanceProcedureSql(\n \"ducklake_expire_snapshots\",\n aliasSql,\n retention.expireOlderThan,\n dryRun\n )\n )\n const oldFiles = await runtime.query(\n maintenanceProcedureSql(\n \"ducklake_cleanup_old_files\",\n aliasSql,\n retention.deleteOlderThan,\n dryRun\n )\n )\n const orphanedFiles = await runtime.query(\n maintenanceProcedureSql(\n \"ducklake_delete_orphaned_files\",\n aliasSql,\n retention.deleteOlderThan,\n dryRun\n )\n )\n\n return {\n snapshots: snapshots.length,\n oldFiles: oldFiles.length,\n orphanedFiles: orphanedFiles.length,\n }\n}\n\nfunction maintenanceProcedureSql(\n procedure: string,\n aliasSql: string,\n olderThan: string,\n dryRun: boolean\n): string {\n const olderThanSql = quoteSqlString(olderThan)\n const dryRunSql = dryRun ? \"dry_run => true, \" : \"\"\n return (\n `CALL ${procedure}(${aliasSql}, ${dryRunSql}` +\n `older_than => now() - INTERVAL ${olderThanSql})`\n )\n}\n",
24
24
  "import type { DatasetColumnDefinition, DatasetRow } from \"@sixb/core\"\nimport type { DatasetVersion, ReadDatasetRowsInput } from \"@sixb/core/lake-storage\"\nimport { LakeStorageError } from \"@sixb/core/lake-storage\"\nimport type { DuckLakeStorageOptions } from \"../types\"\nimport type { DuckDbReader } from \"./duckdb-reader\"\nimport { getBigIntLike } from \"./duckdb-row\"\nimport type { DuckDbQueryRuntime } from \"./duckdb-runtime\"\nimport type { DuckLakeConnectionManager } from \"./ducklake-connection-manager\"\nimport { type DatasetTableRef, resolveDatasetTableRef } from \"./ducklake-dataset-table-ref\"\nimport type { DuckLakeSnapshotReader } from \"./ducklake-snapshot-reader\"\nimport { normalizeReadValue } from \"./schema\"\nimport { qualifiedTableName, quoteIdentifier } from \"./sql\"\nimport { parseVersionId } from \"./versions\"\n\n// Bounded fallback for catalogs whose metadata transactions cannot stay open during a read.\nconst READ_PAGE_ROWS = 5_000\nconst PHYSICAL_ROW_ID_ALIAS = \"__sixb_physical_row_id\"\n\n/**\n * Reads dataset rows from DuckLake snapshots.\n *\n * This module owns the last mile of reads: resolve the requested Sixb version\n * to a DuckLake snapshot id, render a DuckLake time-travel query, and normalize\n * DuckDB values back into Sixb row shape.\n */\nexport class DuckLakeRowReader {\n constructor(\n private readonly options: DuckLakeStorageOptions,\n private readonly connections: DuckLakeConnectionManager,\n private readonly snapshots: DuckLakeSnapshotReader\n ) {}\n\n async *readRows(input: ReadDatasetRowsInput): AsyncIterable<DatasetRow> {\n const read = await this.connections.acquireRead(input.signal)\n let reader: DuckDbReader | null = null\n try {\n const prepared = await this.connections.withAttachedRuntime(async (runtime) => {\n read.signal.throwIfAborted()\n const tableRef = await resolveDatasetTableRef(this.options, runtime, input.datasetId)\n if (!tableRef) {\n throw new LakeStorageError(`[SixbDuckLake] Unknown dataset '${input.datasetId}'.`)\n }\n // Resolve latest once, before yielding any rows. Every query names the same snapshot.\n const version = await this.resolveVersion(runtime, tableRef, input.versionId)\n const columns = this.resolveReadColumns(tableRef.datasetId, version.schema, input.columns)\n const names = new Set(version.schema.columns.map((column) => column.name.toLowerCase()))\n const physicalOrder = !names.has(\"rowid\") && !names.has(PHYSICAL_ROW_ID_ALIAS)\n const relation = `${qualifiedTableName(this.options, tableRef.tableName)} AT (VERSION => ${parseVersionId(version.versionId)})`\n const columnsSql = columns.map((column) => quoteIdentifier(column.name)).join(\", \")\n const offset = Math.max(0, Math.trunc(input.offset ?? 0))\n const limit = input.limit === undefined ? undefined : Math.max(0, Math.trunc(input.limit))\n const sql = `SELECT ${columnsSql} FROM ${relation}${physicalOrder ? \" ORDER BY rowid\" : \"\"}${limit === undefined ? \"\" : ` LIMIT ${limit}`}${offset > 0 ? ` OFFSET ${offset}` : \"\"}`\n const cursor =\n limit === undefined || limit > READ_PAGE_ROWS\n ? await this.connections.openReader(runtime, sql, read.signal, read.release)\n : null\n const query = { columnsSql, relation, physicalOrder }\n const firstPage =\n cursor || limit === 0\n ? []\n : await runtime.query(\n pageSql(query, Math.min(limit ?? READ_PAGE_ROWS, READ_PAGE_ROWS), offset, null)\n )\n return { columns, ...query, offset, limit, cursor, firstPage }\n })\n reader = prepared.cursor\n // A paused paged reader owns no native query. Cancellation can release its read lease without\n // waiting for the consumer to call next()/return(); native readers release after cleanup.\n if (!reader) read.signal.addEventListener(\"abort\", read.release, { once: true })\n read.signal.throwIfAborted()\n if (reader) {\n yield* this.normalizeRows(reader.rows(), prepared.columns, read.signal)\n return\n }\n\n // Each bounded query releases both the runtime queue and attachment lease before yielding.\n // SQLite metadata locks and PostgreSQL pool slots are released before consumer operations.\n let offset = prepared.offset\n let remaining = prepared.limit\n let cursor: bigint | null = null\n let page: readonly Record<string, unknown>[] | undefined = prepared.firstPage\n while (remaining !== 0) {\n read.signal.throwIfAborted()\n const pageSize = Math.min(remaining ?? READ_PAGE_ROWS, READ_PAGE_ROWS)\n const rows: readonly Record<string, unknown>[] =\n page ??\n (await this.connections.withAttachedRuntime((runtime) =>\n runtime.query(pageSql(prepared, pageSize, offset, cursor))\n ))\n page = undefined\n read.signal.throwIfAborted()\n yield* this.normalizeRows(rows, prepared.columns, read.signal)\n if (remaining !== undefined) remaining -= rows.length\n if (rows.length < pageSize) return\n if (prepared.physicalOrder)\n cursor = getBigIntLike(rows[rows.length - 1]!, PHYSICAL_ROW_ID_ALIAS)\n offset += rows.length\n }\n } finally {\n read.signal.removeEventListener(\"abort\", read.release)\n try {\n await reader?.close()\n } finally {\n read.release()\n }\n }\n }\n\n private async *normalizeRows(\n rows: Iterable<Record<string, unknown>> | AsyncIterable<Record<string, unknown>>,\n selectedColumns: readonly DatasetColumnDefinition[],\n signal: AbortSignal\n ): AsyncIterable<DatasetRow> {\n for await (const row of rows) {\n signal.throwIfAborted()\n const output: Record<string, unknown> = {}\n for (const column of selectedColumns) {\n output[column.name] = normalizeReadValue(row[column.name], column)\n }\n yield output\n }\n }\n\n private async resolveVersion(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n versionId?: string\n ): Promise<DatasetVersion> {\n if (versionId !== undefined) {\n const snapshotId = parseVersionId(versionId)\n const version = await this.snapshots.getVersionForTableRef(runtime, tableRef, snapshotId)\n if (!version) {\n this.throwNoCommittedVersion(tableRef.datasetId)\n }\n\n return version\n }\n\n const latestVersion = await this.snapshots.getLatestVersionForTableRef(runtime, tableRef)\n if (!latestVersion) {\n this.throwNoCommittedVersion(tableRef.datasetId)\n }\n\n return latestVersion\n }\n\n private resolveReadColumns(\n datasetId: string,\n schema: DatasetVersion[\"schema\"],\n columns?: readonly string[]\n ): readonly DatasetColumnDefinition[] {\n if (columns === undefined || columns.length === 0) {\n return schema.columns\n }\n\n const columnsByName = new Map(schema.columns.map((column) => [column.name, column] as const))\n\n return columns.map((columnName) => {\n const column = columnsByName.get(columnName)\n if (!column) {\n throw new LakeStorageError(\n `[SixbDuckLake] Dataset '${datasetId}' does not have column '${columnName}' at the requested version.`\n )\n }\n\n return column\n })\n }\n\n private throwNoCommittedVersion(datasetId: string): never {\n throw new LakeStorageError(\n `[SixbDuckLake] No committed version found for dataset '${datasetId}'.`\n )\n }\n}\n\nfunction pageSql(\n read: { readonly columnsSql: string; readonly relation: string; readonly physicalOrder: boolean },\n limit: number,\n offset: number,\n cursor: bigint | null\n): string {\n return read.physicalOrder\n ? `SELECT rowid AS ${quoteIdentifier(PHYSICAL_ROW_ID_ALIAS)}, ${read.columnsSql}\n FROM ${read.relation} ${cursor === null ? \"\" : `WHERE rowid > ${cursor}`}\n ORDER BY rowid LIMIT ${limit} ${cursor === null && offset > 0 ? `OFFSET ${offset}` : \"\"}`\n : `SELECT ${read.columnsSql} FROM ${read.relation} LIMIT ${limit} OFFSET ${offset}`\n}\n",
25
- "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 inputs?: readonly DatasetVersionRef[]\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 inputs: row.metadata?.inputs,\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 // A dataset cannot have a version before its table exists. Use the earliest table record:\n // a rename may create a newer record with the same table id and must not hide older versions.\n const ducklakeTable = duckLakeMetadataTableName(this.options, \"ducklake_table\")\n const where = [\n `snapshot.snapshot_id >= (SELECT min(begin_snapshot) FROM ${ducklakeTable} WHERE table_id = ${input.tableId})`,\n ]\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 ${where.join(\" AND \")}`\n const limitSql =\n input.limit === undefined ? \"\" : `LIMIT ${Math.max(0, Math.trunc(input.limit))}`\n const ducklakeSnapshot = duckLakeMetadataTableName(this.options, \"ducklake_snapshot\")\n const ducklakeSnapshotChanges = duckLakeMetadataTableName(\n this.options,\n \"ducklake_snapshot_changes\"\n )\n const ducklakeDataFile = duckLakeMetadataTableName(this.options, \"ducklake_data_file\")\n const ducklakeDeleteFile = duckLakeMetadataTableName(this.options, \"ducklake_delete_file\")\n\n const rows = await runtime.query(`\n WITH candidate_snapshots AS (\n -- Recent DuckLake snapshots to inspect; Sixb visibility is filtered later.\n SELECT\n snapshot.snapshot_id,\n snapshot.snapshot_time,\n changes.changes_made,\n changes.commit_extra_info\n FROM ${ducklakeSnapshot} snapshot\n JOIN ${ducklakeSnapshotChanges} changes\n ON changes.snapshot_id = snapshot.snapshot_id\n ${whereSql}\n ORDER BY snapshot.snapshot_id DESC\n ${limitSql}\n ),\n file_changes AS (\n -- File metadata tells whether this table changed in each candidate snapshot.\n SELECT begin_snapshot AS snapshot_id, false AS is_delete_change\n FROM ${ducklakeDataFile}\n WHERE table_id = ${input.tableId}\n AND begin_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n UNION ALL\n SELECT end_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${ducklakeDataFile}\n WHERE table_id = ${input.tableId}\n AND end_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n UNION ALL\n SELECT begin_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${ducklakeDeleteFile}\n WHERE table_id = ${input.tableId}\n AND begin_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n UNION ALL\n SELECT end_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${ducklakeDeleteFile}\n WHERE table_id = ${input.tableId}\n AND end_snapshot IN (SELECT snapshot_id FROM candidate_snapshots)\n ),\n file_changes_by_snapshot AS (\n -- Collapse file-level changes into one row per snapshot.\n SELECT\n snapshot_id,\n count(*) > 0 AS has_file_change,\n count(*) FILTER (WHERE is_delete_change) > 0 AS has_file_delete_change\n FROM file_changes\n GROUP BY snapshot_id\n )\n SELECT\n -- Keep metadata-only candidates; Sixb filters them with commit_extra_info.\n candidate.snapshot_id,\n candidate.snapshot_time,\n candidate.changes_made,\n candidate.commit_extra_info,\n coalesce(file_changes.has_file_change, false) AS has_file_change,\n coalesce(file_changes.has_file_delete_change, false) AS has_file_delete_change\n FROM candidate_snapshots candidate\n LEFT JOIN file_changes_by_snapshot file_changes\n ON file_changes.snapshot_id = candidate.snapshot_id\n ORDER BY candidate.snapshot_id DESC\n `)\n\n return rows.map((row) => {\n const metadata = parseCommitMetadata(row.commit_extra_info)\n return {\n snapshotId: String(getBigIntLike(row, \"snapshot_id\")),\n createdAt: getDate(row, \"snapshot_time\"),\n changesMade: getString(row, \"changes_made\"),\n hasFileChange: getBoolean(row, \"has_file_change\"),\n hasFileDeleteChange: getBoolean(row, \"has_file_delete_change\"),\n ...(metadata !== undefined ? { metadata } : {}),\n }\n })\n }\n\n private candidateToSnapshotRow(\n datasetId: string,\n tableId: bigint,\n candidate: DatasetSnapshotCandidateRow\n ): DatasetSnapshotRow | null {\n const inlineChange = parseInlineDataChange(candidate.changesMade, tableId)\n const hasDataChange = inlineChange.hasDataChange || candidate.hasFileChange\n const hasDeleteChange = inlineChange.hasDeleteChange || candidate.hasFileDeleteChange\n\n // Metadata-only snapshots are common for table comments, schema changes,\n // and other catalog operations. Treat them as dataset versions only when\n // their Sixb metadata names this dataset.\n if (!hasDataChange) {\n const metadata = candidate.metadata\n if (!metadata || metadata.datasetId !== datasetId) {\n return null\n }\n\n return {\n snapshotId: candidate.snapshotId,\n tableId,\n createdAt: candidate.createdAt,\n mode: metadata.mode ?? \"schema\",\n metadata,\n }\n }\n\n // A real data-change snapshot belongs to this dataset because DuckLake's\n // change metadata touched this table id. If Sixb metadata is present but\n // points elsewhere, fail loudly rather than hydrating the wrong lineage.\n this.assertNoMetadataConflict(candidate.snapshotId, datasetId, candidate.metadata)\n\n return {\n snapshotId: candidate.snapshotId,\n tableId,\n createdAt: candidate.createdAt,\n mode: candidate.metadata?.mode ?? (hasDeleteChange ? \"snapshot\" : \"append\"),\n ...(candidate.metadata !== undefined ? { metadata: candidate.metadata } : {}),\n }\n }\n\n private async snapshotToVersion(\n runtime: DuckDbQueryRuntime,\n tableRef: DatasetTableRef,\n row: DatasetSnapshotRow\n ): Promise<DatasetVersion> {\n const schemaAtSnapshot = await this.datasets.getDatasetSchemaAtSnapshot(\n runtime,\n tableRef.datasetId,\n tableRef.tableName,\n tableRef.tableId,\n row.snapshotId\n )\n\n // DuckLake gives us version id, timestamp, and time travel. Sixb metadata\n // fills in caller intent such as append vs snapshot and producer lineage.\n // Version listing is a metadata path, so it only carries row counts already\n // stored in Sixb commit metadata and never counts historical table contents.\n\n return {\n datasetId: tableRef.datasetId,\n versionId: toVersionId(row.snapshotId),\n parentVersionId:\n row.parentSnapshotId === undefined ? undefined : toVersionId(row.parentSnapshotId),\n mode: row.mode,\n createdAt: row.createdAt,\n schema: schemaAtSnapshot,\n producer: row.metadata?.producer,\n inputs: row.metadata?.inputs,\n ...(row.metadata?.rowCount !== undefined ? { rowCount: row.metadata.rowCount } : {}),\n }\n }\n\n private withParentSnapshotIds(\n snapshots: readonly DatasetSnapshotRow[]\n ): readonly DatasetSnapshotRow[] {\n return snapshots.map((snapshot, index) => {\n // Parent ids track versions that reuse the previous dataset state.\n // Snapshot versions replace the rows, so time travel stands on the snapshot id.\n const parentSnapshotId =\n snapshot.mode === \"append\" || snapshot.mode === \"merge\" || snapshot.mode === \"schema\"\n ? snapshots[index + 1]?.snapshotId\n : undefined\n return parentSnapshotId === undefined ? snapshot : { ...snapshot, parentSnapshotId }\n })\n }\n}\n\nfunction assertDuckLakeSnapshotId(snapshotId: string): void {\n if (!/^\\d+$/.test(snapshotId)) {\n throw new LakeStorageError(`[SixbDuckLake] Invalid DuckLake snapshot id '${snapshotId}'.`)\n }\n}\n\nfunction fileChangeKey(snapshotId: string, tableId: bigint): string {\n return `${snapshotId}|${tableId}`\n}\n",
25
+ "import type { DatasetDefinition } from \"@sixb/core\"\nimport type {\n DatasetCatalogState,\n DatasetLatestVersionSummary,\n DatasetVersion,\n DatasetVersionMode,\n DatasetVersionRef,\n LatestVersionsSince,\n ListLatestVersionsSinceInput,\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 { decodeDatasetTableName, encodeDatasetTableName } from \"./names\"\nimport { buildDuckLakeMetadataQuery, 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 FeedTable {\n readonly datasetId: string\n readonly tableId: bigint\n /** A dataset cannot have a version before its table exists. */\n readonly startSnapshotId: bigint\n}\n\ninterface MissingSnapshotCandidate {\n readonly snapshotId: string\n readonly missing: true\n}\n\ninterface SnapshotCandidateQueryInput {\n readonly datasetId: string\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 inputs?: readonly DatasetVersionRef[]\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// One feed read covers at most this many commits; the next read continues from its cursor.\nconst FEED_PAGE_SIZE = 512\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 /**\n * Change feed over DuckLake's snapshot table, which is an append-only commit log: snapshot ids\n * only increase, and a commit becomes visible only after every lower id has (concurrent commits\n * that pick the same id conflict, and the loser retries with the next one). The cursor is the\n * last snapshot id read. Every query is bounded by a snapshot-id range, so an idle read is one\n * indexed query that returns the cursor's own snapshot, whatever the history length.\n */\n async listLatestVersionsSince(\n input: ListLatestVersionsSinceInput\n ): Promise<LatestVersionsSince | null> {\n this.connections.assertOpen()\n\n return this.connections.withAttachedRuntime(async (runtime) => {\n if (input.cursor === null) {\n return { cursor: await this.queryHeadSnapshotId(runtime), versions: [] }\n }\n if (!/^\\d+$/.test(input.cursor)) {\n return null\n }\n\n const snapshots = await this.querySnapshotsFrom(runtime, input.cursor)\n // The cursor's own snapshot proves the cursor is still a position in this lake's history.\n if (snapshots[0]?.snapshotId !== input.cursor) {\n return null\n }\n const newSnapshots = snapshots.slice(1)\n if (newSnapshots.length === 0) {\n return { cursor: input.cursor, versions: [] }\n }\n\n const tables = await this.resolveFeedTables(runtime, input.datasetIds)\n const latest = await this.collectFeedPage(runtime, tables, newSnapshots)\n return {\n cursor: newSnapshots[newSnapshots.length - 1]?.snapshotId ?? input.cursor,\n versions: [...latest].map(([datasetId, row]) => this.snapshotRowToSummary(datasetId, row)),\n }\n })\n }\n\n private async queryHeadSnapshotId(runtime: DuckDbQueryRuntime): Promise<string> {\n const [row] = await runtime.query(\n buildDuckLakeMetadataQuery(\n this.options,\n (table) => `SELECT max(snapshot_id) AS snapshot_id FROM ${table(\"ducklake_snapshot\")}`\n )\n )\n if (row?.snapshot_id === null || row?.snapshot_id === undefined) {\n throw new LakeStorageError(\"[SixbDuckLake] DuckLake catalog has no snapshots.\")\n }\n return String(getBigIntLike(row, \"snapshot_id\"))\n }\n\n /** The cursor's snapshot and up to one feed page of snapshots after it, oldest first. */\n private async querySnapshotsFrom(\n runtime: DuckDbQueryRuntime,\n cursor: string\n ): Promise<readonly { readonly snapshotId: string; readonly createdAt: Date }[]> {\n const rows = await runtime.query(\n buildDuckLakeMetadataQuery(\n this.options,\n (table) => `\n SELECT snapshot_id, snapshot_time\n FROM ${table(\"ducklake_snapshot\")}\n WHERE snapshot_id >= ${cursor}\n ORDER BY snapshot_id\n LIMIT ${FEED_PAGE_SIZE + 1}\n `\n )\n )\n return rows.map((row) => ({\n snapshotId: String(getBigIntLike(row, \"snapshot_id\")),\n createdAt: getDate(row, \"snapshot_time\"),\n }))\n }\n\n /** Current dataset tables, with the first snapshot each table id existed in. */\n private async resolveFeedTables(\n runtime: DuckDbQueryRuntime,\n datasetIds: readonly string[] | undefined\n ): Promise<readonly FeedTable[]> {\n const requested = datasetIds === undefined ? null : new Set(datasetIds)\n const rows = await runtime.query(`\n SELECT table_id, table_name, begin_snapshot, end_snapshot\n FROM ${duckLakeMetadataTableName(this.options, \"ducklake_table\")}\n `)\n\n const startByTableId = new Map<bigint, bigint>()\n const current: { datasetId: string; tableId: bigint }[] = []\n for (const row of rows) {\n const tableId = getBigIntLike(row, \"table_id\")\n const begin = getBigIntLike(row, \"begin_snapshot\")\n const start = startByTableId.get(tableId)\n if (start === undefined || begin < start) {\n startByTableId.set(tableId, begin)\n }\n if (row.end_snapshot !== null && row.end_snapshot !== undefined) {\n continue\n }\n const datasetId = decodeDatasetTableName(getString(row, \"table_name\"))\n if (datasetId !== null && (requested === null || requested.has(datasetId))) {\n current.push({ datasetId, tableId })\n }\n }\n\n return current.map((table) => ({\n ...table,\n startSnapshotId: startByTableId.get(table.tableId) ?? 0n,\n }))\n }\n\n /** Folds a page of snapshots, oldest first, into each dataset's newest data version. */\n private async collectFeedPage(\n runtime: DuckDbQueryRuntime,\n tables: readonly FeedTable[],\n snapshots: readonly { readonly snapshotId: string; readonly createdAt: Date }[]\n ): Promise<Map<string, DatasetSnapshotRow>> {\n const latest = new Map<string, DatasetSnapshotRow>()\n const first = snapshots[0]?.snapshotId\n const last = snapshots[snapshots.length - 1]?.snapshotId\n if (first === undefined || last === undefined || tables.length === 0) {\n return latest\n }\n\n const changeRows = await runtime.query(\n buildDuckLakeMetadataQuery(\n this.options,\n (table) => `\n SELECT snapshot_id, changes_made, commit_extra_info\n FROM ${table(\"ducklake_snapshot_changes\")}\n WHERE snapshot_id >= ${first} AND snapshot_id <= ${last}\n `\n )\n )\n const fileFlags = await this.queryFileChangeFlags(\n runtime,\n snapshots.map((snapshot) => snapshot.snapshotId),\n tables.map((table) => table.tableId)\n )\n const changesBySnapshotId = new Map(\n changeRows.map((row) => [String(getBigIntLike(row, \"snapshot_id\")), row])\n )\n const tablesByTableId = new Map(tables.map((table) => [table.tableId.toString(), table]))\n const tablesByDatasetId = new Map(tables.map((table) => [table.datasetId, table]))\n\n for (const snapshot of snapshots) {\n const changes = changesBySnapshotId.get(snapshot.snapshotId)\n if (changes === undefined) {\n continue\n }\n const changesMade = getString(changes, \"changes_made\")\n const metadata = parseCommitMetadata(changes.commit_extra_info)\n\n // Only tables this snapshot names, touches through files, or tags can change visibility.\n const touched = new Set<FeedTable>()\n for (const change of changesMade.split(\",\")) {\n const table = tablesByTableId.get(change.split(\":\")[1] ?? \"\")\n if (table) touched.add(table)\n }\n for (const table of tables) {\n if (fileFlags.has(fileChangeKey(snapshot.snapshotId, table.tableId))) touched.add(table)\n }\n const tagged = metadata === undefined ? undefined : tablesByDatasetId.get(metadata.datasetId)\n if (tagged) touched.add(tagged)\n\n for (const table of touched) {\n if (BigInt(snapshot.snapshotId) < table.startSnapshotId) {\n continue\n }\n const flags = fileFlags.get(fileChangeKey(snapshot.snapshotId, table.tableId))\n const row = this.candidateToSnapshotRow(table.datasetId, table.tableId, {\n snapshotId: snapshot.snapshotId,\n createdAt: snapshot.createdAt,\n changesMade,\n hasFileChange: flags?.hasFileChange ?? false,\n hasFileDeleteChange: flags?.hasFileDeleteChange ?? false,\n ...(metadata !== undefined ? { metadata } : {}),\n })\n if (row && row.mode !== \"schema\") {\n latest.set(table.datasetId, row)\n }\n }\n }\n\n return latest\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 inputs: row.metadata?.inputs,\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 datasetId: input.datasetId,\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 if (\"missing\" in candidate) {\n continue\n }\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 /**\n * Hydrates, newest first, the snapshots that may hold a version of one dataset table: those\n * that added or removed its data or delete files, that DuckLake recorded as changing it inline,\n * or whose Sixb commit metadata names the dataset. The text matches are a superset;\n * candidateToSnapshotRow decides visibility. Only this table's snapshots are read, so the cost\n * follows the dataset's own history rather than every commit in the catalog.\n *\n * Returns one row per candidate id, including ids whose snapshot no longer exists, so the caller\n * can tell a short batch from the end of the history.\n */\n private async querySnapshotCandidates(\n runtime: DuckDbQueryRuntime,\n input: SnapshotCandidateQueryInput\n ): Promise<readonly (DatasetSnapshotCandidateRow | MissingSnapshotCandidate)[]> {\n const tableId = input.tableId.toString()\n const limit = Math.max(0, Math.trunc(input.limit))\n if (limit === 0) {\n return []\n }\n if (input.exactSnapshotId !== undefined) {\n assertDuckLakeSnapshotId(input.exactSnapshotId)\n }\n if (input.beforeSnapshotId !== undefined) {\n assertDuckLakeSnapshotId(input.beforeSnapshotId)\n }\n\n const rows = await runtime.query(\n buildDuckLakeMetadataQuery(this.options, (table) => {\n // A dataset cannot have a version before its table exists. Use the earliest table record:\n // a rename may create a newer record with the same table id and must not hide older\n // versions.\n const tableStart = `(SELECT min(begin_snapshot) FROM ${table(\"ducklake_table\")} WHERE table_id = ${tableId})`\n const candidateIds =\n input.exactSnapshotId !== undefined\n ? `SELECT CAST(${input.exactSnapshotId} AS BIGINT) AS snapshot_id\n WHERE ${input.exactSnapshotId} >= ${tableStart}`\n : `SELECT DISTINCT snapshot_id\n FROM (\n SELECT begin_snapshot AS snapshot_id\n FROM ${table(\"ducklake_data_file\")} WHERE table_id = ${tableId}\n UNION ALL\n SELECT end_snapshot\n FROM ${table(\"ducklake_data_file\")}\n WHERE table_id = ${tableId} AND end_snapshot IS NOT NULL\n UNION ALL\n SELECT begin_snapshot\n FROM ${table(\"ducklake_delete_file\")} WHERE table_id = ${tableId}\n UNION ALL\n SELECT end_snapshot\n FROM ${table(\"ducklake_delete_file\")}\n WHERE table_id = ${tableId} AND end_snapshot IS NOT NULL\n UNION ALL\n SELECT snapshot_id\n FROM ${table(\"ducklake_snapshot_changes\")}\n WHERE strpos(',' || changes_made || ',', ${quoteSqlString(`:${tableId},`)}) > 0\n OR strpos(\n commit_extra_info,\n ${quoteSqlString(`\"datasetId\":${JSON.stringify(input.datasetId)}`)}\n ) > 0\n ) touched\n WHERE snapshot_id >= ${tableStart}\n ${input.beforeSnapshotId === undefined ? \"\" : `AND snapshot_id < ${input.beforeSnapshotId}`}\n ORDER BY snapshot_id DESC\n LIMIT ${limit}`\n\n return `\n WITH candidate_ids AS (\n ${candidateIds}\n ),\n candidate_snapshots AS (\n SELECT\n snapshot.snapshot_id,\n snapshot.snapshot_time,\n changes.changes_made,\n changes.commit_extra_info\n FROM ${table(\"ducklake_snapshot\")} snapshot\n JOIN ${table(\"ducklake_snapshot_changes\")} changes\n ON changes.snapshot_id = snapshot.snapshot_id\n WHERE snapshot.snapshot_id IN (SELECT snapshot_id FROM candidate_ids)\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 ${table(\"ducklake_data_file\")}\n WHERE table_id = ${tableId}\n AND begin_snapshot IN (SELECT snapshot_id FROM candidate_ids)\n UNION ALL\n SELECT end_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${table(\"ducklake_data_file\")}\n WHERE table_id = ${tableId}\n AND end_snapshot IN (SELECT snapshot_id FROM candidate_ids)\n UNION ALL\n SELECT begin_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${table(\"ducklake_delete_file\")}\n WHERE table_id = ${tableId}\n AND begin_snapshot IN (SELECT snapshot_id FROM candidate_ids)\n UNION ALL\n SELECT end_snapshot AS snapshot_id, true AS is_delete_change\n FROM ${table(\"ducklake_delete_file\")}\n WHERE table_id = ${tableId}\n AND end_snapshot IN (SELECT snapshot_id FROM candidate_ids)\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_ids.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_ids\n LEFT JOIN candidate_snapshots candidate\n ON candidate.snapshot_id = candidate_ids.snapshot_id\n LEFT JOIN file_changes_by_snapshot file_changes\n ON file_changes.snapshot_id = candidate_ids.snapshot_id\n ORDER BY candidate_ids.snapshot_id DESC\n `\n })\n )\n\n return rows.map((row) => {\n const snapshotId = String(getBigIntLike(row, \"snapshot_id\"))\n // Expired snapshots keep their file records; they are no longer versions.\n if (row.snapshot_time === null || row.snapshot_time === undefined) {\n return { snapshotId, missing: true } as const\n }\n const metadata = parseCommitMetadata(row.commit_extra_info)\n return {\n snapshotId,\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",
26
26
  "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",
27
27
  "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",
28
28
  "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",
@@ -31,9 +31,9 @@
31
31
  "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 datasetSequenceChange,\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 ${input.merge.dataset.sequenceBy === undefined ? \"\" : `${quoteIdentifier(`${sequenceColumnName}_source`)} 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 if (this.input.dataset.sequenceBy !== undefined) {\n appender.appendVarchar(\n JSON.stringify(datasetSequenceChange(this.input.dataset, staged.change))\n )\n }\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",
32
32
  "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",
33
33
  "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 this.stagedPrimaryKeys.clear()\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",
34
- "import type { DatasetDefinition, DatasetRow, LakeStorageWithSql } from \"@sixb/core\"\nimport type {\n BeginDatasetMergeInput,\n BeginDatasetWriteInput,\n DatasetCatalogState,\n DatasetChanges,\n DatasetVersion,\n LakeMergeSession,\n LakeWriteSession,\n ReadDatasetChangesInput,\n ReadDatasetRowsInput,\n} from \"@sixb/core/lake-storage\"\nimport { DuckLakeChangeReader } from \"./internal/ducklake-change-reader\"\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 changes: DuckLakeChangeReader\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.changes = new DuckLakeChangeReader(\n normalizedOptions,\n this.connections,\n this.snapshotReader\n )\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 readChanges(input: ReadDatasetChangesInput): Promise<DatasetChanges | null> {\n return this.changes.readChanges(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"
34
+ "import type { DatasetDefinition, DatasetRow, LakeStorageWithSql } from \"@sixb/core\"\nimport type {\n BeginDatasetMergeInput,\n BeginDatasetWriteInput,\n DatasetCatalogState,\n DatasetChanges,\n DatasetVersion,\n LakeMergeSession,\n LakeWriteSession,\n LatestVersionsSince,\n ListLatestVersionsSinceInput,\n ReadDatasetChangesInput,\n ReadDatasetRowsInput,\n} from \"@sixb/core/lake-storage\"\nimport { DuckLakeChangeReader } from \"./internal/ducklake-change-reader\"\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 changes: DuckLakeChangeReader\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.changes = new DuckLakeChangeReader(\n normalizedOptions,\n this.connections,\n this.snapshotReader\n )\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 async listLatestVersionsSince(\n input: ListLatestVersionsSinceInput\n ): Promise<LatestVersionsSince | null> {\n return this.snapshotReader.listLatestVersionsSince(input)\n }\n\n readRows(input: ReadDatasetRowsInput): AsyncIterable<DatasetRow> {\n return this.rows.readRows(input)\n }\n\n readChanges(input: ReadDatasetChangesInput): Promise<DatasetChanges | null> {\n return this.changes.readChanges(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"
35
35
  ],
36
- "mappings": "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",
37
- "debugId": "35ABBEC5A94F36A964756E2164756E21",
36
+ "mappings": "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",
37
+ "debugId": "99E61447F4C74C9E64756E2164756E21",
38
38
  "names": []
39
39
  }