Skip to content

Commit 09af88d

Browse files
kyleconroyclaude
andcommitted
Add JsonPath field for OPENROWSET column JSON path mappings
- Add JsonPath field to OpenRowsetColumnDefinition AST - Store string path expressions ('$.column') in JsonPath instead of ColumnOrdinal - Update marshaling to output JsonPath field Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 6857a21 commit 09af88d

5 files changed

Lines changed: 7 additions & 3 deletions

File tree

ast/openrowset.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ func (o *OpenRowsetTableReference) tableReference() {}
4646
// OpenRowsetColumnDefinition represents a column definition in WITH clause.
4747
type OpenRowsetColumnDefinition struct {
4848
ColumnOrdinal ScalarExpression `json:"ColumnOrdinal,omitempty"`
49+
JsonPath ScalarExpression `json:"JsonPath,omitempty"`
4950
ColumnIdentifier *Identifier `json:"ColumnIdentifier,omitempty"`
5051
DataType DataTypeReference `json:"DataType,omitempty"`
5152
Collation *Identifier `json:"Collation,omitempty"`

parser/marshal.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20057,6 +20057,9 @@ func openRowsetColumnDefinitionToJSON(col *ast.OpenRowsetColumnDefinition) jsonN
2005720057
node := jsonNode{
2005820058
"$type": "OpenRowsetColumnDefinition",
2005920059
}
20060+
if col.JsonPath != nil {
20061+
node["JsonPath"] = scalarExpressionToJSON(col.JsonPath)
20062+
}
2006020063
if col.ColumnOrdinal != nil {
2006120064
node["ColumnOrdinal"] = scalarExpressionToJSON(col.ColumnOrdinal)
2006220065
}

parser/parse_dml.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ func (p *Parser) parseBulkOpenRowset() (*ast.BulkOpenRowset, error) {
843843
p.nextToken()
844844
} else if p.curTok.Type == TokenString {
845845
// JSON path specification like '$.stateName' or 'strict $.population'
846-
colDef.ColumnOrdinal = &ast.StringLiteral{
846+
colDef.JsonPath = &ast.StringLiteral{
847847
LiteralType: "String",
848848
IsNational: false,
849849
IsLargeObject: false,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"todo": true}
1+
{}
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)