aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-09-13 11:36:49 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-09-13 11:36:49 -0400
commit6693c9a5ed3ac9c07160039742dde8aa67e96ecf (patch)
tree91524073e56ff886de49de2acc1a184ef989abe9 /src
parent3f3304408cb103745ee0722d303c526594a8046c (diff)
downloadpostgresql-6693c9a5ed3ac9c07160039742dde8aa67e96ecf.tar.gz
postgresql-6693c9a5ed3ac9c07160039742dde8aa67e96ecf.zip
deflist_to_tuplestore dumped core on an option with no value.
Make it return NULL for the option_value, instead. Per report from Frank van Vugt. Back-patch to 8.4 where this code was added.
Diffstat (limited to 'src')
-rw-r--r--src/backend/foreign/foreign.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c
index 67a4597c382..a7d30a15caf 100644
--- a/src/backend/foreign/foreign.c
+++ b/src/backend/foreign/foreign.c
@@ -363,8 +363,17 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options)
DefElem *def = lfirst(cell);
values[0] = CStringGetTextDatum(def->defname);
- values[1] = CStringGetTextDatum(((Value *) def->arg)->val.str);
- nulls[0] = nulls[1] = false;
+ nulls[0] = false;
+ if (def->arg)
+ {
+ values[1] = CStringGetTextDatum(((Value *) (def->arg))->val.str);
+ nulls[1] = false;
+ }
+ else
+ {
+ values[1] = (Datum) 0;
+ nulls[1] = true;
+ }
tuplestore_putvalues(tupstore, tupdesc, values, nulls);
}