Re: BUG #17706: ALTER TYPE leads to crash

Поиск
Список
Период
Сортировка
От Richard Guo
Тема Re: BUG #17706: ALTER TYPE leads to crash
Дата
Msg-id CAMbWs48beVBjLyjza3mCNzOT1qYAt9NcV=VMzeOMbCAVAXBLGg@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #17706: ALTER TYPE leads to crash  (PG Bug reporting form <noreply@postgresql.org>)
Ответы Re: BUG #17706: ALTER TYPE leads to crash
Список pgsql-bugs

On Thu, Dec 8, 2022 at 4:51 AM PG Bug reporting form <noreply@postgresql.org> wrote:
With PL/pgSQL:

create type foo as (a int, b int);

create function bar() returns record as $$
declare
        r foo := row(123, 2^30);
begin
        alter type foo alter attribute b type text;
        return r;
end;
$$ language plpgsql;

postgres=# select bar();
server closed the connection unexpectedly
  This probably means the server terminated abnormally
  before or while processing the request.

LOG:  server process (PID 394076) was terminated by signal 11: Segmentation
fault

(Here 2^30 is interpreted as a string length.)
 
ISTM after the alter operation, the attribute description of 'b' has
been altered to cope with type text, but the data layout inside the heap
tuple stays unchanged.  So when we fetch attribute 'b', what we get is
an integer pointer into the tuple's data area storing value 2^30, due to
type text is not attbyval.

Then later we interpret that integer pointer as a varlena pointer, which
is not correct.

But I'm not sure how to fix it.  Is there an easy way to also alter the
data layout inside the tuple?

Thanks
Richard

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: Bug in jsonb_path_exists (maybe _match) one-element scalar/variable jsonpath handling
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #17706: ALTER TYPE leads to crash