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

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Add test scaffolding for exercising optimizer'spredicate-proof
Дата
Msg-id E1eu0EZ-0006ZN-NJ@gemulon.postgresql.org
обсуждение исходный текст
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Revert "Temporarily instrument postgres_fdw test to look forsta
Следующее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: Fix warnings in man page build