pgsql: Add test scaffolding for exercising optimizer'spredicate-proof - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Add test scaffolding for exercising optimizer'spredicate-proof
Date
Msg-id E1eu0EZ-0006ZN-NJ@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Add test scaffolding for exercising optimizer's predicate-proof logic.

The predicate-proof code in predtest.c is a bit hard to test as-is:
you have to construct a query whose plan changes depending on the success
of a test, and in tests that have been around for awhile, it's always
possible that the plan shape is now being determined by some other factor.
Our existing regression tests aren't doing real well at providing full
code coverage of predtest.c, either.  So, let's add a small test module
that allows directly inspecting the results of predicate_implied_by()
and predicate_refuted_by() for arbitrary boolean expressions.

I chose the set of tests committed here in order to get reasonably
complete code coverage of predtest.c just from running this test
module, and to cover some cases called out as being interesting in
the existing comments.  We might want to add more later.  But this
set already shows a few cases where perhaps things could be improved.

Indeed, this exercise proves that predicate_refuted_by() is buggy for
the case of clause_is_check = true, though fortunately we aren't using
that case anywhere yet.  I'll look into doing something about that in
a separate commit.  For now, just memorialize the current behavior.

Discussion: https://postgr.es/m/5983.1520487191@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/44468f49bbe7e47e5a27a1ccbf13549ff85149f2

Modified Files
--------------
src/test/modules/Makefile                          |   1 +
src/test/modules/test_predtest/.gitignore          |   4 +
src/test/modules/test_predtest/Makefile            |  21 +
src/test/modules/test_predtest/README              |  28 +
.../test_predtest/expected/test_predtest.out       | 769 +++++++++++++++++++++
.../modules/test_predtest/sql/test_predtest.sql    | 298 ++++++++
.../modules/test_predtest/test_predtest--1.0.sql   |  16 +
src/test/modules/test_predtest/test_predtest.c     | 215 ++++++
.../modules/test_predtest/test_predtest.control    |   4 +
9 files changed, 1356 insertions(+)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Revert "Temporarily instrument postgres_fdw test to look forsta
Next
From: Peter Eisentraut
Date:
Subject: pgsql: Fix warnings in man page build