Skip to content

chore(chart-deps): update cloudnative-pg to version 0.27.1#2920

Merged
merll merged 5 commits intomainfrom
ci-update-cloudnative-pg-to-0.27.1
Feb 9, 2026
Merged

chore(chart-deps): update cloudnative-pg to version 0.27.1#2920
merll merged 5 commits intomainfrom
ci-update-cloudnative-pg-to-0.27.1

Conversation

@svcAPLBot
Copy link
Contributor

This PR updates the dependency cloudnative-pg to version 0.27.1.

@svcAPLBot svcAPLBot added the chart-deps Auto generated helm chart dependencies label Feb 6, 2026
@merll merll marked this pull request as ready for review February 6, 2026 08:22
@svcAPLBot
Copy link
Contributor Author

Comparison of Helm chart templating output:

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/backups.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ spec.versions.v1.schema.openAPIV3Schema.properties.status.properties.azureCredentials.properties @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/backups.postgresql.cnpg.io
! + one map entry added:
+ useDefaultAzureCredentials:
+   type: boolean
+   description: |
+     Use the default Azure authentication flow, which includes DefaultAzureCredential.
+     This allows authentication using environment variables and managed identities.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.status.properties.instanceID.properties @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/backups.postgresql.cnpg.io
! + one map entry added:
+ sessionID:
+   type: string
+   description: |
+     The instance manager session ID. This is a unique identifier generated at instance manager
+     startup and changes on every restart (including container reboots). Used to detect if
+     the instance manager was restarted during long-running operations like backups, which
+     would terminate any running backup process.

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusterimagecatalogs.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.affinity.properties.tolerations.items.properties.operator.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change in multiline text (two inserts, two deletions)
  Operator represents a key's relationship to the value.
- Valid operators are Exists and Equal. Defaults to Equal.
+ Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
  Exists is equivalent to wildcard for value, so that a pod can
- tolerate all taints of a particular category.
+ tolerate all taints of a particular category.
+ Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.backup.properties.barmanObjectStore.properties.azureCredentials.properties @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! + one map entry added:
+ useDefaultAzureCredentials:
+   type: boolean
+   description: |
+     Use the default Azure authentication flow, which includes DefaultAzureCredential.
+     This allows authentication using environment variables and managed identities.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.bootstrap.properties.recovery.properties.recoveryTarget.properties.targetTime.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
- The target time as a timestamp in the RFC3339 standard
+ The target time as a timestamp in RFC3339 format or PostgreSQL timestamp format.
+ Timestamps without an explicit timezone are interpreted as UTC.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.ephemeralVolumeSource.properties.volumeClaimTemplate.properties.spec.properties.resources.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
  resources represents the minimum resources the volume should have.
- If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ Users are allowed to specify resource requirements
  that are lower than previous value but must still be higher than capacity recorded in the
  status field of the claim.
  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.externalClusters.items.properties.barmanObjectStore.properties.azureCredentials.properties @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! + one map entry added:
+ useDefaultAzureCredentials:
+   type: boolean
+   description: |
+     Use the default Azure authentication flow, which includes DefaultAzureCredential.
+     This allows authentication using environment variables and managed identities.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.postgresql.properties.extensions.items.properties.name.pattern @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change
- ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
+ ^[a-z0-9]([-a-z0-9_]*[a-z0-9])?$

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.projectedVolumeTemplate.properties.sources.items.properties.podCertificate.properties @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! + one map entry added:
+ userAnnotations:
+   type: object
+   description: |
+     userAnnotations allow pod authors to pass additional information to
+     the signer implementation.  Kubernetes does not restrict or validate this
+     metadata in any way.
+     
+     These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
+     the PodCertificateRequest objects that Kubelet creates.
+     
+     Entries are subject to the same validation as object metadata annotations,
+     with the addition that all keys must be domain-prefixed. No restrictions
+     are placed on values, except an overall size limitation on the entire field.
+     
+     Signers should document the keys and values they support. Signers should
+     deny requests that contain keys they do not recognize.
+   additionalProperties:
+     type: string

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.storage.properties.pvcTemplate.properties.resources.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
  resources represents the minimum resources the volume should have.
