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

Yu Xu commented on CALCITE-7078:
--------------------------------

[~mbudiu] I had tried to change call makePreciseStringLiteral instead of 
makeCharLiteral, then set charset to utf8(if not would not handle with Chinese 
cases), test case in description can be passed,but many other CI test would 
error, so not sure if this solution is feasible.

> Character literal can not support Chinese
> -----------------------------------------
>
>                 Key: CALCITE-7078
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7078
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.40.0
>            Reporter: Yu Xu
>            Priority: Major
>             Fix For: 1.41.0
>
>
> Currently we call function in quidem test can not use Chinese, reproduce as:
> in function.iq, we execute:
> {code:java}
> SELECT to_base64('方解石'); {code}
> would error out(other all varchar argument function would error):
> {code:java}
> > Caused by: org.apache.calcite.runtime.CalciteException: Failed to encode 
> > '方解石' in character set 'ISO-8859-1'
> >     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> >     at 
> > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> >     at 
> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> >     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> >     at 
> > org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:511)
> >     at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:605)
> >     at org.apache.calcite.util.NlsString.<init>(NlsString.java:155)
> >     at org.apache.calcite.util.NlsString.<init>(NlsString.java:123)
> >     at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:1321)
> >     at 
> > org.apache.calcite.rex.RexBuilder.makeCharLiteral(RexBuilder.java:1609)
> >     at 
> > org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertLiteral(SqlNodeToRexConverterImpl.java:110)
> >     at 
> > org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:5906)
> >     at 
> > org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:5084)
> >     at org.apache.calcite.sql.SqlLiteral.accept(SqlLiteral.java:596)
> >     at 
> > org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:5735)
> >     at 
> > org.apache.calcite.sql2rel.StandardConvertletTable.convertOperands(StandardConver
> >  (stack truncated) {code}
>  
> but in other datasystem such as MySQL is OK:
> {code:java}
> mysql> select to_base64('方解石');
> +------------------------+
> | to_base64('方解石')    |
> +------------------------+
> | 5pa56Kej55+z           |
> +------------------------+
> 1 row in set (0.01 sec)
>  {code}
>  



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

Reply via email to