]> granicus.if.org Git - postgresql/commitdiff
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));
 }
 
 /*