Thread: pgsql: Improve index AMs' opclass validation procedures.

pgsql: Improve index AMs' opclass validation procedures.

From
Tom Lane
Date:
Improve index AMs' opclass validation procedures.

The amvalidate functions added in commit 65c5fcd353a859da were on the
crude side.  Improve them in a few ways:

* Perform signature checking for operators and support functions.

* Apply more thorough checks for missing operators and functions,
where possible.

* Instead of reporting problems as ERRORs, report most problems as INFO
messages and make the amvalidate function return FALSE.  This allows
more than one problem to be discovered per run.

* Report object names rather than OIDs, and work a bit harder on making
the messages understandable.

Also, remove a few more opr_sanity regression test queries that are
now superseded by the amvalidate checks.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/be44ed27b86ebd165bbedf06a4ac5a8eb943d43c

Modified Files
--------------
src/backend/access/brin/brin_validate.c  |  260 ++++++++++++++++++++-------
src/backend/access/gin/ginvalidate.c     |  233 ++++++++++++++++++------
src/backend/access/gist/gistvalidate.c   |  241 +++++++++++++++++++------
src/backend/access/hash/hashvalidate.c   |  289 +++++++++++++++++++++++-------
src/backend/access/index/Makefile        |    2 +-
src/backend/access/index/amvalidate.c    |  246 +++++++++++++++++++++++++
src/backend/access/nbtree/nbtvalidate.c  |  274 ++++++++++++++++------------
src/backend/access/spgist/spgvalidate.c  |  211 +++++++++++++++++-----
src/backend/utils/cache/lsyscache.c      |   23 +++
src/include/access/amvalidate.h          |   36 ++++
src/include/utils/lsyscache.h            |    1 +
src/test/regress/expected/opr_sanity.out |  204 +--------------------
src/test/regress/sql/opr_sanity.sql      |  171 +-----------------
13 files changed, 1417 insertions(+), 774 deletions(-)


Re: pgsql: Improve index AMs' opclass validation procedures.

From
David Rowley
Date:
On 22 January 2016 at 13:47, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Improve index AMs' opclass validation procedures.
>
> The amvalidate functions added in commit 65c5fcd353a859da were on the
> crude side.  Improve them in a few ways:
>
> * Perform signature checking for operators and support functions.
>
> * Apply more thorough checks for missing operators and functions,
> where possible.
>
> * Instead of reporting problems as ERRORs, report most problems as INFO
> messages and make the amvalidate function return FALSE.  This allows
> more than one problem to be discovered per run.
>
> * Report object names rather than OIDs, and work a bit harder on making
> the messages understandable.
>
> Also, remove a few more opr_sanity regression test queries that are
> now superseded by the amvalidate checks.

I'm getting 3 new warnings with this change which mention about 32-bit
bit shifting then bitwise anding to a 64-bit variable.

The attached fixes the warnings

--
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Attachment

Re: pgsql: Improve index AMs' opclass validation procedures.

From
Tom Lane
Date:
David Rowley <david.rowley@2ndquadrant.com> writes:
> I'm getting 3 new warnings with this change which mention about 32-bit
> bit shifting then bitwise anding to a 64-bit variable.
> The attached fixes the warnings

Pushed, thanks.

            regards, tom lane