Is your problem related to https://issues.apache.org/jira/browse/CALCITE-1153 
<https://issues.apache.org/jira/browse/CALCITE-1153> or 
https://issues.apache.org/jira/browse/CALCITE-1330? 
<https://issues.apache.org/jira/browse/CALCITE-1330?>

> On Aug 22, 2016, at 8:17 AM, bluejoe <[email protected]> wrote:
> 
> Hi,
> Dear developers,
> 
> I am working on a SQL engine based on Calcite.
> I defined a AbstractTable which provides a getRowType() method to tell its 
> columns look like: NAME char, AGE integer
> 
> Then I override the scan(DataContext, java.util.List<RexNode>) method to 
> implement the searching function.
> When I sent a SQL command like
> 
> select * from PERSONS where NAME=‘bluejoe’ and AGE>30
> 
> In the scan(DataContext, java.util.List<RexNode>) method,
> I found the filter on column `AGE` is parsed properly like `>($2, 30)`
> 
> While the filter on column `NAME` is parsed as:
> 
> =(CAST($1):CHAR(7) CHARACTER SET "ISO-8859-1" COLLATE 
> "ISO-8859-1$en_US$primary" NOT NULL, 'bluejoe’)
> 
> To make my program work, I have to unwrap the CastFunction Object to get the 
> inner $1 value, ignoring extra information, CHAR(7), for example. You know, 
> this way looks very strange and easy to crash.
> 
> I am wonder if there is a more robust way to get the inline `NAME` column 
> name?
> Or if I define the column type in a wrong way?
> 
> I need your kind help!
> Many thanks!
> 
> Best regards,
> shen, from China 
> 

Reply via email to