postgresql/src/test/regress/sql
Tom Lane a4523c5aa5 Improve planning of btree index scans using ScalarArrayOpExpr quals.
Since we taught btree to handle ScalarArrayOpExpr quals natively (commit
9e8da0f757), the planner has always included
ScalarArrayOpExpr quals in index conditions if possible.  However, if the
qual is for a non-first index column, this could result in an inferior plan
because we can no longer take advantage of index ordering (cf. commit
807a40c551).  It can be better to omit the
ScalarArrayOpExpr qual from the index condition and let it be done as a
filter, so that the output doesn't need to get sorted.  Indeed, this is
true for the query introduced as a test case by the latter commit.

To fix, restructure get_index_paths and build_index_paths so that we
consider paths both with and without ScalarArrayOpExpr quals in non-first
index columns.  Redesign the API of build_index_paths so that it reports
what it found, saving useless second or third calls.

Report and patch by Andrew Gierth (though rather heavily modified by me).
Back-patch to 9.2 where this code was introduced, since the issue can
result in significant performance regressions compared to plans produced
by 9.1 and earlier.
2014-10-26 16:12:22 -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 Support ordered-set (WITHIN GROUP) aggregates. 2013-12-23 16:11:35 -05:00
alter_generic.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
alter_table.sql Revert "Allow units to be specified in relation option setting value." 2014-08-29 05:10:47 +09:00
arrays.sql Add width_bucket(anyelement, anyarray). 2014-09-09 15:34:14 -04:00
async.sql Regression tests for LISTEN/NOTIFY/UNLISTEN/pg_notify. 2013-07-03 11:07:08 -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 Clean up references to SQL92 2013-04-20 11:04:41 -04: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 Clean up references to SQL92 2013-04-20 11:04:41 -04: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 Revert "Hopefully-portable regression tests for CREATE/ALTER/DROP COLLATION." 2013-07-03 13:27:50 -04: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 copy: update docs for FORCE_NULL and FORCE_NOT_NULL combination 2014-04-22 16:06:37 -04:00
copyselect.sql Have \copy go through SendQuery 2012-01-25 18:22:00 -03:00
create_aggregate.sql Allow polymorphic aggregates to have non-polymorphic state data types. 2014-04-23 19:17:41 -04:00
create_cast.sql Add test case for CREATE CAST. 2008-10-31 09:17:17 +00:00
create_function_3.sql Move regression test listing of builtin leakproof functions to opr_sanity.sql. 2014-06-05 13:54:25 +02:00
create_index.sql Improve planning of btree index scans using ScalarArrayOpExpr quals. 2014-10-26 16:12:22 -04:00
create_misc.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
create_operator.sql Additional regression tests for CREATE OPERATOR. 2013-07-03 10:48:26 -04:00
create_table.sql Do jsonb regression test input in the conventional way. 2014-03-23 20:18:06 -04: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 Partial fix for dropped columns in functions returning composite. 2014-07-19 14:28:52 -04:00
date.sql Add make_date() and make_time() functions. 2013-11-17 15:06:50 -05: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 Make DROP IF EXISTS more consistently not fail 2014-01-23 14:40:29 -03: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 Add sql_drop event for event triggers 2013-03-28 13:05:48 -03: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 Implement IMPORT FOREIGN SCHEMA. 2014-07-10 15:01:43 -04:00
foreign_key.sql ALTER TABLE ... ALTER CONSTRAINT for FKs 2013-06-29 00:27:30 +01: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 Revive line type 2013-10-09 22:34:38 -04:00
guc.sql Don't fail for bad GUCs in CREATE FUNCTION with check_function_bodies off. 2013-09-03 18:32:20 -04:00
hash_index.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
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 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 regression test: fix hot standby tests by using repeatable read 2014-04-22 17:23:58 -04: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
indirect_toast.sql Add support for multiple kinds of external toast datums. 2013-07-02 13:38:55 -04:00
inet.sql Add min and max aggregates for inet/cidr data types. 2014-08-28 22:37:58 -04:00
inherit.sql Fix inherited UPDATE/DELETE with UNION ALL subqueries. 2013-12-14 17:33:53 -05:00
insert.sql Regression tests for TOAST. 2011-04-25 09:48:10 -04:00
int2.sql Improve handling of INT_MIN / -1 and related cases. 2012-11-19 12:24:25 -05:00
int4.sql Improve handling of INT_MIN / -1 and related cases. 2012-11-19 12:24:25 -05:00
int8.sql Improve handling of INT_MIN / -1 and related cases. 2012-11-19 12:24:25 -05:00
interval.sql interval: tighten precision specification 2014-10-18 10:31:00 -04:00
join.sql Preserve AND/OR flatness while extracting restriction OR clauses. 2014-09-09 18:35:31 -04:00
json.sql Revert 95d737ff to add 'ignore_nulls' 2014-09-29 13:32:22 -04:00
jsonb.sql Fix bogus optimization in JSONB containment tests. 2014-10-11 14:13:51 -04:00
limit.sql Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02: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
macaddr.sql Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -04:00
matview.sql Fix superuser concurrent refresh of matview owned by another. 2014-08-26 09:56:26 -05:00
money.sql Add casts from int4 and int8 to numeric. 2011-04-05 09:35:43 -04: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 Regression tests for SCHEMA commands 2013-12-11 20:45:15 +00:00
numeric.sql Fix power_var_int() for large integer exponents. 2014-09-11 23:30:51 -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 for 9.4. 2014-04-16 14:28:59 -04:00
opr_sanity.sql Add opr_sanity queries to inspect commutator/negator links more closely. 2014-08-16 13:22:52 -04:00
path.sql Remove extra newlines at end and beginning of files, add missing newlines 2010-08-19 05:57:36 +00:00
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 Check number of parameters in RAISE statement at compile time. 2014-09-02 15:56:50 +03: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: adjust polygon diagrams to not use tabs 2014-10-11 17:14:16 -04:00
polymorphism.sql Fix getTypeIOParam to support type record[]. 2011-12-01 12:44:16 -05:00
portals.sql Fix failure to set ActiveSnapshot while rewinding a cursor. 2014-05-07 14:25:11 -04: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 Shore up ADMIN OPTION restrictions. 2014-02-17 09:33:31 -05:00
psql.sql Fix further concerns about psql wrapping in expanded mode having 2014-08-18 12:20:32 +01: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 Fix mishandling of FieldSelect-on-whole-row-Var in nested lateral queries. 2014-10-20 12:23:42 -04:00
rangetypes.sql Fix "element <@ range" cost estimation. 2013-03-21 11:21:51 +02:00
regex.sql Fix incorrect search for "x?" style matches in creviterdissect(). 2014-09-23 20:26:14 -04:00
regproc.sql Add to_regprocedure() and to_regoperator(). 2014-04-16 12:21:43 -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
replica_identity.sql psql: conditionally display oids and replication identity 2014-04-15 13:28:54 -04:00
returning.sql Apply a simple solution to the problem of making INSERT/UPDATE/DELETE 2006-09-02 17:06:52 +00:00
rowsecurity.sql Fix relcache for policies, and doc updates 2014-09-26 12:46:26 -04:00
rowtypes.sql Fix *-qualification of named parameters in SQL-language functions. 2014-02-03 14:47:17 -05:00
rules.sql Use unaligned output in selected regression queries to reduce diff noise. 2013-10-26 11:24:04 -04:00
sanity_check.sql Use unaligned output in selected regression queries to reduce diff noise. 2013-10-26 11:24:04 -04: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 Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
sequence.sql Add tests for sequence privileges 2014-10-22 21:39:07 -04:00
stats.sql Add convenience functions pg_sleep_for and pg_sleep_until. 2014-01-30 15:47:56 -05:00
strings.sql Fix regexp_matches() handling of zero-length matches. 2013-07-31 11:31:22 -04:00
subselect.sql Fix bug with whole-row references to append subplans. 2014-07-11 19:12:35 -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 Move checking an explicit VARIADIC "any" argument into the parser. 2013-07-18 11:52:12 -04:00
time.sql Please find attached two patches for documentation and regression tests 2006-07-06 01:46:38 +00:00
timestamp.sql Constructors for interval, timestamp, timestamptz 2014-03-04 15:09:43 -03:00
timestamptz.sql Support timezone abbreviations that sometimes change. 2014-10-16 15:22:10 -04: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 In RelationClearRelation, postpone cache reload if !IsTransactionState(). 2014-02-06 19:38:06 -05:00
triggers.sql Support automatically-updatable views. 2012-12-08 18:26:21 -05: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 ts_rank_cd() to ignore stripped lexemes 2014-03-24 14:37:16 -04: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 Handle duplicate XIDs in txid_snapshot. 2014-05-15 18:29:20 +03:00
type_sanity.sql In type_sanity, check I/O functions of built-in types are not volatile. 2014-10-23 15:59:40 -04: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 Forward-patch regression test for "could not find pathkey item to sort". 2014-06-26 10:41:48 -07:00
updatable_views.sql Process withCheckOption exprs in setrefs.c 2014-09-22 20:12:51 -04:00
update.sql Implement UPDATE tab SET (col1,col2,...) = (SELECT ...), ... 2014-06-18 13:22:34 -04:00
uuid.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05: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 Allow pushdown of WHERE quals into subqueries with window functions. 2014-06-27 23:08:08 -07:00
with.sql Add CREATE RECURSIVE VIEW syntax 2013-01-31 22:31:58 -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 Allow empty content in xml type 2014-09-09 11:34:52 -04:00
xmlmap.sql Add regression tests for XML mapping of domains 2013-03-13 22:42:57 -04:00