[
https://issues.apache.org/jira/browse/PHOENIX-853?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James Taylor resolved PHOENIX-853.
----------------------------------
Resolution: Fixed
Fix Version/s: 5.0.0
4.0.0
3.0.0
> Support CAST(x as varchar(length)) syntax
> -----------------------------------------
>
> Key: PHOENIX-853
> URL: https://issues.apache.org/jira/browse/PHOENIX-853
> Project: Phoenix
> Issue Type: Improvement
> Reporter: Bruno Dumon
> Fix For: 3.0.0, 4.0.0, 5.0.0
>
> Attachments: support-length-and-scale-in-cast.patch.txt
>
>
> I would like Phoenix to recognize casts to varchars that specify lengths,
> e.g. cast(x as varchar(10)). It is not an immediate goal to enforce the
> length, but at least to recongize the syntax.
> (the reason I'm running into this is because I have sql generated by Optiq
> which uses these kinds of constructs)
> I can easily hack the grammar to add this to the CAST grammar, but then I
> realize that the data type specification one can put in a cast is the same as
> what you can put in a column definition. Therefore, it would make more sense
> to introduce a separate rule to parse the data type and reuse that in the
> cast and column_def rules.
> For arrays, the specification is currently not consistent:
> * in column_def it is: ar=ARRAY? (lsq=LSQUARE (a=NUMBER)? RSQUARE)?
> * in casts it is: ar=(ARRAY | (LSQUARE RSQUARE))? RPAREN
> I assume this is not on purpose and can be aligned.
> So in summary, what I'd like to do:
> * introduce some object to hold the data type information, e.g.
> "DataTypeDef", which splits of the pure data type parts from ColumnDef,
> ColumnDef would then contain a DataTypeDef
> * introduce a separate parser rule to match the data type specification, and
> which returns this new DataTypeDef object
> * reuse this parser rule in the column_def and cast rules
> * functionally, casts would stay the same for now
> Alternatively, I can just add "(LPAREN l=NUMBER (COMMA s=NUMBER)? RPAREN)?"
> to the cast rule and be done with it.
> WDYT?
--
This message was sent by Atlassian JIRA
(v6.2#6252)