Re: Rethinking plpgsql's assignment implementation
| От | Pavel Stehule | 
|---|---|
| Тема | Re: Rethinking plpgsql's assignment implementation | 
| Дата | |
| Msg-id | CAFj8pRC6T3kfv=ewa4DomW7dpqt31daUxAvmafk0Nk6sn=WHZw@mail.gmail.com обсуждение исходный текст | 
| Ответ на | Re: Rethinking plpgsql's assignment implementation (Pavel Stehule <pavel.stehule@gmail.com>) | 
| Ответы | Re: Rethinking plpgsql's assignment implementation | 
| Список | pgsql-hackers | 
Hi
Now, I am testing subscribing on the jsonb feature, and I found one issue, that is not supported by parser.
When the target is scalar, then all is ok. But we can have a plpgsql array of jsonb values.
postgres=# do $$
declare j jsonb[];
begin
j[1] = '{"b":"Ahoj"}';
raise notice '%', j;
raise notice '%', (j[1])['b'];
end
$$;
NOTICE: {"{\"b\": \"Ahoj\"}"}
NOTICE: "Ahoj"
DO
declare j jsonb[];
begin
j[1] = '{"b":"Ahoj"}';
raise notice '%', j;
raise notice '%', (j[1])['b'];
end
$$;
NOTICE: {"{\"b\": \"Ahoj\"}"}
NOTICE: "Ahoj"
DO
Parenthesis work well in expressions, but are not supported on the left side of assignment.
postgres=# do $$
declare j jsonb[];
begin
(j[1])['b'] = '"Ahoj"';
raise notice '%', j;
raise notice '%', j[1]['b'];
end
$$;
ERROR: syntax error at or near "("
LINE 4: (j[1])['b'] = '"Ahoj"';
^
declare j jsonb[];
begin
(j[1])['b'] = '"Ahoj"';
raise notice '%', j;
raise notice '%', j[1]['b'];
end
$$;
ERROR: syntax error at or near "("
LINE 4: (j[1])['b'] = '"Ahoj"';
^
Regards
Pavel
В списке pgsql-hackers по дате отправления: