Re: BUG #5748: Invalid oidvector data during binary recv
От | Yeb Havinga |
---|---|
Тема | Re: BUG #5748: Invalid oidvector data during binary recv |
Дата | |
Msg-id | 4CE10697.3050309@gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #5748: Invalid oidvector data during binary recv (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>) |
Ответы |
Re: BUG #5748: Invalid oidvector data during binary recv
|
Список | pgsql-bugs |
On 2010-11-11 17:02, Heikki Linnakangas wrote: > On 11.11.2010 17:48, Tom Lane wrote: >> "Yeb Havinga"<yebhavinga@gmail.com> writes: >>> postgres=# create table a as select ''::oidvector; >>> SELECT 1 >>> postgres=# copy a to '/tmp/test' with binary; >>> COPY 1 >>> postgres=# copy a from '/tmp/test' with binary; >>> ERROR: invalid oidvector data >> >> The problem seems to be that array_recv passes back a zero-dimensional >> array, *not* a 1-D array, when it observes that the input has no >> elements. A zero-D array is not part of the subset of possible arrays >> that we allow for oidvector. > > Yeah, I just reached that conclusion too.. The patch below changes array_recv, so that it returns an empty 1-D array when an empty 1-D array was written binary. No changes in oidvectorrecv or int2vectorrecv are needed. diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 4ceb256..98e725a 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -1288,7 +1288,7 @@ array_recv(PG_FUNCTION_ARGS) my_extra->element_type = element_type; } - if (nitems == 0) + if (ndim == 0) { /* Return empty array ... but not till we've validated element_type */ PG_RETURN_ARRAYTYPE_P(construct_empty_array(element_type)); Make check passes. regards, Yeb Havinga
В списке pgsql-bugs по дате отправления: