postgresql/src/test/regress/sql
Richard Guo 8e11859102 Implement Eager Aggregation
Eager aggregation is a query optimization technique that partially
pushes aggregation past a join, and finalizes it once all the
relations are joined.  Eager aggregation may reduce the number of
input rows to the join and thus could result in a better overall plan.

In the current planner architecture, the separation between the
scan/join planning phase and the post-scan/join phase means that
aggregation steps are not visible when constructing the join tree,
limiting the planner's ability to exploit aggregation-aware
optimizations.  To implement eager aggregation, we collect information
about aggregate functions in the targetlist and HAVING clause, along
with grouping expressions from the GROUP BY clause, and store it in
the PlannerInfo node.  During the scan/join planning phase, this
information is used to evaluate each base or join relation to
determine whether eager aggregation can be applied.  If applicable, we
create a separate RelOptInfo, referred to as a grouped relation, to
represent the partially-aggregated version of the relation and
generate grouped paths for it.

Grouped relation paths can be generated in two ways.  The first method
involves adding sorted and hashed partial aggregation paths on top of
the non-grouped paths.  To limit planning time, we only consider the
cheapest or suitably-sorted non-grouped paths in this step.
Alternatively, grouped paths can be generated by joining a grouped
relation with a non-grouped relation.  Joining two grouped relations
is currently not supported.

To further limit planning time, we currently adopt a strategy where
partial aggregation is pushed only to the lowest feasible level in the
join tree where it provides a significant reduction in row count.
This strategy also helps ensure that all grouped paths for the same
grouped relation produce the same set of rows, which is important to
support a fundamental assumption of the planner.

For the partial aggregation that is pushed down to a non-aggregated
relation, we need to consider all expressions from this relation that
are involved in upper join clauses and include them in the grouping
keys, using compatible operators.  This is essential to ensure that an
aggregated row from the partial aggregation matches the other side of
the join if and only if each row in the partial group does.  This
ensures that all rows within the same partial group share the same
"destiny", which is crucial for maintaining correctness.

One restriction is that we cannot push partial aggregation down to a
relation that is in the nullable side of an outer join, because the
NULL-extended rows produced by the outer join would not be available
when we perform the partial aggregation, while with a
non-eager-aggregation plan these rows are available for the top-level
aggregation.  Pushing partial aggregation in this case may result in
the rows being grouped differently than expected, or produce incorrect
values from the aggregate functions.

If we have generated a grouped relation for the topmost join relation,
we finalize its paths at the end.  The final paths will compete in the
usual way with paths built from regular planning.

The patch was originally proposed by Antonin Houska in 2017.  This
commit reworks various important aspects and rewrites most of the
current code.  However, the original patch and reviews were very
useful.

