Skip to content

Commit 112e786

Browse files
kyleconroyclaude
andcommitted
Fix identifier quoting for generic database scoped configuration options
When parsing generic configuration options like [new_option], properly detect bracketed and double-quoted identifiers to set the correct QuoteType and strip the quotes from the Value field. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 5a66f17 commit 112e786

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

parser/parse_ddl.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3841,9 +3841,21 @@ func (p *Parser) parseAlterDatabaseScopedConfigurationSetStatement(secondary boo
38413841
}
38423842
default:
38433843
// Handle generic options (like DW_COMPATIBILITY_LEVEL)
3844+
// Handle bracketed and quoted identifiers properly
3845+
optionValue := optionNameOriginal
3846+
optionQuoteType := "NotQuoted"
3847+
if len(optionNameOriginal) >= 2 && optionNameOriginal[0] == '[' && optionNameOriginal[len(optionNameOriginal)-1] == ']' {
3848+
optionQuoteType = "SquareBracket"
3849+
optionValue = optionNameOriginal[1 : len(optionNameOriginal)-1]
3850+
optionValue = strings.ReplaceAll(optionValue, "]]", "]")
3851+
} else if len(optionNameOriginal) >= 2 && optionNameOriginal[0] == '"' && optionNameOriginal[len(optionNameOriginal)-1] == '"' {
3852+
optionQuoteType = "DoubleQuote"
3853+
optionValue = optionNameOriginal[1 : len(optionNameOriginal)-1]
3854+
optionValue = strings.ReplaceAll(optionValue, "\"\"", "\"")
3855+
}
38443856
optionKindIdent := &ast.Identifier{
3845-
Value: optionNameOriginal, // use original case
3846-
QuoteType: "NotQuoted",
3857+
Value: optionValue,
3858+
QuoteType: optionQuoteType,
38473859
}
38483860

38493861
var state *ast.IdentifierOrScalarExpression
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"todo": true}
1+
{}

0 commit comments

Comments
 (0)