fix(duckdb): ignore prefix aliases as SQL parameters

Closes #5408
This commit is contained in:
t8y2 committed 2026-08-06 18:56:19 +08:00
1 parent 25dc3ec2f2
commit 835864e8a8
2 files changed
+31 -1

No files matched your search

+7 -1
View File
@@ -176,7 +176,7 @@ function findSqlParameterOccurrences(sql: string, options?: SqlParameterOptions)
}
if (ch === ":" && supportsNamedParameters && isSyntaxEnabled("named")) {
const name = readParameterName(sql, i + 1);
if (name && sql[i - 1] !== ":" && sql[i + 1] !== "=" && !complexTypeFieldSeparators.has(i) && !duckDbStructFieldSeparators.has(i) && !triggerPseudoRecordFieldStarts.has(i)) {
if (name && sql[i - 1] !== ":" && sql[i + 1] !== "=" && !complexTypeFieldSeparators.has(i) && !duckDbStructFieldSeparators.has(i) && !isDuckDbCompactPrefixAliasSeparator(sql, i, options?.databaseType) && !triggerPseudoRecordFieldStarts.has(i)) {
occurrences.push({
key: name,
name,
@@ -230,6 +230,12 @@ function findSqlParameterOccurrences(sql: string, options?: SqlParameterOptions)
return occurrences;
}
function isDuckDbCompactPrefixAliasSeparator(sql: string, index: number, databaseType?: DatabaseType): boolean {
if (databaseType !== "duckdb") return false;
const previous = sql[index - 1] ?? "";
return PARAMETER_NAME_CHAR_RE.test(previous) || previous === '"';
}
function isOracleDatabaseLinkMarker(sql: string, index: number, databaseType: DatabaseType | undefined): boolean {
if (databaseType !== "oracle" || index === 0) return false;
const previous = sql[index - 1];