postgresql/src/test/regress/sql
Tom Lane 5748f3a0aa Improve predtest.c's internal docs, and enhance its functionality a bit.
Commit b08df9cab left things rather poorly documented as far as the
exact semantics of "clause_is_check" mode went.  Also, that mode did
not really work correctly for predicate_refuted_by; although given the
lack of specification as to what it should do, as well as the lack
of any actual use-case, that's perhaps not surprising.

Rename "clause_is_check" to "weak" proof mode, and provide specifications
for what it should do.  I defined weak refutation as meaning "truth of A
implies non-truth of B", which makes it possible to use the mode in the
part of relation_excluded_by_constraints that checks for mutually
contradictory WHERE clauses.  Fix up several places that did things wrong
for that definition.  (As far as I can see, these errors would only lead
to failure-to-prove, not incorrect claims of proof, making them not
serious bugs even aside from the fact that v10 contains no use of this
mode.  So there seems no need for back-patching.)

In addition, teach predicate_refuted_by_recurse that it can use
predicate_implied_by_recurse after all when processing a strong NOT-clause,
so long as it asks for the correct proof strength.  This is an optimization
that could have been included in commit b08df9cab, but wasn't.

Also, simplify and generalize the logic that checks for whether nullness of
the argument of IS [NOT] NULL would force overall nullness of the predicate
or clause.  (This results in a change in the partition_prune test's output,
as it is now able to prune an all-nulls partition that it did not recognize
before.)

In passing, in PartConstraintImpliedByRelConstraint, remove bogus
conversion of the constraint list to explicit-AND form and then right back
again; that accomplished nothing except forcing a useless extra level of
recursion inside predicate_implied_by.

