aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/ruleutils.c20
-rw-r--r--src/test/regress/expected/rules.out6
-rw-r--r--src/test/regress/expected/stats_ext.out7
-rw-r--r--src/test/regress/sql/rules.sql1
-rw-r--r--src/test/regress/sql/stats_ext.sql4
5 files changed, 23 insertions, 15 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index d57d5568b28..c2681ced2af 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -1448,11 +1448,10 @@ static char *
pg_get_statisticsext_worker(Oid statextid, bool missing_ok)
{
Form_pg_statistic_ext statextrec;
- Form_pg_class pgclassrec;
HeapTuple statexttup;
- HeapTuple pgclasstup;
StringInfoData buf;
int colno;
+ char *nsp;
statexttup = SearchSysCache1(STATEXTOID, ObjectIdGetDatum(statextid));
@@ -1465,20 +1464,12 @@ pg_get_statisticsext_worker(Oid statextid, bool missing_ok)
statextrec = (Form_pg_statistic_ext) GETSTRUCT(statexttup);
- pgclasstup = SearchSysCache1(RELOID, ObjectIdGetDatum(statextrec->starelid));
-
- if (!HeapTupleIsValid(statexttup))
- {
- ReleaseSysCache(statexttup);
- elog(ERROR, "cache lookup failed for relation %u", statextrec->starelid);
- }
-
- pgclassrec = (Form_pg_class) GETSTRUCT(pgclasstup);
-
initStringInfo(&buf);
+ nsp = get_namespace_name(statextrec->stanamespace);
appendStringInfo(&buf, "CREATE STATISTICS %s ON (",
- quote_identifier(NameStr(statextrec->staname)));
+ quote_qualified_identifier(nsp,
+ NameStr(statextrec->staname)));
for (colno = 0; colno < statextrec->stakeys.dim1; colno++)
{
@@ -1494,10 +1485,9 @@ pg_get_statisticsext_worker(Oid statextid, bool missing_ok)
}
appendStringInfo(&buf, ") FROM %s",
- quote_identifier(NameStr(pgclassrec->relname)));
+ generate_relation_name(statextrec->starelid, NIL));
ReleaseSysCache(statexttup);
- ReleaseSysCache(pgclasstup);
return buf.data;
}
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 71121c86634..d706f42b2d7 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -3167,6 +3167,12 @@ SELECT pg_get_ruledef(0);
(1 row)
+SELECT pg_get_statisticsextdef(0);
+ pg_get_statisticsextdef
+-------------------------
+
+(1 row)
+
SELECT pg_get_triggerdef(0);
pg_get_triggerdef
-------------------
diff --git a/src/test/regress/expected/stats_ext.out b/src/test/regress/expected/stats_ext.out
index 83d70bf9b9a..0e30861ab82 100644
--- a/src/test/regress/expected/stats_ext.out
+++ b/src/test/regress/expected/stats_ext.out
@@ -5,6 +5,13 @@ CREATE STATISTICS ab1_a_b_stats ON (a, b) FROM ab1;
DROP STATISTICS ab1_a_b_stats;
CREATE SCHEMA regress_schema_2;
CREATE STATISTICS regress_schema_2.ab1_a_b_stats ON (a, b) FROM ab1;
+-- Let's also verify the pg_get_statisticsextdef output looks sane.
+SELECT pg_get_statisticsextdef(oid) FROM pg_statistic_ext WHERE staname = 'ab1_a_b_stats';
+ pg_get_statisticsextdef
+---------------------------------------------------------------------
+ CREATE STATISTICS regress_schema_2.ab1_a_b_stats ON (a, b) FROM ab1
+(1 row)
+
DROP STATISTICS regress_schema_2.ab1_a_b_stats;
-- Ensure statistics are dropped when columns are
CREATE STATISTICS ab1_b_c_stats ON (b, c) FROM ab1;
diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql
index 90dc9ceaf46..dcff0de2a51 100644
--- a/src/test/regress/sql/rules.sql
+++ b/src/test/regress/sql/rules.sql
@@ -1150,6 +1150,7 @@ SELECT pg_get_constraintdef(0);
SELECT pg_get_functiondef(0);
SELECT pg_get_indexdef(0);
SELECT pg_get_ruledef(0);
+SELECT pg_get_statisticsextdef(0);
SELECT pg_get_triggerdef(0);
SELECT pg_get_viewdef(0);
SELECT pg_get_function_arguments(0);
diff --git a/src/test/regress/sql/stats_ext.sql b/src/test/regress/sql/stats_ext.sql
index 946cb848535..8f23653a9b6 100644
--- a/src/test/regress/sql/stats_ext.sql
+++ b/src/test/regress/sql/stats_ext.sql
@@ -7,6 +7,10 @@ DROP STATISTICS ab1_a_b_stats;
CREATE SCHEMA regress_schema_2;
CREATE STATISTICS regress_schema_2.ab1_a_b_stats ON (a, b) FROM ab1;
+
+-- Let's also verify the pg_get_statisticsextdef output looks sane.
+SELECT pg_get_statisticsextdef(oid) FROM pg_statistic_ext WHERE staname = 'ab1_a_b_stats';
+
DROP STATISTICS regress_schema_2.ab1_a_b_stats;
-- Ensure statistics are dropped when columns are