diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-09-13 11:36:57 -0400 | 
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-09-13 11:36:57 -0400 | 
| commit | cac73320ef0f35304e2dcade0fe1d32c07cb765f (patch) | |
| tree | 5ecf58149803a24109cd53b74731893d099d7cb6 /src | |
| parent | 4de174d4bfa8e162cf64fb9bf7393fea05b0dee7 (diff) | |
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.c | 14 | 
1 files changed, 12 insertions, 2 deletions
| diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c index 042dbed13d0..a67f70b973d 100644 --- a/src/backend/foreign/foreign.c +++ b/src/backend/foreign/foreign.c @@ -260,7 +260,7 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options)  	TupleDesc	tupdesc;  	Tuplestorestate *tupstore;  	Datum		values[2]; -	bool		nulls[2] = {0}; +	bool		nulls[2];  	MemoryContext per_query_ctx;  	MemoryContext oldcontext; @@ -292,7 +292,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] = 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);  	} | 
