Fix crash when pg_get_viewdef_name_ext() is passed a non-view relation.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 7 Aug 2016 21:56:34 +0000 (17:56 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 7 Aug 2016 21:56:34 +0000 (17:56 -0400)
Oversight in commit 976b24fb4.

Andreas Seltenreich

Report: <87y448l3ag.fsf@credativ.de>

src/backend/utils/adt/ruleutils.c

index d68ca7a7dc010de4494cbd6d5b600e297d91d527..ec966c752ea46039ea68132d5b0c95877e0ca267 100644 (file)
@@ -671,6 +671,7 @@ pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
    int         prettyFlags;
    RangeVar   *viewrel;
    Oid         viewoid;
+   char       *res;
 
    prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : PRETTYFLAG_INDENT;
 
@@ -678,7 +679,12 @@ pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
    viewrel = makeRangeVarFromNameList(textToQualifiedNameList(viewname));
    viewoid = RangeVarGetRelid(viewrel, NoLock, false);
 
-   PG_RETURN_TEXT_P(string_to_text(pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT)));
+   res = pg_get_viewdef_worker(viewoid, prettyFlags, WRAP_COLUMN_DEFAULT);
+
+   if (res == NULL)
+       PG_RETURN_NULL();
+
+   PG_RETURN_TEXT_P(string_to_text(res));
 }
 
 /*