postgresql/src/test/regress/sql
Tom Lane 5b7b5518d0 Revise parameterized-path mechanism to fix assorted issues.
This patch adjusts the treatment of parameterized paths so that all paths
with the same parameterization (same set of required outer rels) for the
same relation will have the same rowcount estimate.  We cache the rowcount
estimates to ensure that property, and hopefully save a few cycles too.
Doing this makes it practical for add_path_precheck to operate without
a rowcount estimate: it need only assume that paths with different
parameterizations never dominate each other, which is close enough to
true anyway for coarse filtering, because normally a more-parameterized
path should yield fewer rows thanks to having more join clauses to apply.

In add_path, we do the full nine yards of comparing rowcount estimates
along with everything else, so that we can discard parameterized paths that
don't actually have an advantage.  This fixes some issues I'd found with
add_path rejecting parameterized paths on the grounds that they were more
expensive than not-parameterized ones, even though they yielded many fewer
rows and hence would be cheaper once subsequent joining was considered.

To make the same-rowcounts assumption valid, we have to require that any
parameterized path enforce *all* join clauses that could be obtained from
the particular set of outer rels, even if not all of them are useful for
indexing.  This is required at both base scans and joins.  It's a good
thing anyway since the net impact is that join quals are checked at the
lowest practical level in the join tree.  Hence, discard the original
rather ad-hoc mechanism for choosing parameterization joinquals, and build
a better one that has a more principled rule for when clauses can be moved.
The original rule was actually buggy anyway for lack of knowledge about
which relations are part of an outer join's outer side; getting this right
requires adding an outer_relids field to RestrictInfo.
2012-04-19 15:53:47 -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 Rename bytea_agg to string_agg and add delimiter argument 2012-04-13 21:36:59 +03:00
alter_table.sql Add support for renaming constraints 2012-03-10 20:19:13 +02:00
arrays.sql Collect and use element-frequency statistics for arrays. 2012-03-03 20:20:57 -05: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 More regression tests for LEAKPROOF/NOT LEAKPROOF stuff. 2012-02-15 10:56:26 -05:00
create_index.sql Add DROP INDEX CONCURRENTLY [IF EXISTS], uses ShareUpdateExclusiveLock 2012-04-06 10:21:40 +01: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_like.sql Allow CREATE TABLE (LIKE ...) from composite type 2012-03-03 16:03:05 +02:00
create_table.sql Fix another bit of unlogged-table-induced breakage. 2011-09-21 10:48:31 -04:00
create_type.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_view.sql Add a security_barrier option for views. 2011-12-22 16:16:31 -05: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_if_exists.sql Remove a few of the new DROP-IF-EXISTS regression tests. 2011-10-19 23:38:06 -04:00
drop.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
enum.sql Require VALUE keyword when extending an enum type. Based on a patch from Alvaro Herrera. 2010-11-16 22:18:33 -05:00
errors.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
euc_cn.sql Hi, here are the patches to enhance existing MB handling. This time 1998-06-16 07:29:54 +00:00
euc_jp.sql From: t-ishii@sra.co.jp 1998-04-27 17:10:50 +00:00
euc_kr.sql Hi, here are the patches to enhance existing MB handling. This time 1998-06-16 07:29:54 +00:00
euc_tw.sql Add missing mb files. 1999-02-02 19:04:43 +00: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 Allow statistics to be collected for foreign tables. 2012-04-06 15:02:35 -04:00
foreign_key.sql Change FK trigger creation order to better support self-referential FKs. 2011-10-26 13:02:28 -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 Revise parameterized-path mechanism to fix assorted issues. 2012-04-19 15:53:47 -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 Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
join.sql Revise parameterized-path mechanism to fix assorted issues. 2012-04-19 15:53:47 -04:00
json.sql Fix a couple of cases of JSON output. 2012-02-20 15:01:03 -05: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 Hi, here are the patches to enhance existing MB handling. This time 1998-06-16 07:29:54 +00:00
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 Add CREATE TRIGGER, CREATE INDEX, and CREATE SEQUENCE to the list of 2004-01-11 04:58:17 +00:00
numeric_big.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
numeric.sql Fix corner case bug in numeric to_char(). 2011-09-07 17:07:20 -04: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_p2.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
portals.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 Add support for privileges on types 2011-12-20 00:05:19 +02: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 Remove zero- and one-argument range constructor functions. 2011-11-22 20:45:05 -05:00
regex.sql Fix the general case of quantified regex back-references. 2012-02-24 01:41:03 -05: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 Improve pretty printing of viewdefs. 2012-02-19 11:43:46 -05:00
sanity_check.sql Support deferrable uniqueness constraints. 2009-07-29 20:56:21 +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_distinct.sql Alter some gratuitous uses of "ANSI" when "SQL standard" might have been 2009-07-11 21:15:32 +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
select.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02: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 Unify spelling of "canceled", "canceling", "cancellation" 2011-06-29 09:28:46 +03: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 Measure the number of all-visible pages for use in index-only scan costing. 2011-10-14 17:23:46 -04:00
with.sql Fix handling of init_plans list in inheritance_planner(). 2012-01-28 20:24:42 -05: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 Make xpath() do something useful with XPath expressions that return scalars. 2011-07-21 11:32:46 -04:00
xmlmap.sql Regression test for XML mapping functionality 2009-07-02 07:03:18 +00:00