Re: How to modify select identifiers

2018-10-31 Thread Julian Feinauer
Please have a look in the SqlDialect class: /** * A dialect useful for generating SQL which can be parsed by the * Calcite parser, in particular quoting literals and identifiers. If you * want a dialect that knows the full capabilities of the database, create * one from a connection.

Re: How to modify select identifiers

2018-10-31 Thread Shashwat Kumar
Hi Julian, I have been able to successfully implement your above suggestions and got properly modifed SqlNode in the end. Now I want to convert SqlNode to sqlquery which I want to pass to JDBC connection. Could you please help in that? sqlNode.toString() is not giving proper query. sqlNode.toSqlS

Re: How to modify select identifiers

2018-10-31 Thread Julian Feinauer
Hi Shashwat, the implementation to use should be SqlBasicCall. And to achieve what you want to do I would use SqlParserPos pos = yourNode.getParserPosition(); SqlNode aliased = new SqlBasicCall(SqlStdOperatorTable.AS, new SqlNode[]{yourNode, new SqlIdentifier(Collections.singletonList("v", pos),

Re: How to modify select identifiers

2018-10-31 Thread Shashwat Kumar
Hi Julian, Thank you for quick response. SqlCall is abstract class so I am not able to find which concrete subclass of it I should instantiate. Could you please give some more hint or code snippet to do it? Also how to modify the identifier name. Say I want to change value to _MAP['value'] e.g. S

Re: How to modify select identifiers

2018-10-31 Thread Julian Feinauer
Hi Shashwat, Calcite does this by a Call to the "AS" Operator (basically value as v is just syntactic sugar for AS(value, v)). So you need to create a call node (SqlCall) with the AS Operator (SqlStdOperatorTable.AS) and as operands you node and an SqlIdentifier for the Alias. But your visitor

How to modify select identifiers

2018-10-31 Thread Shashwat Kumar
I want to modify select identifiers in sql statement. For example SELECT value FROM Data to SELECT value as v FROM Data I am able to get SqlNode for select identifiers as follows. public String visit(SqlCall sqlCall) { SqlNodeList selectList = ((SqlSelect) sqlCall).getSelectList();