diff --git a/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml b/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml index db14c183e8..5b53b9db13 100644 --- a/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml +++ b/build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml @@ -8072,6 +8072,8 @@ spec: type: boolean pg_stat_monitor: type: boolean + pg_stat_statements: + type: boolean pgvector: type: boolean type: object diff --git a/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml b/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml index 9e2bc7a8c1..895baad73c 100644 --- a/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml +++ b/config/crd/bases/pgv2.percona.com_perconapgclusters.yaml @@ -8477,6 +8477,8 @@ spec: type: boolean pg_stat_monitor: type: boolean + pg_stat_statements: + type: boolean pgvector: type: boolean type: object diff --git a/deploy/bundle.yaml b/deploy/bundle.yaml index 49f1aa8571..8aa83b37f1 100644 --- a/deploy/bundle.yaml +++ b/deploy/bundle.yaml @@ -8774,6 +8774,8 @@ spec: type: boolean pg_stat_monitor: type: boolean + pg_stat_statements: + type: boolean pgvector: type: boolean type: object diff --git a/deploy/crd.yaml b/deploy/crd.yaml index 484e904f0e..9a981d0cc8 100644 --- a/deploy/crd.yaml +++ b/deploy/crd.yaml @@ -8774,6 +8774,8 @@ spec: type: boolean pg_stat_monitor: type: boolean + pg_stat_statements: + type: boolean pgvector: type: boolean type: object diff --git a/deploy/cw-bundle.yaml b/deploy/cw-bundle.yaml index 23ba803007..c284b361d6 100644 --- a/deploy/cw-bundle.yaml +++ b/deploy/cw-bundle.yaml @@ -8774,6 +8774,8 @@ spec: type: boolean pg_stat_monitor: type: boolean + pg_stat_statements: + type: boolean pgvector: type: boolean type: object diff --git a/e2e-tests/tests/monitoring-pmm3/06-check-pgstatstatements-query-source.yaml b/e2e-tests/tests/monitoring-pmm3/06-check-pgstatstatements-query-source.yaml index 80ab7eec73..b5103da2ef 100644 --- a/e2e-tests/tests/monitoring-pmm3/06-check-pgstatstatements-query-source.yaml +++ b/e2e-tests/tests/monitoring-pmm3/06-check-pgstatstatements-query-source.yaml @@ -7,11 +7,19 @@ commands: source ../../functions - kubectl -n ${NAMESPACE} patch perconapgcluster/monitoring-pmm3 --type=merge -p '{"spec":{"pmm":{"querySource":"pgstatstatements"}}}' + kubectl -n ${NAMESPACE} patch perconapgcluster/monitoring-pmm3 --type=merge -p '{ + "spec":{ + "pmm":{"querySource":"pgstatstatements"}, + "extensions": {"builtin": {"pg_stat_statements": true }}} + } + ' # Wait for the pg_stat_statements extension to be created sleep 80 primary=$(get_pod_by_role monitoring-pmm3 primary name) - res=$(kubectl -n ${NAMESPACE} exec ${primary} -- bash -c 'psql -c "SELECT extname FROM pg_extension;"') - echo ${res} | grep -q pg_stat_statements + kubectl -n ${NAMESPACE} exec ${primary} -- bash -c 'psql -c "SELECT * FROM pg_extension;"' + if ! kubectl -n ${NAMESPACE} exec ${primary} -- bash -c 'psql -c "SELECT extname FROM pg_extension;"' | grep pg_stat_statements; then + echo "pg_stat_statements is not found in pg_extension" + fi + timeout: 360 diff --git a/e2e-tests/tests/monitoring/06-check-pgstatstatements-query-source.yaml b/e2e-tests/tests/monitoring/06-check-pgstatstatements-query-source.yaml index 23c8d893ae..11a7129347 100644 --- a/e2e-tests/tests/monitoring/06-check-pgstatstatements-query-source.yaml +++ b/e2e-tests/tests/monitoring/06-check-pgstatstatements-query-source.yaml @@ -7,12 +7,19 @@ commands: source ../../functions - kubectl -n ${NAMESPACE} patch perconapgcluster/monitoring --type=merge -p '{"spec":{"pmm":{"querySource":"pgstatstatements"}}}' + kubectl -n ${NAMESPACE} patch perconapgcluster/monitoring --type=merge -p '{ + "spec":{ + "pmm":{"querySource":"pgstatstatements"}, + "extensions": {"builtin": {"pg_stat_statements": true }}} + } + ' # Wait for the pg_stat_statements extension to be created sleep 80 primary=$(get_pod_by_role monitoring primary name) - res=$(kubectl -n ${NAMESPACE} exec ${primary} -- bash -c 'psql -c "SELECT extname FROM pg_extension;"') - echo ${res} | grep -q pg_stat_statements + kubectl -n ${NAMESPACE} exec ${primary} -- bash -c 'psql -c "SELECT * FROM pg_extension;"' + if ! kubectl -n ${NAMESPACE} exec ${primary} -- bash -c 'psql -c "SELECT extname FROM pg_extension;"' | grep pg_stat_statements; then + echo "pg_stat_statements is not found in pg_extension" + fi timeout: 360 diff --git a/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go b/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go index 24487c4848..27b3eb397c 100644 --- a/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go +++ b/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go @@ -225,6 +225,9 @@ func (cr *PerconaPGCluster) Default() { if cr.Spec.Extensions.BuiltIn.PGStatMonitor == nil { cr.Spec.Extensions.BuiltIn.PGStatMonitor = &t } + if cr.Spec.Extensions.BuiltIn.PGStatStatements == nil { + cr.Spec.Extensions.BuiltIn.PGStatStatements = &f + } if cr.Spec.Extensions.BuiltIn.PGAudit == nil { cr.Spec.Extensions.BuiltIn.PGAudit = &t } @@ -355,6 +358,7 @@ func (cr *PerconaPGCluster) ToCrunchy(ctx context.Context, postgresCluster *crun postgresCluster.Spec.Proxy = cr.Spec.Proxy.ToCrunchy() postgresCluster.Spec.Extensions.PGStatMonitor = *cr.Spec.Extensions.BuiltIn.PGStatMonitor + postgresCluster.Spec.Extensions.PGStatStatements = *cr.Spec.Extensions.BuiltIn.PGStatStatements postgresCluster.Spec.Extensions.PGAudit = *cr.Spec.Extensions.BuiltIn.PGAudit postgresCluster.Spec.Extensions.PGVector = *cr.Spec.Extensions.BuiltIn.PGVector postgresCluster.Spec.Extensions.PGRepack = *cr.Spec.Extensions.BuiltIn.PGRepack @@ -605,10 +609,11 @@ type CustomExtensionsStorageSpec struct { } type BuiltInExtensionsSpec struct { - PGStatMonitor *bool `json:"pg_stat_monitor,omitempty"` - PGAudit *bool `json:"pg_audit,omitempty"` - PGVector *bool `json:"pgvector,omitempty"` - PGRepack *bool `json:"pg_repack,omitempty"` + PGStatMonitor *bool `json:"pg_stat_monitor,omitempty"` + PGStatStatements *bool `json:"pg_stat_statements,omitempty"` + PGAudit *bool `json:"pg_audit,omitempty"` + PGVector *bool `json:"pgvector,omitempty"` + PGRepack *bool `json:"pg_repack,omitempty"` } type ExtensionsSpec struct { diff --git a/pkg/apis/pgv2.percona.com/v2/zz_generated.deepcopy.go b/pkg/apis/pgv2.percona.com/v2/zz_generated.deepcopy.go index abf35a50b2..a3a81fd31b 100644 --- a/pkg/apis/pgv2.percona.com/v2/zz_generated.deepcopy.go +++ b/pkg/apis/pgv2.percona.com/v2/zz_generated.deepcopy.go @@ -44,6 +44,11 @@ func (in *BuiltInExtensionsSpec) DeepCopyInto(out *BuiltInExtensionsSpec) { *out = new(bool) **out = **in } + if in.PGStatStatements != nil { + in, out := &in.PGStatStatements, &out.PGStatStatements + *out = new(bool) + **out = **in + } if in.PGAudit != nil { in, out := &in.PGAudit, &out.PGAudit *out = new(bool)