- If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ Users are allowed to specify resource requirements
  that are lower than previous value but must still be higher than capacity recorded in the
  status field of the claim.
  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.tablespaces.items.properties.storage.properties.pvcTemplate.properties.resources.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
  resources represents the minimum resources the volume should have.
- If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ Users are allowed to specify resource requirements
  that are lower than previous value but must still be higher than capacity recorded in the
  status field of the claim.
  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.walStorage.properties.pvcTemplate.properties.resources.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/clusters.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
  resources represents the minimum resources the volume should have.
- If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ Users are allowed to specify resource requirements
  that are lower than previous value but must still be higher than capacity recorded in the
  status field of the claim.
  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/databases.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/failoverquorums.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/imagecatalogs.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.template.properties.spec.properties @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! + one map entry added:
+ workloadRef:
+   type: object
+   description: |
+     WorkloadRef provides a reference to the Workload object that this Pod belongs to.
+     This field is used by the scheduler to identify the PodGroup and apply the
+     correct group scheduling policies. The Workload object referenced
+     by this field may not exist at the time the Pod is created.
+     This field is immutable, but a Workload object with the same name
+     may be recreated with different policies. Doing this during pod scheduling
+     may result in the placement not conforming to the expected policies.
+   required:
+   - name
+   - podGroup
+   properties:
+     name:
+       type: string
+       description: |
+         Name defines the name of the Workload object this Pod belongs to.
+         Workload must be in the same namespace as the Pod.
+         If it doesn't match any existing Workload, the Pod will remain unschedulable
+         until a Workload object is created and observed by the kube-scheduler.
+         It must be a DNS subdomain.
+     podGroup:
+       type: string
+       description: |
+         PodGroup is the name of the PodGroup within the Workload that this Pod
+         belongs to. If it doesn't match any existing PodGroup within the Workload,
+         the Pod will remain unschedulable until the Workload object is recreated
+         and observed by the kube-scheduler. It must be a DNS label.
+     podGroupReplicaKey:
+       type: string
+       description: |
+         PodGroupReplicaKey specifies the replica key of the PodGroup to which this
+         Pod belongs. It is used to distinguish pods belonging to different replicas
+         of the same pod group. The pod group policy is applied separately to each replica.
+         When set, it must be a DNS label.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.template.properties.spec.properties.containers.items.properties.resizePolicy.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
- Resources resize policy for the container.
+ Resources resize policy for the container.
+ This field cannot be set on ephemeral containers.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.template.properties.spec.properties.initContainers.items.properties.resizePolicy.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
- Resources resize policy for the container.
+ Resources resize policy for the container.
+ This field cannot be set on ephemeral containers.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.template.properties.spec.properties.resourceClaims.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
  ResourceClaims defines which ResourceClaims must be allocated
  and reserved before the Pod is allowed to start. The resources
  will be made available to those containers which consume them
  by name.
  
- This is an alpha field and requires enabling the
- DynamicResourceAllocation feature gate.
+ This is a stable field but requires that the
+ DynamicResourceAllocation feature gate is enabled.
  
  This field is immutable.

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.template.properties.spec.properties.tolerations.items.properties.operator.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! ± value change in multiline text (two inserts, two deletions)
  Operator represents a key's relationship to the value.
- Valid operators are Exists and Equal. Defaults to Equal.
+ Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
  Exists is equivalent to wildcard for value, so that a pod can
- tolerate all taints of a particular category.
+ tolerate all taints of a particular category.
+ Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.template.properties.spec.properties.volumes.items.properties.ephemeral.properties.volumeClaimTemplate.properties.spec.properties.resources.description @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! ± value change in multiline text (one insert, one deletion)
  resources represents the minimum resources the volume should have.
- If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
+ Users are allowed to specify resource requirements
  that are lower than previous value but must still be higher than capacity recorded in the
  status field of the claim.
  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

