Skip to content
This repository was archived by the owner on Jul 6, 2021. It is now read-only.

Commit fa98897

Browse files
committed
Sort signs fix
1 parent e814b1f commit fa98897

File tree

11 files changed

+76
-40
lines changed

11 files changed

+76
-40
lines changed

pghrep/plugins/H002.go

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"../src/pyraconv"
55
"strings"
6+
"../src/orderedmap"
67
)
78

89
var Data map[string]interface{}
@@ -38,16 +39,22 @@ func compareHostsData(data map[string]interface{}) {
3839
hosts := pyraconv.ToInterfaceMap(data["hosts"])
3940
master := pyraconv.ToString(hosts["master"])
4041
replicas := pyraconv.ToStringArray(hosts["replicas"])
41-
resultData := make(map[string]interface{})
42+
resultData := orderedmap.New() //make(map[string]interface{})
4243

4344
results := pyraconv.ToInterfaceMap(data["results"])
4445
masterData := pyraconv.ToInterfaceMap(results[master])
4546
masterData = pyraconv.ToInterfaceMap(masterData["data"])
4647

4748
allUnusedIndexes := make(map[string]bool)
4849
uIndexesData := pyraconv.ToInterfaceMap(masterData["unused_indexes"])
49-
uIndexes := make(map[string]interface{})
50-
for indexName, value := range uIndexesData {
50+
uIndexes := orderedmap.New()
51+
uKeys := pyraconv.ToStringArray(uIndexesData["_keys"])
52+
for i := 0; i < len(uKeys); i++ {
53+
indexName := uKeys[i]
54+
value := uIndexesData[indexName]
55+
if (indexName == "_keys") {
56+
continue
57+
}
5158
valueData := pyraconv.ToInterfaceMap(value);
5259
idxScanValue := pyraconv.ToInt64(valueData["idx_scan"])
5360
idxScanSum := idxScanValue
@@ -64,13 +71,19 @@ func compareHostsData(data map[string]interface{}) {
6471
if idxScanSum == 0 {
6572
allUnusedIndexes[indexName] = true
6673
}
67-
uIndexes[indexName] = indexData
74+
uIndexes.Set(indexName, indexData)
6875
}
69-
resultData["unused_indexes"] = uIndexes
76+
resultData.Set("unused_indexes", *uIndexes)
7077

7178
rIndexesData := pyraconv.ToInterfaceMap(masterData["redundant_indexes"])
72-
rIndexes := make(map[string]interface{})
73-
for indexName, value := range rIndexesData {
79+
rIndexes := orderedmap.New()
80+
rKeys := pyraconv.ToStringArray(rIndexesData["_keys"])
81+
for i := 0; i < len(rKeys); i++ {
82+
indexName := rKeys[i]
83+
value := uIndexesData[indexName]
84+
if (indexName == "_keys") {
85+
continue
86+
}
7487
valueData := pyraconv.ToInterfaceMap(value);
7588
idxScanValue := pyraconv.ToInt64(valueData["index_usage"])
7689
idxScanSum := idxScanValue
@@ -87,9 +100,9 @@ func compareHostsData(data map[string]interface{}) {
87100
if idxScanSum == 0 {
88101
allUnusedIndexes[indexName] = true
89102
}
90-
rIndexes[indexName] = indexData
103+
rIndexes.Set(indexName, indexData)
91104
}
92-
resultData["redundant_indexes"] = rIndexes
105+
resultData.Set("redundant_indexes", *rIndexes)
93106

94107
dropCode := make(map[string]interface{})
95108
revertCode := make(map[string]interface{})
@@ -105,10 +118,11 @@ func compareHostsData(data map[string]interface{}) {
105118
}
106119
}
107120

108-
resultData["drop_code"] = dropCode
109-
resultData["revert_code"] = revertCode
121+
resultData.Set("drop_code", dropCode)
122+
resultData.Set("revert_code", revertCode)
110123

111-
data["resultData"] = resultData
124+
rd := resultData.ToInterfaceArray()
125+
data["resultData"] = rd
112126
}
113127

114128
func getReplicaIndexUsage(data map[string]interface{}, replica string, indexName string) (int64) {

pghrep/templates/A003.tpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
## Observations ##
44
{{ if .hosts.master }}
55
### Master (`{{.hosts.master}}`) ###
6-
Setting | Value | Unit | Pretty value
7-
--------|-------|------|--------------
6+
&#9660;&nbsp;Category | Setting | Value | Unit | Pretty value
7+
---------|---------|-------|------|--------------
88
{{ range $i, $key := (index (index (index .results .hosts.master) "data") "_keys") }}
99
{{- $value := (index (index (index $.results $.hosts.master) "data") $key) -}}
10-
[{{ $key }}](https://postgresqlco.nf/en/doc/param/{{ $key }}) | {{ Br $value.setting }} | {{ if $value.unit }}{{ $value.unit }} {{ end }} | {{ UnitValue $value.setting $value.unit }}
10+
{{ $value.category }}|[{{ $key }}](https://postgresqlco.nf/en/doc/param/{{ $key }}) | {{ Br $value.setting }} | {{ if $value.unit }}{{ $value.unit }} {{ end }} | {{ UnitValue $value.setting $value.unit }}
1111
{{ end }}
1212
{{ else }}
1313
No data

pghrep/templates/A005.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Observations ##
44
{{ if .hosts.master }}
55
### Master (`{{.hosts.master}}`) ###
6-
Database | Extension name | Installed version | Default version | Is old
6+
&#9660;&nbsp;Database | Extension name | Installed version | Default version | Is old
77
---------|----------------|-------------------|-----------------|--------
88
{{ range $d, $db := (index (index (index .results .hosts.master) "data") "_keys") -}}
99
{{- $dbData := (index (index (index $.results $.hosts.master) "data") $db) -}}

pghrep/templates/A006.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{{ if .diffData }}
55
### Settings (pg_settings) that differ ###
66
{{ if (index .diffData "pg_settings") }}
7-
Setting | {{.hosts.master}} {{ range $skey, $host := .hosts.replicas }}| {{ $host }} {{ end }}
7+
&#9660;&nbsp;Setting | {{.hosts.master}} {{ range $skey, $host := .hosts.replicas }}| {{ $host }} {{ end }}
88
--------|-------{{ range $skey, $host := .hosts.replicas }}|-------- {{ end }}
99
{{ range $key, $value := (index .diffData "pg_settings") }}{{ $key }} {{ range $key, $value := $value }} | {{ if (index $value "unit") }}{{ UnitValue (index $value "value") (index $value "unit") }}{{else}}{{ index $value "value" }}{{ end }}{{ end }}
1010
{{ end }}

pghrep/templates/F001.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Observations ##
44
{{ if .hosts.master }}
55
### Master (`{{.hosts.master}}`) ###
6-
Setting name | Value | Unit | Pretty value
6+
&#9660;&nbsp;Setting name | Value | Unit | Pretty value
77
-------------|-------|------|--------------
88
{{ range $i, $key := (index (index (index (index (index .results .hosts.master) "data") "settings") "global_settings") "_keys") -}}
99
{{- if ne $key "hot_standby_feedback" -}}
@@ -14,7 +14,7 @@ Setting name | Value | Unit | Pretty value
1414

1515
{{ if (index (index (index (index .results .hosts.master) "data") "settings") "table_settings") }}
1616
#### Tables settings override ####
17-
Namespace | Relation | Options
17+
&#9660;&nbsp;Namespace | Relation | Options
1818
----------|----------|------
1919
{{ range $i, $key := (index (index (index (index (index .results .hosts.master) "data") "settings") "table_settings") "_keys") }}
2020
{{- $value := (index (index (index (index (index $.results $.hosts.master) "data") "settings") "table_settings") $key) -}}

pghrep/templates/F008.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# {{ .checkId }} Autovacuum: resource usage #
1+
# {{ .checkId }} Autovacuum: Resource usage #
22

33
## Observations ##
44

pghrep/templates/H002.tpl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
## Observations ##
44

55
{{ if .resultData }}
6+
67
Stats reset: {{ (index (index (index .results .hosts.master) "data") "database_stat").stats_age }} ago ({{ DtFormat (index (index (index .results .hosts.master) "data") "database_stat").stats_reset }})
78
Report created: {{ DtFormat .timestamptz }}
89

910
{{ if .resultData.unused_indexes }}
1011
### Never Used Indexes ###
11-
Index | {{.hosts.master}} usage {{ range $skey, $host := .hosts.replicas }}| {{ $host }} usage {{ end }}| Index size | Usage
12+
Index | {{.hosts.master}} usage {{ range $skey, $host := .hosts.replicas }}| {{ $host }} usage {{ end }}| &#9660;&nbsp;Index size | Usage
1213
--------|-------{{ range $skey, $host := .hosts.replicas }}|--------{{ end }}|-----|-----
13-
{{ range $key, $value := (index .resultData "unused_indexes") }}
14+
{{ range $i, $key := (index (index .resultData "unused_indexes") "_keys") }}
15+
{{- $value := (index (index $.resultData "unused_indexes") $key) -}}
1416
{{- if ne $key "_keys" -}}
1517
{{- if eq $value.master.reason "Never Used Indexes" -}}
1618
{{- if $value.usage -}}
@@ -29,7 +31,8 @@ Index | {{.hosts.master}} usage {{ range $skey, $host := .hosts.replicas }}| {{
2931
### Other unused indexes ###
3032
Index | Reason |{{.hosts.master}} {{ range $skey, $host := .hosts.replicas }}| {{ $host }} {{ end }}| Usage
3133
------|--------|-------{{ range $skey, $host := .hosts.replicas }}|--------{{ end }}|-----
32-
{{ range $key, $value := (index .resultData "unused_indexes") }}
34+
{{ range $i, $key := (index (index .resultData "unused_indexes") "_keys") }}
35+
{{- $value := (index (index $.resultData "unused_indexes") $key) -}}
3336
{{- if ne $key "_keys" -}}
3437
{{- if ne $value.master.reason "Never Used Indexes" -}}
3538
{{ $key }} | {{ $value.master.reason }} | Usage:&nbsp;{{ $value.master.idx_scan }}<br/>Index&nbsp;size:{{ Nobr $value.master.index_size }}<br/>Table&nbsp;size:{{ Nobr $value.master.table_size }} {{ range $skey, $host := $.hosts.replicas }} | Usage:&nbsp;{{ (index $value $host).idx_scan }}<br/>Index&nbsp;size:{{ Nobr (index $value $host).index_size }}<br/>Table&nbsp;size:{{ Nobr (index $value $host).table_size }}{{- end -}} | {{ if $value.usage }} Used{{ else }}Not used {{ end }}
@@ -45,7 +48,8 @@ Index | Reason |{{.hosts.master}} {{ range $skey, $host := .hosts.replicas }}| {
4548

4649
Index | {{.hosts.master}} usage {{ range $skey, $host := .hosts.replicas }}| {{ $host }} usage {{ end }}| Usage | Index size
4750
--------|-------{{ range $skey, $host := .hosts.replicas }}|--------{{ end }}|-----|-----
48-
{{ range $key, $value := (index .resultData "redundant_indexes") }}
51+
{{ range $i, $key := (index (index .resultData "redundant_indexes") "_keys") }}
52+
{{- $value := (index (index $.resultData "redundant_indexes") $key) -}}
4953
{{- if ne $key "_keys" -}}
5054
{{- if $value.usage -}}
5155
{{- else -}}

resources/checks/A005_extensions.sh

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,27 @@
33
sql=$(curl -s -L https://raw.githubusercontent.com/NikolayS/postgres_dba/5.0/sql/e1_extensions.sql | awk '{gsub("; *$", "", $0); print $0}')
44

55
dbs=$(${CHECK_HOST_CMD} "${_PSQL} -f - " <<SQL
6-
select datname from pg_database where datname not in ('template0', 'template1', 'postgres')
6+
select
7+
datname
8+
from pg_database
9+
where datname not in ('template0', 'template1', 'postgres')
10+
order by datname
711
SQL
812
)
913

1014
result="{ }"
1115

1216
for cur_db in ${dbs}; do
13-
1417
object=$(${CHECK_HOST_CMD} "${_PSQL} -d "$cur_db" -f -" <<SQL
1518
with data as (
16-
$sql
19+
$sql
1720
), withsettins as (
18-
select data.*, (select json_object_agg(name, setting) from pg_settings where name ~ data.name) as settings from data
21+
select
22+
data.*,
23+
(select json_object_agg(name, setting)
24+
from pg_settings
25+
where name ~ data.name) as settings from data
26+
order by name
1927
)
2028
select json_object_agg(withsettins.name, withsettins) as json from withsettins;
2129
SQL
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Collect pg_settings and pg_config values data to compare with same values from other domains
22
# Require comparation in plugin
3-
pg_settings=$(${CHECK_HOST_CMD} "${_PSQL} -c \"select json_object_agg(s.name, s) from pg_settings s;\"")
4-
pg_config=$(${CHECK_HOST_CMD} "${_PSQL} -c \"select json_object_agg(c.name, c) from pg_config c;\"")
3+
pg_settings=$(${CHECK_HOST_CMD} "${_PSQL} -c \"select json_object_agg(s.name, s) from (select * from pg_settings s order by name) s;\"")
4+
pg_config=$(${CHECK_HOST_CMD} "${_PSQL} -c \"select json_object_agg(s.name, s) from (select * from pg_config s order by name) s;\"")
55
echo '{ "pg_settings": '$pg_settings', "pg_config":'$pg_config'}'
66

resources/checks/F001_autovacuum_settings.sh

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,32 @@
11
settings=$(${CHECK_HOST_CMD} "${_PSQL} -f - " <<SQL
22
with global_settings as (
3-
select json_object_agg(s.name, s) from pg_settings s
4-
where (
5-
name ~ e'^(auto)?vacuum'
6-
or name in (
7-
'hot_standby_feedback',
8-
'maintenance_work_mem'
3+
select
4+
json_object_agg(s.name, s)
5+
from (
6+
select *
7+
from pg_settings
8+
where (
9+
name ~ e'^(auto)?vacuum'
10+
or name in (
11+
'hot_standby_feedback',
12+
'maintenance_work_mem'
13+
)
914
)
10-
)
15+
order by name
16+
) s
1117
), table_settings as (
12-
select json_object_agg(s.namespace || '.' || s.relname, s) from
18+
select
19+
json_object_agg(s.namespace || '.' || s.relname, s)
20+
from
1321
(select
1422
(select nspname from pg_namespace where oid = relnamespace)
1523
namespace,
1624
relname,
1725
reloptions
1826
from pg_class
19-
where reloptions::text ~ 'autovacuum') s
27+
where reloptions::text ~ 'autovacuum'
28+
order by namespace, relname
29+
) s
2030
)
2131
select json_build_object('global_settings', (select * from global_settings), 'table_settings', (select * from table_settings));
2232
SQL

0 commit comments

Comments
 (0)