[ 
https://issues.apache.org/jira/browse/CALCITE-7475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18079629#comment-18079629
 ] 

krooswu edited comment on CALCITE-7475 at 5/9/26 3:12 PM:
----------------------------------------------------------

To be clear, I am addressing a bug where expressions like {{v::type[1].field}} 
fail to parse correctly because the {{::}} operator is too greedy.

I have already completed the fix within the Babel parser to resolve this. I'm 
fine with keeping it in Babel for now rather than moving it to the core parser. 
you can review this now.


was (Author: JIRAUSER308217):
To be clear, I am addressing a bug where expressions like {{v::type[1].field}} 
fail to parse correctly because the {{::}} operator is too greedy.

I have already completed the fix within the Babel parser to resolve this. I'm 
fine with keeping it in Babel for now rather than moving it to the core parser, 
as long as we address this functional issue. Are you okay with me proceeding 
with the Babel-based fix?

> Babel parser allows postfix access after PostgreSQL-style :: infix cast
> -----------------------------------------------------------------------
>
>                 Key: CALCITE-7475
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7475
>             Project: Calcite
>          Issue Type: Improvement
>          Components: babel
>    Affects Versions: 1.41.0
>            Reporter: Tamas Mate
>            Assignee: krooswu
>            Priority: Major
>              Labels: pull-request-available
>
> In the Babel parser, InfixCast currently continues with regular postfix 
> parsing after expr "::" type.
> This means the parser accepts postfix forms around "::" that go beyond a 
> plain infix cast.
> Existing tests already cover examples such as:
>  
> {code:java}
> select v.field::integer,
>   arr[1].field::varchar,
>   v.field.field2::integer,
>   v.field[2]::integer
> from t
> select v::varchar array[1].field from t
> select (v::varchar array)[1].field from t{code}
>  
>  
> The current behavior is subtle because parentheses change how the postfix is 
> associated. The existing tests expect:
>  
>  
> {code:java}
> select v::varchar array[1].field from t{code}
> to unparse as
>  
>  
> {code:java}
> SELECT `V` :: (VARCHAR ARRAY[1].`FIELD`)
> FROM `T`{code}
> while
>  
>  
> {code:java}
> select (v::varchar array)[1].field from t{code}
> unparses as
>  
>  
> {code:java}
> SELECT (`V` :: VARCHAR ARRAY[1].`FIELD`)
> FROM `T`{code}
> This ticket is to decide whether postfix access after "::" should be 
> supported in Babel at all, and if so, to document and test the intended 
> precedence rules more explicitly.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to