@@ spec.versions.v1.schema.openAPIV3Schema.properties.spec.properties.template.properties.spec.properties.volumes.items.properties.projected.properties.sources.items.properties.podCertificate.properties @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/poolers.postgresql.cnpg.io
! + one map entry added:
+ userAnnotations:
+   type: object
+   description: |
+     userAnnotations allow pod authors to pass additional information to
+     the signer implementation.  Kubernetes does not restrict or validate this
+     metadata in any way.
+     
+     These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
+     the PodCertificateRequest objects that Kubelet creates.
+     
+     Entries are subject to the same validation as object metadata annotations,
+     with the addition that all keys must be domain-prefixed. No restrictions
+     are placed on values, except an overall size limitation on the entire field.
+     
+     Signers should document the keys and values they support. Signers should
+     deny requests that contain keys they do not recognize.
+   additionalProperties:
+     type: string

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/publications.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/scheduledbackups.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0

@@ metadata.annotations.controller-gen.kubebuilder.io/version @@
# apiextensions.k8s.io/v1/CustomResourceDefinition/subscriptions.postgresql.cnpg.io
! ± value change
- v0.19.0
+ v0.20.0


@@ spec.template.spec.containers.manager.env.OPERATOR_IMAGE_NAME.value @@
! ± value change
- ghcr.io/cloudnative-pg/cloudnative-pg:1.28.0
+ ghcr.io/cloudnative-pg/cloudnative-pg:1.28.1

@@ spec.template.spec.containers.manager.image @@
! ± value change
- ghcr.io/cloudnative-pg/cloudnative-pg:1.28.0
+ ghcr.io/cloudnative-pg/cloudnative-pg:1.28.1

@@ spec.template.spec.containers.manager.livenessProbe.httpGet.port @@
! ± type change from int to string
- 9443
+ webhook-server

@@ spec.template.spec.containers.manager.readinessProbe.httpGet.port @@
! ± type change from int to string
- 9443
+ webhook-server

@@ spec.template.spec.containers.manager.startupProbe.httpGet.port @@
! ± type change from int to string
- 9443
+ webhook-server


@@ data.queries @@
! ± value change in multiline text (six inserts, five deletions)
  backends:
    query: |
-    SELECT sa.datname
-        , sa.usename
-        , sa.application_name
-        , states.state
-        , COALESCE(sa.count, 0) AS total
-        , COALESCE(sa.max_tx_secs, 0) AS max_tx_duration_seconds
-        FROM ( VALUES ('active')
-            , ('idle')
-            , ('idle in transaction')
-            , ('idle in transaction (aborted)')
-            , ('fastpath function call')
-            , ('disabled')
-            ) AS states(state)
-        LEFT JOIN (
-            SELECT datname
-                , state
-                , usename
-                , COALESCE(application_name, '') AS application_name
-                , COUNT(*)
-                , COALESCE(EXTRACT (EPOCH FROM (max(now() - xact_start))), 0) AS max_tx_secs
-            FROM pg_catalog.pg_stat_activity
-            GROUP BY datname, state, usename, application_name
-        ) sa ON states.state = sa.state
-        WHERE sa.usename IS NOT NULL
+     SELECT sa.datname
+       , sa.usename
+       , sa.application_name
+       , states.state
+       , COALESCE(sa.count, 0) AS total
+       , COALESCE(sa.max_tx_secs, 0) AS max_tx_duration_seconds
+     FROM ( VALUES ('active')
+       , ('idle')
+       , ('idle in transaction')
+       , ('idle in transaction (aborted)')
+       , ('fastpath function call')
+       , ('disabled')
+       ) AS states(state)
+     LEFT JOIN (
+       SELECT datname
+         , state
+         , usename
+         , COALESCE(application_name, '') AS application_name
+         , COUNT(*)
+         , COALESCE(EXTRACT (EPOCH FROM (max(now() - xact_start))), 0) AS max_tx_secs
+       FROM pg_catalog.pg_stat_activity
+       GROUP BY datname, state, usename, application_name
+     ) sa ON states.state = sa.state
+     WHERE sa.usename IS NOT NULL
    metrics:
      - datname:
          usage: "LABEL"
          description: "Name of the database"
  
  [14 lines unchanged)]
  
          description: "Maximum duration of a transaction in seconds"
  
  backends_waiting:
    query: |
