public interface SqlStatisticProvider
Unlike LatticeStatisticProvider
, works on raw tables and columns
and does not need a Lattice
.
It uses RelOptTable
because that contains
enough information to generate and execute SQL, while not being tied to a
lattice.
The main implementation,
QuerySqlStatisticProvider
, executes
queries on a populated database. Implementations that use database statistics
(from ANALYZE TABLE
, etc.) and catalog information (e.g. primary and
foreign key constraints) would also be possible.
Modifier and Type | Method and Description |
---|---|
boolean |
isForeignKey(RelOptTable fromTable,
java.util.List<java.lang.Integer> fromColumns,
RelOptTable toTable,
java.util.List<java.lang.Integer> toColumns)
Returns whether a join is a foreign key; that is, whether every row in
the referencing table is matched by at least one row in the referenced
table.
|
boolean |
isKey(RelOptTable table,
java.util.List<java.lang.Integer> columns)
Returns whether a collection of columns is a unique (or primary) key.
|
double |
tableCardinality(RelOptTable table)
Returns an estimate of the number of rows in
table . |
double tableCardinality(RelOptTable table)
table
.boolean isForeignKey(RelOptTable fromTable, java.util.List<java.lang.Integer> fromColumns, RelOptTable toTable, java.util.List<java.lang.Integer> toColumns)
For example, isForeignKey(EMP, [DEPTNO], DEPT, [DEPTNO])
returns true.
To change "at least one" to "exactly one", you also need to call
isKey(org.apache.calcite.plan.RelOptTable, java.util.List<java.lang.Integer>)
.
boolean isKey(RelOptTable table, java.util.List<java.lang.Integer> columns)
For example, isKey(EMP, [DEPTNO]
returns true;
For example, isKey(DEPT, [DEPTNO]
returns false.
Copyright © 2012–2019 The Apache Software Foundation. All rights reserved.