Re: [HACKERS] [PATCH] Generic type subscripting
От | Pavel Stehule |
---|---|
Тема | Re: [HACKERS] [PATCH] Generic type subscripting |
Дата | |
Msg-id | CAFj8pRBHDJY+fm-NoFgiLSbaOfoyybn03hfbUEquxZOAA_1K_w@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] [PATCH] Generic type subscripting (Dmitry Dolgov <9erthalion6@gmail.com>) |
Ответы |
Re: [HACKERS] [PATCH] Generic type subscripting
|
Список | pgsql-hackers |
po 4. 1. 2021 v 14:58 odesílatel Dmitry Dolgov <9erthalion6@gmail.com> napsal:
> On Sun, Jan 03, 2021 at 08:41:17PM +0100, Pavel Stehule wrote:
>
> probably some is wrong still
>
> create table foo(a jsonb);
> update foo set a['a'] = '10';
> update foo set a['b']['c'][1] = '10';
> update foo set a['b']['c'][10] = '10'
Thanks for noticing. Indeed, there was a subtle change of meaning for
'done' flag in setPath, which I haven't covered. Could you try this
version?
sure
postgres=# insert into foo values('{}');
INSERT 0 1
postgres=# update foo set a['c']['c'][10] = '10';
UPDATE 1
postgres=# select * from foo;
┌────────────────────────────────────────────────────────────────────────────────┐
│ a │
╞════════════════════════════════════════════════════════════════════════════════╡
│ {"c": {"c": [null, null, null, null, null, null, null, null, null, null, 10]}} │
└────────────────────────────────────────────────────────────────────────────────┘
(1 row)
postgres=# update foo set a['c'][10][10] = '10';
WARNING: problem in alloc set ExprContext: req size > alloc size for chunk 0x151b688 in block 0x151aa90
WARNING: problem in alloc set ExprContext: bogus aset link in block 0x151aa90, chunk 0x151b688
WARNING: problem in alloc set ExprContext: bad size 0 for chunk 0x151b8a0 in block 0x151aa90
WARNING: problem in alloc set ExprContext: bad single-chunk 0x151b8b8 in block 0x151aa90
WARNING: problem in alloc set ExprContext: bogus aset link in block 0x151aa90, chunk 0x151b8b8
WARNING: problem in alloc set ExprContext: found inconsistent memory block 0x151aa90
UPDATE 1
INSERT 0 1
postgres=# update foo set a['c']['c'][10] = '10';
UPDATE 1
postgres=# select * from foo;
┌────────────────────────────────────────────────────────────────────────────────┐
│ a │
╞════════════════════════════════════════════════════════════════════════════════╡
│ {"c": {"c": [null, null, null, null, null, null, null, null, null, null, 10]}} │
└────────────────────────────────────────────────────────────────────────────────┘
(1 row)
postgres=# update foo set a['c'][10][10] = '10';
WARNING: problem in alloc set ExprContext: req size > alloc size for chunk 0x151b688 in block 0x151aa90
WARNING: problem in alloc set ExprContext: bogus aset link in block 0x151aa90, chunk 0x151b688
WARNING: problem in alloc set ExprContext: bad size 0 for chunk 0x151b8a0 in block 0x151aa90
WARNING: problem in alloc set ExprContext: bad single-chunk 0x151b8b8 in block 0x151aa90
WARNING: problem in alloc set ExprContext: bogus aset link in block 0x151aa90, chunk 0x151b8b8
WARNING: problem in alloc set ExprContext: found inconsistent memory block 0x151aa90
UPDATE 1
В списке pgsql-hackers по дате отправления: