[
https://issues.apache.org/jira/browse/CALCITE-4209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17198601#comment-17198601
]
Julian Hyde commented on CALCITE-4209:
--------------------------------------
In {{RelBuilder.Config}} I propose to add {{boolean simplifyLimit()}}:
{code}
/** Whether to simplify LIMIT 0 to an empty relation; default true. */
@ImmutableBeans.Property
@ImmutableBeans.BooleanDefault(true)
boolean simplifyLimit();
/** Sets {@link #simplifyLimit()}. */
Config withSimplifyLimit(boolean simplifyLimit);
{code}
> RelBuilder: ability to avoid generating empty() on limit 0
> ----------------------------------------------------------
>
> Key: CALCITE-4209
> URL: https://issues.apache.org/jira/browse/CALCITE-4209
> Project: Calcite
> Issue Type: Improvement
> Reporter: Steven Talbot
> Priority: Major
>
> When you call
> {code:java}
> relBuilder.limit(0, 0){code}
> It triggers a call to RelBuilder.empty at
> [https://github.com/apache/calcite/blob/88d18185e6177c9df587bdd23dd4049f59adc2e4/core/src/main/java/org/apache/calcite/tools/RelBuilder.java#L2531].
> This is fine as the default behavior, but for cases where we intend to
> convert the relational algebra to SQL and display it somewhere, it would be
> preferable to turn this behavior off, either as an extra flag to this method
> or a configuration parameter. The call to empty() often results in a VALUES
> or a select list of literal NULLs, which looks ugly and can confuse a user.
> Moreover, there are certain databases (like BigQuery) that can cheaply handle
> a LIMIT 0 query as a form of validation, and if we munge the query with
> 'empty()' we lose the ability to validate its correctness by going to the DB.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)