pgsql: Make SPI_fnumber() reject dropped columns.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Make SPI_fnumber() reject dropped columns.
Date: 2016-11-08 18:11:46
Message-ID: E1c4As6-0000F7-UH@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Make SPI_fnumber() reject dropped columns.

There's basically no scenario where it's sensible for this to match
dropped columns, so put a test for dropped-ness into SPI_fnumber()
itself, and excise the test from the small number of callers that
were paying attention to the case. (Most weren't :-(.)

In passing, normalize tests at call sites: always reject attnum <= 0
if we're disallowing system columns. Previously there was a mixture
of "< 0" and "<= 0" tests. This makes no practical difference since
SPI_fnumber() never returns 0, but I'm feeling pedantic today.

Also, in the places that are actually live user-facing code and not
legacy cruft, distinguish "column not found" from "can't handle
system column".

Per discussion with Jim Nasby; thi supersedes his original patch
that just changed the behavior at one call site.

Discussion: <b2de8258-c4c0-1cb8-7b97-e8538e5c975c(at)BlueTreble(dot)com>

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/6d30fb1f75a57d80f80e27770d39d88f8aa32d28

Modified Files
--------------
contrib/spi/autoinc.c | 2 +-
contrib/spi/insert_username.c | 2 +-
contrib/spi/moddatetime.c | 4 ++--
contrib/spi/refint.c | 5 +++--
contrib/spi/timetravel.c | 4 ++--
doc/src/sgml/spi.sgml | 2 +-
src/backend/executor/spi.c | 3 ++-
src/backend/utils/adt/tsvector_op.c | 1 +
src/pl/plperl/plperl.c | 7 ++++++-
src/pl/tcl/pltcl.c | 11 +----------
src/test/regress/regress.c | 9 +++++----
11 files changed, 25 insertions(+), 25 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2016-11-08 20:35:51 pgsql: Fix typo.
Previous Message Magnus Hagander 2016-11-08 17:39:18 pgsql: Fix typo