-    SELECT count(*) AS total
-    FROM pg_catalog.pg_locks blocked_locks
-    JOIN pg_catalog.pg_locks blocking_locks
-      ON blocking_locks.locktype = blocked_locks.locktype
-      AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database
-      AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation
-      AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page
-      AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple
-      AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid
-      AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid
-      AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid
-      AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid
-      AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid
-      AND blocking_locks.pid != blocked_locks.pid
-    JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
-    WHERE NOT blocked_locks.granted
+     SELECT count(*) AS total
+     FROM pg_catalog.pg_locks blocked_locks
+     JOIN pg_catalog.pg_locks blocking_locks
+       ON blocking_locks.locktype = blocked_locks.locktype
+       AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database
+       AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation
+       AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page
+       AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple
+       AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid
+       AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid
+       AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid
+       AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid
+       AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid
+       AND blocking_locks.pid != blocked_locks.pid
+     JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
+     WHERE NOT blocked_locks.granted
    metrics:
      - total:
          usage: "GAUGE"
          description: "Total number of backends that are currently waiting on other queries"
  
  [29 lines unchanged)]
  
          usage: "GAUGE"
          description: "Time at which postgres started (based on epoch)"
  
  pg_replication:
-   query: "SELECT CASE WHEN (
-             NOT pg_catalog.pg_is_in_recovery()
-             OR pg_catalog.pg_last_wal_receive_lsn() = pg_catalog.pg_last_wal_replay_lsn())
-           THEN 0
-           ELSE GREATEST (0,
-             EXTRACT(EPOCH FROM (now() - pg_catalog.pg_last_xact_replay_timestamp())))
-           END AS lag,
-           pg_catalog.pg_is_in_recovery() AS in_recovery,
-           EXISTS (TABLE pg_stat_wal_receiver) AS is_wal_receiver_up,
-           (SELECT count(*) FROM pg_catalog.pg_stat_replication) AS streaming_replicas"
+   query: |
+     SELECT CASE WHEN (
+         NOT pg_catalog.pg_is_in_recovery()
+         OR pg_catalog.pg_last_wal_receive_lsn() = pg_catalog.pg_last_wal_replay_lsn())
+       THEN 0
+       ELSE GREATEST (0,
+         EXTRACT(EPOCH FROM (now() - pg_catalog.pg_last_xact_replay_timestamp())))
+       END AS lag,
+       pg_catalog.pg_is_in_recovery() AS in_recovery,
+       EXISTS (TABLE pg_stat_wal_receiver) AS is_wal_receiver_up,
+       (SELECT count(*) FROM pg_catalog.pg_stat_replication) AS streaming_replicas
    metrics:
      - lag:
          usage: "GAUGE"
          description: "Replication lag behind primary in seconds"
  
  [47 lines unchanged)]
  
        , COALESCE(CAST(CAST('x'||pg_catalog.right(pg_catalog.split_part(last_archived_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_archived_wal_start_lsn
        , COALESCE(CAST(CAST('x'||pg_catalog.right(pg_catalog.split_part(last_failed_wal, '.', 1), 16) AS pg_catalog.bit(64)) AS pg_catalog.int8), -1) AS last_failed_wal_start_lsn
        , EXTRACT(EPOCH FROM stats_reset) AS stats_reset_time
      FROM pg_catalog.pg_stat_archiver
+   predicate_query: |
+     SELECT NOT pg_catalog.pg_is_in_recovery()
+       OR pg_catalog.current_setting('archive_mode') = 'always'
    metrics:
      - archived_count:
          usage: "COUNTER"
          description: "Number of WAL files that have been successfully archived"
  
  [204 lines unchanged)]
  
  
  pg_stat_replication:
    primary: true
    query: |
-    SELECT usename
-      , COALESCE(application_name, '') AS application_name
-      , COALESCE(client_addr::text, '') AS client_addr
-      , COALESCE(client_port::text, '') AS client_port
-      , EXTRACT(EPOCH FROM backend_start) AS backend_start
-      , COALESCE(pg_catalog.age(backend_xmin), 0) AS backend_xmin_age
-      , pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), sent_lsn) AS sent_diff_bytes
-      , pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), write_lsn) AS write_diff_bytes
-      , pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), flush_lsn) AS flush_diff_bytes
-      , COALESCE(pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), replay_lsn),0) AS replay_diff_bytes
-      , COALESCE((EXTRACT(EPOCH FROM write_lag)),0)::float AS write_lag_seconds
-      , COALESCE((EXTRACT(EPOCH FROM flush_lag)),0)::float AS flush_lag_seconds
-      , COALESCE((EXTRACT(EPOCH FROM replay_lag)),0)::float AS replay_lag_seconds
-    FROM pg_catalog.pg_stat_replication
+     SELECT usename
+       , COALESCE(application_name, '') AS application_name
+       , COALESCE(client_addr::text, '') AS client_addr
+       , COALESCE(client_port::text, '') AS client_port
+       , EXTRACT(EPOCH FROM backend_start) AS backend_start
+       , COALESCE(pg_catalog.age(backend_xmin), 0) AS backend_xmin_age
+       , pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), sent_lsn) AS sent_diff_bytes
+       , pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), write_lsn) AS write_diff_bytes
+       , pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), flush_lsn) AS flush_diff_bytes
+       , COALESCE(pg_catalog.pg_wal_lsn_diff(pg_catalog.pg_current_wal_lsn(), replay_lsn),0) AS replay_diff_bytes
+       , COALESCE((EXTRACT(EPOCH FROM write_lag)),0)::float AS write_lag_seconds
+       , COALESCE((EXTRACT(EPOCH FROM flush_lag)),0)::float AS flush_lag_seconds
+       , COALESCE((EXTRACT(EPOCH FROM replay_lag)),0)::float AS replay_lag_seconds
+     FROM pg_catalog.pg_stat_replication
    metrics:
      - usename:
          usage: "LABEL"
          description: "Name of the replication user"
  
  [51 lines unchanged)]
  
  
  pg_extensions:
    query: |
      SELECT