Author: Richard Guo <guofenglinux@gmail.com>
Author: Antonin Houska <ah@cybertec.at> (in an older version)
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Jian He <jian.universality@gmail.com>
Reviewed-by: Tender Wang <tndrwang@gmail.com>
Reviewed-by: Matheus Alcantara <matheusssilv97@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: David Rowley <dgrowleyml@gmail.com>
Reviewed-by: Tomas Vondra <tomas@vondra.me> (in an older version)
Reviewed-by: Andy Fan <zhihuifan1213@163.com> (in an older version)
Reviewed-by: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> (in an older version)
Discussion: https://postgr.es/m/CAMbWs48jzLrPt1J_00ZcPZXWUQKawQOFE8ROc-ADiYqsqrpBNw@mail.gmail.com
2025-10-08 17:04:23 +09:00
..
advisory_lock.sql tests: Restrict pg_locks queries in advisory_locks.sql to current database 2022-10-05 10:44:38 -07:00
aggregates.sql Add GROUP BY ALL. 2025-09-29 16:55:17 -04:00
alter_generic.sql Add nbtree skip scan optimization. 2025-04-04 12:27:04 -04:00
alter_operator.sql Extend ALTER OPERATOR to allow setting more optimization attributes. 2023-10-20 12:28:46 -04:00
alter_table.sql Ignore temporary relations in RelidByRelfilenumber() 2025-08-22 09:03:59 +09:00
amutils.sql
arrays.sql Introduce a SQL-callable function array_sort(anyarray). 2025-04-01 18:03:55 -04:00
async.sql
bit.sql Optimize pg_popcount() with AVX-512 instructions. 2024-04-06 21:56:23 -05:00
bitmapops.sql Fix bitmapheapscan incorrect recheck of NULL tuples 2025-03-24 16:40:59 -04:00
boolean.sql Add tests for int4_bool() in int.c 2024-01-31 15:02:28 +09:00
box.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
brin.sql Set query ID in parallel workers for vacuum, BRIN and btree 2024-09-30 08:43:28 +09:00
brin_bloom.sql BRIN bloom indexes 2021-03-26 13:35:32 +01:00
brin_multi.sql Enable BUFFERS with EXPLAIN ANALYZE by default 2024-12-11 22:35:11 +13:00
btree_index.sql Make row compares robust during nbtree array scans. 2025-07-02 09:48:15 -04:00
case.sql Fix NULLIF()'s handling of read-write expanded objects. 2024-11-25 18:09:09 -05:00
char.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
circle.sql
cluster.sql Reintroduce MAINTAIN privilege and pg_maintain predefined role. 2024-03-13 14:49:26 -05:00
collate.icu.utf8.sql Introduce a SQL-callable function array_sort(anyarray). 2025-04-01 18:03:55 -04:00
collate.linux.utf8.sql Remove read-only server settings lc_collate and lc_ctype 2023-06-07 16:57:06 +02:00
collate.sql Introduce "builtin" collation provider. 2024-03-13 23:33:44 -07:00
collate.utf8.sql Fix INITCAP() word boundaries for PG_UNICODE_FAST. 2025-04-21 12:34:58 -07:00
collate.windows.win1252.sql Fix collate.windows.win1252 test. 2023-12-29 11:26:10 -08:00
combocid.sql Sanitize the term "combo CID" in code comments 2021-03-25 16:08:03 +09:00
comments.sql
compression.sql Split regression tests for TOAST compression methods into two files 2025-07-17 14:08:55 +09:00
compression_lz4.sql Split regression tests for TOAST compression methods into two files 2025-07-17 14:08:55 +09:00
constraints.sql Fix dumping of comments on invalid constraints on domains 2025-07-16 19:22:53 +02:00
conversion.sql Update GB18030 encoding from version 2000 to 2022 2025-09-24 13:26:05 +07:00
copy.sql Support multi-line headers in COPY FROM command. 2025-07-03 15:27:26 +09:00
copy2.sql Support multi-line headers in COPY FROM command. 2025-07-03 15:27:26 +09:00
copydml.sql Fix wrong assertion and poor error messages in "COPY (query) TO". 2024-10-21 15:08:22 -04:00
copyencoding.sql Add some tests for encoding conversion in COPY TO/FROM 2024-12-16 11:23:38 +09:00
copyselect.sql psql: Show all query results by default 2022-04-04 20:00:33 +02:00
create_aggregate.sql
create_am.sql Fix dependency of partitioned table and table AM with CREATE TABLE .. USING 2024-10-29 08:41:33 +09:00
create_cast.sql Record dependencies of a cast on other casts that it requires. 2022-10-17 14:02:05 -04:00
create_function_c.sql Rename create_function_N test scripts for clarity. 2022-02-08 15:40:08 -05:00
create_function_sql.sql Fix re-execution of a failed SQLFunctionCache entry. 2025-08-20 16:09:18 -04:00
create_index.sql Fix typo in create_index.sql. 2025-08-04 16:18:59 +01:00
create_index_spgist.sql Add a planner support function for starts_with(). 2021-11-17 16:54:12 -05:00
create_misc.sql Rearrange core regression tests to reduce cross-script dependencies. 2022-02-08 15:30:38 -05:00
create_operator.sql Provide more-specific error details/hints for function lookup failures. 2025-09-16 12:17:02 -04:00
create_procedure.sql Fix failure with SQL-procedure polymorphic output arguments in v12. 2024-06-06 15:16:56 -04:00
create_role.sql Fix DROP ROLE when specifying duplicated roles 2024-01-29 08:05:59 +09:00
create_schema.sql Fix crashes with CREATE SCHEMA AUTHORIZATION and schema elements 2023-04-28 19:29:12 +09:00
create_table.sql Ignore temporary relations in RelidByRelfilenumber() 2025-08-22 09:03:59 +09:00
create_table_like.sql Fix CREATE TABLE LIKE with not-valid check constraint 2025-09-10 13:25:58 +02:00
create_type.sql Add test scaffolding for soft error reporting from input functions. 2022-12-09 10:08:44 -05:00
create_view.sql Fix mis-deparsing of ORDER BY lists when there is a name conflict. 2024-08-29 13:24:17 -04:00
database.sql Replace tests of ALTER DATABASE RESET TABLESPACE. 2025-09-12 12:44:14 -07:00
date.sql Fix various overflow hazards in date and timestamp functions. 2024-12-09 13:47:23 -06:00
dbsize.sql Fix incorrect return value for pg_size_pretty(bigint) 2024-07-28 22:22:52 +12:00
delete.sql
dependency.sql Reintroduce MAINTAIN privilege and pg_maintain predefined role. 2024-03-13 14:49:26 -05:00
domain.sql Prevent creation of duplicate not-null constraints for domains 2025-07-03 11:46:12 +02:00
drop_if_exists.sql
drop_operator.sql
eager_aggregate.sql Implement Eager Aggregation 2025-10-08 17:04:23 +09:00
enum.sql Improve error message for duplicate labels when creating an enum type. 2025-09-02 13:50:56 -04:00
equivclass.sql Implement Self-Join Elimination 2025-02-17 12:44:12 +02:00
errors.sql Rearrange core regression tests to reduce cross-script dependencies. 2022-02-08 15:30:38 -05:00
event_trigger.sql Fix oversights in pg_event_trigger_dropped_objects() fixes. 2025-09-12 17:43:17 -04:00
event_trigger_login.sql Remove the flaky check in event_trigger_login regression test 2024-01-17 23:16:53 +02:00
explain.sql Keep track of what RTIs a Result node is scanning. 2025-09-23 09:07:55 -04:00
expressions.sql Add back SQLValueFunction for SQL keywords 2023-05-17 10:19:17 +09:00
fast_default.sql Fix broken handling of domains in atthasmissing logic. 2025-03-03 12:43:44 -05:00
float4.sql Avoid depending on post-UPDATE row order in float4/float8 tests. 2025-04-22 14:24:21 -04:00
float8.sql Avoid depending on post-UPDATE row order in float4/float8 tests. 2025-04-22 14:24:21 -04:00
foreign_data.sql Fix failure of ALTER FOREIGN TABLE SET SCHEMA to move sequences. 2024-03-26 15:28:31 -04:00
foreign_key.sql Fix typo in foreign_key.sql 2025-08-02 19:54:23 +09:00
functional_deps.sql
generated_stored.sql Obtain required table lock during cross-table updates, redux. 2025-07-03 13:46:07 -04:00
generated_virtual.sql Expand virtual generated columns in constraint expressions 2025-09-15 16:27:50 +02:00
geometry.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
gin.sql Avoid loss of code coverage with unlogged-index test cases. 2022-09-25 13:10:17 -04:00
gist.sql Avoid loss of code coverage with unlogged-index test cases. 2022-09-25 13:10:17 -04:00
groupingsets.sql Fix incorrect handling of subquery pullup 2025-03-13 16:36:03 +09:00
guc.sql Apply GUC name from central table in more places of guc.c 2024-10-09 18:47:34 +09:00
hash_func.sql Reduce dependency to money data type in main regression test suite 2024-01-15 09:30:16 +09:00
hash_index.sql Fix an uninitialized access in hash_xlog_squeeze_page(). 2023-12-01 10:22:13 +05:30
hash_part.sql Update comments to match location of definition 2023-09-06 10:18:30 +02:00
horology.sql Tighten parsing of datetime input. 2025-05-28 15:10:48 -04:00
identity.sql Add some regression tests for missing DDL patterns 2024-12-12 11:16:45 +09:00
incremental_sort.sql Consider explicit incremental sort for Append and MergeAppend 2025-07-08 10:21:44 +09:00
index_including.sql Add pg_constraint rows for not-null constraints 2024-11-08 13:28:48 +01:00
index_including_gist.sql
indexing.sql Add pg_constraint rows for not-null constraints 2024-11-08 13:28:48 +01:00
indirect_toast.sql Rearrange core regression tests to reduce cross-script dependencies. 2022-02-08 15:30:38 -05:00
inet.sql Improve test coverage of network address functions 2025-01-29 08:49:48 +09:00
infinite_recurse.sql
inherit.sql Need to do CommandCounterIncrement after StoreAttrMissingVal. 2025-04-02 11:13:01 -04:00
init_privs.sql
insert.sql Make INSERT-from-multiple-VALUES-rows handle domain target columns. 2024-03-14 14:57:16 -04:00
insert_conflict.sql Fix infer_arbiter_indexes() to not assume resultRelation is 1. 2024-06-11 17:57:46 -04:00
int2.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
int4.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
int8.sql Modernize to_char's Roman-numeral code, fixing overflow problems. 2024-09-26 11:02:31 -04:00
interval.sql Improve handling of date_trunc() units for infinite input values 2024-12-27 13:32:40 +09:00
join.sql Fix semijoin unique-ification for child relations 2025-08-29 13:14:12 +09:00
join_hash.sql Fix hash join when inner hashkey expressions contain Params. 2023-06-20 17:47:53 -04:00
json.sql Allow json{b}_strip_nulls to remove null array elements 2025-03-05 10:04:02 -05:00
json_encoding.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
jsonb.sql Allow json{b}_strip_nulls to remove null array elements 2025-03-05 10:04:02 -05:00
jsonb_jsonpath.sql Stabilize jsonb_path_query test case. 2024-10-30 11:42:34 -04:00
jsonpath.sql Implement various jsonpath methods 2024-01-25 10:15:43 -05:00
jsonpath_encoding.sql
largeobject.sql Fix bugs in manipulation of large objects. 2023-12-15 13:55:05 -05:00
limit.sql Fix deparsing FETCH FIRST <expr> ROWS WITH TIES 2025-05-19 18:50:26 +03:00
line.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
lock.sql Add support for security invoker views. 2022-03-22 10:28:10 +00:00
lseg.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
macaddr.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
macaddr8.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
maintain_every.sql Avoid ERROR at ON COMMIT DELETE ROWS after relhassubclass=f. 2025-04-20 08:28:48 -07:00
matview.sql Add missing BUFFERS OFF in regression tests, take 2 2024-12-11 23:16:44 +13:00
md5.sql Put tests of md5() function into separate test file 2022-10-13 12:02:31 +02:00
memoize.sql Enable use of Memoize for ANTI joins 2025-07-03 10:57:26 +09:00
merge.sql Fix MERGE into a plain inheritance parent table. 2025-05-31 12:12:58 +01:00
misc.sql Rearrange core regression tests to reduce cross-script dependencies. 2022-02-08 15:30:38 -05:00
misc_functions.sql Rename gist stratnum support function 2025-06-02 08:41:27 +02:00
misc_sanity.sql Remove pg_replication_origin's TOAST table. 2025-05-07 14:47:36 -05:00
money.sql Add overflow checks to money type. 2024-07-19 11:52:32 -05:00
multirangetypes.sql Fix multiranges to behave more like dependent types. 2024-02-14 11:30:39 -05:00
mvcc.sql Fix typo in MVCC test comment 2022-08-25 10:31:20 +02:00
name.sql
namespace.sql Fix search_path to a safe value during maintenance operations. 2024-03-04 17:31:38 -08:00
numa.sql Introduce pg_shmem_allocations_numa view 2025-04-07 23:08:17 +02:00
numeric.sql Allow width_bucket()'s "operand" input to be NaN. 2025-07-02 11:34:40 -04:00
numeric_big.sql Improve the accuracy of numeric power() for integer exponents. 2022-10-20 10:10:17 +01:00
numerology.sql Fix overflow in parsing of positional parameter 2024-07-02 09:29:26 +02:00
object_address.sql Make object_address test output easier to update 2022-11-18 16:00:52 +01:00
oid.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
oidjoins.sql Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
opr_sanity.sql Allow negative aggtransspace to indicate unbounded state size 2025-10-08 17:01:48 +09:00
partition_aggregate.sql Implement Eager Aggregation 2025-10-08 17:04:23 +09:00
partition_info.sql
partition_join.sql Fix tuple_fraction calculation in generate_orderedappend_paths() 2025-05-18 23:49:50 +03:00
partition_prune.sql In ExecInitModifyTable, don't scribble on the source plan. 2025-05-22 14:28:51 -04:00
password.sql Restrict password hash length. 2024-10-07 10:56:16 -05:00
path.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
pg_lsn.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
plancache.sql
plpgsql.sql Allow => syntax for named cursor arguments in plpgsql. 2025-03-03 18:00:13 -05:00
point.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
polygon.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
polymorphism.sql Provide more-specific error details/hints for function lookup failures. 2025-09-16 12:17:02 -04:00
portals.sql Fix incorrect logic in HaveRegisteredOrActiveSnapshot(). 2022-04-16 16:04:50 -04:00
portals_p2.sql
predicate.sql Fix const-simplification for constraints and stats 2025-08-31 08:59:48 +09:00
prepare.sql Remove too demanding test 2024-07-02 10:43:12 +02:00
prepared_xacts.sql Make two-phase tests of ECPG and main suite more concurrent-proof 2024-04-29 21:10:41 +09:00
privileges.sql Revert "Avoid race condition between "GRANT role" and "DROP ROLE"". 2025-09-16 13:05:53 -04:00
psql.sql Restrict psql meta-commands in plain-text dumps. 2025-08-11 09:00:00 -05:00
psql_crosstab.sql
psql_pipeline.sql psql: Rename meta-command \close to \close_prepared 2025-06-24 13:12:46 +09:00
publication.sql Fix replica identity check for MERGE. 2025-09-04 11:45:44 +01:00
random.sql Add date and timestamp variants of random(min, max). 2025-09-09 10:39:30 +01:00
rangefuncs.sql Fix type-checking of RECORD-returning functions in FROM, redux. 2024-04-15 12:56:56 -04:00
rangetypes.sql Add planner support functions for range operators <@ and @>. 2024-01-20 13:57:54 -05:00
regex.sql Fix regexp misbehavior with capturing parens inside "{0}". 2021-08-24 16:37:26 -04:00
regproc.sql Add new OID alias type regdatabase. 2025-06-30 15:38:54 -05:00
reindex_catalog.sql
reloptions.sql Test that it works to RESET an invalid reloption 2023-12-08 11:58:58 +01:00
replica_identity.sql Add pg_constraint rows for not-null constraints 2024-11-08 13:28:48 +01:00
returning.sql Build whole-row Vars the same way during parsing and planning. 2025-03-12 11:47:38 -04:00
roleattributes.sql
rowsecurity.sql Fix security checks in selectivity estimation functions. 2025-08-11 09:03:11 +01:00
rowtypes.sql Fix "failed to find plan for subquery/CTE" errors in EXPLAIN. 2024-08-09 11:21:39 -04:00
rules.sql Add OLD/NEW support to RETURNING in DML queries. 2025-01-16 14:57:35 +00:00
sanity_check.sql Remove AIX support 2024-02-28 15:17:23 +04:00
security_label.sql
select.sql Enable BUFFERS with EXPLAIN ANALYZE by default 2024-12-11 22:35:11 +13:00
select_distinct.sql Reordering DISTINCT keys to match input path's pathkeys 2024-11-26 09:25:18 +09:00
select_distinct_on.sql Fix test case from a8ccf4e93 2024-11-26 11:12:57 +09:00
select_having.sql
select_implicit.sql Remove gratuitous uses of deprecated SELECT INTO 2021-01-28 14:28:41 +01:00
select_into.sql Add missing BUFFERS OFF in select_into regression tests 2024-12-11 22:56:36 +13:00
select_parallel.sql Enable BUFFERS with EXPLAIN ANALYZE by default 2024-12-11 22:35:11 +13:00
select_views.sql
sequence.sql Expose sequence page LSN via pg_get_sequence_data. 2025-10-06 08:30:16 +00:00
spgist.sql Avoid loss of code coverage with unlogged-index test cases. 2022-09-25 13:10:17 -04:00
sqljson.sql Avoid double transformation of json_array()'s subquery. 2025-04-05 12:13:35 -04:00
sqljson_jsontable.sql SQL/JSON: Fix default ON ERROR behavior for JSON_TABLE 2024-09-06 13:25:53 +09:00
sqljson_queryfuncs.sql Fix JsonExpr deparsing to quote variable names in the PASSING clause. 2025-01-12 13:35:12 +00:00
stats.sql Add stats_reset to pg_stat_all_{tables,indexes} and related views 2025-10-06 15:31:21 +09:00
stats_ext.sql Fix StatisticsObjIsVisibleExt() for pg_temp. 2025-09-29 11:15:44 -07:00
stats_import.sql Stats: use schemaname/relname instead of regclass. 2025-03-25 11:16:06 -07:00
strings.sql Optimize hex_encode() and hex_decode() using SIMD. 2025-10-06 12:28:50 -05:00
subscription.sql Add max_retention_duration option to subscriptions. 2025-09-02 03:20:18 +00:00
subselect.sql Treat JsonConstructorExpr as non-strict 2025-09-16 18:42:20 +09:00
sysviews.sql Revert function to get memory context stats for processes 2025-05-23 15:44:54 +02:00
tablesample.sql Fix some anomalies with NO SCROLL cursors. 2021-09-10 13:18:32 -04:00
tablespace.sql Avoid "you don't own a lock of type ExclusiveLock" in GRANT TABLESPACE. 2024-11-25 14:42:35 -08:00
temp.sql tests: Expand temp table tests to some pin related matters 2025-03-17 14:12:44 -04:00
test_setup.sql Move contrib/spi testing from core regression tests to contrib/spi. 2025-04-08 19:12:03 -04:00
text.sql Rearrange core regression tests to reduce cross-script dependencies. 2022-02-08 15:30:38 -05:00
tid.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
tidrangescan.sql Add TID Range Scans to support efficient scanning ranges of TIDs 2021-02-27 22:59:36 +13:00
tidscan.sql Enable BUFFERS with EXPLAIN ANALYZE by default 2024-12-11 22:35:11 +13:00
time.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
timestamp.sql Improve tests of date_trunc() with infinity and unsupported units 2025-08-07 11:49:25 +09:00
timestamptz.sql Improve tests of date_trunc() with infinity and unsupported units 2025-08-07 11:49:25 +09:00
timetz.sql Dodge a compiler bug affecting timetz_zone/timetz_izone. 2023-10-17 13:10:35 -04:00
transactions.sql Fix COMMIT/ROLLBACK AND CHAIN in the presence of subtransactions. 2023-09-21 23:11:30 -04:00
triggers.sql Fix oversight in FindTriggerIncompatibleWithInheritance. 2025-08-08 17:35:00 +09:00
truncate.sql
tsdicts.sql Fix typos and duplicate words 2024-04-18 21:28:07 +02:00
tsearch.sql Fix parsing of ignored operators in websearch_to_tsquery(). 2024-06-13 20:35:02 -04:00
tsrf.sql
tstypes.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
tuplesort.sql Improve test coverage in bump.c 2024-04-16 16:21:31 +12:00
txid.sql
type_sanity.sql Add new OID alias type regdatabase. 2025-06-30 15:38:54 -05:00
typed_table.sql Clarify error message and documentation related to typed tables. 2024-07-26 12:39:45 -04:00
unicode.sql Additional unicode primitive functions. 2023-11-01 22:47:06 -07:00
union.sql Teach planner to short-circuit EXCEPT/INTERSECT with dummy inputs 2025-10-07 17:17:52 +13:00
updatable_views.sql Add OLD/NEW support to RETURNING in DML queries. 2025-01-16 14:57:35 +00:00
update.sql Add hint about not qualifying UPDATE...SET target with relation name. 2024-01-20 17:54:14 -05:00
uuid.sql Fix timestamp overflow in UUIDv7 implementation. 2025-03-28 09:39:11 -07:00
vacuum.sql Add SQL test for TOAST value allocations on rewrite 2025-08-15 12:30:36 +09:00
vacuum_parallel.sql Don't overlook indexes during parallel VACUUM. 2021-11-02 12:06:17 -07:00
varchar.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
window.sql Add IGNORE NULLS/RESPECT NULLS option to Window functions. 2025-10-03 09:47:36 +09:00
with.sql Calculate agglevelsup correctly when Aggref contains a CTE. 2025-09-17 16:32:57 -04:00
without_overlaps.sql Remove support for temporal RESTRICT foreign keys 2025-03-10 11:31:01 +01:00
write_parallel.sql Enable parallelism in REFRESH MATERIALIZED VIEW. 2021-03-17 15:04:17 +13:00
xid.sql Rework pg_input_error_message(), now renamed pg_input_error_info() 2023-02-28 08:04:13 +09:00
xml.sql Fix Assert failure in XMLTABLE parser 2025-05-15 17:09:04 +09:00
xmlmap.sql Fix incorrect xmlschema output for types timetz and timestamptz. 2022-03-18 16:01:42 -04:00