I have logged https://issues.apache.org/jira/browse/CALCITE-1305 
<https://issues.apache.org/jira/browse/CALCITE-1305> for this.

> On Jul 5, 2016, at 12:54 PM, Julian Hyde <[email protected]> wrote:
> 
> I can reproduce the problem when table aliases are not the same case. Can you 
> please try to write some tests in SqlValidatorTest to see if there are other 
> issues?
> 
>> On Jul 3, 2016, at 11:34 PM, Homer <[email protected]> wrote:
>> 
>> Julian,
>> 
>> thanks
>> 
>> I think I tried something like that on my path to here but ran into this 
>> issue:
>> 
>>  select EX1.t1, count(*) from ex1 group by eX1.T1;
>> 
>>  Validate failed :From line 1, column 8 to line 1, column 13:
>>  Expression 'EX1.t1' is not being grouped
>> 
>> Maybe I need to go back and revisit this behavior in standard test
>> 
>> regards
>> 
>> 
>> 
>> On 2016-07-03 05:52 PM, Julian Hyde wrote:
>>> I wouldn’t enable case-sensitivity by overriding SqlValidatorCatalogReader 
>>> (as you seem to have done), because there’s too great a chance that you’ll 
>>> miss something. I would set unquotedCasing = UNCHANGED, caseSensitive = 
>>> false.
>>> 
>>> I added the following test to SqlValidatorTest and it worked fine:
>>> 
>>> @Test public void testCaseInsensitive2() {
>>>  final SqlTester tester1 = tester
>>>      .withCaseSensitive(false)
>>>      .withUnquotedCasing(Casing.UNCHANGED);
>>>  tester1.checkQuery("select deptno, count(*) from EMP group by DEPTNO");
>>> }
>>> 
>>> Julian
>>> 
>>>> On Jul 2, 2016, at 1:35 PM, Homer <[email protected]> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> I am sure it is me doing something wrong here in my parser/catalog reader 
>>>> setup but I am getting a validator issue around case sensitivity in group 
>>>> bys.
>>>> 
>>>> If I create a basic table like
>>>> 
>>>>  create table ex1 (t1 text);
>>>> 
>>>> 
>>>> and then insert a couple of values.
>>>> 
>>>> if I run the following group by query
>>>> 
>>>>  select t1, count(*) from ex1 group by t1;
>>>> 
>>>> 
>>>> All is fine
>>>> 
>>>> If i run this query
>>>> 
>>>>  select T1 from EX1;
>>>> 
>>>> 
>>>> All is fine and the case insensitive behavior works as expected
>>>> 
>>>> but if I run this query
>>>> 
>>>>  select t1, count(*) from ex1 group by T1;
>>>> 
>>>> 
>>>> I get an error from validator
>>>> 
>>>>  Validate failed :From line 1, column 8 to line 1, column 9:
>>>>  Expression 't1' is not being grouped
>>>> 
>>>> 
>>>> its probably worth noting that if I reverse the casing and run this query
>>>> 
>>>>  select T1, count(*) from ex1 group by t1;
>>>> 
>>>> 
>>>> All is fine, and the query works.
>>>> 
>>>> I have set all the parameters I can find appropriate in my parser (based 
>>>> on the csv example) for case insensitive matching
>>>> 
>>>>  @Override
>>>>     public RelDataTypeField field(RelDataType rowType, String alias) {
>>>>       return SqlValidatorUtil.lookupField(false, elideRecord, rowType,
>>>>               alias);
>>>>     }
>>>> 
>>>>     @Override
>>>>     public int fieldOrdinal(RelDataType rowType, String alias) {
>>>>       final RelDataTypeField field = field(rowType, alias);
>>>>       return field != null ? field.getIndex() : -1;
>>>>     }
>>>> 
>>>>     @Override
>>>>     public boolean matches(String string, String name) {
>>>>       return Util.matches(false, string, name);
>>>>     }
>>>> 
>>>>     @Override
>>>>     public int match(List<String> strings, String name) {
>>>>       return Util.findMatch(strings, name, false);
>>>>     }
>>>> 
>>>>     @Override
>>>>     public RelDataType createTypeFromProjection(final RelDataType type,
>>>>             final List<String> columnNameList) {
>>>>       return SqlValidatorUtil.createTypeFromProjection(type,
>>>>  columnNameList,
>>>>               typeFactory, false, elideRecord);
>>>>     }
>>>> 
>>>> 
>>>> Does anyone have an idea of what I am doing wrong here, it would appear 
>>>> the group by identifier matching is not respecting the case insensitive 
>>>> matching.
>>>> 
>>>> Any ideas greatly appreciated
>>>> 
>>>> Thanks
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>> 
> 

Reply via email to