-      current_database() as datname,
-      name as extname,
-      default_version,
-      installed_version,
-      CASE
-        WHEN default_version = installed_version THEN 0
-        ELSE 1
+       current_database() as datname,
+       name as extname,
+       default_version,
+       installed_version,
+       CASE
+         WHEN default_version = installed_version THEN 0
+         ELSE 1
      END AS update_available
      FROM pg_catalog.pg_available_extensions
      WHERE installed_version IS NOT NULL
    metrics:
  
  [13 lines unchanged)]
  
          usage: "GAUGE"
          description: "An update is available"
    target_databases:
      - '*'






@@ data.core.yaml @@
! ± value change in multiline text (one insert, one deletion)
  adminApps:
  - deps:
    - prometheus
    ingress:
  
  [291 lines unchanged)]
  
    cnpg:
      about: CloudNative PostgreSQL is an open source operator designed to manage PostgreSQL
        workloads on any supported Kubernetes cluster running in private, public, hybrid,
        or multi-cloud environments.
-     appVersion: 1.28.0
+     appVersion: 1.28.1
      chartName: cloudnative-pg
      integration: CloudNativePG is used by App Platform to provide Postgresql database
        for various applications. In the values you can configure a storageprovider
        for backups. The backups can be enabled in settings.
  
  [426 lines unchanged)]
  
      svc: tekton-dashboard
      type: public
    name: tekton
    ownHost: true



@merll merll merged commit b4e9cb5 into main Feb 9, 2026
14 checks passed
@merll merll deleted the ci-update-cloudnative-pg-to-0.27.1 branch February 9, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chart-deps Auto generated helm chart dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants