[ 
https://issues.apache.org/jira/browse/CALCITE-5533?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oliver Lee updated CALCITE-5533:
--------------------------------
    Description: 
The error message from {{getAllowedSignature()}} for 
{{FamilyOperandTypeChecker}} [uses the SqlTypeFamily 
|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/FamilyOperandTypeChecker.java#L190]instead
 of the actual type that is used in the function call.

 

For example this query using the Big Query dialect (context: BQ {{TIMESTAMP}} 
is Calcite's {{TIMESTAMP_WITH_LOCAL_TIME_ZONE}})
{quote}SELECT TIMESTAMP_DIFF(1, TIMESTAMP "2008-12-25 15:30:00", HOUR)
{quote}
You would expect the error message in the current state to be produced using 
Calcite types:
{quote}Cannot apply 'TIMESTAMP_DIFF' to arguments of type 
'TIMESTAMP_DIFF(<INTEGER>, <TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)>, <INTERVAL 
HOUR>)'. Supported form(s): 'TIMESTAMP_DIFF(<TIMESTAMP_WITH_LOCAL_TIME_ZONE>, 
<TIMESTAMP_WITH_LOCAL_TIME_ZONE>, <ANY>)'
{quote}
However the error message is actually:

 
{quote}Cannot apply 'TIMESTAMP_DIFF' to arguments of type 
'TIMESTAMP_DIFF(<INTEGER>, <TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)>, <INTERVAL 
HOUR>)'. Supported form(s): 'TIMESTAMP_DIFF(<TIMESTAMP>, <TIMESTAMP>, <ANY>)'
{quote}
 

The 
[TIMESTAMP_DIFF|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java#L811]
 function checks that the operands are from the 
[SqlTypeFamily.TIMESTAMP|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java#L182]
 type family and the error message [uses the family 
name|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/FamilyOperandTypeChecker.java#L190]
 SqlTypeFamily.TIMESTAMP,  not the SqlTypeName  
[SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java#L183].

 

 

  was:
The error message from {{getAllowedSignature()}} for 
{{FamilyOperandTypeChecker}} [uses the SqlTypeFamily 
|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/FamilyOperandTypeChecker.java#L190]instead
 of the actual type that is used in the function call.

 

For example this query using the Big Query dialect (BQ TIMESTAMP is Calcite's 
TIMESTAMP_WITH_LOCAL_TIME_ZONE)
{quote}SELECT TIMESTAMP_DIFF(1, TIMESTAMP "2008-12-25 15:30:00", HOUR)
{quote}
You would expect the error message in the current state to be produced using 
Calcite types:
{quote}Cannot apply 'TIMESTAMP_DIFF' to arguments of type 
'TIMESTAMP_DIFF(<INTEGER>, <TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)>, <INTERVAL 
HOUR>)'. Supported form(s): 'TIMESTAMP_DIFF(<TIMESTAMP_WITH_LOCAL_TIME_ZONE>, 
<TIMESTAMP_WITH_LOCAL_TIME_ZONE>, <ANY>)'
{quote}
However the error message is actually:

 
{quote}Cannot apply 'TIMESTAMP_DIFF' to arguments of type 
'TIMESTAMP_DIFF(<INTEGER>, <TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)>, <INTERVAL 
HOUR>)'. Supported form(s): 'TIMESTAMP_DIFF(<TIMESTAMP>, <TIMESTAMP>, <ANY>)'
{quote}
 

The 
[TIMESTAMP_DIFF|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java#L811]
 function checks that the operands are from the 
[SqlTypeFamily.TIMESTAMP|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java#L182]
 type family and the error message [uses the family 
name|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/FamilyOperandTypeChecker.java#L190]
 SqlTypeFamily.TIMESTAMP,  not the SqlTypeName  
[SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java#L183].

 

 


> Unclear type name in FamilyOperandTypeChecker getAllowedSignature()
> -------------------------------------------------------------------
>
>                 Key: CALCITE-5533
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5533
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Oliver Lee
>            Priority: Minor
>
> The error message from {{getAllowedSignature()}} for 
> {{FamilyOperandTypeChecker}} [uses the SqlTypeFamily 
> |https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/FamilyOperandTypeChecker.java#L190]instead
>  of the actual type that is used in the function call.
>  
> For example this query using the Big Query dialect (context: BQ {{TIMESTAMP}} 
> is Calcite's {{TIMESTAMP_WITH_LOCAL_TIME_ZONE}})
> {quote}SELECT TIMESTAMP_DIFF(1, TIMESTAMP "2008-12-25 15:30:00", HOUR)
> {quote}
> You would expect the error message in the current state to be produced using 
> Calcite types:
> {quote}Cannot apply 'TIMESTAMP_DIFF' to arguments of type 
> 'TIMESTAMP_DIFF(<INTEGER>, <TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)>, <INTERVAL 
> HOUR>)'. Supported form(s): 'TIMESTAMP_DIFF(<TIMESTAMP_WITH_LOCAL_TIME_ZONE>, 
> <TIMESTAMP_WITH_LOCAL_TIME_ZONE>, <ANY>)'
> {quote}
> However the error message is actually:
>  
> {quote}Cannot apply 'TIMESTAMP_DIFF' to arguments of type 
> 'TIMESTAMP_DIFF(<INTEGER>, <TIMESTAMP_WITH_LOCAL_TIME_ZONE(0)>, <INTERVAL 
> HOUR>)'. Supported form(s): 'TIMESTAMP_DIFF(<TIMESTAMP>, <TIMESTAMP>, <ANY>)'
> {quote}
>  
> The 
> [TIMESTAMP_DIFF|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java#L811]
>  function checks that the operands are from the 
> [SqlTypeFamily.TIMESTAMP|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java#L182]
>  type family and the error message [uses the family 
> name|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/FamilyOperandTypeChecker.java#L190]
>  SqlTypeFamily.TIMESTAMP,  not the SqlTypeName  
> [SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE|https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/type/SqlTypeFamily.java#L183].
>  
>  



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

Reply via email to