[ https://issues.apache.org/jira/browse/CALCITE-5913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17865514#comment-17865514 ]
Julian Hyde commented on CALCITE-5913: -------------------------------------- Is someone interested in finishing this? I think functional dependencies would be really useful, and we should not get too hung up on the exact API. Get something that delivers the information, and if there are performance issues we can change the API later. > 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)