Ășt 19. 1. 2021 v 19:21 odesĂlatel Pavel Stehule <pavel.steh...@gmail.com> napsal:
> 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 > > 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"'; > ^ > Assignment for nesting composite types is working better - although there is some inconsistency too: create type t_inner as (x int, y int); create type t_outer as (a t_inner, b t_inner); do $$ declare v t_outer; begin v.a.x := 10; -- parenthesis not allowed here, but not required raise notice '%', v; raise notice '%', (v).a.x; -- parenthesis are required here end; $$; Regards Pavel > Regards > > Pavel > > >