Can someone remind me - is there an option for the writer to omit quotes on 
identifiers if they are unnecessary? (This would imply that the writer knows 
how the target dialect treats case sensitivity.)

I may have implemented such a feature at some point. (I forget.) If so it 
should generate nice-looking sql with a little extra effort configuring the 
writer. 

Julian

> On May 26, 2022, at 19:32, Sandeep N <[email protected]> wrote:
> 
> Thank you Yanjing, that fix addressed it.
> 
> --Sandeep
> 
>> On Thu, May 26, 2022 at 5:33 PM Yanjing Wang <[email protected]>
>> wrote:
>> 
>> Hi Sandeep,
>> 
>> try select.toSqlString(new
>> 
>> AnsiSqlDialect(AnsiSqlDialect.DEFAULT_CONTEXT.withIdentifierQuoteString(""))).getSql().
>> 
>> Sandeep N <[email protected]> 于2022年5月27日周五 06:03写道:
>> 
>>> Hi Stamatis,
>>> 
>>> Thanks for the quick response, I tried your suggestion as follows
>>> 
>>> RelToSqlConverter converter = new RelToSqlConverter(new
>>> 
>>> 
>> AnsiSqlDialect(AnsiSqlDialect.DEFAULT_CONTEXT.withIdentifierQuoteString("")));
>>> SqlSelect select = converter.visitRoot(relNode).asSelect();
>>> SqlWriterConfig config = SqlPrettyWriter.config().
>>>                withCaseClausesOnNewLines(false).
>>>                withQuoteAllIdentifiers(false);
>>> System.out.println(new SqlPrettyWriter(config).format(select));
>>> 
>>> and I still get this
>>> SELECT "a"
>>> FROM test_table
>>> WHERE "b" = 'value';
>>> 
>>> It is not obvious to me as to what I am doing wrong. Is the above block
>> of
>>> code the only pieces that I need to put in play to get that sql
>> generated?
>>> 
>>> --Sandeep
>>> 
>>> On Thu, May 26, 2022 at 2:22 PM Stamatis Zampetakis <[email protected]>
>>> wrote:
>>> 
>>>> Hi Sandeep,
>>>> 
>>>> If you want to turn off quoting (which I am not sure if it is a good
>>> idea)
>>>> when you go from relational algebra to SQL you have to customize the
>>>> SqlDialect that you are using via Context#withIdentifierQuoteString
>> [1].
>>>> You can find a small example as part of RelToSqlConverterTest here [2].
>>>> 
>>>> Best,
>>>> Stamatis
>>>> 
>>>> [1]
>>>> 
>>>> 
>>> 
>> https://github.com/apache/calcite/blob/9bdfd9a178f493b235d8785afd94fd0c998e8cce/core/src/main/java/org/apache/calcite/sql/SqlDialect.java#L1408
>>>> [2]
>>>> 
>>>> 
>>> 
>> https://github.com/zabetak/calcite/commit/ea18d28f4fb44113c414c393fe28fc94b3eecc29
>>>> 
>>>> On Thu, May 26, 2022 at 9:18 PM Sandeep N <[email protected]>
>>>> wrote:
>>>> 
>>>>> Hi all,
>>>>> 
>>>>> I am pretty aware that this question may have been asked before as I
>>> have
>>>>> found references on stackoverflow but have yet to stumble on a
>> response
>>>>> which lays out the path on solving this.
>>>>> 
>>>>> Here is the problem I am facing -
>>>>> I am using relational algebra to generate SQL on a table test_table
>>> with
>>>>> two columns a and b fed into the calcite Framework (see below) via a
>>>> custom
>>>>> catalog. Both a and b are varchar columns.
>>>>> 
>>>>> FrameworkConfig config = Frameworks.newConfigBuilder().
>>>>>                parserConfig(SqlParser.Config.DEFAULT).
>>>>>                defaultSchema(addSchemas(rootSchema, schemaName,
>>>> schema)).
>>>>> <--- this is where I plug my custom table.
>>>>>                traitDefs((List<RelTraitDef>) null).
>>>>>                operatorTable(sqlOperatorTable).
>>>>> 
>> programs(Programs.heuristicJoinOrder(Programs.RULE_SET,
>>>>> true, 2)).build()
>>>>> 
>>>>> The relational algebra is then used to generate SQL to the
>>> AnsiSqlDialect
>>>>> and the resultant output SQL is
>>>>> 
>>>>> SELECT "a"
>>>>> FROM test_table
>>>>> WHERE "b" = 'value';
>>>>> 
>>>>> I have the SqlWriterConfig setup as such
>>>>> 
>>>>> SqlWriterConfig config = SqlPrettyWriter.config().
>>>>>                withCaseClausesOnNewLines(false).
>>>>>                withQuoteAllIdentifiers(false);
>>>>> 
>>>>> I have been trying to figure what needs to change in the sql writer
>> but
>>>>> after scanning stackoverflow it appears this is controlled by
>>>>> CalciteConnectionConfig and potentially not the SqlWriter. Is this
>>>>> accurate? and if so how do I assemble the right connection config
>> when
>>> I
>>>> am
>>>>> building the custom catalog?
>>>>> 
>>>>> P.s: I am not parsing SQL but writing directly to the relational
>>> algebra
>>>>> nodes so SqlParser does not come into play here.
>>>>> 
>>>>> Any pointers on how I can go about this is appreciated, say existing
>>>> tests
>>>>> or code which will help me put together a configuration which gets me
>>> to
>>>>> this sql
>>>>> 
>>>>> SELECT a
>>>>> FROM test_table
>>>>> WHERE b = 'value';
>>>>> 
>>>>> Thanks in advance.
>>>>> 
>>>>> --Sandeep
>>>>> 
>>>> 
>>> 
>> 

Reply via email to