You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (Jira)" <ji...@apache.org> on 2022/10/25 23:33:00 UTC

[jira] [Comment Edited] (CALCITE-5346) Support for type aliases

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

Julian Hyde edited comment on CALCITE-5346 at 10/25/22 11:32 PM:
-----------------------------------------------------------------

Possibly this could be implemented with a new method in {{RelDataTypeSystem}} that has a method that returns a string-to-string map.

If you have created {{BOOL}} as an alias for {{{}BOOLEAN{}}}, and write {{SELECT foo(true)}} would the error message say "{{{}Function not found: 'FOO(<BOOL>)'{}}}" or "{{{}Function not found: 'FOO(<BOOLEAN>)'{}}}". To achieve the former, the mapping to need to be bi-directional (i.e. a bijection).

If you have created {{BOOL}} as an alias for {{{}BOOLEAN{}}}, it will be valid to write {{SELECT CAST(1 AS BOOL)}}, but should it be valid to write {{SELECT CAST(1 AS BOOLEAN)}}?

Knowing a little of BigQuery's type system, I think it might be necessary to map {{TIMESTAMP}} to {{DATETIME}} and {{TIMESTAMP WITH LOCAL TIME ZONE}} to {{TIMESTAMP}}. That is, the mapping has an order to it, or in other words, behaves as a permutation.

Besides {{CAST}} and DDL (e.g. {{{}CREATE TABLE{}}}), where else are types used in Calcite?

Is {{STRING}} a direct substitution for {{VARCHAR}}? ({{VARCHAR}} allows a length, e.g. {{VARCHAR(60)}} but {{STRING}} does not.)

Would the type alias scheme disallow certain types?

Can/should any parts of this be implemented using user-defined types? (See CALCITE-2045.)


was (Author: julianhyde):
Possibly this could be implemented with a new method in {{RelDataTypeSystem}} that has a method that returns a string-to-string map.

If you have created {{BOOL}} as an alias for {{{}BOOLEAN{}}}, and write {{SELECT foo(true)}} would the error message say "\{{Function not found: 'FOO(<BOOL>)'}}" or "\{{Function not found: 'FOO(<BOOLEAN>)'}}". To achieve the former, the mapping to need to be bi-directional (i.e. a bijection).

If you have created {{BOOL}} as an alias for {{{}BOOLEAN{}}}, it will be valid to write {{{}SELECT CAST(1 AS BOOL){}}}, but should it be valid to write {{{}SELECT CAST(1 AS BOOLEAN){}}}?

Knowing a little of BigQuery's type system, I think it might be necessary to map {{TIMESTAMP}} to {{DATETIME}} and {{TIMESTAMP WITH LOCAL TIME ZONE}} to {{{}TIMESTAMP{}}}. That is, the mapping has an order to it, or in other words, behaves as a permutation.

Besides {{CAST}} and DDL (e.g. {{{}CREATE TABLE{}}}), where else are types used in Calcite?

Is {{STRING}} a direct substitution for {{{}VARCHAR{}}}?

Would the type alias scheme disallow certain types?

Can/should any parts of this be implemented using user-defined types? (See CALCITE-2045.)

> Support for type aliases
> ------------------------
>
>                 Key: CALCITE-5346
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5346
>             Project: Calcite
>          Issue Type: New Feature
>            Reporter: Will Noble
>            Assignee: Will Noble
>            Priority: Major
>
> We would like to support some sort of type alias functionality in order to map certain [BigQuery types|https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types] to ISO types, e.g. {{STRING}} -> {{VARCHAR}}.



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