aboutsummaryrefslogtreecommitdiff
path: root/src/bin/psql/describe.c
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2017-04-05 18:00:42 -0400
committerSimon Riggs <simon@2ndQuadrant.com>2017-04-05 18:00:42 -0400
commit2686ee1b7ccfb9214064d4d2a98ea77382880306 (patch)
tree32095d935e240b93ed30b1e86c2efa161cffa4dd /src/bin/psql/describe.c
parent00b6b6feb12cef53737287b67ecef6aff1f1d8ab (diff)
downloadpostgresql-2686ee1b7ccfb9214064d4d2a98ea77382880306.tar.gz
postgresql-2686ee1b7ccfb9214064d4d2a98ea77382880306.zip
Collect and use multi-column dependency stats
Follow on patch in the multi-variate statistics patch series. CREATE STATISTICS s1 WITH (dependencies) ON (a, b) FROM t; ANALYZE; will collect dependency stats on (a, b) and then use the measured dependency in subsequent query planning. Commit 7b504eb282ca2f5104b5c00b4f05a3ef6bb1385b added CREATE STATISTICS with n-distinct coefficients. These are now specified using the mutually exclusive option WITH (ndistinct). Author: Tomas Vondra, David Rowley Reviewed-by: Kyotaro HORIGUCHI, Álvaro Herrera, Dean Rasheed, Robert Haas and many other comments and contributions Discussion: https://postgr.es/m/56f40b20-c464-fad2-ff39-06b668fac47c@2ndquadrant.com
Diffstat (limited to 'src/bin/psql/describe.c')
-rw-r--r--src/bin/psql/describe.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c
index b0f3e5e3470..2ef06261e69 100644
--- a/src/bin/psql/describe.c
+++ b/src/bin/psql/describe.c
@@ -2331,7 +2331,8 @@ describeOneTableDetails(const char *schemaname,
" FROM ((SELECT pg_catalog.unnest(stakeys) AS attnum) s\n"
" JOIN pg_catalog.pg_attribute a ON (starelid = a.attrelid AND\n"
"a.attnum = s.attnum AND not attisdropped))) AS columns,\n"
- " (staenabled::char[] @> '{d}'::char[]) AS ndist_enabled\n"
+ " (staenabled::char[] @> '{d}'::char[]) AS ndist_enabled,\n"
+ " (staenabled::char[] @> '{f}'::char[]) AS deps_enabled\n"
"FROM pg_catalog.pg_statistic_ext stat WHERE starelid = '%s'\n"
"ORDER BY 1;",
oid);
@@ -2348,7 +2349,7 @@ describeOneTableDetails(const char *schemaname,
for (i = 0; i < tuples; i++)
{
- int cnt = 0;
+ bool gotone = false;
printfPQExpBuffer(&buf, " ");
@@ -2361,7 +2362,12 @@ describeOneTableDetails(const char *schemaname,
if (strcmp(PQgetvalue(result, i, 5), "t") == 0)
{
appendPQExpBufferStr(&buf, "ndistinct");
- cnt++;
+ gotone = true;
+ }
+
+ if (strcmp(PQgetvalue(result, i, 6), "t") == 0)
+ {
+ appendPQExpBuffer(&buf, "%sdependencies", gotone ? ", " : "");
}
appendPQExpBuffer(&buf, ") ON (%s)",