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));
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++)
{
}
appendStringInfo(&buf, ") FROM %s",
- quote_identifier(NameStr(pgclassrec->relname)));
+ generate_relation_name(statextrec->starelid, NIL));
ReleaseSysCache(statexttup);
- ReleaseSysCache(pgclasstup);
return buf.data;
}
(1 row)
+SELECT pg_get_statisticsextdef(0);
+ pg_get_statisticsextdef
+-------------------------
+
+(1 row)
+
SELECT pg_get_triggerdef(0);
pg_get_triggerdef
-------------------
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;
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);
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