postgresql/src/test/regress/sql
Tom Lane ca70bdaefe Fix issues around strictness of SIMILAR TO.
As a result of some long-ago quick hacks, the SIMILAR TO operator
and the corresponding flavor of substring() interpreted "ESCAPE NULL"
as selecting the default escape character '\'.  This is both
surprising and not per spec: the standard is clear that these
functions should return NULL for NULL input.

Additionally, because of inconsistency of the strictness markings
of 3-argument substring() and similar_escape(), the planner could not
inline the SQL definition of substring(), resulting in a substantial
performance penalty compared to the underlying POSIX substring()
function.

The simplest fix for this would be to change the strictness marking
of similar_escape(), but if we do that we risk breaking existing views
that depend on that function.  Hence, leave similar_escape() as-is
as a compatibility function, and instead invent a new function
similar_to_escape() that comes in two strict variants.

There are a couple of other behaviors in this area that are also
not per spec, but they are documented and seem generally at least
as sane as the spec's definition, so leave them alone.  But improve
the documentation to describe them fully.

Patch by me; thanks to Álvaro Herrera and Andrew Gierth for review
and discussion.

Discussion: https://postgr.es/m/14047.1557708214@sss.pgh.pa.us
2019-09-07 14:21:59 -04:00
..
.gitignore
advisory_lock.sql
aggregates.sql Don't remove surplus columns from GROUP BY for inheritance parents 2019-07-03 23:44:54 +12:00
alter_generic.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
alter_operator.sql Avoid unnecessary use of pg_strcasecmp for already-downcased identifiers. 2018-01-26 18:25:14 -05:00
alter_table.sql Remove dead encoding-conversion functions. 2019-07-05 14:17:27 -04:00
amutils.sql Add support for nearest-neighbor (KNN) searches to SP-GiST 2018-09-19 01:54:10 +03: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 Remove ruleutils.c's special case for BIT [VARYING] literals. 2018-09-11 16:32:25 -04:00
bitmapops.sql
boolean.sql Expand AND/OR regression tests around NULL handling. 2018-03-13 16:12:31 -07:00
box.sql Add support for <-> (box, point) operator to SP-GiST box_ops 2019-07-14 15:09:23 +03:00
brin.sql Fix BRIN cost estimation 2017-04-06 17:51:53 -03:00
btree_index.sql Split up a couple of long-running regression test scripts. 2019-04-11 16:15:54 -04:00
case.sql Fix interaction of CASE and ArrayCoerceExpr. 2018-10-30 15:26:11 -04:00
char.sql
circle.sql Back off output precision in circle.sql regression test. 2019-08-25 12:14:50 -04:00
cluster.sql Ignore partitioned indexes where appropriate 2018-01-25 16:12:15 -03:00
collate.icu.utf8.sql Fix random regression failure in test case "collate.icu.utf8" 2019-08-14 13:37:48 +09:00
collate.linux.utf8.sql Run UTF8-requiring collation tests by default 2019-07-31 09:46:51 +02:00
collate.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -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 Allow COPY FROM to filter data using WHERE conditions 2019-01-20 00:22:14 +01:00
copydml.sql COPY (INSERT/UPDATE/DELETE .. RETURNING ..) 2015-11-27 19:11:22 +03:00
copyselect.sql
create_aggregate.sql Implement OR REPLACE option for CREATE AGGREGATE. 2019-03-19 01:16:50 +00:00
create_am.sql Stop using spelling "nonexistant". 2019-06-08 10:12:26 -07: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 Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
create_index_spgist.sql Speed up sort-order-comparison tests in create_index_spgist. 2019-04-11 17:01:35 -04:00
create_index.sql Fix handling of expressions and predicates in REINDEX CONCURRENTLY 2019-07-29 09:58:49 +09:00
create_misc.sql Improve regression test coverage of regress.c. 2018-02-27 12:13:14 -05:00
create_operator.sql Fix lexing of standard multi-character operators in edge cases. 2018-08-23 21:42:40 +01:00
create_procedure.sql Add collation assignment to CALL statement 2019-02-07 08:25:47 +01:00
create_table_like.sql Generated columns 2019-03-30 08:15:57 +01:00
create_table.sql Install dependencies to prevent dropping partition key columns. 2019-07-22 14:55:40 -04:00
create_type.sql Fix format_type() to restore its old behavior. 2018-03-01 11:37:46 -05:00
create_view.sql Fix incorrect printing of queries with duplicated join names. 2019-06-12 19:43:08 -04:00
date.sql Remove explicit error handling for obsolete date/time values 2019-06-30 10:27:35 +02: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 Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
domain.sql Drop no-op CoerceToDomain nodes from expressions at planning time. 2018-12-13 13:24:43 -05:00
drop_if_exists.sql Improve error reporting for DROP FUNCTION/PROCEDURE/AGGREGATE/ROUTINE. 2019-03-21 11:52:08 -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 Relax transactional restrictions on ALTER TYPE ... ADD VALUE (redux). 2018-10-09 12:51:01 +13: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 Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
event_trigger.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
expressions.sql Add some test cases to improve test coverage of parse_expr.c. 2019-07-05 23:56:34 -04:00
fast_default.sql Fix heap_getattr() handling of fast defaults. 2019-02-06 01:09:32 -08:00
float4.sql Improve coverage of utils/float.h 2019-08-28 12:28:16 +09:00
float8.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
foreign_data.sql Fix partitioned index creation with foreign partitions 2019-06-26 18:38:51 -04:00
foreign_key.sql Check that partitions are not in use when dropping constraints 2019-07-23 17:22:15 -04:00
functional_deps.sql
generated.sql Convert ExecComputeStoredGenerated to use tuple slots 2019-05-22 18:41:53 +02:00
geometry.sql Add missing commutators for distance operators 2019-07-14 14:55:01 +03:00
gin.sql Make GIN regression test stable. 2016-02-08 23:41:46 +09:00
gist.sql Add support for <-> (box, point) operator to GiST box_ops 2019-07-14 15:09:15 +03:00
groupingsets.sql Add missing (COSTS OFF) to EXPLAIN added in previous commit. 2019-07-25 14:52:36 -07:00
guc.sql Give up on testing guc.c's behavior for "infinity" inputs. 2019-03-11 17:53:09 -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 failure with textual partition hash keys. 2019-04-15 16:47:09 -04:00
horology.sql Remove deprecated abstime, reltime, tinterval datatypes. 2018-10-11 11:59:15 -07: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 Allow UNLISTEN in hot-standby mode. 2019-01-25 21:14:49 -05:00
hs_standby_check.sql
hs_standby_disallowed.sql Allow UNLISTEN in hot-standby mode. 2019-01-25 21:14:49 -05:00
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 Make identity sequence management more robust 2019-07-22 12:07:10 +02:00
index_including_gist.sql Support for INCLUDE attributes in GiST indexes 2019-03-10 11:37:17 +03:00
index_including.sql Fix nbtree high key "continuescan" row compare bug. 2019-03-31 17:24:04 -07:00
indexing.sql Avoid order-of-execution problems with ALTER TABLE ADD PRIMARY KEY. 2019-04-23 12:25:27 -04:00
indirect_toast.sql Clean up duplicate table and function names in regression tests. 2018-03-15 17:09:02 -04:00
inet.sql Add sort support routine for the inet data type. 2019-08-01 09:34:14 -07:00
inherit.sql Disallow changing an inherited column's type if not all parents changed. 2019-08-18 17:11:57 -04:00
init_privs.sql Fix typos in comments. 2017-02-06 11:33:58 +02:00
insert_conflict.sql Don't mark partitioned indexes invalid unnecessarily 2018-12-05 13:31:51 -03:00
insert.sql Add tests for error message generation in partition tuple routing 2019-05-06 21:44:24 +09: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_hash.sql Fix representation of hash keys in Hash/HashJoin nodes. 2019-08-02 00:02:46 -07:00
join.sql Allow functions-in-FROM to be pulled up if they reduce to constants. 2019-08-01 18:50:22 -04:00
json_encoding.sql Fix whitespace 2015-10-11 21:44:27 -04:00
json.sql Remove unnecessary test dependency on the contents of pg_pltemplate. 2019-08-21 10:43:23 -04:00
jsonb_jsonpath.sql Adjust string comparison in jsonpath 2019-08-11 22:54:53 +03:00
jsonb.sql Remove unnecessary test dependency on the contents of pg_pltemplate. 2019-08-21 10:43:23 -04:00
jsonpath_encoding.sql Get rid of backtracking in jsonpath_scan.l 2019-03-25 15:43:56 +03:00
jsonpath.sql Support 'q' flag in jsonpath 'like_regex' predicate 2019-06-19 22:41:57 +03:00
limit.sql Add regression tests exercising more code paths in nodeLimit.c. 2017-08-11 17:28:01 -04:00
line.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
lock.sql Add more infinite recursion detection while locking a view. 2018-04-17 16:59:17 +09:00
lseg.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
macaddr8.sql Add support for EUI-64 MAC addresses as macaddr8 2017-03-15 11:16:25 -04:00
macaddr.sql Allow input format xxxx-xxxx-xxxx for macaddr type 2014-10-21 16:16:39 -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 Build out the planner support function infrastructure. 2019-02-09 18:32:23 -05:00
misc_sanity.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
money.sql Fix loss of fractional digits for large values in cash_numeric(). 2019-07-26 11:59:00 -04:00
name.sql Introduce parse_ident() 2016-03-18 18:16:14 +03:00
namespace.sql Clean up duplicate role and schema names in regression tests. 2018-03-15 14:00:31 -04:00
numeric_big.sql Fix corner-case loss of precision in numeric pow() calculation 2016-05-05 11:16:17 +01:00
numeric.sql Make numeric power() handle NaNs according to the modern POSIX spec. 2018-05-17 11:10:50 -04:00
numerology.sql
object_address.sql Warn if wal_level is too low when creating a publication. 2019-07-13 10:35:34 +12:00
oid.sql
oidjoins.sql Rework the pg_statistic_ext catalog 2019-06-16 01:20:31 +02:00
opr_sanity.sql tableam: introduce table AM infrastructure. 2019-03-06 09:54:38 -08:00
partition_aggregate.sql Avoid crash in partitionwise join planning under GEQO. 2019-03-30 12:48:32 -04:00
partition_info.sql Fix crash with pg_partition_root 2019-03-22 17:27:38 +09:00
partition_join.sql Fix typos in regression test comments. 2019-08-29 18:45:00 +09:00
partition_prune.sql Fix SIGSEGV in pruning for ScalarArrayOp with constant-null array. 2019-08-09 13:20:28 -04:00
password.sql Fix buffer overflow when parsing SCRAM verifiers in backend 2019-06-17 21:48:17 +09:00
path.sql Improve test coverage of geometric types 2018-09-26 10:45:21 +02:00
pg_lsn.sql Add min() and max() aggregates for pg_lsn 2019-07-05 12:21:11 +09:00
plancache.sql Add plan_cache_mode setting 2018-07-16 13:35:41 +02:00
plpgsql.sql Move plpgsql error-trapping tests to a new module-specific test file. 2019-04-11 15:09:28 -04:00
point.sql Change floating-point output format for improved performance. 2019-02-13 15:20:33 +00:00
polygon.sql Fix double-word typos 2019-06-13 10:03:56 -04:00
polymorphism.sql Fix lexing of standard multi-character operators in edge cases. 2018-08-23 21:42:40 +01:00
portals_p2.sql
portals.sql Fix failure in WHERE CURRENT OF after rewinding the referenced cursor. 2018-09-23 16:05:45 -04:00
prepare.sql Add more tests for CREATE TABLE AS with WITH NO DATA 2019-02-07 09:21:57 +09:00
prepared_xacts.sql Remove unnecessary dependency on statement_timeout in prepared_xacts test. 2017-03-13 16:46:32 -04:00
privileges.sql Use checkAsUser for selectivity estimator checks, if it's set. 2019-05-06 11:54:32 +01:00
psql_crosstab.sql Fix incorrect error reporting for duplicate data in \crosstabview. 2016-12-25 16:04:45 -05:00
psql.sql Improve psql's \d output for TOAST tables. 2019-07-23 15:25:56 -04:00
publication.sql Warn if wal_level is too low when creating a publication. 2019-07-13 10:35:34 +12:00
random.sql
rangefuncs.sql Fix improper interaction of FULL JOINs with lateral references. 2019-04-08 16:09:26 -04:00
rangetypes.sql Fix daterange canonicalization for +/- infinity. 2019-07-18 13:41:10 -07: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 Fix misoptimization of "{1,1}" quantifiers in regular expressions. 2019-05-12 18:53:38 -04:00
regproc.sql Establish conventions about global object names used in regression tests. 2016-07-17 18:42:43 -04:00
reindex_catalog.sql Remove reindex_catalog test from test schedules. 2019-05-10 12:44:31 -07:00
reloptions.sql Add vacuum_truncate reloption. 2019-04-08 16:43:57 +09:00
replica_identity.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
returning.sql Add support for INSERT ... ON CONFLICT DO NOTHING/UPDATE. 2015-05-08 05:43:10 +02:00
roleattributes.sql Remove WITH OIDS support, change oid catalog column visibility. 2018-11-20 16:00:17 -08:00
rowsecurity.sql Fix security checks for selectivity estimation functions with RLS. 2019-05-06 11:38:43 +01:00
rowtypes.sql Stop using spelling "nonexistant". 2019-06-08 10:12:26 -07:00
rules.sql Re-order some regression test scripts for more parallelism. 2019-04-11 18:16:50 -04:00
sanity_check.sql Don't create relfilenode for relations without storage 2019-01-04 14:51:17 -03: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 Add more tests for CREATE TABLE AS with WITH NO DATA 2019-02-07 09:21:57 +09:00
select_parallel.sql Partially revert "Insert temporary debugging output in regression tests." 2019-08-11 18:55:32 -04:00
select_views.sql Avoid locale-dependent output in select_views regression test. 2017-05-28 14:52:18 -04:00
select.sql Make some subquery-using test cases a bit more robust. 2018-10-14 14:02:59 -04:00
sequence.sql psql: Update \d sequence display 2017-09-29 13:37:30 -04:00
spgist.sql Repair double-free in SP-GIST rescan (bug #15378) 2018-09-11 18:14:19 +01:00
stats_ext.sql Don't build extended statistics on inheritance trees 2019-07-30 19:47:33 +02:00
stats.sql Partially revert "Insert temporary debugging output in regression tests." 2019-08-11 18:55:32 -04:00
strings.sql Fix issues around strictness of SIMILAR TO. 2019-09-07 14:21:59 -04:00
subscription.sql Fix regression tests to use only global names beginning with "regress_". 2019-06-29 11:09:03 -04:00
subselect.sql Fix choice of comparison operators for cross-type hashed subplans. 2019-08-05 11:20:31 -04: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 Fix random regression failure in test case "temp" 2019-08-13 10:55:19 +09:00
text.sql
tidscan.sql Add a hash opclass for type "tid". 2018-12-30 15:40:04 -05:00
time.sql
timestamp.sql Remove explicit error handling for obsolete date/time values 2019-06-30 10:27:35 +02:00
timestamptz.sql Remove explicit error handling for obsolete date/time values 2019-06-30 10:27:35 +02:00
timetz.sql Fix some incorrect parsing of time with time zone strings 2019-08-07 18:16:31 +09:00
transactions.sql Transaction chaining 2019-03-24 11:33:02 +01:00
triggers.sql Prevent possible double-free when update trigger returns old tuple. 2019-08-15 20:04:19 -04:00
truncate.sql Un-hide most cascaded-drop details in regression test results. 2019-03-24 19:15:37 -04:00
tsdicts.sql Improve regression test coverage for src/backend/tsearch/spell.c. 2018-04-13 13:49:52 -04:00
tsearch.sql Allow functions-in-FROM to be pulled up if they reduce to constants. 2019-08-01 18:50:22 -04:00
tsrf.sql Fix handling of targetlist SRFs when scan/join relation is known empty. 2019-03-07 14:22:13 -05:00
tstypes.sql More float test and portability fixes. 2019-02-13 19:35:50 +00:00
txid.sql Add a txid_status function. 2017-03-24 12:00:53 -04:00
type_sanity.sql Harden tableam against nonexistant / wrong kind of AMs. 2019-04-04 17:39:39 -07:00
typed_table.sql Suppress less info in regression tests using DROP CASCADE. 2017-08-01 16:49:23 -04:00
union.sql Repair issues with faulty generation of merge-append plans. 2019-05-09 16:53:05 -04:00
updatable_views.sql Add test case exercising formerly-unreached code in inheritance_planner. 2019-03-31 15:49:06 -04:00
update.sql Fix system column accesses in ON CONFLICT ... RETURNING. 2019-07-24 18:45:58 -07:00
uuid.sql Add gen_random_uuid function 2019-07-14 14:30:27 +02:00
vacuum.sql Fix "ANALYZE t, t" inside a transaction block. 2019-08-10 11:30:11 -04:00
varchar.sql
window.sql Order active window clauses for greater reuse of Sort nodes. 2018-09-14 17:35:42 +01:00
with.sql Revert MERGE patch 2018-04-12 11:22:56 +01:00
write_parallel.sql Allow DML commands that create tables to use parallel query. 2017-10-05 11:40:48 -04:00
xml.sql Accept XML documents when xmloption = content, as required by SQL:2006+. 2019-03-23 16:51:37 -04:00
xmlmap.sql Fix cursor_to_xml in tableforest false mode 2017-05-03 21:41:10 -04:00