postgresql/src/test/regress/sql
Tom Lane 4452000f31 Fix constant-folding of ROW(...) IS [NOT] NULL with composite fields.
The SQL standard appears to specify that IS [NOT] NULL's tests of field
nullness are non-recursive, ie, we shouldn't consider that a composite
field with value ROW(NULL,NULL) is null for this purpose.
ExecEvalNullTest got this right, but eval_const_expressions did not,
leading to weird inconsistencies depending on whether the expression
was such that the planner could apply constant folding.

Also, adjust the docs to mention that IS [NOT] DISTINCT FROM NULL can be
used as a substitute test if a simple null check is wanted for a rowtype
argument.  That motivated reordering things so that IS [NOT] DISTINCT FROM
is described before IS [NOT] NULL.  In HEAD, I went a bit further and added
a table showing all the comparison-related predicates.

Per bug #14235.  Back-patch to all supported branches, since it's certainly
undesirable that constant-folding should change the semantics.

Report and patch by Andrew Gierth; assorted wordsmithing and revised
regression test cases by me.

Report: <20160708024746.1410.57282@wrigleys.postgresql.org>
2016-07-26 15:25:02 -04:00
..
.gitignore
abstime.sql
advisory_lock.sql
aggregates.sql Set consider_parallel correctly for upper planner rels. 2016-07-01 11:52:56 -04:00
alter_generic.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
alter_operator.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
alter_table.sql Include typmod when complaining about inherited column type mismatches. 2015-12-26 13:41:29 -05:00
arrays.sql Allow omitting one or both boundaries in an array slice specifier. 2015-12-22 21:05:29 -05:00
async.sql Add new function pg_notification_queue_usage. 2015-07-17 09:12:03 -04:00
bit.sql
bitmapops.sql
boolean.sql Clean up references to SQL92 2013-04-20 11:04:41 -04:00
box.sql Get rid of minus zero in box regression test. 2016-04-01 12:25:17 -04:00
brin.sql Make core regression tests safe for Danish locale. 2016-07-21 13:11:00 -04:00
btree_index.sql Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
case.sql Clean up references to SQL92 2013-04-20 11:04:41 -04:00
char.sql
circle.sql
cluster.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
collate.linux.utf8.sql Support range data types. 2011-11-03 13:42:15 +02:00
collate.sql Show sort ordering options in EXPLAIN output. 2015-01-16 18:19:00 -05:00
combocid.sql
comments.sql
conversion.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
copy2.sql Fix null-pointer-deref crash while doing COPY IN with check constraints. 2015-02-15 23:26:45 -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 Fix type-safety problem with parallel aggregate serial/deserialization. 2016-06-22 16:52:41 -04:00
create_am.sql Fix broken dependency-mongering for index operator classes/families. 2016-04-13 23:33:31 -04:00
create_cast.sql Make CREATE TYPE print warnings if a datatype's I/O functions are volatile. 2014-11-05 11:44:06 -05:00
create_function_3.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
create_index.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
create_misc.sql
create_operator.sql Allow named parameters to be specified using => in addition to := 2015-03-10 11:09:41 -04:00
create_table_like.sql Have CREATE TABLE LIKE add OID column if any LIKEd table has one 2015-10-05 21:19:16 -04:00
create_table.sql Have CREATE TABLE LIKE add OID column if any LIKEd table has one 2015-10-05 21:19:16 -04:00
create_type.sql Fix pg_dump to dump shell types. 2015-08-04 19:34:12 -04:00
create_view.sql Fix ruleutils.c's dumping of ScalarArrayOpExpr containing an EXPR_SUBLINK. 2016-04-21 14:20:30 -04:00
date.sql Be more careful about out-of-range dates and timestamps. 2016-03-16 19:09:28 -04:00
dbsize.sql Add pg_size_bytes() to parse human-readable size strings. 2016-02-20 09:57:27 +00:00
delete.sql
dependency.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
domain.sql Avoid caching expression state trees for domain constraints across queries. 2015-11-29 18:18:42 -05: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 Allow adding values to an enum type created in the current transaction. 2012-12-01 14:27:30 -05:00
equivclass.sql Fix some more problems with nested append relations. 2014-10-01 19:31:12 -04:00
errors.sql Allow empty target list in SELECT. 2013-12-14 20:23:26 -05:00
event_trigger.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
float4.sql
float8.sql Improve regression tests for degree-based trigonometric functions. 2016-04-19 16:47:21 -04:00
foreign_data.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
foreign_key.sql Fix match_foreign_keys_to_quals for FKs linking to unused rtable entries. 2016-06-29 16:02:08 -04:00
functional_deps.sql
geometry.sql Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
gin.sql Make GIN regression test stable. 2016-02-08 23:41:46 +09:00
gist.sql Fix potential platform dependence in gist regression test. 2015-08-25 11:43:37 -04:00
groupingsets.sql Fix overeager pushdown of HAVING clauses when grouping sets are used. 2016-02-08 11:03:31 +01:00
guc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
hash_index.sql
horology.sql Fix to_timestamp/to_date's handling of consecutive spaces in format string. 2014-01-20 13:45:51 -05:00
hs_primary_extremes.sql
hs_primary_setup.sql
hs_standby_allowed.sql regression test: fix hot standby tests by using repeatable read 2014-04-22 17:23:58 -04:00
hs_standby_check.sql
hs_standby_disallowed.sql
hs_standby_functions.sql
indirect_toast.sql Add support for multiple kinds of external toast datums. 2013-07-02 13:38:55 -04:00
inet.sql Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
inherit.sql Fix typos. 2016-03-15 18:06:11 -04:00
init_privs.sql GRANT rights to CURRENT_USER instead of adding roles 2016-04-07 14:40:23 -04:00
insert_conflict.sql Fix failure to handle conflicts in non-arbiter exclusion constraints. 2016-07-04 16:09:11 -04:00
insert.sql
int2.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int4.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
int8.sql Add documentation and regression tests concerning rounding of numerics. 2015-07-03 17:04:39 -04:00
interval.sql interval: tighten precision specification 2014-10-18 10:31:00 -04:00
join.sql Fix mishandling of equivalence-class tests in parameterized plans. 2016-04-29 20:19:38 -04:00
json_encoding.sql Fix whitespace 2015-10-11 21:44:27 -04:00
json.sql Fix json_to_record() bug with nested objects. 2016-03-02 23:31:39 -05:00
jsonb.sql Add jsonb_insert 2016-04-06 19:25:00 +03:00
limit.sql Fix failure to mark all aggregates with appropriate transtype. 2016-07-02 13:23:12 -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
macaddr.sql Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -04:00
matview.sql Fix CREATE MATVIEW/CREATE TABLE AS ... WITH NO DATA to not plan the query. 2016-06-27 15:57:50 -04:00
misc_functions.sql Add num_nulls() and num_nonnulls() to count NULL arguments. 2016-02-04 23:03:37 -05:00
money.sql
name.sql Introduce parse_ident() 2016-03-18 18:16:14 +03:00
namespace.sql Regression tests for SCHEMA commands 2013-12-11 20:45:15 +00:00
numeric_big.sql Fix corner-case loss of precision in numeric pow() calculation 2016-05-05 11:16:17 +01:00
numeric.sql Add scale(numeric) 2016-01-05 19:02:13 -03:00
numerology.sql
object_address.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
oid.sql
oidjoins.sql Update oidjoins regression test for 9.6. 2016-06-22 17:12:55 -04:00
opr_sanity.sql Fix type-safety problem with parallel aggregate serial/deserialization. 2016-06-22 16:52:41 -04:00
path.sql
pg_lsn.sql Tweak new regression test case for better portability. 2014-06-04 21:31:41 -04:00
plancache.sql Change plan caching to honor, not resist, changes in search_path. 2013-01-25 14:14:41 -05:00
plpgsql.sql Mark read/write expanded values as read-only in ValuesNext(), too. 2016-06-03 18:07:14 -04:00
point.sql Fix gist_box_same and gist_point_consistent to handle fuzziness correctly. 2013-02-08 18:03:17 -05:00
polygon.sql regression tests: remove polygon diagrams 2015-03-19 22:10:52 -04:00
polymorphism.sql Allow named parameters to be specified using => in addition to := 2015-03-10 11:09:41 -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
prepared_xacts.sql Eschew "RESET statement_timeout" in tests. 2015-10-20 00:37:22 -04:00
privileges.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
psql_crosstab.sql Make psql_crosstab plans more stable 2016-06-07 19:18:31 -04:00
psql.sql Move \crosstabview regression tests to a separate file 2016-04-08 23:42:24 -03:00
random.sql
rangefuncs.sql Support flattening of empty-FROM subqueries and one-row VALUES tables. 2015-03-11 23:18:03 -04:00
rangetypes.sql Add geometry/range functions to support BRIN inclusion 2015-05-05 15:22:24 -03:00
regex.sql Fix some regex issues with out-of-range characters and large char ranges. 2016-02-08 10:25:40 -05:00
regproc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
reltime.sql
replica_identity.sql Fix possible crash in ALTER TABLE ... REPLICA IDENTITY USING INDEX. 2016-04-15 12:11:40 -04: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 Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
rowsecurity.sql Fix regression tests to work in Welsh locale. 2016-07-22 15:41:39 -04:00
rowtypes.sql Fix constant-folding of ROW(...) IS [NOT] NULL with composite fields. 2016-07-26 15:25:02 -04:00
rules.sql Fix several bugs related to ON CONFLICT's EXCLUDED pseudo relation. 2015-10-03 15:12:10 +02:00
sanity_check.sql Use unaligned output in selected regression queries to reduce diff noise. 2013-10-26 11:24:04 -04: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
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
select_implicit.sql
select_into.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
select_parallel.sql Still another try at fixing scanjoin_target insertion into parallel plans. 2016-06-18 00:28:51 -04:00
select_views.sql Improve qual pushdown for RLS and SB views 2015-04-27 12:29:42 -04:00
select.sql Support using index-only scans with partial indexes in more cases. 2016-03-31 14:49:10 -04:00
sequence.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
spgist.sql Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
stats.sql Make stats regression test robust in the face of parallel query. 2016-03-04 16:20:49 -05:00
strings.sql Fix regexp_matches() handling of zero-length matches. 2013-07-31 11:31:22 -04:00
subselect.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
tablesample.sql Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
temp.sql
text.sql Move checking an explicit VARIADIC "any" argument into the parser. 2013-07-18 11:52:12 -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 Remove just-added tests for to_timestamp(float8) with out-of-range inputs. 2016-03-29 22:23:32 -04:00
timetz.sql
tinterval.sql
transactions.sql Fix subtransaction cleanup after an outer-subtransaction portal fails. 2015-09-04 13:37:14 -04:00
triggers.sql Fix ON CONFLICT UPDATE bug breaking AFTER UPDATE triggers. 2015-12-10 16:29:26 +01:00
truncate.sql
tsdicts.sql Phrase full text search. 2016-04-07 18:44:18 +03:00
tsearch.sql Fix nested NOT operation cleanup in tsquery. 2016-07-15 19:22:18 +03:00
tstypes.sql Fix parsing NOT sequence in tsquery 2016-07-15 20:01:41 +03:00
txid.sql Handle duplicate XIDs in txid_snapshot. 2014-05-15 18:29:20 +03:00
type_sanity.sql Add some checks on "char"-type columns to type_sanity and opr_sanity. 2016-01-09 17:20:58 -05:00
typed_table.sql
union.sql Forward-patch regression test for "could not find pathkey item to sort". 2014-06-26 10:41:48 -07:00
updatable_views.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
update.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
uuid.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
vacuum.sql Add VACUUM (DISABLE_PAGE_SKIPPING) for emergencies. 2016-06-17 15:48:57 -04:00
varchar.sql
window.sql Allow pushdown of WHERE quals into subqueries with window functions. 2014-06-27 23:08:08 -07:00
with.sql Fix ON CONFLICT UPDATE bug breaking AFTER UPDATE triggers. 2015-12-10 16:29:26 +01:00
without_oid.sql
xml.sql Remove xmlparse(document '') test 2015-12-14 11:37:26 -06:00
xmlmap.sql Add regression tests for XML mapping of domains 2013-03-13 22:42:57 -04:00