postgresql/src/test/regress/sql
Tom Lane 72a4231f0c Fix planning of non-strict equivalence clauses above outer joins.
If a potential equivalence clause references a variable from the nullable
side of an outer join, the planner needs to take care that derived clauses
are not pushed to below the outer join; else they may use the wrong value
for the variable.  (The problem arises only with non-strict clauses, since
if an upper clause can be proven strict then the outer join will get
simplified to a plain join.)  The planner attempted to prevent this type
of error by checking that potential equivalence clauses aren't
outerjoin-delayed as a whole, but actually we have to check each side
separately, since the two sides of the clause will get moved around
separately if it's treated as an equivalence.  Bugs of this type can be
demonstrated as far back as 7.4, even though releases before 8.3 had only
a very ad-hoc notion of equivalence clauses.

In addition, we neglected to account for the possibility that such clauses
might have nonempty nullable_relids even when not outerjoin-delayed; so the
equivalence-class machinery lacked logic to compute correct nullable_relids
values for clauses it constructs.  This oversight was harmless before 9.2
because we were only using RestrictInfo.nullable_relids for OR clauses;
but as of 9.2 it could result in pushing constructed equivalence clauses
to incorrect places.  (This accounts for bug #7604 from Bill MacArthur.)

Fix the first problem by adding a new test check_equivalence_delay() in
distribute_qual_to_rels, and fix the second one by adding code in
equivclass.c and called functions to set correct nullable_relids for
generated clauses.  Although I believe the second part of this is not
currently necessary before 9.2, I chose to back-patch it anyway, partly to
keep the logic similar across branches and partly because it seems possible
we might find other reasons why we need valid values of nullable_relids in
the older branches.

Add regression tests illustrating these problems.  In 9.0 and up, also
add test cases checking that we can push constants through outer joins,
since we've broken that optimization before and I nearly broke it again
with an overly simplistic patch for this problem.
2012-10-18 12:30:10 -04: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 Centralize the logic for detecting misplaced aggregates, window funcs, etc. 2012-08-10 11:36:15 -04:00
alter_generic.sql Remove collations from generic ALTER test 2012-10-01 10:57:58 -03:00
alter_table.sql Change syntax of new CHECK NO INHERIT constraints 2012-07-24 16:01:32 -04:00
arrays.sql Add array_remove() and array_replace() functions. 2012-07-11 13:59:35 -04:00
bit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
bitmapops.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
boolean.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
box.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
btree_index.sql Fix breakage of bitmap scan plan creation for special index operators such 2008-11-20 19:52:54 +00:00
case.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00: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 Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
collate.linux.utf8.sql Support range data types. 2011-11-03 13:42:15 +02:00
collate.sql Add COLLATION FOR expression 2012-03-02 21:12:16 +02:00
combocid.sql Avoid incrementing the CommandCounter when CommandCounterIncrement is called 2007-11-30 21:22:54 +00:00
comments.sql Implement nested block comments in the backend and in psql. 2000-07-14 15:43:57 +00:00
conversion.sql Support hex-string input and output for type BYTEA. 2009-08-04 16:08:37 +00:00
copy2.sql Fix COPY FROM for null marker strings that correspond to invalid encoding. 2012-03-25 23:17:22 -04:00
copyselect.sql Have \copy go through SendQuery 2012-01-25 18:22:00 -03:00
create_aggregate.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_cast.sql Add test case for CREATE CAST. 2008-10-31 09:17:17 +00:00
create_function_3.sql Remove whitespace from end of lines 2012-05-15 22:19:41 +03:00
create_index.sql Fix planning of btree index scans using ScalarArrayOpExpr quals. 2012-09-18 12:20:34 -04:00
create_misc.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_operator.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_table.sql Revert error message on GLOBAL/LOCAL pending further discussion 2012-06-10 08:41:01 +01:00
create_table_like.sql Allow CREATE TABLE (LIKE ...) from composite type 2012-03-03 16:03:05 +02:00
create_type.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_view.sql Improve ruleutils.c's heuristics for dealing with rangetable aliases. 2012-09-21 19:03:10 -04:00
date.sql Extend the date type to support infinity and -infinity, analogously to 2008-10-14 17:12:33 +00:00
delete.sql Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
dependency.sql Create a separate grantable privilege for TRUNCATE, rather than having it be 2008-09-08 00:47:41 +00:00
domain.sql Add support for renaming domain constraints 2012-04-03 08:11:51 +03:00
drop.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
drop_if_exists.sql Remove a few of the new DROP-IF-EXISTS regression tests. 2011-10-19 23:38:06 -04:00
enum.sql Minor corrections for ALTER TYPE ADD VALUE IF NOT EXISTS patch. 2012-09-22 18:35:22 -04:00
errors.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
euc_cn.sql
euc_jp.sql
euc_kr.sql
euc_tw.sql Add missing mb files. 1999-02-02 19:04:43 +00:00
event_trigger.sql Make new event trigger facility actually do something. 2012-07-20 11:39:01 -04:00
float4.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
float8.sql Revert "Add some regression test cases for denormalized float8 input." 2012-02-04 15:52:09 -05:00
foreign_data.sql Remove whitespace from end of lines 2012-05-15 22:19:41 +03:00
foreign_key.sql Share RI trigger code between NO ACTION and RESTRICT cases. 2012-06-19 14:31:54 -04: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 Stop a few regression tests from needlessly disabling GEQO. This was 2007-05-29 04:17:08 +00:00
guc.sql Silently ignore any nonexistent schemas that are listed in search_path. 2012-04-11 12:02:50 -04:00
hash_index.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
horology.sql On second thought, we'd better just drop these tests altogether. 2011-11-06 20:12:20 -05:00
hs_primary_extremes.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
hs_primary_setup.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
hs_standby_allowed.sql Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00: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 Allow read only connections during recovery, known as Hot Standby. 2009-12-19 01:32:45 +00:00
inet.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
inherit.sql Change syntax of new CHECK NO INHERIT constraints 2012-07-24 16:01:32 -04:00
insert.sql Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
int2.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
int4.sql Attempt to fix breakage caused by signed integer conversion patch. 2010-11-20 01:09:26 -05:00
int8.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
interval.sql Fix bugs with parsing signed hh:mm and hh:mm:ss fields in interval input. 2012-08-03 17:40:43 -04:00
join.sql Fix planning of non-strict equivalence clauses above outer joins. 2012-10-18 12:30:10 -04:00
json.sql Fix incorrect logic in JSON number lexer 2012-05-20 02:24:46 +03:00
limit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
lseg.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
macaddr.sql Add bitwise AND, OR, and NOT operators for macaddr data type. 2012-01-19 15:25:14 -05:00
money.sql Add casts from int4 and int8 to numeric. 2011-04-05 09:35:43 -04:00
mule_internal.sql
name.sql Add a "USING" clause to DELETE, which is equivalent to the FROM clause 2005-04-07 01:51:41 +00:00
namespace.sql Support CREATE SCHEMA IF NOT EXISTS. 2012-10-03 19:47:11 -04:00
numeric.sql Fix corner case bug in numeric to_char(). 2011-09-07 17:07:20 -04:00
numeric_big.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
numerology.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
oid.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
oidjoins.sql Update oidjoins regression test to match git HEAD. 2011-11-14 20:28:38 -05:00
opr_sanity.sql Code review for protransform patches. 2012-03-23 17:29:57 -04:00
path.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
plancache.sql Repair bug that allowed RevalidateCachedPlan to attempt to rebuild a cached 2007-11-30 18:38:34 +00:00
plpgsql.sql Fix plpgsql named-cursor-parameter feature for variable name conflicts. 2012-04-04 21:50:31 -04:00
point.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
polygon.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
polymorphism.sql Fix getTypeIOParam to support type record[]. 2011-12-01 12:44:16 -05:00
portals.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
portals_p2.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02: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 Fix a bug with SSI and prepared transactions: 2011-07-07 18:12:15 +03:00
privileges.sql Fix cascading privilege revoke to notice when privileges are still held. 2012-08-23 17:25:10 -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 Prevent inlining a SQL function with multiple OUT parameters. 2010-12-01 00:53:18 -05:00
rangetypes.sql Add SP-GiST support for range types. 2012-08-16 14:30:45 +03:00
regex.sql Re-implement extraction of fixed prefixes from regular expressions. 2012-07-10 14:54:37 -04:00
reltime.sql Add a "USING" clause to DELETE, which is equivalent to the FROM clause 2005-04-07 01:51:41 +00:00
returning.sql Apply a simple solution to the problem of making INSERT/UPDATE/DELETE 2006-09-02 17:06:52 +00:00
rowtypes.sql Fix failure to check whether a rowtype's component types are sortable. 2011-06-03 15:39:17 -04:00
rules.sql Fix typo in comment. 2012-08-19 22:56:17 -04:00
sanity_check.sql Support deferrable uniqueness constraints. 2009-07-29 20:56:21 +00:00
select.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
select_distinct.sql Alter some gratuitous uses of "ANSI" when "SQL standard" might have been 2009-07-11 21:15:32 +00: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_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 Restructure SELECT INTO's parsetree representation into CreateTableAsStmt. 2012-03-19 21:38:12 -04:00
select_views.sql Allow LEAKPROOF functions for better performance of security views. 2012-02-13 22:21:14 -05:00
sequence.sql ALTER <thing> [IF EXISTS] ... allows silent DDL if required, 2012-01-23 23:25:04 +00:00
sql_ascii.sql Add SQL_ASCII encoding test case 2000-03-06 01:29:54 +00:00
stats.sql Prevent index-only scans in stats regression test. 2011-10-08 23:45:58 -04:00
strings.sql Rewrite LIKE's %-followed-by-_ optimization so it really works (this time 2010-05-28 17:35:23 +00:00
subselect.sql Fix cross-type case in partial row matching for hashed subplans. 2012-10-11 12:22:13 -04:00
temp.sql Don't refer to the database name "regression" inside the regression test 2008-07-03 16:01:10 +00:00
text.sql Put back accidentally-deleted quote_literal() regression tests. 2010-11-21 20:46:54 -05:00
time.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
timestamp.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
timestamptz.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
timetz.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
tinterval.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
transactions.sql Run a portal's cleanup hook immediately when pushing it to FAILED state. 2012-02-15 16:19:01 -05:00
triggers.sql Add pg_trigger_depth() function 2012-01-25 13:22:54 -03:00
truncate.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
tsdicts.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
tsearch.sql Fix gincostestimate to handle ScalarArrayOpExpr reasonably. 2011-12-20 19:57:34 -05:00
tstypes.sql Extend GIN to support partial-match searches, and extend tsquery to support 2008-05-16 16:31:02 +00:00
txid.sql Migrate the former contrib/txid module into core. This will make it easier 2007-10-13 23:06:28 +00:00
type_sanity.sql Collect and use element-frequency statistics for arrays. 2012-03-03 20:20:57 -05:00
typed_table.sql Only allow typed tables to hang off composite types, not e.g. tables. 2011-04-18 10:19:46 -04:00
union.sql Revisit handling of UNION ALL subqueries with non-Var output columns. 2012-03-16 13:11:55 -04:00
update.sql Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
uuid.sql Rewrite uuid input and output routines to avoid dependency on the 2007-01-31 19:33:54 +00:00
vacuum.sql Remove old-style VACUUM FULL (which was known for a little while as 2010-02-08 04:33:55 +00:00
varchar.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
window.sql Fix case of window function + aggregate + GROUP BY expression. 2012-09-13 11:32:25 -04:00
with.sql Fix oversight in new code for printing rangetable aliases. 2012-10-12 16:14:43 -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
xml.sql Prevent access to external files/URLs via XML entity references. 2012-08-14 18:31:16 -04:00
xmlmap.sql Regression test for XML mapping functionality 2009-07-02 07:03:18 +00:00