Skip to content

Change in behavior for deep structure columns with the latest sql parser upgrade #15118

Closed
@adragomir

Description

@adragomir

Describe the bug

with SQLParser 0.53, this works:

SELECT * 
FROM
    (meta_asset_featurization AS asset_meta
    INNER JOIN meta_asset_summary_metrics AS asset_metrics ON (
        asset_meta.struct_field['substruct']['substruct'] = asset_metrics.struct_field['substruct']['substruct']
    ))

with SQLParser 0.54, this no longer works, the newly added sql_compound_field_access_to_expr interprets the root (in this case for example asset_meta) as a column name instead of a table.
The solution (workaround) for SQLParser 0.54 is to do

SELECT * 
FROM
    (meta_asset_featurization AS asset_meta
    INNER JOIN meta_asset_summary_metrics AS asset_metrics ON (
        asset_meta.struct_field.substruct.substruct = asset_metrics.struct_field.substruct.substruct
    ))

Is this intended ? I have tried to see the history, but unsure which behavior is correct. Since we do interpret the [] index access in the case of NOT having to specify the table correctly (so, if I have a single table and I specify directly the column col['substruct']['substruct'] it works), why wouldn't this case work ?

To Reproduce

No response

Expected behavior

Structure field access with either dot acess .subfield or subscript access['subfield'] should work in the same way and yield the same result in all conditions

Additional context

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions