diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index 90b2bb1fea498a9ff88e61273e872398c8044895..37b77e28cb9abdf5fccdaf2ef96a1d494f7ede39 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -589,9 +589,15 @@ do_analyze_rel(Relation onerel, int options, VacuumParams *params, thisdata->attr_cnt, thisdata->vacattrstats); } - /* Build extended statistics (if there are any). */ - BuildRelationExtStatistics(onerel, totalrows, numrows, rows, attr_cnt, - vacattrstats); + /* + * Build extended statistics (if there are any). + * + * For now we only build extended statistics on individual relations, + * not for relations representing inheritance trees. + */ + if (!inh) + BuildRelationExtStatistics(onerel, totalrows, numrows, rows, + attr_cnt, vacattrstats); } /* diff --git a/src/test/regress/expected/stats_ext.out b/src/test/regress/expected/stats_ext.out index 054a381dad3ee63a191720009807443a46f60cce..eebf250998e1959c03b2d21e17911ced0753d793 100644 --- a/src/test/regress/expected/stats_ext.out +++ b/src/test/regress/expected/stats_ext.out @@ -86,6 +86,14 @@ ANALYZE ab1 (a); WARNING: statistics object "public.ab1_a_b_stats" could not be computed for relation "public.ab1" ANALYZE ab1; DROP TABLE ab1; +-- Ensure we can build statistics for tables with inheritance. +CREATE TABLE ab1 (a INTEGER, b INTEGER); +CREATE TABLE ab1c () INHERITS (ab1); +INSERT INTO ab1 VALUES (1,1); +CREATE STATISTICS ab1_a_b_stats ON a, b FROM ab1; +ANALYZE ab1; +DROP TABLE ab1 CASCADE; +NOTICE: drop cascades to table ab1c -- Verify supported object types for extended statistics CREATE schema tststats; CREATE TABLE tststats.t (a int, b int, c text); diff --git a/src/test/regress/sql/stats_ext.sql b/src/test/regress/sql/stats_ext.sql index 46acaadb3932a7a891b480c449214ac442a1bad8..43ff77c5344e0f2b07bd5c5585da67e566d1c51f 100644 --- a/src/test/regress/sql/stats_ext.sql +++ b/src/test/regress/sql/stats_ext.sql @@ -55,6 +55,14 @@ ANALYZE ab1 (a); ANALYZE ab1; DROP TABLE ab1; +-- Ensure we can build statistics for tables with inheritance. +CREATE TABLE ab1 (a INTEGER, b INTEGER); +CREATE TABLE ab1c () INHERITS (ab1); +INSERT INTO ab1 VALUES (1,1); +CREATE STATISTICS ab1_a_b_stats ON a, b FROM ab1; +ANALYZE ab1; +DROP TABLE ab1 CASCADE; + -- Verify supported object types for extended statistics CREATE schema tststats;