]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Apply all available functional dependencies
authorTomas Vondra <tomas.vondra@postgresql.org>
Mon, 13 Jan 2020 00:20:57 +0000 (01:20 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Mon, 13 Jan 2020 00:21:06 +0000 (01:21 +0100)
commitaaa6761876ba5b06a5c3fa914b2951ace1e31dee
tree9e2cabceec793ae6e8091054d972cf2866f5b8aa
parent652686a334b437f57f9bd0e3baa5dbd245a9e15d
Apply all available functional dependencies

When considering functional dependencies during selectivity estimation,
it's not necessary to bother with selecting the best extended statistic
object and then use just dependencies from it. We can simply consider
all applicable functional dependencies at once.

This means we need to deserialie all (applicable) dependencies before
applying them to the clauses. This is a bit more expensive than picking
the best statistics and deserializing dependencies for it. To minimize
the additional cost, we ignore statistics that are not applicable.

Author: Tomas Vondra
Reviewed-by: Mark Dilger
Discussion: https://postgr.es/m/20191028152048.jc6pqv5hb7j77ocp@development
src/backend/statistics/dependencies.c
src/test/regress/expected/stats_ext.out
src/test/regress/sql/stats_ext.sql