Hi,
sqlsmith just triggered a crash in pg_get_viewdef_name_ext(). Looks
like commit 976b24fb4 failed to update this caller of
pg_get_viewdef_worker(). Backtrace below. Patch attached.
regards,
Andreas
Program terminated with signal SIGSEGV, Segmentation fault.
(gdb) bt
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
#1 0x007cdf09 in cstring_to_text (s=s@entry=0x0) at varlena.c:152
#2 0x007a3409 in string_to_text (str=0x0) at ruleutils.c:10083
#3 pg_get_viewdef_name_ext (fcinfo=) at ruleutils.c:681
#4 0x005dfae2 in ExecMakeFunctionResultNoSets (fcache=0x403ed80,
econtext=0x3fb0eb8, isNull=0x403e0a1 "", isDone=) at
execQual.c:2041
[...]
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index d68ca7a..3c3fce4 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -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));
}
/*
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers