Skip to content

upstream merge - #16

Merged
ardentperf merged 77 commits into
cnpg-extensions:mainfrom
ardentperf:x-ai/ardentperf/upstream-merge-documentation
Sep 2, 2026
Merged

upstream merge#16
ardentperf merged 77 commits into
cnpg-extensions:mainfrom
ardentperf:x-ai/ardentperf/upstream-merge-documentation

Conversation

@ardentperf

Copy link
Copy Markdown
Member

Upstream Sync Commit Review

Generated and reviewed locally on 2026-09-02. This is the first checked-in sync review record. The comparison tip is the second parent of the downstream merge.

  • Mirror checked: origin/main at 4a2d94443c59626884bde23c6dc700448500c6f1 (cnpg-extensions/postgres-extensions-containers)
  • Upstream checked: upstream/main at 011b3fc72455574a6b87043f14c220f6b4cca160
  • Last recorded upstream merge: 7b6ba6a07f45e559f232e70b542e82123ec875d9
  • Downstream merge commit: 324a6b7a9392060baf2c5c8c10d0a2ae66a0f0e0
  • Upstream commits reviewed: 75
  • Detailed non-dependency commits: 18
  • Pure dependency chore commits consolidated below: 57

Review rules

Touches mirror files? is Yes when at least one exact changed path exists in the mirror at the checked mirror ref. A No result means the commit only adds or changes paths absent from the mirror. Extension directories are grouped in the path column. Pure chore(deps) commits are omitted from the detailed sections and summarized separately below.

Consolidated dependency-only updates

57 of the 75 upstream commits are pure dependency chores (chore(deps):). They are intentionally filtered out of the detailed review sections. Do not replay these bot commits individually; review the final cumulative value in each shared file and take only the pins relevant to the mirror.

Dependency area Commits Recommendation
CI/action pins 17 Use the final cumulative action/tool pins in the shared workflows; do not replay intermediate bot updates.
kubectl image 11 Update the shared Taskfile to the final upstream v1.36.4 pin if adopting the tool updates.
psql test image 11 Update shared test/check-extension.yaml to the final v18.6 pin; skip extension-only test files.
registry image 2 Update the shared registry pin to the final digest if adopting the CI changes.
Dagger 1 Update the shared Dagger engine/CLI references to the final v0.21.9 value where applicable.
CNPG smoke-test version 1 Update the shared smoke-test default to CNPG 1.30 if that test matrix is adopted.
TimescaleDB package 8 Exclude — extension-specific package updates are intentionally omitted.
pgvector package 4 Exclude — extension-specific package updates are intentionally omitted.
PostGIS package 1 Exclude — extension-specific package updates are intentionally omitted.
wal2json package 1 Exclude — extension-specific package updates are intentionally omitted.

Final upstream shared values observed during this review include CNPG 1.30, kubectl 1.36.4, psql 18.6, Dagger v0.21.9, registry 3.1.1, and the corresponding upstream-pinned digests. Take these as review targets, not as an instruction to mirror extension package versions.

Detailed review: commits planned for adoption

These are the substantive upstream commits we plan to adopt or adapt, subject to normal conflict resolution and validation.

