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

Jark Wu commented on FLINK-27212:
---------------------------------

Hi [~matriv], {{x'45F0AB'}} is a {{BINARY}} not {{CHAR/VARCHAR}} type. So, 
{{CAST(x'45F0AB' AS VARBINARY(6))}} is a CAST BINARY to BINRY,  conversion (the 
hex string of course should be in hex digits). Therefore, what we are missing 
is CAST CHAR to BINARY, and this is supported in previous versions and other 
database systems. 

I would still vote this to be a blocker issue. 

cc [~twalthr]

> Failed to CAST('abcde', VARBINARY)
> ----------------------------------
>
>                 Key: FLINK-27212
>                 URL: https://issues.apache.org/jira/browse/FLINK-27212
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Runtime
>    Affects Versions: 1.16.0
>            Reporter: Shengkai Fang
>            Assignee: Marios Trivyzas
>            Priority: Blocker
>             Fix For: 1.16.0
>
>
> Please add test in the CalcITCase
> {code:scala}
> @Test
>   def testCalc(): Unit = {
>     val sql =
>       """
>         |SELECT CAST('abcde' AS VARBINARY(6))
>         |""".stripMargin
>     val result = tEnv.executeSql(sql)
>     print(result.getResolvedSchema)
>     result.print()
>   }
> {code}
> The exception is 
> {code:java}
> Caused by: org.apache.flink.table.api.TableException: Odd number of 
> characters.
>       at 
> org.apache.flink.table.utils.EncodingUtils.decodeHex(EncodingUtils.java:203)
>       at StreamExecCalc$33.processElement(Unknown Source)
>       at 
> org.apache.flink.streaming.runtime.tasks.ChainingOutput.pushToOperator(ChainingOutput.java:99)
>       at 
> org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:80)
>       at 
> org.apache.flink.streaming.runtime.tasks.ChainingOutput.collect(ChainingOutput.java:39)
>       at 
> org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:56)
>       at 
> org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:29)
>       at 
> org.apache.flink.streaming.api.operators.StreamSourceContexts$ManualWatermarkContext.processAndCollect(StreamSourceContexts.java:418)
>       at 
> org.apache.flink.streaming.api.operators.StreamSourceContexts$WatermarkContext.collect(StreamSourceContexts.java:513)
>       at 
> org.apache.flink.streaming.api.operators.StreamSourceContexts$SwitchingOnClose.collect(StreamSourceContexts.java:103)
>       at 
> org.apache.flink.streaming.api.functions.source.InputFormatSourceFunction.run(InputFormatSourceFunction.java:92)
>       at 
> org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:110)
>       at 
> org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:67)
>       at 
> org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.run(SourceStreamTask.java:332)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to