[ https://issues.apache.org/jira/browse/CALCITE-5913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17752312#comment-17752312 ]
Thomas Rebele edited comment on CALCITE-5913 at 8/9/23 8:24 AM: ---------------------------------------------------------------- Alternatively, all columns could be returned. The caller can then check for a single column with ImmutableBitSet.get(bitIndex). {code:java} public interface FunctionalDependency extends Metadata { /** Returns all columns that are functionally dependent on the specified columns. */ ImmutableBitSet getFunctionalDependentColumns(ImmutableBitSet columns); } {code} was (Author: thomas.rebele): Alternatively, one could return all columns and the check is done by the caller with ImmutableBitSet.get(bitIndex) {code:java} public interface FunctionalDependency extends Metadata { /** Returns all columns that are functionally dependent on the specified columns. */ ImmutableBitSet getFunctionalDependentColumns(ImmutableBitSet columns); } {code} > Support to get functional dependency metadata in RelMetadataQuery > ----------------------------------------------------------------- > > Key: CALCITE-5913 > URL: https://issues.apache.org/jira/browse/CALCITE-5913 > Project: Calcite > Issue Type: New Feature > Reporter: JingDas > Assignee: JingDas > Priority: Major > > Functional dependency analysis can be applied to various problems in query > optimization: > selectivity estimation, estimation of (intermediate) result sizes, *order > optimization* > *(in particular sort avoidance),* cost estimation, and various problems in > the area of semantic query optimization, as said in the book《[Exploiting > Functional Dependence in Query > Optimization》|https://cs.uwaterloo.ca/research/tr/2000/11/CS-2000-11.thesis.pdf] > > In calcite, it may be metadata that something like 'FunctionalDependency' > BuiltInMetadata as following: > {code:java} > public abstract class BuiltInMetadata { > // ... > public interface FunctionalDependency extends Metadata { > /** Returns whether column is functionally dependent on columns. */ > Boolean functionallyDetermine(ImmutableBitSet columns, int column); > } > } {code} > > As the above book said, functional dependency analysis is a valuable and > challenging work. I think support order optimization > (in particular sort avoidance) by the relevant functional dependency metadata > firstly, and then get complete functional dependency function step by step. -- This message was sent by Atlassian Jira (v8.20.10#820010)