Audit order Date Upstream commit Subject Touches mirror files? Mirror paths / paths absent from mirror Adoption note
1 2026-06-16 552cb96e190b9e25ea16897f4f2b626822bfd026 ci: run Go unit tests for the maintenance module (cloudnative-pg#238) Yes mirror: dagger/maintenance/dagger.json
dagger/maintenance/go.mod
dagger/maintenance/go.sum
absent: .github/workflows/test.yml
Adopt — add/adapt the maintenance unit-test workflow and Dagger module updates.
3 2026-07-02 be1c8dd1f8fcc139fd086eda9c571399a76bb787 fix: set output to cacheonly when running bake --check (cloudnative-pg#262) Yes mirror: Taskfile.yml Adopt — merge the shared bake --check fix.
4 2026-07-08 9755a49bdb19aaef02df236cd8b4a59396e7a925 feat: derive build matrix from distros and PG versions in extension's metadata (cloudnative-pg#251) Yes mirror: .github/workflows/bake_targets.yml
BUILD.md
Taskfile.yml
dagger/maintenance/dagger.json
dagger/maintenance/go.mod
dagger/maintenance/go.sum
dagger/maintenance/main.go
dagger/maintenance/parse.go
docker-bake.hcl
postgis/* (1)
absent: dagger/maintenance/parse_test.go
Adopt — merge the shared metadata-driven matrix and maintenance refactor; validate downstream metadata pairs.
7 2026-07-14 72c2850a9e5b977c51d1e5276897f4b1bcbbe952 ci: automate smoke-test cnpg matrix (cloudnative-pg#274) Yes mirror: .github/workflows/bake_targets.yml
Taskfile.yml
Adopt — merge the dynamic CNPG smoke-test matrix.
8 2026-07-15 3a13c62ada62f4826d26a1b4ab788afc1df31bd7 chore: quote CNPG_RELEASE_DEFAULT (cloudnative-pg#282) Yes mirror: Taskfile.yml Adopt — keep the shared Taskfile fix with the current CNPG release pin.
16 2026-08-18 4cb1bd8cb47a8f028ba720ceedd46c7860613c32 chore: add SECURITY-INSIGHTS.yml (cloudnative-pg#307) Yes mirror: .github/PULL_REQUEST_TEMPLATE/new_extension.md
CONTRIBUTING_NEW_EXTENSION.md
absent: SECURITY-INSIGHTS.yml
Adopt/adapt — add the security metadata and contributor checklist while preserving downstream identity and ownership.

Detailed review: commits not relevant to this mirror

These commits are intentionally excluded. They either update extensions that are not mirrored here, fix extension-specific behavior, add upstream-only extensions, or change upstream ownership policy.

CODEOWNERS policy: CNPG Extensions has its own CODEOWNERS file and ownership model. Do not copy upstream CODEOWNERS changes or upstream component-owner/account assignments. Preserve and review downstream ownership independently.

Audit order Date Upstream commit Subject Touches mirror files? Mirror paths / paths absent from mirror Exclusion note
2 2026-06-17 ac3d13a23cdcef5cd27f8d37a50d122d1b528158 chore: update postgis OS libraries (cloudnative-pg#239) No absent: postgis/* (2) Exclude — extension-specific PostGIS change; inspect only if the downstream copy has the same issue.
5 2026-07-13 f47540c10434cb867dde58199ea0d8bf40619ce8 chore: update postgis OS libraries (cloudnative-pg#263) No absent: postgis/* (2) Exclude — extension-specific PostGIS change; inspect only if the downstream copy has the same issue.
6 2026-07-13 38d9417a4dfecdaa716735b2e50da229ed3bb928 feat: add pg_ivm extension (#49) Yes mirror: CODEOWNERS
README.md
absent: pg-ivm/* (10)
Exclude — do not add the upstream extension or copy its mixed README/ownership/security changes.
9 2026-07-20 8b779fff856a2c66c52e4192e6d2c7058a5c1fd9 chore: update postgis OS libraries (cloudnative-pg#289) No absent: postgis/* (1) Exclude — extension-specific PostGIS change; inspect only if the downstream copy has the same issue.
10 2026-07-22 f0eb97fc5f69048218ea6da670d1a416d306b043 chore: add Gabriele Fedi as a component owner (cloudnative-pg#292) Yes mirror: CODEOWNERS Exclude — CNPG Extensions has its own CODEOWNERS; do not copy upstream ownership changes.
11 2026-07-23 cacac01ea2306d8602ad5a76f71372c54ab115f5 chore: expand account names in CODEOWNERS file (cloudnative-pg#288) Yes mirror: CODEOWNERS Exclude — CNPG Extensions has its own CODEOWNERS; do not copy upstream ownership changes.
12 2026-07-24 d5709b0362a875e099f672687f011ead1b5f4ae2 chore: update postgis OS libraries (cloudnative-pg#291) No absent: postgis/* (1) Exclude — extension-specific PostGIS change; inspect only if the downstream copy has the same issue.
13 2026-07-27 560a829c4b7f266f55a0e787918d049099fd6116 fix(PostGIS): strip $libdir/ prefix from extension SQL scripts (cloudnative-pg#293) Yes mirror: postgis/* (1) Exclude — extension-specific PostGIS change; inspect only if the downstream copy has the same issue.
14 2026-08-05 f06c545b3f85dbe25c3bd24a73f6c05830c54b4b chore: sync CODEOWNERS with cnpg-infra policy (cloudnative-pg#306) Yes mirror: CODEOWNERS Exclude — CNPG Extensions has its own CODEOWNERS; do not copy upstream ownership changes.
15 2026-08-18 c8a992f553d7f69d1eb338cb021eccf2edffe1e4 fix: add wal2json to output_plugin_libraries for PG 18.6+ (cloudnative-pg#319) No absent: wal2json/* (2) Exclude — extension-specific metadata fix; intentionally do not mirror it.
17 2026-08-19 f111f59c3d57fe2c14eb03e9374da0f38f88c61b feat: add pgrouting container image (cloudnative-pg#299) Yes mirror: README.md
absent: SECURITY-INSIGHTS.yml
pgrouting/* (10)
Exclude — do not add the upstream extension or copy its mixed README/ownership/security changes.
18 2026-08-24 1fe50c79116afa459455075a05505b24f83a8791 chore: update postgis OS libraries (cloudnative-pg#302) No absent: postgis/* (2) Exclude — extension-specific PostGIS change; inspect only if the downstream copy has the same issue.

Merge resolution

  • Preserved the mirror's complete 19-extension set; no upstream-only
    extensions or extension-specific updates were added.
  • Kept downstream CODEOWNERS and README.md, including the mirror's
    branding.
  • Adapted SECURITY-INSIGHTS.yml to the mirror repository and image names.
  • Adopted the shared maintenance/build-matrix, workflow, smoke-test, and
    contributor/security changes identified in the planned-adoption table.
  • Kept dagger/maintenance/dagger.json at the upstream module declaration
    v0.21.7; the shared workflow and Taskfile pins use the reviewed v0.21.9
    CLI/tool value.

Validation

  • DAGGER_SESSION_PORT=1 DAGGER_SESSION_TOKEN=test go test ./... passed after
    generating the Dagger client with v0.21.9.
  • act -j unit-test -W .github/workflows/test.yml --network bridge -P ubuntu-24.04=catthehacker/ubuntu:act-latest passed.
  • BUILDX_BUILDER=cnpg-walreplay-builder PATH=/tmp/dagger-sync-bin:$PATH task checks:all
    passed for all 19 mirror extension targets. The default Docker driver was
    unable to process attestations, so the existing Docker-container builder was
    used for this lint-only check.

Bottom line

Adopt the shared maintenance/build-matrix refactor, Dagger unit-test workflow, bake --check fix, dynamic CNPG smoke matrix, current CNPG Taskfile fix, and adapted security/contributor metadata. Keep extension-specific updates, upstream-only extensions, and all upstream CODEOWNERS changes out of the mirror. Dependency-only chores are consolidated above.

renovate Bot and others added 30 commits June 12, 2026 12:53
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-pg#246)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ative-pg#245)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
The maintenance module under `dagger/maintenance` has unit tests but
nothing in CI runs them. This adds a workflow that runs `go test` on
every pull request and on pushes to `main`.

The generated Dagger client (`internal/dagger`, `dagger.gen.go`) is
gitignored, so the workflow runs `dagger develop` to regenerate it
before testing. The generated client panics at init unless
`DAGGER_SESSION_PORT` and `DAGGER_SESSION_TOKEN` are set; the unit tests
never open a session, so dummy values are enough to get past that check
without contacting an engine.

Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Co-authored-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Co-authored-by: Gabriele Fedi <gabriele.fedi@enterprisedb.com>
Updating the OS libraries of postgis

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: extension-os-libs-updater <extension-os-libs-updater@users.noreply.github.com>
…-pg#249)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| minor | `2.27.2` → `2.28.0` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| minor | `2.27.2+dfsg-1.pgdg12+1` → `2.28.0+dfsg-1.pgdg12+1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| minor | `2.27.2+dfsg-1.pgdg13+1` → `2.28.0+dfsg-1.pgdg13+1` |

---

### Release Notes

<details>
<summary>timescale/timescaledb (postgresql-18-timescaledb)</summary>

###
[`v2.28.0`](https://redirect.github.com/timescale/timescaledb/blob/HEAD/CHANGELOG.md#2280-2026-06-16)

[Compare
Source](https://redirect.github.com/timescale/timescaledb/compare/2.27.2...2.28.0)

This release contains performance improvements and bug fixes since the
2.27.2 release. We recommend that you upgrade at the next available
opportunity.

**Highlighted features in TimescaleDB v2.28.0**

- **Faster `first()` and `last()` queries on compressed data.**
TimescaleDB derives `first(value, time)` and `last(value, time)`
aggregates straight from the columnstore's batch metadata, skipping
batch decompression entirely. For the "latest reading per series"
lookups that time-series workloads run constantly, that means
meaningfully faster recency queries with no changes to your SQL queries.
- **Lighter, less disruptive continuous aggregate refreshes.**
`refresh_continuous_aggregate()` can now run incrementally in batches —
the same behavior refresh policies already use — enabling breaking large
manual refreshes into smaller chunks (tunable via `buckets_per_batch`,
`max_batches_per_execution`, and `refresh_newest_first`) instead of one
heavy operation. Refreshes also now take a lighter lock while processing
the invalidation log, so they no longer block unrelated concurrent
operations on the same continuous aggregate, improving behavior for
concurrent workloads.
- **Vectorized execution now covers `CASE` expressions.** TimescaleDB's
columnar executor can now evaluate `CASE ... WHEN` expressions directly
on compressed data, so queries using conditional logic stay on the fast
vectorized path instead of falling back to slower row-by-row
decompression. This speeds up a common pattern — conditional
aggregations and computed columns over compressed history — with no
query changes needed.
- **Add new aggregations to a continuous aggregate without rebuilding
it.** You can now run `ALTER MATERIALIZED VIEW <cagg> ADD COLUMN <name>
<type> GENERATED ALWAYS AS (<aggregate>) STORED` to add a new computed
aggregate to an existing continuous aggregate in place — no more
dropping and recreating the whole aggregate just to track one more
metric. New data populates the column going forward, letting your
rollups evolve alongside your application. (Existing rows start as
`NULL`; a forced refresh backfills them when you need historical
values.)

**Deprecation Notice: PostgreSQL 15 Support**
This release marks the final minor version of TimescaleDB that will
support PostgreSQL 15. Starting with our next release, version 2.29.0,
we will officially drop support for Postgres 15, and only support
Postgres 16, 17, and 18; however, all future patch releases within the
current 2.28 version cycle will continue to fully support it. We
recommend planning your PostgreSQL upgrades accordingly to ensure a
smooth transition.

**Deprecation Notice: `chunk_constraint` Catalog Table**
Please note that the `_timescaledb_catalog.chunk_constraint` table has
been dropped and temporarily replaced by a view, which introduces a
change to the underlying objects while maintaining current query
behavior. However, this compatibility view will be completely removed in
a future release. To ensure your queries remain compatible moving
forward, we strongly advise transitioning to the stable contracts
provided by our [informational
views](https://www.tigerdata.com/docs/reference/timescaledb/informational-views).

**Backward-Incompatible Changes**

-
[#&#8203;9934](https://redirect.github.com/timescale/timescaledb/pull/9934)
Remove adaptive chunking

**Features**

-
[#&#8203;4054](https://redirect.github.com/timescale/timescaledb/pull/4054)
Support `ANALYZE` and `VACUUM` on continuous aggregates by redirecting
to the underlying materialization hypertable
-
[#&#8203;9125](https://redirect.github.com/timescale/timescaledb/pull/9125)
Increase the parallelism of `SELECT` queries over compressed hypertables
to approximately match the uncompressed data size
-
[#&#8203;9410](https://redirect.github.com/timescale/timescaledb/pull/9410)
Mark `hypertable` and `chunk` as user catalog tables
-
[#&#8203;9416](https://redirect.github.com/timescale/timescaledb/pull/9416)
Support some forms of `CASE` expression in columnar aggregation and
grouping
-
[#&#8203;9580](https://redirect.github.com/timescale/timescaledb/pull/9580)
Add `first` / `last` sparse indexes to compression
-
[#&#8203;9784](https://redirect.github.com/timescale/timescaledb/pull/9784)
Use `first` / `last` sparse index for `orderby` metadata on new
compressed chunks
-
[#&#8203;9668](https://redirect.github.com/timescale/timescaledb/pull/9668)
Allow database owner to configure hypertables and policies
-
[#&#8203;9701](https://redirect.github.com/timescale/timescaledb/pull/9701)
Relax lock during continuous aggregate invalidation log processing
-
[#&#8203;9730](https://redirect.github.com/timescale/timescaledb/pull/9730)
Add in-memory observability for compressed chunks
-
[#&#8203;9735](https://redirect.github.com/timescale/timescaledb/pull/9735)
Improve `GapFill` row count estimate
-
[#&#8203;9821](https://redirect.github.com/timescale/timescaledb/pull/9821)
Allow subquery results which are exec params as GapFill arguments
-
[#&#8203;9825](https://redirect.github.com/timescale/timescaledb/pull/9825)
Support `ADD COLUMN` on continuous aggregates
-
[#&#8203;9842](https://redirect.github.com/timescale/timescaledb/pull/9842)
Suppress continuous aggregate invalidation tracking during bulk loads
-
[#&#8203;9878](https://redirect.github.com/timescale/timescaledb/pull/9878)
Remove `chunk_constraint` catalog tracking for foreign keys
-
[#&#8203;9893](https://redirect.github.com/timescale/timescaledb/pull/9893)
Remove `chunk_constraint` catalog tracking for non-dimensional
constraints
-
[#&#8203;9903](https://redirect.github.com/timescale/timescaledb/pull/9903)
Incremental refresh for `refresh_continuous_aggregate()`
-
[#&#8203;9915](https://redirect.github.com/timescale/timescaledb/pull/9915)
Remove `_timescaledb_catalog.chunk_constraint` table
-
[#&#8203;9938](https://redirect.github.com/timescale/timescaledb/pull/9938)
Add `rebuild_sparse_index` function
-
[#&#8203;9964](https://redirect.github.com/timescale/timescaledb/pull/9964)
Add a function to lock OSM chunk's dimension slice
-
[#&#8203;9980](https://redirect.github.com/timescale/timescaledb/pull/9980)
Support `first/last(value, time)` in `ColumnarIndexScan`

**Bugfixes**

-
[#&#8203;9708](https://redirect.github.com/timescale/timescaledb/pull/9708)
Guard time bucket parameter handling against bad input
-
[#&#8203;9745](https://redirect.github.com/timescale/timescaledb/pull/9745)
Check constraints when adding unique constraints to chunks
-
[#&#8203;9890](https://redirect.github.com/timescale/timescaledb/pull/9890)
Fix incremental refresh batch boundaries to align with variable-width
buckets and start only where a chunk and an invalidation overlap
-
[#&#8203;9914](https://redirect.github.com/timescale/timescaledb/pull/9914)
Fix use-after-free in segmentwise recompression
-
[#&#8203;9929](https://redirect.github.com/timescale/timescaledb/pull/9929)
Fix background jobs being bumped in the queue forever and never running
-
[#&#8203;9955](https://redirect.github.com/timescale/timescaledb/pull/9955)
Fix wrong results when using Batch Sorted Merge with no first-last index
on a non-leading order by column
-
[#&#8203;9967](https://redirect.github.com/timescale/timescaledb/pull/9967)
Block upgrade after downgrade with first/last indexes present
-
[#&#8203;9976](https://redirect.github.com/timescale/timescaledb/pull/9976)
Fix wrong results when comparing a date column to a `timestamptz` value
-
[#&#8203;9977](https://redirect.github.com/timescale/timescaledb/pull/9977)
Fix `COPY WHERE` into a hypertable with dropped columns
-
[#&#8203;9981](https://redirect.github.com/timescale/timescaledb/pull/9981)
Fix set-returning functions in the sort key of `ColumnarScan`
-
[#&#8203;9982](https://redirect.github.com/timescale/timescaledb/pull/9982)
Reject `ALTER TABLE ... INHERIT` when the parent is a hypertable
-
[#&#8203;9984](https://redirect.github.com/timescale/timescaledb/pull/9984)
Fix handling of `NOT VALID NOT NULL` constraint for query optimization
-
[#&#8203;9986](https://redirect.github.com/timescale/timescaledb/pull/9986)
Handle `MERGE WHEN NOT MATCHED BY SOURCE` on hypertables
-
[#&#8203;9988](https://redirect.github.com/timescale/timescaledb/pull/9988)
Fix `time_bucket_gapfill` function detection
-
[#&#8203;10003](https://redirect.github.com/timescale/timescaledb/pull/10003)
Block unsafe updates of unique columns on compressed chunks
-
[#&#8203;10024](https://redirect.github.com/timescale/timescaledb/pull/10024)
Fix `approximate_row_count` handling of Infinity
-
[#&#8203;10025](https://redirect.github.com/timescale/timescaledb/pull/10025)
Fix rename on compressed continuous aggregates
-
[#&#8203;10026](https://redirect.github.com/timescale/timescaledb/pull/10026)
Fix chunk skipping near `PG_INT64_MAX`

**New Settings**

- `skip_cagg_invalidation`: skip continuous aggregate invalidation
tracking for DML and DDL in the current session/transaction. Off by
default.
- `stats_max_chunks`: set the per-database compressed chunk statistics
cache capacity. Defaults to 1024 chunks; set to 0 to disable the
feature.

**Thanks**

- [@&#8203;Fabian-2596](https://redirect.github.com/Fabian-2596) for
suggesting more accurate GapFill row count estimate
- [@&#8203;otjdiepluong](https://redirect.github.com/otjdiepluong) for
fixing spelling mistakes in timescaledb source code comments
- [@&#8203;scimad](https://redirect.github.com/scimad) and
[@&#8203;Nosfistis](https://redirect.github.com/Nosfistis) for
suggesting expanding coverage for gapfill arguments

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIzMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…g#248)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ative-pg#253)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…loudnative-pg#252)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ive-pg#257)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#255)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-pg#258)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.28.0` → `2.28.1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.28.0+dfsg-1.pgdg12+1` → `2.28.1+dfsg-1.pgdg12+1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.28.0+dfsg-1.pgdg13+1` → `2.28.1+dfsg-1.pgdg13+1` |

---

### Release Notes

<details>
<summary>timescale/timescaledb (postgresql-18-timescaledb)</summary>

###
[`v2.28.1`](https://redirect.github.com/timescale/timescaledb/blob/HEAD/CHANGELOG.md#2281-2026-06-23)

[Compare
Source](https://redirect.github.com/timescale/timescaledb/compare/2.28.0...2.28.1)

This release contains performance improvements and bug fixes since the
2.28.0 release. We recommend that you upgrade at the next available
opportunity.

**Bugfixes**

-
[#&#8203;9913](https://redirect.github.com/timescale/timescaledb/pull/9913)
Fix potential crash on `DML` on compressed tables when the plan uses
`Bitmap Heap Scan`
-
[#&#8203;10091](https://redirect.github.com/timescale/timescaledb/pull/10091)
Fix column rename for compressed chunks
-
[#&#8203;10056](https://redirect.github.com/timescale/timescaledb/pull/10056)
Enforce `CHECK`, `NOT NULL` and view `WITH CHECK OPTION` constraints for
direct compress inserts
-
[#&#8203;10059](https://redirect.github.com/timescale/timescaledb/pull/10059)
Fix error when using `first`/`last` aggregates in a `HAVING` clause
-
[#&#8203;10060](https://redirect.github.com/timescale/timescaledb/pull/10060)
Fix `first`/`last` optimization returning the same value for aggregates
that share the value column but order by different columns
-
[#&#8203;10061](https://redirect.github.com/timescale/timescaledb/pull/10061)
Fix internal error in `first`/`last` for unsortable types
-
[#&#8203;10069](https://redirect.github.com/timescale/timescaledb/pull/10069)
Fix `bgw_job_stat_history` definition
-
[#&#8203;10073](https://redirect.github.com/timescale/timescaledb/pull/10073)
Fix uncompressed size estimate for `varlen`
-
[#&#8203;10089](https://redirect.github.com/timescale/timescaledb/pull/10089)
Fix deleting every row on compressed hypertable with subquery returning
constant false
-
[#&#8203;10094](https://redirect.github.com/timescale/timescaledb/pull/10094)
Fix use-after-free in `ALTER TABLE ADD CONSTRAINT`

**Thanks**

- [@&#8203;skrenes](https://redirect.github.com/skrenes) for reporting a
problem with the `job_history` view when upgrading to 2.28.0

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzUuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIzNS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/setup-go](https://redirect.github.com/actions/setup-go)
([changelog](https://redirect.github.com/actions/setup-go/compare/4a3601121dd01d1626a1e23e37211e3254c1c06c..924ae3a1cded613372ab5595356fb5720e22ba16))
| action | digest | `4a36011` → `924ae3a` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzUuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIzNS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ive-pg#259)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [registry](https://redirect.github.com/distribution/distribution) |
digest | `5620083` → `1be5527` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzUuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIzNS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…loudnative-pg#264)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| alpine/kubectl | digest | `01d138c` → `03f27b6` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ative-pg#265)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| alpine/psql | digest | `01cbd02` → `b884e06` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…g#262)

`bake --check` only lints (no image needs to be produced).
Override the output to `cacheonly` so index annotations are never
applied to a single-platform export.

Closes cloudnative-pg#261

Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#268)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…loudnative-pg#272)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ative-pg#273)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-pg#269)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.28.1` → `2.28.2` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.28.1+dfsg-1.pgdg12+1` → `2.28.2+dfsg-1.pgdg12+1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.28.1+dfsg-1.pgdg13+1` → `2.28.2+dfsg-1.pgdg13+1` |

---

### Release Notes

<details>
<summary>timescale/timescaledb (postgresql-18-timescaledb)</summary>

###
[`v2.28.2`](https://redirect.github.com/timescale/timescaledb/blob/HEAD/CHANGELOG.md#2282-2026-06-30)

[Compare
Source](https://redirect.github.com/timescale/timescaledb/compare/2.28.1...2.28.2)

This release contains bug fixes since the 2.28.1 release. We recommend
that you upgrade at the next available opportunity.

**Bugfixes**

-
[#&#8203;10126](https://redirect.github.com/timescale/timescaledb/pull/10126)
Fix `bgw_job_stat_history` migration for 2.28.1
-
[#&#8203;10133](https://redirect.github.com/timescale/timescaledb/pull/10133)
Fix `chunk_constraint` migration
-
[#&#8203;10137](https://redirect.github.com/timescale/timescaledb/pull/10137)
Fix column ordering on `first`/`last`-based sparse indexes
-
[#&#8203;10164](https://redirect.github.com/timescale/timescaledb/pull/10164)
Automatically drop incompatible smallint bloom filters when upgrading
instead of stopping the upgrade

**Thanks**

- [@&#8203;juantxorena](https://redirect.github.com/juantxorena) for
reporting an issue with update script for 2.28.1
- [@&#8203;rusha1333](https://redirect.github.com/rusha1333) for
reporting an issue when upgrading to 2.28.1

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
… metadata (cloudnative-pg#251)

Previously the build matrix was a hardcoded cross-product of two global
lists (distributions and PG versions), forcing every extension to build
for every distribution and forcing all distributions to share the same
PostgreSQL majors. The matrix is now derived from the explicit (distro,
PG major) pairs each extension declares under its own
metadata.versions, so extensions can declare their own valid
combinations. docker-bake.hcl gains getBuildMatrix()/getBuildName() to
centralize this, and the dagger maintenance module mirrors the same
logic in Go, dropping its dependency on github.com/docker/buildx/bake
in the process. The docker-bake.hcl/metadata.hcl load order is flipped
so per-extension overrides (used by postgis) apply correctly.

Closes cloudnative-pg#242
…ative-pg#277)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Updating the OS libraries of postgis

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: extension-os-libs-updater <extension-os-libs-updater@users.noreply.github.com>
…loudnative-pg#276)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate Bot and others added 28 commits July 28, 2026 15:40
…e-pg#298)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [docker/login-action](https://redirect.github.com/docker/login-action)
([changelog](https://redirect.github.com/docker/login-action/compare/abd2ef45e78c5afb21d64d4ca52ee8550d9572c7..371161bbe7024a29a25c5e19bfcbc0804fe9ad2c))
| action | digest | `abd2ef4` → `371161b` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4MC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-pg#303)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| minor | `2.28.3` → `2.29.0` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| minor | `2.28.3+dfsg-1.pgdg12+1` → `2.29.0+dfsg-1.pgdg12+1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| minor | `2.28.3+dfsg-1.pgdg13+1` → `2.29.0+dfsg-1.pgdg13+1` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](..cloudnative-pg/issues/26) for more information.

---

### Release Notes

<details>
<summary>timescale/timescaledb (postgresql-18-timescaledb)</summary>

###
[`v2.29.0`](https://redirect.github.com/timescale/timescaledb/blob/HEAD/CHANGELOG.md#2290-2026-07-28)

[Compare
Source](https://redirect.github.com/timescale/timescaledb/compare/2.28.3...2.29.0)

This release contains performance improvements and bug fixes since the
2.28.3 release. We recommend that you upgrade at the next available
opportunity.

**Release Highlights**

- Chunk exclusion for DML operations improves the performance of
`UPDATE` and `DELETE` statements on hypertables. By acquiring row
exclusive locks only on the specific chunks being modified rather than
the entire hypertable. This enhancement reduces lock contention in
high-concurrency workloads involving DML, speeding up the planning of
DML queries by using the optimized TimescaleDB chunk exclusion instead
of the baseline Postgres constraint exclusion.
- The query planner can now choose an additional algorithm for
retrieving a small number of rows, for reading the columnstore data,
optimizing the default behavior. This optimization improves some
last-point queries on columnstore (think `ORDER BY time DESC LIMIT 1`)
run several times faster than in previous releases.

**Important: PostgreSQL 15 Support Removed**
TimescaleDB 2.29.0 removes support for PostgreSQL 15. This release
supports PostgreSQL 16, 17, and 18. If you are still running PostgreSQL
15, upgrade PostgreSQL before upgrading to TimescaleDB 2.29.0.

**Backward-Incompatible Changes**

-
[#&#8203;10041](https://redirect.github.com/timescale/timescaledb/pull/10041)
Remove support for PostgreSQL 15

**Features**

-
[#&#8203;9315](https://redirect.github.com/timescale/timescaledb/pull/9315)
Speed up `DML` operations on hypertables by using the optimized
TimescaleDB hypertable expansion code instead of the generic PostgreSQL
inheritance hierarchy expansion
-
[#&#8203;9534](https://redirect.github.com/timescale/timescaledb/pull/9534)
Speed up expression evaluation in the columnar pipeline by caching
common subexpressions
-
[#&#8203;9684](https://redirect.github.com/timescale/timescaledb/pull/9684)
Add `_timescaledb_functions.decompress_batch()` SQL function
-
[#&#8203;9732](https://redirect.github.com/timescale/timescaledb/pull/9732)
Speed up some queries with small `LIMIT` by switching to row-by-row
query execution pipeline
-
[#&#8203;9917](https://redirect.github.com/timescale/timescaledb/pull/9917)
Decompress less data in `DML` on compressed hypertables by accounting
for prepared statement parameters
-
[#&#8203;9957](https://redirect.github.com/timescale/timescaledb/pull/9957)
Add `compact_chunk()` function
-
[#&#8203;10048](https://redirect.github.com/timescale/timescaledb/pull/10048)
Support concurrent refresh policies on hierarchical continuous
aggregates
-
[#&#8203;10081](https://redirect.github.com/timescale/timescaledb/pull/10081)
Add `samplerate` argument to
`_timescaledb_functions.estimate_uncompressed_size()`
-
[#&#8203;10100](https://redirect.github.com/timescale/timescaledb/pull/10100)
Skip classifying compressed relations to speed up planning
-
[#&#8203;10118](https://redirect.github.com/timescale/timescaledb/pull/10118)
Don't track compressed relations as separate chunk
-
[#&#8203;10119](https://redirect.github.com/timescale/timescaledb/pull/10119)
Reduce memory usage of `INSERT` queries using direct compress and
spanning multiple chunks
-
[#&#8203;10163](https://redirect.github.com/timescale/timescaledb/pull/10163)
Add a compaction policy for unordered chunks
-
[#&#8203;10204](https://redirect.github.com/timescale/timescaledb/pull/10204)
Don't create separate hypertable catalog entry for hypertables with
compression
-
[#&#8203;10217](https://redirect.github.com/timescale/timescaledb/pull/10217)
Initial placeholder version of granular refresh API
-
[#&#8203;10225](https://redirect.github.com/timescale/timescaledb/pull/10225)
Add `config_merge` parameter to `alter_job()` for merging `jsonb` into
the existing job configuration
-
[#&#8203;10226](https://redirect.github.com/timescale/timescaledb/pull/10226)
Add `recompress_unordered` columnstore policy option
-
[#&#8203;10231](https://redirect.github.com/timescale/timescaledb/pull/10231)
Use `regclass` for storing relation reference in chunk table
-
[#&#8203;10237](https://redirect.github.com/timescale/timescaledb/pull/10237)
Add helper functions for decoding hypertable status
-
[#&#8203;10240](https://redirect.github.com/timescale/timescaledb/pull/10240)
Add the `tsdb.direct_compress` storage parameter that allows enabling
direct compress for a given hypertable independent of global settings
-
[#&#8203;10266](https://redirect.github.com/timescale/timescaledb/pull/10266)
Add `max_batches` to `compact_chunk()`
-
[#&#8203;10299](https://redirect.github.com/timescale/timescaledb/pull/10299)
Add `continuous_aggs_tenant_tracking` and `hypertable_cagg_settings`
catalogs

**Bugfixes**

-
[#&#8203;10013](https://redirect.github.com/timescale/timescaledb/pull/10013)
Make ownership error messages on continuous aggregates consistent
-
[#&#8203;10052](https://redirect.github.com/timescale/timescaledb/pull/10052)
Result of `MIN` / `MAX` aggregate functions in columnar aggregation
pipeline possibly inconsistent with plain PostgreSQL result
-
[#&#8203;10071](https://redirect.github.com/timescale/timescaledb/pull/10071)
Prune the real-time branch of hierarchical continuous aggregates at any
nesting depth
-
[#&#8203;10143](https://redirect.github.com/timescale/timescaledb/pull/10143)
Fix division by zero when planning `time_bucket` with zero width
-
[#&#8203;10199](https://redirect.github.com/timescale/timescaledb/pull/10199)
Fix `initial_start` handling in `build_job_info`
-
[#&#8203;10213](https://redirect.github.com/timescale/timescaledb/pull/10213)
Cache sort pathkeys per hypertable
-
[#&#8203;10221](https://redirect.github.com/timescale/timescaledb/pull/10221)
Fix incremental refresh skipping the last bucket
-
[#&#8203;10278](https://redirect.github.com/timescale/timescaledb/pull/10278)
Drop `job_errors` view in `bgw_job_stat_history` migration
-
[#&#8203;10280](https://redirect.github.com/timescale/timescaledb/pull/10280)
`RETURNING` clause returned no rows for `INSERT` using direct compress
-
[#&#8203;10281](https://redirect.github.com/timescale/timescaledb/pull/10281)
Disable direct compress when the destination table has an exclusion
constraint so the constraint is still enforced
-
[#&#8203;10282](https://redirect.github.com/timescale/timescaledb/pull/10282)
Only count directly compressed rows toward the command tag when the
`INSERT` sets it
-
[#&#8203;10286](https://redirect.github.com/timescale/timescaledb/pull/10286)
Propagate `VACUUM` on a chunk to the compressed relation when running on
the chunk directly
-
[#&#8203;10302](https://redirect.github.com/timescale/timescaledb/pull/10302)
Fix useless-join removal and self-join elimination for hypertables
-
[#&#8203;10313](https://redirect.github.com/timescale/timescaledb/pull/10313)
Allow running `ALTER EXTENSION timescaledb UPDATE` inside a transaction
block
-
[#&#8203;10315](https://redirect.github.com/timescale/timescaledb/pull/10315)
Fix overlap detection with running max
-
[#&#8203;10324](https://redirect.github.com/timescale/timescaledb/pull/10324)
Fix stale index entries after `rebuild_sparse_index()` on compressed
chunks

**GUCs**

- `timescaledb.enable_hypertable_expansion_for_dml`: allow using the
optimized TimescaleDB hypertable expansion code for `UPDATE` and
`DELETE` instead of the generic PostgreSQL inheritance hierarchy
expansion. On by default.

**Thanks**

- [@&#8203;FrancescEthon](https://redirect.github.com/FrancescEthon) and
[@&#8203;ManuelEthon](https://redirect.github.com/ManuelEthon) for
reporting an issue with incremental refresh skipping the last bucket
- [@&#8203;h0rn3t](https://redirect.github.com/h0rn3t) for reporting a
problem with `VACUUM` not propagating to the compressed relation
- [@&#8203;igor2x](https://redirect.github.com/igor2x) for reporting an
issue with locking during DML statements on hypertables
- [@&#8203;MaximeEthon](https://redirect.github.com/MaximeEthon) for
reporting an issue with prepared statement parameters in DML
decompression
- [@&#8203;proddata](https://redirect.github.com/proddata) for reporting
a problem when upgrading from 2.15.3 to 2.28.2
- [@&#8203;tureba](https://redirect.github.com/tureba) for reporting and
fixing stale sparse-index entries after rebuild
- [@&#8203;viniciusrsouza](https://redirect.github.com/viniciusrsouza)
for reporting an issue with hierarchical continuous aggregates

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4zLjIiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#305)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…loudnative-pg#304)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Regenerates this repo's CODEOWNERS from cloudnative-pg/cnpg-infra's
`componentowners-policy.yaml`, the org's tracked desired state for
CODEOWNERS content.

- Routes ownership through this repo's dedicated GitHub owners team
instead of hardcoded usernames, so membership changes are picked up
automatically.
- Any path-scoped rule now also includes the repo's general owners, so a
path rule adds reviewers rather than silently replacing the `*` rule's
owners for that subtree (CODEOWNERS only honors the last matching
pattern, it does not merge).

See cloudnative-pg/cnpg-infra for the policy this is generated from.

Assisted-by: Claude
…ative-pg#296)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…pg#308)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-pg#309)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.0` → `2.29.1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.0+dfsg-1.pgdg12+1` → `2.29.1+dfsg-1.pgdg12+1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.0+dfsg-1.pgdg13+1` → `2.29.1+dfsg-1.pgdg13+1` |

---

### Release Notes

<details>
<summary>timescale/timescaledb (postgresql-18-timescaledb)</summary>

###
[`v2.29.1`](https://redirect.github.com/timescale/timescaledb/blob/HEAD/CHANGELOG.md#2291-2026-08-04)

[Compare
Source](https://redirect.github.com/timescale/timescaledb/compare/2.29.0...2.29.1)

This release contains performance improvements and bug fixes since the
2.29.0 release and fixes for security vulnerabilities
([#&#8203;10360](https://redirect.github.com/timescale/timescaledb/issues/10360),
[#&#8203;10379](https://redirect.github.com/timescale/timescaledb/issues/10379),
[#&#8203;10386](https://redirect.github.com/timescale/timescaledb/issues/10386)).
You can check the [security
advisory](https://redirect.github.com/timescale/timescaledb/security/advisories/GHSA-hcfx-29v5-2rcw)
for more information on the vulnerability and the platforms that are
affected. We recommend that you upgrade at the next available
opportunity.

**Bugfixes**

-
[#&#8203;10327](https://redirect.github.com/timescale/timescaledb/pull/10327)
Assertion failure in `add_dimension()` when the hypertable argument is
`NULL`
-
[#&#8203;10339](https://redirect.github.com/timescale/timescaledb/pull/10339)
Fix crash when deleting from a compressed continuous aggregate source
-
[#&#8203;10340](https://redirect.github.com/timescale/timescaledb/pull/10340)
Validate `max_batches` in `compact_chunk()`
-
[#&#8203;10352](https://redirect.github.com/timescale/timescaledb/pull/10352)
Reset inherited column and constraint flags on chunks during
`attach_chunk()`
-
[#&#8203;10360](https://redirect.github.com/timescale/timescaledb/pull/10360)
Fix decompressor crashes with malformed compressed data
-
[#&#8203;10369](https://redirect.github.com/timescale/timescaledb/pull/10369)
Fix typo in error message about `MERGE` support on compressed
hypertables
-
[#&#8203;10379](https://redirect.github.com/timescale/timescaledb/pull/10379)
Read hypertable max time value with an ordered scan
-
[#&#8203;10386](https://redirect.github.com/timescale/timescaledb/pull/10386)
Add missing permission checks to internal chunk functions

**Thanks**

- [@&#8203;JoongHyuk-Shin](https://redirect.github.com/JoongHyuk-Shin)
for reporting and fixing `NULL` handling in `add_dimension()`
- [@&#8203;igor2x](https://redirect.github.com/igor2x) for reporting a
typo in a `MERGE` support error message
- [@&#8203;mdisec](https://redirect.github.com/mdisec) for reporting
issues with compressed data validation during decompression

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMTIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ative-pg#311)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| alpine/psql | digest | `96cfdbb` → `f4c295e` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMTIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…loudnative-pg#310)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| alpine/kubectl | digest | `1f0c863` → `5d380d1` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMTIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#315)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [postgresql-18-wal2json](https://redirect.github.com/eulerto/wal2json)
| patch | `2.6-3.pgdg13+1` → `2.6-4.pgdg13+1` |
| [postgresql-18-wal2json](https://redirect.github.com/eulerto/wal2json)
| patch | `2.6-3.pgdg12+1` → `2.6-4.pgdg12+1` |

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yNC4wIiwidXBkYXRlZEluVmVyIjoiNDQuMjQuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…ative-pg#319)

PostgreSQL 18.6 introduced `output_plugin_libraries`, an allow-list
restricting which libraries may be used as logical decoding output
plugins (`CVE-2026-6471`). Without `wal2json` explicitly listed,
`pg_create_logical_replication_slot(..., 'wal2json')` fails with:

    ERROR: library "wal2json" may not be used as an output plugin

This is what broke the `wal2json` smoke test once the floating
`postgresql:18-minimal-*` base images moved from 18.4 to 18.6: the Job
that exercises dlopen of `wal2json.so` via slot creation kept failing
and retrying (`CrashLoopBackOff`) until the chainsaw assert timeout,
which is why CI showed an empty Job status rather than a clear error.

Set `postgresql_parameters.output_plugin_libraries` in `metadata.hcl` so
the extension's own test Cluster allow-lists `wal2json` (re-listing the
built-in pgoutput/test_decoding defaults too, since setting this GUC
replaces PostgreSQL's default rather than extending it). Update the
README's example Cluster manifest accordingly, with a note that this
parameter does not exist before 18.6 and setting it there is fatal
(verified: postmaster refuses to start).

Closes cloudnative-pg#318

Signed-off-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Co-authored-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
…-pg#320)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.1+dfsg-1.pgdg12+1` → `2.29.1+dfsg-2.pgdg12+1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.1+dfsg-1.pgdg13+1` → `2.29.1+dfsg-2.pgdg13+1` |

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Adds a `SECURITY-INSIGHTS.yml` for this repo, modeled on
[cloudnative-pg/postgres-containers's
file](https://github.com/cloudnative-pg/postgres-containers/blob/main/SECURITY-INSIGHTS.yml):
repository-scoped, pointing back to the main project's file via
`header.project-si-source`, with this repo's own core-team (matching
`cloudnative-pg/cnpg-infra`'s `repo-tiers.yaml` owners), license,
release distribution points, and security tooling — verified against
this repo's actual CI workflows and repo settings rather than copied
from another repo.

Part of extending `SECURITY-INSIGHTS.yml` coverage to every Class A repo
(see `cnpg-infra/repo-tiers.yaml`), starting with this one.

Assisted-by: Claude

Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Co-authored-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
…ative-pg#317)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…loudnative-pg#316)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…pg#313)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Introduce the `pgrouting` extension container image for CloudNativePG, which
supports the pgRouting extension for PostGIS (pgrouting.org). The extension
image depends on the `postgis` one.  Despite the GNU GPL 2.0 license, the
extension has been accepted in this project, as it was already available in the
previous PostGIS standalone images (predating the CNCF Sandbox admission).

Closes cloudnative-pg#300

Signed-off-by: Oliver Falk <oliver@linux-kernel.at>
Signed-off-by: Gabriele Fedi <gabriele.fedi@enterprisedb.com>
Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Signed-off-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
Co-authored-by: Gabriele Fedi <gabriele.fedi@enterprisedb.com>
Co-authored-by: Niccolò Fei <niccolo.fei@enterprisedb.com>
Co-authored-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
…udnative-pg#322)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-pg#323)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.1` → `2.29.2` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.1+dfsg-2.pgdg12+1` → `2.29.2+dfsg-1.pgdg12+1` |
|
[postgresql-18-timescaledb](https://redirect.github.com/timescale/timescaledb)
| patch | `2.29.1+dfsg-2.pgdg13+1` → `2.29.2+dfsg-1.pgdg13+1` |

---

### Release Notes

<details>
<summary>timescale/timescaledb (postgresql-18-timescaledb)</summary>

###
[`v2.29.2`](https://redirect.github.com/timescale/timescaledb/blob/HEAD/CHANGELOG.md#2292-2026-08-18)

[Compare
Source](https://redirect.github.com/timescale/timescaledb/compare/2.29.1...2.29.2)

This release contains bug fixes since the 2.29.1 release. We recommend
that you upgrade at the next available opportunity.

**Bugfixes**

-
[#&#8203;10189](https://redirect.github.com/timescale/timescaledb/pull/10189)
Fix user-defined functions named `time_bucket` causing SQLSTATE `XX000`
-
[#&#8203;10363](https://redirect.github.com/timescale/timescaledb/pull/10363)
Fix `time_bucket_gapfill()` with window aggregates over constants
-
[#&#8203;10416](https://redirect.github.com/timescale/timescaledb/pull/10416)
Repair mismatched dimensional `CHECK` constraints
-
[#&#8203;10423](https://redirect.github.com/timescale/timescaledb/pull/10423)
Fix compressed `SkipScan` dropping uncompressed rows when sort keys do
not match distinct keys
-
[#&#8203;10430](https://redirect.github.com/timescale/timescaledb/pull/10430)
Do not attach `SkipScan` to mismatched `IndexScan` paths under
`MergeAppend`
-
[#&#8203;9921](https://redirect.github.com/timescale/timescaledb/pull/9921)
Fix wrong results for `IS NULL` predicates with min/max sparse-index
pushdown

**Thanks**

- [@&#8203;borisborelly](https://redirect.github.com/borisborelly) for
reporting incorrect results with `COUNT(DISTINCT)` due to `SkipScan`
dropping uncompressed rows.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/cloudnative-pg/postgres-extensions-containers).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zNS40IiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…-pg#324)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…pg#312)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: extension-os-libs-updater <extension-os-libs-updater@users.noreply.github.com>
…pg#326)

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@ardentperf
ardentperf merged commit bea2711 into cnpg-extensions:main Sep 2, 2026
1 check passed
@ardentperf
ardentperf deleted the x-ai/ardentperf/upstream-merge-documentation branch September 2, 2026 06:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants