postgresql/src/test/regress/sql
Tom Lane 7ca25b7de6 Fix neqjoinsel's behavior for semi/anti join cases.
Previously, this function estimated the selectivity as 1 minus eqjoinsel()
for the negator equality operator, regardless of join type (I think there
was an expectation that eqjoinsel would handle the join type).  But
actually this is completely wrong for semijoin cases: the fraction of the
LHS that has a non-matching row is not one minus the fraction of the LHS
that has a matching row.  In reality a semijoin with <> will nearly always
succeed: it can only fail when the RHS is empty, or it contains a single
distinct value that is equal to the particular LHS value, or the LHS value
is null.  The only one of those things we should have much confidence in
estimating is the fraction of LHS values that are null, so let's just take
the selectivity as 1 minus outer nullfrac.

Per coding convention, antijoin should be estimated the same as semijoin.

Arguably this is a bug fix, but in view of the lack of field complaints
and the risk of destabilizing plans, no back-patch.

Thomas Munro, reviewed by Ashutosh Bapat

Discussion: https://postgr.es/m/CAEepm=270ze2hVxWkJw-5eKzc3AB4C9KpH3L2kih75R5pdSogg@mail.gmail.com
2017-11-29 22:00:37 -05:00
..
.gitignore
abstime.sql
advisory_lock.sql
aggregates.sql Fix unstable regression test added by commits 59b71c6fe et al. 2017-11-24 00:29:20 -05:00
alter_generic.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -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 Add hash partitioning. 2017-11-09 18:07:44 -05: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 Add new function pg_notification_queue_usage. 2015-07-17 09:12:03 -04:00
bit.sql
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 Add test cases for indexam operations not currently covered. 2014-11-19 19:47:43 +02:00
case.sql Faster expression evaluation and targetlist projection. 2017-03-25 14:52:06 -07:00
char.sql
circle.sql
cluster.sql Remove replacement selection sort. 2017-09-29 10:25:44 -04: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 Revert test case added by commit 1e165d05fe. 2017-08-01 20:15:10 -04:00
combocid.sql Fix locking a tuple updated by an aborted (sub)transaction 2016-09-09 15:54:29 -03:00
comments.sql
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
create_aggregate.sql Explicitly track whether aggregate final functions modify transition state. 2017-10-14 15:21:39 -04: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 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 Allow referring to functions without arguments when unique 2017-03-14 23:55:19 -04:00
create_index.sql Add more tests for reloptions 2017-10-19 14:22:05 +02: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.sql Show partition info from psql \d+ 2017-11-23 05:10:39 +11:00
create_table_like.sql Identity columns 2017-04-06 08:41:37 -04:00
create_type.sql Fix dependency, when changing a function's argument/return type. 2017-06-16 11:33:12 +03: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
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 Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
expressions.sql Improve expression evaluation test coverage. 2017-03-11 15:41:34 -08:00
float4.sql
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
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 Add more tests for reloptions 2017-10-19 14:22:05 +02:00
groupingsets.sql Make setrefs.c match by ressortgroupref even for plain Vars. 2017-10-26 12:17:40 -04: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 Make to_timestamp() and to_date() range-check fields of their input. 2016-09-28 14:36:17 -04: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
hs_standby_disallowed.sql
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 psql: Update \d sequence display 2017-09-29 13:37:30 -04: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 Add null test to partition constraint for default range partitions. 2017-11-28 10:51:01 -05:00
init_privs.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
insert.sql If a range-partitioned table has no default partition, reject null keys. 2017-11-28 14:11:16 -05:00
insert_conflict.sql Revert "Allow ON CONFLICT .. DO NOTHING on a partitioned table." 2017-03-31 16:48:21 -04:00
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 Fix integer-overflow problems in interval comparison. 2017-04-05 23:51:27 -04:00
join.sql Fix neqjoinsel's behavior for semi/anti join cases. 2017-11-29 22:00:37 -05:00
json.sql Add tests for json{b}_populate_recordset() crash case. 2017-11-06 10:29:37 -05:00
json_encoding.sql Fix whitespace 2015-10-11 21:44:27 -04: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
macaddr.sql Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -04:00
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
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 Regression tests for SCHEMA commands 2013-12-11 20:45:15 +00:00
numeric.sql Fix quoted-substring handling in format parsing for to_char/to_number/etc. 2017-11-18 12:16:37 -05:00
numeric_big.sql Fix corner-case loss of precision in numeric pow() calculation 2016-05-05 11:16:17 +01:00
numerology.sql
object_address.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
oid.sql
oidjoins.sql Update oidjoins regression test for v10. 2017-05-15 14:04:11 -04:00
opr_sanity.sql Explicitly track whether aggregate final functions modify transition state. 2017-10-14 15:21:39 -04:00
partition_join.sql Add hash partitioning. 2017-11-09 18:07:44 -05:00
partition_prune.sql Add extensive tests for partition pruning. 2017-11-29 15:25:29 -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 Fix incorrect handling of CTEs and ENRs as DML target relations. 2017-10-16 17:56:54 -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 Fix incorrect handling of polymorphic aggregates used as window functions. 2016-10-09 12:49:37 -04:00
portals.sql Fix some interrelated planner issues with initPlans and Param munging. 2016-07-01 20:06:05 -04:00
portals_p2.sql
prepare.sql
prepared_xacts.sql Remove unnecessary dependency on statement_timeout in prepared_xacts test. 2017-03-13 16:46:32 -04:00
privileges.sql Restrict lo_import()/lo_export() via SQL permissions not hard-wired checks. 2017-11-09 12:36:58 -05:00
psql.sql Provide a test for variable existence in psql 2017-09-21 19:02:23 -04:00
psql_crosstab.sql Fix incorrect error reporting for duplicate data in \crosstabview. 2016-12-25 16:04:45 -05:00
publication.sql psql: Improve display of "for all tables" publications 2017-06-15 10:46:41 -04:00
random.sql
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 Add more tests for reloptions 2017-10-19 14:22:05 +02: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 Clean up after insufficiently-researched optimization of tuple conversions. 2017-04-06 21:10:20 -04:00
rules.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04: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.sql Expose explain's SUMMARY option 2017-03-08 15:14:03 -05:00
select_distinct.sql Disable physical tlist if any Var would need multiple sortgroupref labels. 2016-05-26 14:52:30 -04:00
select_distinct_on.sql
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 Pass InitPlan values to workers via Gather (Merge). 2017-11-16 12:06:14 -05:00
select_views.sql Avoid locale-dependent output in select_views regression test. 2017-05-28 14:52:18 -04: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.sql Allow bitmap scans to operate as index-only scans when possible. 2017-11-01 17:38:20 -04:00
stats_ext.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
strings.sql Reduce test variability for toast_tuple_target test 2017-11-20 12:09:40 +11: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 Fix timestamptz regression test to still work with latest IANA zone data. 2017-03-09 17:20:33 -05:00
timetz.sql
tinterval.sql
transactions.sql Fix handling of savepoint commands within multi-statement Query strings. 2017-09-07 09:49:55 -04:00
triggers.sql Ensure that BEFORE STATEMENT triggers fire the right number of times. 2017-09-17 12:16:38 -04:00
truncate.sql Allow ALTER TABLE ONLY on partitioned tables 2017-04-25 16:57:43 -04:00
tsdicts.sql Spelling fixes 2017-03-14 12:58:39 -04: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 Add regression tests exercising the non-hashed code paths in nodeSetop.c. 2017-08-11 17:28:01 -04:00
updatable_views.sql Teach map_partition_varattnos to handle whole-row expressions. 2017-08-03 11:21:29 -04:00
update.sql Add hash partitioning. 2017-11-09 18:07:44 -05:00
uuid.sql Fix whitespace issues found by git diff --check, add gitattributes 2013-11-10 14:48:29 -05:00
vacuum.sql Allow multiple tables to be specified in one VACUUM or ANALYZE command. 2017-10-03 18:53:44 -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 incorrect handling of CTEs and ENRs as DML target relations. 2017-10-16 17:56:54 -04:00
without_oid.sql
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