st 16. 9. 2020 v 11:36 odesílatel Dmitry Dolgov <9erthali...@gmail.com> napsal:
> > st 9. 9. 2020 v 23:04 Justin Pryzby <pry...@telsasoft.com> wrote: > > > > This seems to already hit a merge conflict (8febfd185). > > Would you re-rebase ? > > Thanks. Sure, will post a rebased version soon. > > > On Tue, Sep 15, 2020 at 08:42:40PM +0200, Pavel Stehule wrote: > > > > Maybe I found a another issue. > > > > create table foo(a jsonb); > > > > postgres=# select * from foo; > > ┌───────────────────────────────────────────────────────────────────┐ > > │ a │ > > ╞═══════════════════════════════════════════════════════════════════╡ > > │ [0, null, null, null, null, null, null, null, null, null, "ahoj"] │ > > └───────────────────────────────────────────────────────────────────┘ > > (1 row) > > > > It is working like I expect > > > > but > > > > postgres=# truncate foo; > > TRUNCATE TABLE > > postgres=# insert into foo values('[]'); > > INSERT 0 1 > > postgres=# update foo set a[10] = 'ahoj'; > > UPDATE 1 > > postgres=# select * from foo; > > ┌──────────┐ > > │ a │ > > ╞══════════╡ > > │ ["ahoj"] │ > > └──────────┘ > > (1 row) > > Thanks for looking at the last patch, I appreciate! The situation you've > mention is an interesting edge case. If I understand correctly, the > first example is the result of some operations leading to filling gaps > between 0 and "ahoj". In the second case there is no such gap that's why > nothing was "filled in", although one could expect presence of a "start > position" and fill with nulls everything from it to the new element, is > that what you mean? > I expect any time a[10] := 10; ? a[10] --> 10 === postgres=# truncate foo; TRUNCATE TABLE postgres=# insert into foo values('[]'); INSERT 0 1 postgres=# update foo set a[10] = 'AHOJ'; UPDATE 1 postgres=# select (a)[10] from foo; ┌───┐ │ a │ ╞═══╡ │ ∅ │ └───┘ (1 row) There should be consistency postgres=# create table foo2(a text[]); CREATE TABLE postgres=# insert into foo2 values('{}'); INSERT 0 1 postgres=# update foo set a[10] = 'AHOJ'; UPDATE 1 postgres=# select (a)[10] from foo; ┌────────┐ │ a │ ╞════════╡ │ "AHOJ" │ └────────┘ (1 row) and some natural behaviour - any special case with different behaviour is a bad thing generally. Regards Pavel