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 >
