[
https://issues.apache.org/jira/browse/CALCITE-7078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18017792#comment-18017792
]
Oliver Lee commented on CALCITE-7078:
-------------------------------------
I realized it's likely a parser error for Big Query dialect because it doesn't
support that prefix
Something like this in SqlParserTest
{quote}@Test void testUtfPrefixBigQuery() {
sql("select _utf8'hey'")
.withDialect(BIG_QUERY)
.ok("select _utf8'hey'");
}
{quote}
would fail unless I add to
[https://github.com/tanclary/calcite/blob/4b0ebd45da1431557e7c844b06b558d620571131/core/src/main/codegen/templates/Parser.jj#L8904-L8919]
I was getting errors like
{quote}Error: Error while executing SQL "SELECT _UTF8'方解石
"=" ...
"<>" ...
"!=" ...
"BETWEEN" ...
"LIKE" ...
"SIMILAR" ...
Error: Error while executing SQL "values _UTF8'解石
"LIKE" ...
"ILIKE" ...
"RLIKE" ...
"SIMILAR" ...
"+" ...
{quote}
> 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
> Assignee: 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)