As far as I can tell, RelToSqlConverter is a suitable way to unparse a RelNode, which is also how our team applied it currently. For your question 1, the output SQL after rel2sql may not be exactly the same as your original query when using some optimized rules, however, more efficient (at least this is one of the goals). And I think you can find some useful information here: https://calcite.apache.org/docs/algebra.html. Since we can set dialect for rel2sql, there may also be a little semantic difference, which provides you an option to query different data sources. For your question 2, if a RelNode cannot be converted to SQL text, I think it’s possibly a bug.
I hope those information can be helpful for you. Best ZheHu ---- Replied Message ---- | From | Ron Liu<ron9....@gmail.com> | | Date | 02/8/2025 15:50 | | To | <dev@calcite.apache.org> | | Subject | [Discuss] Converting RelNode/RexNode to SQL Text | Hello, Dev! I am a contributor to Apache Flink. As you know, Flink SQL uses Apache Calcite as a framework for SQL parsing and optimization. For a SQL, Calcite will go through the transformation of SQL Text -> SqlNode -> RelNode. Now I have a requirement to reverse parse RelNode to SQL Text. By digging into the Calcite code, I found a tool RelToSqlConverter that can convert RelNode to SQL Text. Since Calcite may generate some unreadable intermediate variables during the process of converting SQL text to RelNode, I have the following concern when using RelToSqlConverter to reverse parse RelNode to SQL: 1. Can the SQL text parsed by RelToSqlConverter be equal to the original input SQL text? 2. Does RelToSqlConverter support parsing all RelNodes to SQL text? To summarize, my key question is whether using RelToSqlConverter to unparse a RelNode into SQL text is a production-ready solution? Since I don't know much about Calcite, I came to the community to ask for help. Other input: I found that the Coral[1] project is using RelToSqlConverter to unparsing RelNode into SQL text, which looks like a viable solution. 1. https://github.com/linkedin/coral Best, Ron