Tamas Mate created CALCITE-7475:
-----------------------------------

             Summary: 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


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