Discussion: https://postgr.es/m/5983.1520487191@sss.pgh.pa.us
2018-03-09 16:58:26 -05:00
..
.gitignore Add a SECURITY LABEL command. 2010-09-27 20:55:27 -04:00
abstime.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
advisory_lock.sql Add transaction-level advisory locks. 2011-02-18 14:05:12 +09:00
aggregates.sql Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
alter_generic.sql Add prokind column, replacing proisagg and proiswindow 2018-03-02 13:48:33 -05:00
alter_operator.sql Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
alter_table.sql Allow UNIQUE indexes on partitioned tables 2018-02-19 17:40:00 -03:00
amutils.sql Add SQL-accessible functions for inspecting index AM properties. 2016-08-13 18:31:14 -04:00
arrays.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
async.sql
bit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
bitmapops.sql
boolean.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
box.sql Fix support for some operators (&<, &>, $<|, |&>) in box operator class 2017-03-21 16:23:10 +03:00
brin.sql Fix BRIN cost estimation 2017-04-06 17:51:53 -03:00
btree_index.sql
case.sql Faster expression evaluation and targetlist projection. 2017-03-25 14:52:06 -07:00
char.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
circle.sql Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS FIRST/NULLS LAST 2007-01-09 02:14:16 +00:00
cluster.sql Ignore partitioned indexes where appropriate 2018-01-25 16:12:15 -03:00
collate.icu.utf8.sql Remove ICU tests from default run 2017-03-25 00:30:26 -04:00
collate.linux.utf8.sql ICU support 2017-03-23 15:28:48 -04:00
collate.sql Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
combocid.sql Fix locking a tuple updated by an aborted (sub)transaction 2016-09-09 15:54:29 -03:00
comments.sql Implement nested block comments in the backend and in psql. 2000-07-14 15:43:57 +00:00
conversion.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
copy2.sql Support "COPY view FROM" for views with INSTEAD OF INSERT triggers. 2016-11-10 14:13:43 -05:00
copydml.sql COPY (INSERT/UPDATE/DELETE .. RETURNING ..) 2015-11-27 19:11:22 +03:00
copyselect.sql Have \copy go through SendQuery 2012-01-25 18:22:00 -03:00
create_aggregate.sql Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
create_am.sql Remove no-op GiST support functions in the core GiST opclasses. 2017-09-19 23:32:59 -04:00
create_cast.sql
create_function_3.sql Add prokind column, replacing proisagg and proiswindow 2018-03-02 13:48:33 -05:00
create_index.sql Allow UNIQUE indexes on partitioned tables 2018-02-19 17:40:00 -03:00
create_misc.sql Improve regression test coverage of regress.c. 2018-02-27 12:13:14 -05:00
create_operator.sql Improve regression test coverage of regress.c. 2018-02-27 12:13:14 -05:00
create_procedure.sql Support parameters in CALL 2018-02-22 21:36:48 -05:00
create_table_like.sql Clone extended stats in CREATE TABLE (LIKE INCLUDING ALL) 2018-03-05 19:37:19 -03:00
create_table.sql Allow UNIQUE indexes on partitioned tables 2018-02-19 17:40:00 -03:00
create_type.sql Fix format_type() to restore its old behavior. 2018-03-01 11:37:46 -05:00
create_view.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
date.sql Allow negative years in make_date to represent BC years 2017-01-19 09:45:38 -03:00
dbsize.sql Add pg_size_bytes() to parse human-readable size strings. 2016-02-20 09:57:27 +00:00
delete.sql Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
dependency.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
domain.sql Fix ALTER TABLE code to update domain constraints when needed. 2017-11-01 13:32:23 -04:00
drop_if_exists.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
drop_operator.sql Fix DROP OPERATOR to reset oprcom/oprnegate links to the dropped operator. 2016-03-25 12:33:16 -04:00
enum.sql Revert to 9.6 treatment of ALTER TYPE enumtype ADD VALUE. 2017-09-27 16:14:43 -04:00
equivclass.sql Reduce "X = X" to "X IS NOT NULL", if it's easy to do so. 2017-10-08 12:23:32 -04:00
errors.sql Spelling fixes in code comments 2017-03-14 12:58:39 -04:00
event_trigger.sql Add tests for session_replication_role 2018-01-18 11:24:07 -05:00
expressions.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
float4.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
float8.sql Improve regression tests for degree-based trigonometric functions. 2016-04-19 16:47:21 -04:00
foreign_data.sql Test coverage for CREATE/ALTER FOREIGN DATA WRAPPER .. HANDLER. 2017-09-15 08:07:22 -04:00
foreign_key.sql Check for pending trigger events on far end when dropping an FK constraint. 2016-11-25 13:44:47 -05:00
functional_deps.sql Recognize functional dependency on primary keys. This allows a table's 2010-08-07 02:44:09 +00:00
geometry.sql
gin.sql Make GIN regression test stable. 2016-02-08 23:41:46 +09:00
gist.sql Add more tests for reloptions 2017-10-19 14:22:05 +02:00
groupingsets.sql Improve bit perturbation in TupleHashTableHash. 2018-01-29 11:24:57 -08:00
guc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
hash_func.sql Introduce 64-bit hash functions with a 64-bit seed. 2017-08-31 22:21:21 -04:00
hash_index.sql Add more tests for reloptions 2017-10-19 14:22:05 +02:00
hash_part.sql Fix multiple problems with satisfies_hash_partition. 2017-11-21 13:06:32 -05:00
horology.sql Implement TZH and TZM timestamp format patterns 2018-01-09 14:25:05 -05:00
hs_primary_extremes.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
hs_primary_setup.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
hs_standby_allowed.sql Better fix for sequence access in hot standby test 2017-01-04 08:47:18 -05:00
hs_standby_check.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_disallowed.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_functions.sql Remove all references to "xlog" from SQL-callable functions in pg_proc. 2017-02-09 15:10:09 -05:00
identity.sql Fix application of identity values in some cases 2018-02-02 14:39:10 -05:00
indexing.sql Allow UNIQUE indexes on partitioned tables 2018-02-19 17:40:00 -03:00
indirect_toast.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
inet.sql Create an SP-GiST opclass for inet/cidr. 2016-08-23 15:16:30 -04:00
inherit.sql Support Parallel Append plan nodes. 2017-12-05 17:28:39 -05:00
init_privs.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
insert_conflict.sql Re-allow INSERT .. ON CONFLICT DO NOTHING on partitioned tables. 2017-12-01 12:53:21 -05:00
insert.sql Fix uninitialized memory reference. 2017-12-01 10:05:00 -05:00
int2.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int4.sql
int8.sql
interval.sql Fix integer-overflow problems in interval comparison. 2017-04-05 23:51:27 -04:00
join.sql Fix planner failures with overlapping mergejoin clauses in an outer join. 2018-02-23 13:47:33 -05:00
json_encoding.sql Fix whitespace 2015-10-11 21:44:27 -04:00
json.sql Add tests for json{b}_populate_recordset() crash case. 2017-11-06 10:29:37 -05:00
jsonb.sql Add tests for json{b}_populate_recordset() crash case. 2017-11-06 10:29:37 -05:00
limit.sql Add regression tests exercising more code paths in nodeLimit.c. 2017-08-11 17:28:01 -04:00
line.sql Revert "Tweak "line" test to avoid negative zeros on some platforms" 2013-10-25 15:50:31 -04:00
lock.sql Add a basic atomic ops API abstracting away platform/architecture details. 2014-09-25 23:49:05 +02:00
lseg.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
macaddr.sql
matview.sql Remove useless and rather expensive stanza in matview regression test. 2017-05-03 19:37:01 -04:00
misc_functions.sql Add num_nulls() and num_nonnulls() to count NULL arguments. 2016-02-04 23:03:37 -05:00
misc_sanity.sql Fix over-aggressive sanity check in misc_sanity.sql. 2017-08-28 10:14:46 -04:00
money.sql Fix precision and rounding issues in money multiplication and division. 2017-05-21 13:05:16 -04:00
name.sql Introduce parse_ident() 2016-03-18 18:16:14 +03:00
namespace.sql
numeric_big.sql Fix corner-case loss of precision in numeric pow() calculation 2016-05-05 11:16:17 +01:00
numeric.sql Fix quoted-substring handling in format parsing for to_char/to_number/etc. 2017-11-18 12:16:37 -05:00
numerology.sql
object_address.sql SQL procedures 2017-11-30 11:03:20 -05:00
oid.sql
oidjoins.sql Update oidjoins regression test for v10. 2017-05-15 14:04:11 -04:00
opr_sanity.sql Add prokind column, replacing proisagg and proiswindow 2018-03-02 13:48:33 -05:00
partition_join.sql Try to stabilize EXPLAIN output in partition_check test. 2018-02-22 08:51:00 -05:00
partition_prune.sql Improve predtest.c's internal docs, and enhance its functionality a bit. 2018-03-09 16:58:26 -05:00
password.sql Don't allow logging in with empty password. 2017-08-07 17:03:42 +03:00
path.sql
pg_lsn.sql Tweak new regression test case for better portability. 2014-06-04 21:31:41 -04:00
plancache.sql Allow a partitioned table to have a default partition. 2017-09-08 17:28:04 -04:00
plpgsql.sql Use the correct tuplestore read pointer in a NamedTuplestoreScan. 2018-02-27 15:56:51 -05:00
point.sql
polygon.sql Add polygon opclass for SP-GiST 2017-12-25 18:59:38 +03:00
polymorphism.sql Fix incorrect handling of polymorphic aggregates used as window functions. 2016-10-09 12:49:37 -04:00
portals_p2.sql
portals.sql Fix some interrelated planner issues with initPlans and Param munging. 2016-07-01 20:06:05 -04:00
prepare.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
prepared_xacts.sql Remove unnecessary dependency on statement_timeout in prepared_xacts test. 2017-03-13 16:46:32 -04:00
privileges.sql SQL procedures 2017-11-30 11:03:20 -05:00
psql_crosstab.sql Fix incorrect error reporting for duplicate data in \crosstabview. 2016-12-25 16:04:45 -05:00
psql.sql Provide a test for variable existence in psql 2017-09-21 19:02:23 -04:00
publication.sql psql: Improve display of "for all tables" publications 2017-06-15 10:46:41 -04:00
random.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
rangefuncs.sql Disallow set-returning functions inside CASE or COALESCE. 2017-06-13 23:46:39 -04:00
rangetypes.sql Fix typcache's failure to treat ranges as container types. 2017-10-20 17:12:27 -04:00
regex.linux.utf8.sql Make locale-dependent regex character classes work for large char codes. 2016-09-05 17:06:29 -04:00
regex.sql Implement regexp_match(), a simplified alternative to regexp_matches(). 2016-08-17 18:33:01 -04:00
regproc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
reloptions.sql Minor fixes for reloptions tests 2018-03-03 12:51:56 -05:00
reltime.sql
replica_identity.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
returning.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
roleattributes.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
rolenames.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
rowsecurity.sql Always require SELECT permission for ON CONFLICT DO UPDATE. 2017-11-06 09:19:22 +00:00
rowtypes.sql Add tests for record_image_eq and record_image_cmp 2018-01-24 13:23:57 -05:00
rules.sql Add tests for session_replication_role 2018-01-18 11:24:07 -05:00
sanity_check.sql Change the relkind for partitioned tables from 'P' to 'p'. 2017-03-10 13:15:47 -05:00
security_label.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select_distinct_on.sql Fix assertion failure when a SELECT DISTINCT ON expression is volatile. 2009-09-12 00:04:59 +00:00
select_distinct.sql Disable physical tlist if any Var would need multiple sortgroupref labels. 2016-05-26 14:52:30 -04:00
select_having.sql Make the behavior of HAVING without GROUP BY conform to the SQL spec. 2005-03-10 23:21:26 +00:00
select_implicit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_into.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select_parallel.sql Fix assertion failure when Parallel Append is run serially. 2018-02-28 10:58:27 -05:00
select_views.sql Avoid locale-dependent output in select_views regression test. 2017-05-28 14:52:18 -04:00
select.sql Expose explain's SUMMARY option 2017-03-08 15:14:03 -05:00
sequence.sql psql: Update \d sequence display 2017-09-29 13:37:30 -04:00
spgist.sql Add more tests for reloptions 2017-10-19 14:22:05 +02:00
stats_ext.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
stats.sql Allow bitmap scans to operate as index-only scans when possible. 2017-11-01 17:38:20 -04:00
strings.sql Add user-callable SHA-2 functions 2018-02-22 11:34:53 -05:00
subscription.sql Fix ALTER SUBSCRIPTION grammar ambiguity 2017-06-05 21:43:25 -04:00
subselect.sql Repair failure with SubPlans in multi-row VALUES lists. 2017-11-25 14:15:48 -05:00
sysviews.sql Invent pg_hba_file_rules view to show the content of pg_hba.conf. 2017-01-30 18:00:26 -05:00
tablesample.sql Make tablesample work with partitioned tables. 2017-02-24 12:23:28 +05:30
temp.sql
text.sql Move checking an explicit VARIADIC "any" argument into the parser. 2013-07-18 11:52:12 -04:00
tidscan.sql Improve regression test coverage for TID scanning. 2017-03-20 12:30:23 -04:00
time.sql
timestamp.sql Be more careful about out-of-range dates and timestamps. 2016-03-16 19:09:28 -04:00
timestamptz.sql Implement TZH and TZM timestamp format patterns 2018-01-09 14:25:05 -05:00
timetz.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
tinterval.sql
transactions.sql Fix handling of savepoint commands within multi-statement Query strings. 2017-09-07 09:49:55 -04:00
triggers.sql Prevent dangling-pointer access when update trigger returns old tuple. 2018-02-27 13:28:02 -05:00
truncate.sql Allow ALTER TABLE ONLY on partitioned tables 2017-04-25 16:57:43 -04:00
tsdicts.sql Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
tsearch.sql Make construct_[md_]array return a valid empty array for zero-size input. 2017-09-25 11:55:24 -04:00
tsrf.sql Re-allow SRFs and window functions within sub-selects within aggregates. 2017-06-27 17:51:11 -04:00
tstypes.sql Ensure that a tsquery like '!foo' matches empty tsvectors. 2017-01-26 12:18:07 -05:00
txid.sql Add a txid_status function. 2017-03-24 12:00:53 -04:00
type_sanity.sql Set proargmodes for satisfies_hash_partition. 2017-11-17 11:53:00 -05:00
typed_table.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
union.sql Fix UNION/INTERSECT/EXCEPT over no columns. 2017-12-22 12:08:06 -05:00
updatable_views.sql Teach map_partition_varattnos to handle whole-row expressions. 2017-08-03 11:21:29 -04:00
update.sql Allow UPDATE to move rows between partitions. 2018-01-19 15:33:06 -05:00
uuid.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
vacuum.sql Add parenthesized options syntax for ANALYZE. 2018-03-05 16:21:05 -08:00
varchar.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
window.sql Add window RANGE support for float4, float8, numeric. 2018-02-24 13:23:38 -05:00
with.sql Fix incorrect handling of CTEs and ENRs as DML target relations. 2017-10-16 17:56:54 -04:00
without_oid.sql Combine cmin and cmax fields of HeapTupleHeaders into a single field, by 2007-02-09 03:35:35 +00:00
write_parallel.sql Allow DML commands that create tables to use parallel query. 2017-10-05 11:40:48 -04:00
xml.sql Fix previous commit's test, for non-UTF8 databases with non-XML builds. 2017-11-11 13:07:46 -08:00
xmlmap.sql Fix cursor_to_xml in tableforest false mode 2017-05-03 21:41:10 -04:00