mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
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.
This commit is contained in:
@ -260,7 +260,7 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options)
|
|||||||
TupleDesc tupdesc;
|
TupleDesc tupdesc;
|
||||||
Tuplestorestate *tupstore;
|
Tuplestorestate *tupstore;
|
||||||
Datum values[2];
|
Datum values[2];
|
||||||
bool nulls[2] = {0};
|
bool nulls[2];
|
||||||
MemoryContext per_query_ctx;
|
MemoryContext per_query_ctx;
|
||||||
MemoryContext oldcontext;
|
MemoryContext oldcontext;
|
||||||
|
|
||||||
@ -292,7 +292,17 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options)
|
|||||||
DefElem *def = lfirst(cell);
|
DefElem *def = lfirst(cell);
|
||||||
|
|
||||||
values[0] = CStringGetTextDatum(def->defname);
|
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);
|
tuplestore_putvalues(tupstore, tupdesc, values, nulls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user