aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2024-01-04 18:36:19 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2024-01-04 18:36:19 -0500
commit9391f71523b6e57f1194d9f6543bc7948c16411b (patch)
tree3bfb9b155e0b828e1d0c690a276e11757d72d853 /src/backend/executor
parent14dd0f27d7cd56ffae9ecdbe324965073d01a9ff (diff)
downloadpostgresql-9391f71523b6e57f1194d9f6543bc7948c16411b.tar.gz
postgresql-9391f71523b6e57f1194d9f6543bc7948c16411b.zip
Teach estimate_array_length() to use statistics where available.
If we have DECHIST statistics about the argument expression, use the average number of distinct elements as the array length estimate. (It'd be better to use the average total number of elements, but that is not currently calculated by compute_array_stats(), and it's unclear that it'd be worth extra effort to get.) To do this, we have to change the signature of estimate_array_length to pass the "root" pointer. While at it, also change its result type to "double". That's probably not really necessary, but it avoids any risk of overflow of the value extracted from DECHIST. All existing callers are going to use the result in a "double" calculation anyway. Paul Jungwirth, reviewed by Jian He and myself Discussion: https://postgr.es/m/CA+renyUnM2d+SmrxKpDuAdpiq6FOM=FByvi6aS6yi__qyf6j9A@mail.gmail.com
Diffstat (limited to 'src/backend/executor')
0 files changed, 0 insertions, 0 deletions