Stamatis Zampetakis created CALCITE-6704:
--------------------------------------------

             Summary: Add limit parameter to restrict the result size of 
UniqueKeys metadata
                 Key: CALCITE-6704
                 URL: https://issues.apache.org/jira/browse/CALCITE-6704
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.38.0
            Reporter: Stamatis Zampetakis
            Assignee: Stamatis Zampetakis


In some cases, the number of unique keys grows exponentially for certain 
relational expressions.

Consider a table with a composite key \{k1, k2, k3\} and the following query:
{code:sql}
SELECT k1, k1, k2, k2, k3, k3 FROM composite
{code}
The number of minimal unique keys for this query is 2^3:
{noformat}
{0, 2, 4}, {0, 3, 4}, {1, 2, 4}, {1, 3, 4}, {0, 2, 5}, {0, 3, 5}, {1, 2, 5}, 
{1, 3, 5}
{noformat}
In this case, the size of *minimal keys* is exponential to the number of 
columns in the composite key. The number of keys is f(x,y) = x^y where _x_ is 
the number of repetitions of each column and _y_ is the number of columns in 
the composite key. The example is taken out from CALCITE-6640.

A large number of unique keys may occur in other use-cases as well. Computing 
the entire result set may become prohibitively expensive and cause OOM and 
other failures. 

To prevent this from happening we propose to add a new  parameter to the 
UniqueKeys  interface allowing the users to specify a limit on the size of the 
result set.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to