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)