Re: Indirect assignment code for array slices is dead code?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Indirect assignment code for array slices is dead code?
Date: 2017-03-11 01:59:48
Message-ID: 4266.1489197588@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Andres Freund <andres(at)anarazel(dot)de> writes:
> In the context of my expression evaluation patch, I was trying to
> increase test coverage of execQual.c. I'm a bit confused about
> $subject. ExecEvalArrayRef() has the following codepath:

I think it may indeed be unreachable at present, because we don't support
something like this:

regression=# create table tt (f1 complex[]);
CREATE TABLE
regression=# update tt set f1[2:3].r = array[7,11];
ERROR: cannot assign to field "r" of column "f1" because its type complex[] is not a composite type
LINE 1: update tt set f1[2:3].r = array[7,11];
^

regression=# update tt set f1[2:3].r = array[7,11];
ERROR: cannot assign to field "r" of column "f1" because its type complex[] is not a composite type
LINE 1: update tt set f1[2:3].r = 42;
^

I would not like to remove it though. This particular bit of the executor
has no business making assumptions about how array and field references
can be nested.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2017-03-11 02:03:03 Re: Indirect assignment code for array slices is dead code?
Previous Message Tom Lane 2017-03-11 01:29:28 Re: How to get the 'ctid' from a record type?