Compare commits
95 Commits
Author | SHA1 | Date |
---|---|---|
|
9e0a252873 | |
|
3653dd6041 | |
|
76b0802142 | |
|
61662cc58f | |
|
f7dc7fb5fe | |
|
38f13e893f | |
|
9d2f2cd8cc | |
|
d0237f8d83 | |
|
d116dd47fe | |
|
9c72c2e73d | |
|
76424b6c64 | |
|
f76b1860e3 | |
|
a7edd766e3 | |
|
24c1c59416 | |
|
b860effd97 | |
|
64b08e422c | |
|
acd559842f | |
|
8bbb49e409 | |
|
7bddd5a033 | |
|
5312f6f8a7 | |
|
c305b8a086 | |
|
8dcf24a879 | |
|
32b1beb6ff | |
|
9333608c3a | |
|
4ebb3d1f36 | |
|
fd43b75153 | |
|
c949d21656 | |
|
fbdff8b444 | |
|
e099628e18 | |
|
d2b2eafc85 | |
|
ba8d7bd83b | |
|
b47ae95fa8 | |
|
980116acea | |
|
ef9518c98e | |
|
2769e6dcb2 | |
|
d0b67ef32a | |
|
d008bbbfa7 | |
|
971c62025e | |
|
8ed7f1dbb7 | |
|
2a5a2f07c4 | |
|
7d57e2476f | |
|
6c7512afa5 | |
|
ee7f6d071f | |
|
7f1344e12d | |
|
85f0401b96 | |
|
df65136090 | |
|
534790f39b | |
|
646f01420f | |
|
c63e172100 | |
|
091b5866d4 | |
|
186c2e4795 | |
|
c921d483a8 | |
|
467394fb6e | |
|
bcf7bed60b | |
|
0c50b23d6f | |
|
3bb65798fd | |
|
130d6b5fce | |
|
1aa3081eaf | |
|
7680ceafd6 | |
|
778043a5db | |
|
d7999f1acf | |
|
16ec8362e2 | |
|
dacb41f9e4 | |
|
c796995e0c | |
|
fdec44af94 | |
|
0db7f70028 | |
|
d83d202b9c | |
|
74d98475a8 | |
|
508e35943e | |
|
8d974c958f | |
|
a88c23a626 | |
|
288ec6325f | |
|
61256faf83 | |
|
2b9817d3ba | |
|
0ba80547e6 | |
|
5d7c424fdc | |
|
c2923b4d61 | |
|
dce1913154 | |
|
2ebd163225 | |
|
e3d6dc4af7 | |
|
0275fc742e | |
|
f72b8a9537 | |
|
175e568515 | |
|
0bf2846748 | |
|
e303899652 | |
|
43f3c27141 | |
|
e1ad88a580 | |
|
7829869dc7 | |
|
684e6483b5 | |
|
c89879e372 | |
|
64c71f98de | |
|
7ea569e6bc | |
|
3d846105c5 | |
|
7ecd10a7de | |
|
5bb67963e7 |
|
@ -0,0 +1,4 @@
|
||||||
|
# https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
||||||
|
# Order is important; the last matching pattern takes the most precedence.
|
||||||
|
|
||||||
|
* @artemgavrilov @dutow
|
|
@ -0,0 +1,60 @@
|
||||||
|
name: Bug Report
|
||||||
|
description: File a bug report
|
||||||
|
labels: ["bug"]
|
||||||
|
assignees:
|
||||||
|
- artemgavrilov
|
||||||
|
- dutow
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this bug report! Please provide as much information as possible, it will help us to address this problem faster.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Please describe the problem.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: expected
|
||||||
|
attributes:
|
||||||
|
label: Expected Results
|
||||||
|
description: What did you expect to happen?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: actual
|
||||||
|
attributes:
|
||||||
|
label: Actual Results
|
||||||
|
description: What actually happened?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: Version
|
||||||
|
description: What version of PostgreSQL and pg_stat_monitor are you running?
|
||||||
|
placeholder: PostgreSQL 16.2, pg_stat_monitor v2.0.4
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: steps
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: Which steps do we need to take to reproduce this error?
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Relevant logs
|
||||||
|
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||||
|
render: Shell
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: Code of Conduct
|
||||||
|
description: By submitting this issue, you agree to follow [Percona Community Code of Conduct](https://github.com/percona/community/blob/main/content/contribute/coc.md)
|
||||||
|
options:
|
||||||
|
- label: I agree to follow Percona Community Code of Conduct
|
||||||
|
required: true
|
|
@ -0,0 +1,5 @@
|
||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: Forum
|
||||||
|
url: https://forums.percona.com/
|
||||||
|
about: Please join our forums for general questions ans discussions.
|
|
@ -0,0 +1,37 @@
|
||||||
|
name: Feature Request
|
||||||
|
description: Suggest an idea for this project
|
||||||
|
labels: ["feature"]
|
||||||
|
assignees:
|
||||||
|
- artemgavrilov
|
||||||
|
- dutow
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thank you for suggesting an idea to make pg_stat_monitor better! Please complete the below form to ensure we have all the details to get things started.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Description of the feature and of the problem it solves.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: solution
|
||||||
|
attributes:
|
||||||
|
label: Suggested solution
|
||||||
|
description: A concise description of your preferred solution.
|
||||||
|
- type: textarea
|
||||||
|
id: context
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Any information that may help.
|
||||||
|
- type: checkboxes
|
||||||
|
id: terms
|
||||||
|
attributes:
|
||||||
|
label: Code of Conduct
|
||||||
|
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/percona/community/blob/main/content/contribute/coc.md)
|
||||||
|
options:
|
||||||
|
- label: I agree to follow this project's Code of Conduct
|
||||||
|
required: true
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
|
@ -0,0 +1,9 @@
|
||||||
|
PG-0
|
||||||
|
|
||||||
|
### Description
|
||||||
|
<!--- Describe your changes in detail -->
|
||||||
|
|
||||||
|
|
||||||
|
### Links
|
||||||
|
<!--- Please provide links to any related PRs in this or other repositories --->
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
name: Checks
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cppcheck:
|
||||||
|
name: Cppcheck
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 5
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
path: src/pg_stat_monitor
|
||||||
|
|
||||||
|
- name: Checkout cppcheck sources
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
repository: "danmar/cppcheck"
|
||||||
|
ref: "2.13.4"
|
||||||
|
path: src/cppcheck
|
||||||
|
|
||||||
|
- name: Build and install cppcheck
|
||||||
|
working-directory: src/cppcheck
|
||||||
|
run: |
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
cmake --build .
|
||||||
|
sudo cmake --install .
|
||||||
|
|
||||||
|
- name: Execute linter check with cppcheck
|
||||||
|
working-directory: src/pg_stat_monitor
|
||||||
|
run: |
|
||||||
|
set -x
|
||||||
|
cppcheck --enable=all --inline-suppr --template='{file}:{line},{severity},{id},{message}' --error-exitcode=1 --suppress=missingIncludeSystem --suppress=missingInclude --suppress=unmatchedSuppression:pg_stat_monitor.c --check-config .
|
||||||
|
|
||||||
|
format:
|
||||||
|
name: Format
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 5
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone postgres repository
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
repository: 'postgres/postgres'
|
||||||
|
ref: 'REL_17_STABLE'
|
||||||
|
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
path: 'contrib/pg_stat_monitor'
|
||||||
|
|
||||||
|
- name: Configure postgres
|
||||||
|
run: ./configure
|
||||||
|
|
||||||
|
- name: Install perltidy
|
||||||
|
run: sudo cpan -T SHANCOCK/Perl-Tidy-20230309.tar.gz
|
||||||
|
|
||||||
|
- name: Install pg_bsd_indent
|
||||||
|
working-directory: src/tools/pg_bsd_indent
|
||||||
|
run: sudo make install
|
||||||
|
|
||||||
|
- name: Add pg_bsd_indent and pgindent to path
|
||||||
|
run: |
|
||||||
|
echo "/usr/local/pgsql/bin" >> $GITHUB_PATH
|
||||||
|
echo "${{ github.workspace }}/src/tools/pgindent" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
- name: Format sources
|
||||||
|
working-directory: contrib/pg_stat_monitor
|
||||||
|
run: |
|
||||||
|
make update-typedefs
|
||||||
|
make indent
|
||||||
|
|
||||||
|
- name: Check files are formatted and no source code changes
|
||||||
|
working-directory: contrib/pg_stat_monitor
|
||||||
|
run: |
|
||||||
|
git status
|
||||||
|
git diff --exit-code
|
||||||
|
|
||||||
|
license:
|
||||||
|
name: License
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 5
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
|
- name: Check license headers
|
||||||
|
uses: apache/skywalking-eyes/header@5c5b974209f0de5d905f37deb69369068ebfc15c # v0.7.0
|
||||||
|
with:
|
||||||
|
token: "" # Prevent comments
|
|
@ -1,13 +1,22 @@
|
||||||
name: code-coverage-test
|
name: code-coverage-test
|
||||||
on: [pull_request]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: coverage-test
|
name: coverage-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone postgres repository
|
- name: Clone postgres repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'postgres/postgres'
|
repository: 'postgres/postgres'
|
||||||
ref: 'REL_15_STABLE'
|
ref: 'REL_15_STABLE'
|
||||||
|
@ -28,7 +37,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Create pgsql dir
|
- name: Create pgsql dir
|
||||||
|
@ -74,7 +83,7 @@ jobs:
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -104,9 +113,10 @@ jobs:
|
||||||
working-directory: src/pg_stat_monitor
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: codecov/codecov-action@v2
|
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
|
||||||
with:
|
with:
|
||||||
verbose: true
|
verbose: true
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
working-directory: ./src/pg_stat_monitor
|
working-directory: ./src/pg_stat_monitor
|
||||||
files: ./pg_stat_monitor.c.gcov,./hash_query.c.gcov,./guc.c.gcov
|
files: ./pg_stat_monitor.c.gcov,./hash_query.c.gcov,./guc.c.gcov
|
||||||
|
|
||||||
|
@ -120,7 +130,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
name: cppcheck-action-test
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: cppcheck-test
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: install cppcheck
|
|
||||||
run: sudo apt-get install cppcheck
|
|
||||||
|
|
||||||
- name: Execute linter check with cppcheck
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
cppcheck --enable=all --inline-suppr --template='{file}:{line},{severity},{id},{message}' --error-exitcode=1 --suppress=missingIncludeSystem --suppress=missingInclude --suppress=unmatchedSuppression:pg_stat_monitor.c --check-config .
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
name: PGXN
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Version to release'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Release
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 10
|
||||||
|
container: pgxn/pgxn-tools
|
||||||
|
steps:
|
||||||
|
- name: Validate version tag
|
||||||
|
run: '[[ ${{ inputs.version }} =~ ^[0-9]+.[0-9]+.[0-9]+ ]]'
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Check out
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
ref: '${{ inputs.version }}'
|
||||||
|
|
||||||
|
- name: Bundle
|
||||||
|
id: bundle
|
||||||
|
run: pgxn-bundle
|
||||||
|
|
||||||
|
- name: Upload
|
||||||
|
env:
|
||||||
|
PGXN_USERNAME: percona
|
||||||
|
PGXN_PASSWORD: ${{ secrets.PGXN_PERCONA }}
|
||||||
|
run: pgxn-release
|
|
@ -1,121 +0,0 @@
|
||||||
name: postgresql-11-build
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: pg-11-build-test
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: Clone postgres repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: 'postgres/postgres'
|
|
||||||
ref: 'REL_11_STABLE'
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt purge postgresql-client-common postgresql-common \
|
|
||||||
postgresql postgresql*
|
|
||||||
sudo apt-get install -y libreadline6-dev systemtap-sdt-dev \
|
|
||||||
zlib1g-dev libssl-dev libpam0g-dev bison flex \
|
|
||||||
libipc-run-perl -y docbook-xsl docbook-xsl libxml2 libxml2-utils \
|
|
||||||
libxml2-dev libxslt-dev xsltproc libkrb5-dev libldap2-dev \
|
|
||||||
libsystemd-dev gettext tcl-dev libperl-dev pkg-config clang-11 \
|
|
||||||
llvm-11 llvm-11-dev libselinux1-dev python3-dev uuid-dev liblz4-dev
|
|
||||||
sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \
|
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
|
||||||
/etc/postgresql
|
|
||||||
sudo rm -f /usr/bin/pg_config
|
|
||||||
|
|
||||||
- name: Create pgsql dir
|
|
||||||
run: mkdir -p /opt/pgsql
|
|
||||||
|
|
||||||
- name: Build postgres
|
|
||||||
run: |
|
|
||||||
export PATH="/opt/pgsql/bin:$PATH"
|
|
||||||
./configure '--build=x86_64-linux-gnu' '--prefix=/usr' \
|
|
||||||
'--includedir=/usr/include' '--mandir=/usr/share/man' \
|
|
||||||
'--infodir=/usr/share/info' '--sysconfdir=/etc' '--enable-nls' \
|
|
||||||
'--localstatedir=/var' '--libdir=/usr/lib/x86_64-linux-gnu' \
|
|
||||||
'runstatedir=/run' '--with-icu' '--with-tcl' '--with-perl' \
|
|
||||||
'--with-python' '--with-pam' '--with-openssl' '--with-libxml' \
|
|
||||||
'--with-libxslt' 'PYTHON=/usr/bin/python3' 'MKDIR_P=/bin/mkdir -p' \
|
|
||||||
'--mandir=/usr/share/postgresql/11/man' '--enable-dtrace' \
|
|
||||||
'--docdir=/usr/share/doc/postgresql-doc-11' '--enable-debug' \
|
|
||||||
'--sysconfdir=/etc/postgresql-common' '--datarootdir=/usr/share' \
|
|
||||||
'--datadir=/usr/share/postgresql/11' '--enable-thread-safety' \
|
|
||||||
'--bindir=/usr/lib/postgresql/11/bin' '--enable-tap-tests' \
|
|
||||||
'--libdir=/usr/lib/x86_64-linux-gnu' '--disable-rpath' \
|
|
||||||
'--libexecdir=/usr/lib/postgresql' '--with-uuid=e2fs' \
|
|
||||||
'--includedir=/usr/include/postgresql' '--with-gnu-ld' \
|
|
||||||
'--with-pgport=5432' '--with-system-tzdata=/usr/share/zoneinfo' \
|
|
||||||
'--with-llvm' 'LLVM_CONFIG=/usr/bin/llvm-config-11' \
|
|
||||||
'CLANG=/usr/bin/clang-11' '--with-systemd' '--with-selinux' \
|
|
||||||
'PROVE=/usr/bin/prove' 'TAR=/bin/tar' '--with-gssapi' '--with-ldap' \
|
|
||||||
'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' \
|
|
||||||
'--with-includes=/usr/include/mit-krb5' '--with-libs=/usr/lib/mit-krb5' \
|
|
||||||
'--with-libs=/usr/lib/x86_64-linux-gnu/mit-krb5' \
|
|
||||||
'build_alias=x86_64-linux-gnu' \
|
|
||||||
'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' \
|
|
||||||
'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fno-omit-frame-pointer' \
|
|
||||||
'CXXFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security'
|
|
||||||
make world
|
|
||||||
sudo make install-world
|
|
||||||
|
|
||||||
- name: Start postgresql cluster
|
|
||||||
run: |
|
|
||||||
export PATH="/usr/lib/postgresql/11/bin:$PATH"
|
|
||||||
sudo cp /usr/lib/postgresql/11/bin/pg_config /usr/bin
|
|
||||||
initdb -D /opt/pgsql/data
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
|
||||||
|
|
||||||
- name: Clone pg_stat_monitor repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
path: 'src/pg_stat_monitor'
|
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
|
||||||
run: |
|
|
||||||
make USE_PGXS=1
|
|
||||||
sudo make USE_PGXS=1 install
|
|
||||||
working-directory: src/pg_stat_monitor/
|
|
||||||
|
|
||||||
- name: Load pg_stat_monitor library and Restart Server
|
|
||||||
run: |
|
|
||||||
export PATH="/usr/lib/postgresql/11/bin:$PATH"
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile stop
|
|
||||||
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
|
||||||
/opt/pgsql/data/postgresql.conf
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
|
||||||
working-directory: src/pg_stat_monitor
|
|
||||||
|
|
||||||
- name: Start pg_stat_monitor_tests
|
|
||||||
run: |
|
|
||||||
make installcheck
|
|
||||||
working-directory: src/pg_stat_monitor
|
|
||||||
|
|
||||||
- name: Report on pg_stat_monitor test fail
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
if: ${{ failure() }}
|
|
||||||
with:
|
|
||||||
name: Regressions diff and postgresql log
|
|
||||||
path: |
|
|
||||||
src/pg_stat_monitor/regression.diffs
|
|
||||||
src/pg_stat_monitor/logfile
|
|
||||||
retention-days: 1
|
|
||||||
|
|
||||||
- name: Start Server installcheck-world tests
|
|
||||||
run: |
|
|
||||||
make installcheck-world
|
|
||||||
|
|
||||||
- name: Report on installcheck-world test suites fail
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
if: ${{ failure() }}
|
|
||||||
with:
|
|
||||||
name: Regressions output files of failed testsuite, and pg log
|
|
||||||
path: |
|
|
||||||
**/regression.diffs
|
|
||||||
**/regression.out
|
|
||||||
src/pg_stat_monitor/logfile
|
|
||||||
retention-days: 3
|
|
|
@ -1,63 +0,0 @@
|
||||||
name: postgresql-11-pgdg-package
|
|
||||||
on: [pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: pg-11-pgdg-package-test
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- name: Clone pg_stat_monitor repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
path: 'src/pg_stat_monitor'
|
|
||||||
|
|
||||||
- name: Delete old postgresql files
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt purge postgresql-client-common postgresql-common \
|
|
||||||
postgresql postgresql*
|
|
||||||
sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \
|
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
|
||||||
/etc/postgresql
|
|
||||||
sudo rm -f /usr/bin/pg_config
|
|
||||||
|
|
||||||
- name: Install PG Distribution Postgresql 11
|
|
||||||
run: |
|
|
||||||
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt \
|
|
||||||
$(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
|
|
||||||
sudo wget --quiet -O - \
|
|
||||||
https://www.postgresql.org/media/keys/ACCC4CF8.asc |
|
|
||||||
sudo apt-key add -
|
|
||||||
sudo apt-get -y update
|
|
||||||
sudo apt-get -y install postgresql-11 postgresql-server-dev-11
|
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
|
||||||
run: |
|
|
||||||
sudo chown -R postgres:postgres src
|
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
|
||||||
run: |
|
|
||||||
sudo -u postgres bash -c 'make USE_PGXS=1'
|
|
||||||
sudo make USE_PGXS=1 install
|
|
||||||
working-directory: src/pg_stat_monitor
|
|
||||||
|
|
||||||
- name: Start pg_stat_monitor_tests
|
|
||||||
run: |
|
|
||||||
sudo service postgresql stop
|
|
||||||
echo "shared_preload_libraries = 'pg_stat_monitor'" |
|
|
||||||
sudo tee -a /etc/postgresql/11/main/postgresql.conf
|
|
||||||
sudo service postgresql start
|
|
||||||
sudo psql -V
|
|
||||||
export PG_TEST_PORT_DIR=/home/postgres
|
|
||||||
sudo -u postgres bash -c 'make installcheck USE_PGXS=1'
|
|
||||||
working-directory: src/pg_stat_monitor
|
|
||||||
|
|
||||||
- name: Report on test fail
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
if: ${{ failure() }}
|
|
||||||
with:
|
|
||||||
name: Regressions diff and postgresql log
|
|
||||||
path: |
|
|
||||||
src/pg_stat_monitor/regression.diffs
|
|
||||||
src/pg_stat_monitor/logfile
|
|
||||||
retention-days: 3
|
|
|
@ -1,41 +0,0 @@
|
||||||
name: postgresql-11-pmm-integration
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: pg-11-pgsm-pmm-integration-test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 30
|
|
||||||
steps:
|
|
||||||
- name: Clone QA Integration repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
repository: 'Percona-Lab/qa-integration'
|
|
||||||
ref: 'main'
|
|
||||||
|
|
||||||
# print branch and Repo name
|
|
||||||
- name: Get branch and Repo Name
|
|
||||||
run: echo 'The branch and Repo Name is' ${{ github.head_ref }} ${{ github.actor }}/pg_stat_monitor
|
|
||||||
|
|
||||||
- name: "Set TARGET_BRANCH variable for a PR run"
|
|
||||||
if: github.event_name == 'pull_request'
|
|
||||||
run: echo "TARGET_BRANCH=${{ github.event.pull_request.base.ref }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: "Set TARGET_BRANCH variable for a PUSH run"
|
|
||||||
if: github.event_name == 'push'
|
|
||||||
run: echo "TARGET_BRANCH=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Run PMM & PGSM Setup, E2E Tests
|
|
||||||
run: bash -xe ./pmm_pgsm_setup/pmm_pgsm_setup.sh --pgsql-version=11 --pgstat-monitor-branch=${{ env.TARGET_BRANCH }}
|
|
||||||
|
|
||||||
- name: Get PMM-Agent Logs from the Container
|
|
||||||
if: success() || failure() # run this step even if previous step failed
|
|
||||||
run: docker exec pgsql_pgsm_11 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
|
||||||
|
|
||||||
- name: Upload Tests Artifacts
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
if: success() || failure() # run this step even if previous step failed
|
|
||||||
with:
|
|
||||||
name: tests-artifact
|
|
||||||
path: ./pmm-ui-tests/tests/output/
|
|
||||||
if-no-files-found: ignore # 'warn' or 'ignore' are also available, defaults to `warn`
|
|
|
@ -1,72 +0,0 @@
|
||||||
name: postgresql-11-ppg-package
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: pg-11-ppg-package-test
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- name: Clone pg_stat_monitor repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
path: 'src/pg_stat_monitor'
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt purge postgresql-client-common postgresql-common \
|
|
||||||
postgresql postgresql*
|
|
||||||
sudo apt-get install -y libreadline6-dev systemtap-sdt-dev \
|
|
||||||
zlib1g-dev libssl-dev libpam0g-dev python3-dev bison flex \
|
|
||||||
libipc-run-perl wget
|
|
||||||
sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \
|
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
|
||||||
/etc/postgresql
|
|
||||||
sudo rm -f /usr/bin/pg_config
|
|
||||||
|
|
||||||
- name: Install percona-release script
|
|
||||||
run: |
|
|
||||||
sudo apt-get -y update
|
|
||||||
sudo apt-get -y upgrade
|
|
||||||
sudo apt-get install -y wget gnupg2 curl lsb-release
|
|
||||||
sudo wget \
|
|
||||||
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
|
||||||
sudo dpkg -i percona-release_latest.generic_all.deb
|
|
||||||
|
|
||||||
- name: Install Percona Distribution Postgresql 11
|
|
||||||
run: |
|
|
||||||
sudo percona-release setup ppg-11
|
|
||||||
sudo apt-get update -y
|
|
||||||
sudo apt-get install -y percona-postgresql-11 \
|
|
||||||
percona-postgresql-contrib percona-postgresql-server-dev-all
|
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
|
||||||
run: |
|
|
||||||
sudo chown -R postgres:postgres src
|
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
|
||||||
run: |
|
|
||||||
sudo -u postgres bash -c 'make USE_PGXS=1'
|
|
||||||
sudo make USE_PGXS=1 install
|
|
||||||
working-directory: src/pg_stat_monitor
|
|
||||||
|
|
||||||
- name: Start pg_stat_monitor_tests
|
|
||||||
run: |
|
|
||||||
sudo service postgresql stop
|
|
||||||
echo "shared_preload_libraries = 'pg_stat_monitor'" |
|
|
||||||
sudo tee -a /etc/postgresql/11/main/postgresql.conf
|
|
||||||
sudo service postgresql start
|
|
||||||
sudo psql -V
|
|
||||||
export PG_TEST_PORT_DIR=/home/postgres
|
|
||||||
sudo -u postgres bash -c 'make installcheck USE_PGXS=1'
|
|
||||||
working-directory: src/pg_stat_monitor
|
|
||||||
|
|
||||||
- name: Report on test fail
|
|
||||||
uses: actions/upload-artifact@v2
|
|
||||||
if: ${{ failure() }}
|
|
||||||
with:
|
|
||||||
name: Regressions diff and postgresql log
|
|
||||||
path: |
|
|
||||||
src/pg_stat_monitor/regression.diffs
|
|
||||||
src/pg_stat_monitor/logfile
|
|
||||||
retention-days: 3
|
|
|
@ -1,13 +1,24 @@
|
||||||
name: postgresql-12-build
|
name: postgresql-12-build
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-12-build-test
|
name: pg-12-build-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone postgres repository
|
- name: Clone postgres repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'postgres/postgres'
|
repository: 'postgres/postgres'
|
||||||
ref: 'REL_12_STABLE'
|
ref: 'REL_12_STABLE'
|
||||||
|
@ -27,7 +38,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Create pgsql dir
|
- name: Create pgsql dir
|
||||||
|
@ -73,7 +84,7 @@ jobs:
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -107,7 +118,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
@ -130,7 +141,7 @@ jobs:
|
||||||
make installcheck-world
|
make installcheck-world
|
||||||
|
|
||||||
- name: Report on installcheck-world test suites fail
|
- name: Report on installcheck-world test suites fail
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
name: Regressions output files of failed testsuite, and pg log
|
name: Regressions output files of failed testsuite, and pg log
|
||||||
|
|
|
@ -1,13 +1,24 @@
|
||||||
name: postgresql-12-pgdg-package
|
name: postgresql-12-pgdg-package
|
||||||
on: [pull_request]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-12-pgdg-package-test
|
name: pg-12-pgdg-package-test
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -23,7 +34,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install PG Distribution Postgresql 12
|
- name: Install PG Distribution Postgresql 12
|
||||||
|
@ -38,6 +49,7 @@ jobs:
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
sudo chmod o+rx ~
|
||||||
sudo chown -R postgres:postgres src
|
sudo chown -R postgres:postgres src
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
- name: Build pg_stat_monitor
|
||||||
|
@ -68,7 +80,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
name: postgresql-12-pmm-integration
|
name: postgresql-12-pmm-integration
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -8,7 +17,7 @@ jobs:
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone QA Integration repository
|
- name: Clone QA Integration repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'Percona-Lab/qa-integration'
|
repository: 'Percona-Lab/qa-integration'
|
||||||
ref: 'main'
|
ref: 'main'
|
||||||
|
@ -33,7 +42,7 @@ jobs:
|
||||||
run: docker exec pgsql_pgsm_12 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
run: docker exec pgsql_pgsm_12 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
||||||
|
|
||||||
- name: Upload Tests Artifacts
|
- name: Upload Tests Artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: success() || failure() # run this step even if previous step failed
|
if: success() || failure() # run this step even if previous step failed
|
||||||
with:
|
with:
|
||||||
name: tests-artifact
|
name: tests-artifact
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-12-ppg-package
|
name: postgresql-12-ppg-package
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-12-ppg-package-test
|
name: pg-12-ppg-package-test
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -26,7 +36,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install percona-release script
|
- name: Install percona-release script
|
||||||
|
@ -38,15 +48,23 @@ jobs:
|
||||||
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
||||||
sudo dpkg -i percona-release_latest.generic_all.deb
|
sudo dpkg -i percona-release_latest.generic_all.deb
|
||||||
|
|
||||||
- name: Install Percona Distribution Postgresql 12
|
- name: Install Percona Distribution Postgresql 12 & Extensions
|
||||||
run: |
|
run: |
|
||||||
sudo percona-release setup ppg-12
|
sudo percona-release setup ppg-12
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y percona-postgresql-12 \
|
sudo apt-get install -y percona-postgresql-12 \
|
||||||
percona-postgresql-contrib percona-postgresql-server-dev-all
|
percona-postgresql-contrib percona-postgresql-server-dev-all \
|
||||||
|
percona-pgpool2 libpgpool2 percona-postgresql-12-pgaudit \
|
||||||
|
percona-postgresql-12-pgaudit-dbgsym percona-postgresql-12-repack \
|
||||||
|
percona-postgresql-12-repack-dbgsym percona-pgaudit12-set-user \
|
||||||
|
percona-pgaudit12-set-user-dbgsym percona-postgresql-12-postgis-3 \
|
||||||
|
percona-postgresql-12-postgis-3-scripts \
|
||||||
|
percona-postgresql-postgis-scripts percona-postgresql-postgis \
|
||||||
|
percona-postgis
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
sudo chmod o+rx ~
|
||||||
sudo chown -R postgres:postgres src
|
sudo chown -R postgres:postgres src
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
- name: Build pg_stat_monitor
|
||||||
|
@ -77,7 +95,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-13-build
|
name: postgresql-13-build
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-13-build-test
|
name: pg-13-build-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone postgres repository
|
- name: Clone postgres repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'postgres/postgres'
|
repository: 'postgres/postgres'
|
||||||
ref: 'REL_13_STABLE'
|
ref: 'REL_13_STABLE'
|
||||||
|
@ -27,7 +37,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Create pgsql dir
|
- name: Create pgsql dir
|
||||||
|
@ -73,7 +83,7 @@ jobs:
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -107,7 +117,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
@ -130,7 +140,7 @@ jobs:
|
||||||
make installcheck-world
|
make installcheck-world
|
||||||
|
|
||||||
- name: Report on installcheck-world test suites fail
|
- name: Report on installcheck-world test suites fail
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
name: Regressions output files of failed testsuite, and pg log
|
name: Regressions output files of failed testsuite, and pg log
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-13-pgdg-package
|
name: postgresql-13-pgdg-package
|
||||||
on: [pull_request]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-13-pgdg-package-test
|
name: pg-13-pgdg-package-test
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -23,7 +33,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install PG Distribution Postgresql 13
|
- name: Install PG Distribution Postgresql 13
|
||||||
|
@ -38,6 +48,7 @@ jobs:
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
sudo chmod o+rx ~
|
||||||
sudo chown -R postgres:postgres src
|
sudo chown -R postgres:postgres src
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
- name: Build pg_stat_monitor
|
||||||
|
@ -68,7 +79,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
name: postgresql-13-pmm-integration
|
name: postgresql-13-pmm-integration
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -8,7 +17,7 @@ jobs:
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone QA Integration repository
|
- name: Clone QA Integration repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'Percona-Lab/qa-integration'
|
repository: 'Percona-Lab/qa-integration'
|
||||||
ref: 'main'
|
ref: 'main'
|
||||||
|
@ -33,7 +42,7 @@ jobs:
|
||||||
run: docker exec pgsql_pgsm_13 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
run: docker exec pgsql_pgsm_13 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
||||||
|
|
||||||
- name: Upload Tests Artifacts
|
- name: Upload Tests Artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: success() || failure() # run this step even if previous step failed
|
if: success() || failure() # run this step even if previous step failed
|
||||||
with:
|
with:
|
||||||
name: tests-artifact
|
name: tests-artifact
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-13-ppg-package
|
name: postgresql-13-ppg-package
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-13-ppg-package-test
|
name: pg-13-ppg-package-test
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -23,7 +33,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install percona-release script
|
- name: Install percona-release script
|
||||||
|
@ -35,15 +45,23 @@ jobs:
|
||||||
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
||||||
sudo dpkg -i percona-release_latest.generic_all.deb
|
sudo dpkg -i percona-release_latest.generic_all.deb
|
||||||
|
|
||||||
- name: Install Percona Distribution Postgresql 13
|
- name: Install Percona Distribution Postgresql 13 & Extensions
|
||||||
run: |
|
run: |
|
||||||
sudo percona-release setup ppg-13
|
sudo percona-release setup ppg-13
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y percona-postgresql-13 \
|
sudo apt-get install -y percona-postgresql-13 \
|
||||||
percona-postgresql-contrib percona-postgresql-server-dev-all
|
percona-postgresql-contrib percona-postgresql-server-dev-all \
|
||||||
|
percona-pgpool2 libpgpool2 percona-postgresql-13-pgaudit \
|
||||||
|
percona-postgresql-13-pgaudit-dbgsym percona-postgresql-13-repack \
|
||||||
|
percona-postgresql-13-repack-dbgsym percona-pgaudit13-set-user \
|
||||||
|
percona-pgaudit13-set-user-dbgsym percona-postgresql-13-postgis-3 \
|
||||||
|
percona-postgresql-13-postgis-3-scripts \
|
||||||
|
percona-postgresql-postgis-scripts percona-postgresql-postgis \
|
||||||
|
percona-postgis
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
sudo chmod o+rx ~
|
||||||
sudo chown -R postgres:postgres src
|
sudo chown -R postgres:postgres src
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
- name: Build pg_stat_monitor
|
||||||
|
@ -74,7 +92,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-14-build
|
name: postgresql-14-build
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-14-build-test
|
name: pg-14-build-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone postgres repository
|
- name: Clone postgres repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'postgres/postgres'
|
repository: 'postgres/postgres'
|
||||||
ref: 'REL_14_STABLE'
|
ref: 'REL_14_STABLE'
|
||||||
|
@ -28,7 +38,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Create pgsql dir
|
- name: Create pgsql dir
|
||||||
|
@ -73,7 +83,7 @@ jobs:
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -83,12 +93,13 @@ jobs:
|
||||||
sudo make USE_PGXS=1 install
|
sudo make USE_PGXS=1 install
|
||||||
working-directory: src/pg_stat_monitor
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
- name: Load pg_stat_monitor library and Restart Server
|
- name: Configure and Restart Server
|
||||||
run: |
|
run: |
|
||||||
export PATH="/usr/lib/postgresql/14/bin:$PATH"
|
export PATH="/usr/lib/postgresql/14/bin:$PATH"
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile stop
|
pg_ctl -D /opt/pgsql/data -l logfile stop
|
||||||
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
||||||
/opt/pgsql/data/postgresql.conf
|
/opt/pgsql/data/postgresql.conf
|
||||||
|
echo "compute_query_id = regress" >> /opt/pgsql/data/postgresql.conf
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
working-directory: src/pg_stat_monitor
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
@ -107,7 +118,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
@ -126,15 +137,10 @@ jobs:
|
||||||
retention-days: 3
|
retention-days: 3
|
||||||
|
|
||||||
- name: Start Server installcheck-world tests
|
- name: Start Server installcheck-world tests
|
||||||
run: |
|
run: make installcheck-world
|
||||||
export PATH="/usr/lib/postgresql/14/bin:$PATH"
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile stop
|
|
||||||
echo "compute_query_id = off" >> /opt/pgsql/data/postgresql.conf
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
|
||||||
make installcheck-world
|
|
||||||
|
|
||||||
- name: Report on installcheck-world test suites fail
|
- name: Report on installcheck-world test suites fail
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
name: Regressions output files of failed testsuite, and pg log
|
name: Regressions output files of failed testsuite, and pg log
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-14-pgdg-package
|
name: postgresql-14-pgdg-package
|
||||||
on: [pull_request]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-14-pgdg-package-test
|
name: pg-14-pgdg-package-test
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -22,7 +32,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install PG Distribution Postgresql 14
|
- name: Install PG Distribution Postgresql 14
|
||||||
|
@ -37,6 +47,7 @@ jobs:
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
sudo chmod o+rx ~
|
||||||
sudo chown -R postgres:postgres src
|
sudo chown -R postgres:postgres src
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
- name: Build pg_stat_monitor
|
||||||
|
@ -67,7 +78,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
name: postgresql-14-pmm-integration
|
name: postgresql-14-pmm-integration
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -8,7 +17,7 @@ jobs:
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone QA Integration repository
|
- name: Clone QA Integration repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'Percona-Lab/qa-integration'
|
repository: 'Percona-Lab/qa-integration'
|
||||||
ref: 'main'
|
ref: 'main'
|
||||||
|
@ -33,7 +42,7 @@ jobs:
|
||||||
run: docker exec pgsql_pgsm_14 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
run: docker exec pgsql_pgsm_14 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
||||||
|
|
||||||
- name: Upload Tests Artifacts
|
- name: Upload Tests Artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: success() || failure() # run this step even if previous step failed
|
if: success() || failure() # run this step even if previous step failed
|
||||||
with:
|
with:
|
||||||
name: tests-artifact
|
name: tests-artifact
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-14-ppg-package
|
name: postgresql-14-ppg-package
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-14-ppg-package-test
|
name: pg-14-ppg-package-test
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -23,7 +33,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install percona-release script
|
- name: Install percona-release script
|
||||||
|
@ -35,15 +45,23 @@ jobs:
|
||||||
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
||||||
sudo dpkg -i percona-release_latest.generic_all.deb
|
sudo dpkg -i percona-release_latest.generic_all.deb
|
||||||
|
|
||||||
- name: Install Percona Distribution Postgresql 14
|
- name: Install Percona Distribution Postgresql 14 & Extensions
|
||||||
run: |
|
run: |
|
||||||
sudo percona-release setup ppg-14
|
sudo percona-release setup ppg-14
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y percona-postgresql-14 \
|
sudo apt-get install -y percona-postgresql-14 \
|
||||||
percona-postgresql-contrib percona-postgresql-server-dev-all
|
percona-postgresql-contrib percona-postgresql-server-dev-all \
|
||||||
|
percona-pgpool2 libpgpool2 percona-postgresql-14-pgaudit \
|
||||||
|
percona-postgresql-14-pgaudit-dbgsym percona-postgresql-14-repack \
|
||||||
|
percona-postgresql-14-repack-dbgsym percona-pgaudit14-set-user \
|
||||||
|
percona-pgaudit14-set-user-dbgsym percona-postgresql-14-postgis-3 \
|
||||||
|
percona-postgresql-14-postgis-3-scripts \
|
||||||
|
percona-postgresql-postgis-scripts percona-postgresql-postgis \
|
||||||
|
percona-postgis
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
sudo chmod o+rx ~
|
||||||
sudo chown -R postgres:postgres src
|
sudo chown -R postgres:postgres src
|
||||||
|
|
||||||
- name: Build pg_stat_monitor
|
- name: Build pg_stat_monitor
|
||||||
|
@ -74,7 +92,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-15-build
|
name: postgresql-15-build
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-15-build-test
|
name: pg-15-build-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone postgres repository
|
- name: Clone postgres repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'postgres/postgres'
|
repository: 'postgres/postgres'
|
||||||
ref: 'REL_15_STABLE'
|
ref: 'REL_15_STABLE'
|
||||||
|
@ -28,7 +38,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Create pgsql dir
|
- name: Create pgsql dir
|
||||||
|
@ -73,7 +83,7 @@ jobs:
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -83,12 +93,13 @@ jobs:
|
||||||
sudo make USE_PGXS=1 install
|
sudo make USE_PGXS=1 install
|
||||||
working-directory: src/pg_stat_monitor
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
- name: Load pg_stat_monitor library and Restart Server
|
- name: Configure and Restart Server
|
||||||
run: |
|
run: |
|
||||||
export PATH="/usr/lib/postgresql/15/bin:$PATH"
|
export PATH="/usr/lib/postgresql/15/bin:$PATH"
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile stop
|
pg_ctl -D /opt/pgsql/data -l logfile stop
|
||||||
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
||||||
/opt/pgsql/data/postgresql.conf
|
/opt/pgsql/data/postgresql.conf
|
||||||
|
echo "compute_query_id = regress" >> /opt/pgsql/data/postgresql.conf
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
working-directory: src/pg_stat_monitor
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
@ -107,7 +118,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
@ -126,15 +137,10 @@ jobs:
|
||||||
retention-days: 3
|
retention-days: 3
|
||||||
|
|
||||||
- name: Start Server installcheck-world tests
|
- name: Start Server installcheck-world tests
|
||||||
run: |
|
run: make installcheck-world
|
||||||
export PATH="/usr/lib/postgresql/15/bin:$PATH"
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile stop
|
|
||||||
echo "compute_query_id = off" >> /opt/pgsql/data/postgresql.conf
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
|
||||||
make installcheck-world
|
|
||||||
|
|
||||||
- name: Report on installcheck-world test suites fail
|
- name: Report on installcheck-world test suites fail
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
name: Regressions output files of failed testsuite, and pg log
|
name: Regressions output files of failed testsuite, and pg log
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-15-pgdg-package
|
name: postgresql-15-pgdg-package
|
||||||
on: [pull_request]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-15-pgdg-package-test
|
name: pg-15-pgdg-package-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -22,7 +32,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install PG Distribution Postgresql 15
|
- name: Install PG Distribution Postgresql 15
|
||||||
|
@ -68,7 +78,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
name: postgresql-15-pmm-integration
|
name: postgresql-15-pmm-integration
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -8,7 +17,7 @@ jobs:
|
||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone QA Integration repository
|
- name: Clone QA Integration repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'Percona-Lab/qa-integration'
|
repository: 'Percona-Lab/qa-integration'
|
||||||
ref: 'main'
|
ref: 'main'
|
||||||
|
@ -33,7 +42,7 @@ jobs:
|
||||||
run: docker exec pgsql_pgsm_15 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
run: docker exec pgsql_pgsm_15 cat pmm-agent.log > ./pmm-ui-tests/tests/output/pmm-agent.log
|
||||||
|
|
||||||
- name: Upload Tests Artifacts
|
- name: Upload Tests Artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: success() || failure() # run this step even if previous step failed
|
if: success() || failure() # run this step even if previous step failed
|
||||||
with:
|
with:
|
||||||
name: tests-artifact
|
name: tests-artifact
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-15-ppg-package
|
name: postgresql-15-ppg-package
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-15-ppg-package-test
|
name: pg-15-ppg-package-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -23,7 +33,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install percona-release script
|
- name: Install percona-release script
|
||||||
|
@ -35,12 +45,19 @@ jobs:
|
||||||
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
||||||
sudo dpkg -i percona-release_latest.generic_all.deb
|
sudo dpkg -i percona-release_latest.generic_all.deb
|
||||||
|
|
||||||
- name: Install Percona Distribution Postgresql 15
|
- name: Install Percona Distribution Postgresql 15 & Extensions
|
||||||
run: |
|
run: |
|
||||||
sudo percona-release setup ppg-15
|
sudo percona-release setup ppg-15
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y percona-postgresql-15 \
|
sudo apt-get install -y percona-postgresql-15 \
|
||||||
percona-postgresql-contrib percona-postgresql-server-dev-all
|
percona-postgresql-contrib percona-postgresql-server-dev-all \
|
||||||
|
percona-pgpool2 libpgpool2 percona-postgresql-15-pgaudit \
|
||||||
|
percona-postgresql-15-pgaudit-dbgsym percona-postgresql-15-repack \
|
||||||
|
percona-postgresql-15-repack-dbgsym percona-pgaudit15-set-user \
|
||||||
|
percona-pgaudit15-set-user-dbgsym percona-postgresql-15-postgis-3 \
|
||||||
|
percona-postgresql-15-postgis-3-scripts \
|
||||||
|
percona-postgresql-postgis-scripts percona-postgresql-postgis \
|
||||||
|
percona-postgis
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
@ -75,7 +92,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-16-build
|
name: postgresql-16-build
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-16-build-test
|
name: pg-16-build-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone postgres repository
|
- name: Clone postgres repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
repository: 'postgres/postgres'
|
repository: 'postgres/postgres'
|
||||||
ref: 'REL_16_STABLE'
|
ref: 'REL_16_STABLE'
|
||||||
|
@ -28,7 +38,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Create pgsql dir
|
- name: Create pgsql dir
|
||||||
|
@ -73,7 +83,7 @@ jobs:
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -83,12 +93,13 @@ jobs:
|
||||||
sudo make USE_PGXS=1 install
|
sudo make USE_PGXS=1 install
|
||||||
working-directory: src/pg_stat_monitor
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
- name: Load pg_stat_monitor library and Restart Server
|
- name: Configure and Restart Server
|
||||||
run: |
|
run: |
|
||||||
export PATH="/usr/lib/postgresql/16/bin:$PATH"
|
export PATH="/usr/lib/postgresql/16/bin:$PATH"
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile stop
|
pg_ctl -D /opt/pgsql/data -l logfile stop
|
||||||
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
||||||
/opt/pgsql/data/postgresql.conf
|
/opt/pgsql/data/postgresql.conf
|
||||||
|
echo "compute_query_id = regress" >> /opt/pgsql/data/postgresql.conf
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
working-directory: src/pg_stat_monitor
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
@ -107,7 +118,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
@ -126,15 +137,10 @@ jobs:
|
||||||
retention-days: 3
|
retention-days: 3
|
||||||
|
|
||||||
- name: Start Server installcheck-world tests
|
- name: Start Server installcheck-world tests
|
||||||
run: |
|
run: make installcheck-world
|
||||||
export PATH="/usr/lib/postgresql/16/bin:$PATH"
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile stop
|
|
||||||
echo "compute_query_id = off" >> /opt/pgsql/data/postgresql.conf
|
|
||||||
pg_ctl -D /opt/pgsql/data -l logfile start
|
|
||||||
make installcheck-world
|
|
||||||
|
|
||||||
- name: Report on installcheck-world test suites fail
|
- name: Report on installcheck-world test suites fail
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
name: Regressions output files of failed testsuite, and pg log
|
name: Regressions output files of failed testsuite, and pg log
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-16-pgdg-package
|
name: postgresql-16-pgdg-package
|
||||||
on: [pull_request]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-16-pgdg-package-test
|
name: pg-16-pgdg-package-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -22,7 +32,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install PG Distribution Postgresql 16
|
- name: Install PG Distribution Postgresql 16
|
||||||
|
@ -68,7 +78,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
name: postgresql-16-ppg-package
|
name: postgresql-16-ppg-package
|
||||||
on: [push]
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: pg-16-ppg-package-test
|
name: pg-16-ppg-package-test
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
steps:
|
steps:
|
||||||
- name: Clone pg_stat_monitor repository
|
- name: Clone pg_stat_monitor repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
path: 'src/pg_stat_monitor'
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
@ -23,7 +33,7 @@ jobs:
|
||||||
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
/etc/postgresql
|
/etc/postgresql
|
||||||
sudo rm -f /usr/bin/pg_config
|
sudo rm -f /usr/bin/pg_config
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install IPC::RUN'
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
- name: Install percona-release script
|
- name: Install percona-release script
|
||||||
|
@ -35,12 +45,19 @@ jobs:
|
||||||
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
||||||
sudo dpkg -i percona-release_latest.generic_all.deb
|
sudo dpkg -i percona-release_latest.generic_all.deb
|
||||||
|
|
||||||
- name: Install Percona Distribution Postgresql 16
|
- name: Install Percona Distribution Postgresql 16 & Extensions
|
||||||
run: |
|
run: |
|
||||||
sudo percona-release setup ppg-16
|
sudo percona-release setup ppg-16
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y percona-postgresql-16 \
|
sudo apt-get install -y percona-postgresql-16 \
|
||||||
percona-postgresql-contrib percona-postgresql-server-dev-all
|
percona-postgresql-contrib percona-postgresql-server-dev-all \
|
||||||
|
percona-pgpool2 libpgpool2 percona-postgresql-16-pgaudit \
|
||||||
|
percona-postgresql-16-pgaudit-dbgsym percona-postgresql-16-repack \
|
||||||
|
percona-postgresql-16-repack-dbgsym percona-pgaudit16-set-user \
|
||||||
|
percona-pgaudit16-set-user-dbgsym percona-postgresql-16-postgis-3 \
|
||||||
|
percona-postgresql-16-postgis-3-scripts \
|
||||||
|
percona-postgresql-postgis-scripts percona-postgresql-postgis \
|
||||||
|
percona-postgis
|
||||||
|
|
||||||
- name: Change src owner to postgres
|
- name: Change src owner to postgres
|
||||||
run: |
|
run: |
|
||||||
|
@ -75,7 +92,7 @@ jobs:
|
||||||
|
|
||||||
- name: Upload logs on fail
|
- name: Upload logs on fail
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
with:
|
with:
|
||||||
name: Regressions diff and postgresql log
|
name: Regressions diff and postgresql log
|
||||||
path: |
|
path: |
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
name: postgresql-17-build
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: pg-17-build-test
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- name: Clone postgres repository
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
repository: 'postgres/postgres'
|
||||||
|
ref: 'REL_17_STABLE'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt purge postgresql-client-common postgresql-common \
|
||||||
|
postgresql postgresql*
|
||||||
|
sudo apt-get install -y libreadline6-dev systemtap-sdt-dev \
|
||||||
|
zlib1g-dev libssl-dev libpam0g-dev bison flex \
|
||||||
|
libipc-run-perl -y docbook-xsl docbook-xsl libxml2 libxml2-utils \
|
||||||
|
libxml2-dev libxslt-dev xsltproc libkrb5-dev libldap2-dev \
|
||||||
|
libsystemd-dev gettext tcl-dev libperl-dev pkg-config clang-11 \
|
||||||
|
llvm-11 llvm-11-dev libselinux1-dev python3-dev \
|
||||||
|
uuid-dev liblz4-dev
|
||||||
|
sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \
|
||||||
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
|
/etc/postgresql
|
||||||
|
sudo rm -f /usr/bin/pg_config
|
||||||
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
|
- name: Create pgsql dir
|
||||||
|
run: mkdir -p /opt/pgsql
|
||||||
|
|
||||||
|
- name: Build postgres
|
||||||
|
run: |
|
||||||
|
export PATH="/opt/pgsql/bin:$PATH"
|
||||||
|
./configure '--build=x86_64-linux-gnu' '--prefix=/usr' \
|
||||||
|
'--includedir=${prefix}/include' '--mandir=${prefix}/share/man' \
|
||||||
|
'--infodir=${prefix}/share/info' '--sysconfdir=/etc' \
|
||||||
|
'--localstatedir=/var' '--libdir=${prefix}/lib/x86_64-linux-gnu' \
|
||||||
|
'--libexecdir=${prefix}/lib/x86_64-linux-gnu' '--with-icu' \
|
||||||
|
'--with-tcl' '--with-perl' '--with-python' '--with-pam' \
|
||||||
|
'--with-openssl' '--with-libxml' '--with-libxslt' '--with-ldap' \
|
||||||
|
'PYTHON=/usr/bin/python3' '--mandir=/usr/share/postgresql/17/man' \
|
||||||
|
'--docdir=/usr/share/doc/postgresql-doc-17' '--with-pgport=5432' \
|
||||||
|
'--sysconfdir=/etc/postgresql-common' '--datarootdir=/usr/share' \
|
||||||
|
'--datadir=/usr/share/postgresql/17' '--with-uuid=e2fs' \
|
||||||
|
'--bindir=/usr/lib/postgresql/17/bin' '--enable-tap-tests' \
|
||||||
|
'--libdir=/usr/lib/x86_64-linux-gnu' '--enable-debug' \
|
||||||
|
'--libexecdir=/usr/lib/postgresql' '--with-gnu-ld' \
|
||||||
|
'--includedir=/usr/include/postgresql' '--enable-dtrace' \
|
||||||
|
'--enable-nls' '--enable-thread-safety' '--disable-rpath' \
|
||||||
|
'--with-system-tzdata=/usr/share/zoneinfo' '--with-llvm' \
|
||||||
|
'LLVM_CONFIG=/usr/bin/llvm-config-11' 'CLANG=/usr/bin/clang-11' \
|
||||||
|
'--with-systemd' '--with-selinux' 'MKDIR_P=/bin/mkdir -p' \
|
||||||
|
'PROVE=/usr/bin/prove' 'TAR=/bin/tar' 'XSLTPROC=xsltproc --nonet' \
|
||||||
|
'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' \
|
||||||
|
'build_alias=x86_64-linux-gnu' '--with-gssapi' \
|
||||||
|
'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' \
|
||||||
|
'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fno-omit-frame-pointer' \
|
||||||
|
'CXXFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security'
|
||||||
|
make world
|
||||||
|
sudo make install-world
|
||||||
|
|
||||||
|
- name: Start postgresql cluster
|
||||||
|
run: |
|
||||||
|
export PATH="/usr/lib/postgresql/17/bin:$PATH"
|
||||||
|
sudo cp /usr/lib/postgresql/17/bin/pg_config /usr/bin
|
||||||
|
initdb -D /opt/pgsql/data
|
||||||
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
|
||||||
|
- name: Clone pg_stat_monitor repository
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
- name: Build pg_stat_monitor
|
||||||
|
run: |
|
||||||
|
make USE_PGXS=1
|
||||||
|
sudo make USE_PGXS=1 install
|
||||||
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
- name: Configure and Restart Server
|
||||||
|
run: |
|
||||||
|
export PATH="/usr/lib/postgresql/17/bin:$PATH"
|
||||||
|
pg_ctl -D /opt/pgsql/data -l logfile stop
|
||||||
|
echo "shared_preload_libraries = 'pg_stat_monitor'" >> \
|
||||||
|
/opt/pgsql/data/postgresql.conf
|
||||||
|
echo "compute_query_id = regress" >> /opt/pgsql/data/postgresql.conf
|
||||||
|
pg_ctl -D /opt/pgsql/data -l logfile start
|
||||||
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
- name: Start pg_stat_monitor_tests
|
||||||
|
run: |
|
||||||
|
make installcheck
|
||||||
|
working-directory: src/pg_stat_monitor/
|
||||||
|
|
||||||
|
- name: Change dir permissions on fail
|
||||||
|
if: ${{ failure() }}
|
||||||
|
run: |
|
||||||
|
sudo chmod -R ugo+rwx t
|
||||||
|
sudo chmod -R ugo+rwx tmp_check
|
||||||
|
exit 2 # regenerate error so that we can upload files in next step
|
||||||
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
- name: Upload logs on fail
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
with:
|
||||||
|
name: Regressions diff and postgresql log
|
||||||
|
path: |
|
||||||
|
src/pg_stat_monitor/regression.diffs
|
||||||
|
src/pg_stat_monitor/regression.out
|
||||||
|
src/pg_stat_monitor/logfile
|
||||||
|
src/pg_stat_monitor/t/results/
|
||||||
|
src/pg_stat_monitor/tmp_check/log/
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/archives/*
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/backup/*
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/pgdata/*
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/archives/
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/backup/
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/pgdata/
|
||||||
|
if-no-files-found: warn
|
||||||
|
retention-days: 3
|
||||||
|
|
||||||
|
- name: Start Server installcheck-world tests
|
||||||
|
run: make installcheck-world
|
||||||
|
|
||||||
|
- name: Report on installcheck-world test suites fail
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
if: ${{ failure() }}
|
||||||
|
with:
|
||||||
|
name: Regressions output files of failed testsuite, and pg log
|
||||||
|
path: |
|
||||||
|
**/regression.diffs
|
||||||
|
**/regression.out
|
||||||
|
src/pg_stat_monitor/logfile
|
||||||
|
retention-days: 3
|
|
@ -0,0 +1,97 @@
|
||||||
|
name: postgresql-17-pgdg-package
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '[0-9]+.[0-9]+.[0-9]+*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: pg-17-pgdg-package-test
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
timeout-minutes: 30
|
||||||
|
steps:
|
||||||
|
- name: Clone pg_stat_monitor repository
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
path: 'src/pg_stat_monitor'
|
||||||
|
|
||||||
|
- name: Delete old postgresql files
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt purge postgresql-client-common postgresql-common \
|
||||||
|
postgresql postgresql*
|
||||||
|
sudo apt-get install -y libreadline6-dev systemtap-sdt-dev wget \
|
||||||
|
zlib1g-dev libssl-dev libpam0g-dev bison flex libipc-run-perl
|
||||||
|
sudo rm -rf /var/lib/postgresql /var/log/postgresql /etc/postgresql \
|
||||||
|
/usr/lib/postgresql /usr/include/postgresql /usr/share/postgresql \
|
||||||
|
/etc/postgresql
|
||||||
|
sudo rm -f /usr/bin/pg_config
|
||||||
|
sudo /usr/bin/perl -MCPAN -e 'install IPC::Run'
|
||||||
|
sudo /usr/bin/perl -MCPAN -e 'install Text::Trim'
|
||||||
|
|
||||||
|
- name: Install PG Distribution Postgresql 17
|
||||||
|
run: |
|
||||||
|
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt \
|
||||||
|
$(lsb_release -cs)-pgdg main 17" > /etc/apt/sources.list.d/pgdg.list'
|
||||||
|
sudo wget --quiet -O - \
|
||||||
|
https://www.postgresql.org/media/keys/ACCC4CF8.asc |
|
||||||
|
sudo apt-key add -
|
||||||
|
sudo apt update
|
||||||
|
sudo apt -y install postgresql-17 postgresql-server-dev-17
|
||||||
|
|
||||||
|
- name: Change src owner to postgres
|
||||||
|
run: |
|
||||||
|
sudo chmod o+rx ~
|
||||||
|
sudo chown -R postgres:postgres src
|
||||||
|
|
||||||
|
- name: Build pg_stat_monitor
|
||||||
|
run: |
|
||||||
|
sudo -u postgres bash -c 'make USE_PGXS=1'
|
||||||
|
sudo make USE_PGXS=1 install
|
||||||
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
- name: Start pg_stat_monitor_tests
|
||||||
|
run: |
|
||||||
|
sudo service postgresql stop
|
||||||
|
echo "shared_preload_libraries = 'pg_stat_monitor'" |
|
||||||
|
sudo tee -a /etc/postgresql/17/main/postgresql.conf
|
||||||
|
sudo service postgresql start
|
||||||
|
sudo psql -V
|
||||||
|
export PG_TEST_PORT_DIR=${GITHUB_WORKSPACE}/src/pg_stat_monitor
|
||||||
|
echo $PG_TEST_PORT_DIR
|
||||||
|
sudo -E -u postgres bash -c 'make installcheck USE_PGXS=1'
|
||||||
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
- name: Change dir permissions on fail
|
||||||
|
if: ${{ failure() }}
|
||||||
|
run: |
|
||||||
|
sudo chmod -R ugo+rwx t
|
||||||
|
sudo chmod -R ugo+rwx tmp_check
|
||||||
|
exit 2 # regenerate error so that we can upload files in next step
|
||||||
|
working-directory: src/pg_stat_monitor
|
||||||
|
|
||||||
|
- name: Upload logs on fail
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
with:
|
||||||
|
name: Regressions diff and postgresql log
|
||||||
|
path: |
|
||||||
|
src/pg_stat_monitor/regression.diffs
|
||||||
|
src/pg_stat_monitor/regression.out
|
||||||
|
src/pg_stat_monitor/logfile
|
||||||
|
src/pg_stat_monitor/t/results/
|
||||||
|
src/pg_stat_monitor/tmp_check/log/
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/archives/*
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/backup/*
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/pgdata/*
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/archives/
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/backup/
|
||||||
|
!src/pg_stat_monitor/tmp_check/**/pgdata/
|
||||||
|
if-no-files-found: warn
|
||||||
|
retention-days: 3
|
|
@ -0,0 +1,48 @@
|
||||||
|
name: Scorecard
|
||||||
|
on:
|
||||||
|
# To guarantee Maintained check is occasionally updated. See
|
||||||
|
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
|
||||||
|
schedule:
|
||||||
|
- cron: "24 3 * * 1"
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
# Declare default permissions as read only.
|
||||||
|
permissions: read-all
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analysis:
|
||||||
|
name: Analysis
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
# Needed to upload the results to code-scanning dashboard.
|
||||||
|
security-events: write
|
||||||
|
# Needed to publish results and get a badge (see publish_results below).
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
with:
|
||||||
|
persist-credentials: false
|
||||||
|
|
||||||
|
- name: Run analysis
|
||||||
|
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
|
||||||
|
with:
|
||||||
|
results_file: results.sarif
|
||||||
|
results_format: sarif
|
||||||
|
publish_results: true
|
||||||
|
|
||||||
|
- name: Upload results
|
||||||
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||||
|
with:
|
||||||
|
name: SARIF file
|
||||||
|
path: results.sarif
|
||||||
|
retention-days: 5
|
||||||
|
|
||||||
|
# Upload the results to GitHub's code scanning dashboard (optional).
|
||||||
|
- name: "Upload to code-scanning"
|
||||||
|
uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
|
||||||
|
with:
|
||||||
|
sarif_file: results.sarif
|
|
@ -45,6 +45,7 @@
|
||||||
*.mod*
|
*.mod*
|
||||||
*.cmd
|
*.cmd
|
||||||
.tmp_versions/
|
.tmp_versions/
|
||||||
|
.deps/
|
||||||
modules.order
|
modules.order
|
||||||
Module.symvers
|
Module.symvers
|
||||||
Mkfile.old
|
Mkfile.old
|
||||||
|
@ -59,3 +60,6 @@ dkms.conf
|
||||||
## .vscode
|
## .vscode
|
||||||
.vscode/
|
.vscode/
|
||||||
.vscode/*
|
.vscode/*
|
||||||
|
|
||||||
|
# tools files
|
||||||
|
typedefs-full.list
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
header:
|
||||||
|
paths:
|
||||||
|
- "**/*.c"
|
||||||
|
- "**/*.h"
|
||||||
|
license:
|
||||||
|
pattern: |
|
||||||
|
.*\.(c|h)
|
||||||
|
.*
|
||||||
|
|
||||||
|
Portions Copyright © 2018-2024, Percona LLC and/or its affiliates
|
||||||
|
|
||||||
|
Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
||||||
|
|
||||||
|
Portions Copyright (c) 1994, The Regents of the University of California
|
||||||
|
|
||||||
|
IDENTIFICATION
|
||||||
|
contrib/pg_stat_monitor/.*\.(c|h)
|
||||||
|
|
||||||
|
comment: never
|
20
ADOPTERS.md
20
ADOPTERS.md
|
@ -1,20 +0,0 @@
|
||||||
# List of pg_stat_monitor Adopters
|
|
||||||
|
|
||||||
This is the list of organizations and users that publicly shared details of how
|
|
||||||
they are using pg_stat_monitor.
|
|
||||||
|
|
||||||
Please send us a pull request if you want to be added or removed from this
|
|
||||||
list.
|
|
||||||
|
|
||||||
The list of organizations that have publicly shared the usage of
|
|
||||||
pg_stat_monitor:
|
|
||||||
|
|
||||||
| Organization | Description | Success Story |
|
|
||||||
| :--- | :--- | :--- |
|
|
||||||
| [Example](https://example.com/) | Example company running pg_stat_monitor for dev and production for core application | [English](./adopters/example/README.md) |
|
|
||||||
|
|
||||||
The list of users that have publicly shared the usage of pg_stat_monitor.
|
|
||||||
|
|
||||||
| User | Description | Success Story |
|
|
||||||
| :--- | :--- | :--- |
|
|
||||||
| [Example User](https://github.com/username) | Personal tests of pg_stat_monitor | [English](./adopters/users/username/README.md) |
|
|
21
META.json
21
META.json
|
@ -2,30 +2,33 @@
|
||||||
"name": "pg_stat_monitor",
|
"name": "pg_stat_monitor",
|
||||||
"abstract": "PostgreSQL Query Performance Monitoring Tool",
|
"abstract": "PostgreSQL Query Performance Monitoring Tool",
|
||||||
"description": "pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL's contrib module pg_stat_statements. PostgreSQL’s pg_stat_statements provides the basic statistics, which is sometimes not enough. The major shortcoming in pg_stat_statements is that it accumulates all the queries and their statistics and does not provide aggregated statistics nor histogram information. In this case, a user would need to calculate the aggregates, which is quite an expensive operation.",
|
"description": "pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL's contrib module pg_stat_statements. PostgreSQL’s pg_stat_statements provides the basic statistics, which is sometimes not enough. The major shortcoming in pg_stat_statements is that it accumulates all the queries and their statistics and does not provide aggregated statistics nor histogram information. In this case, a user would need to calculate the aggregates, which is quite an expensive operation.",
|
||||||
"version": "2.0.4",
|
"version": "2.1.1",
|
||||||
"maintainer": [
|
"maintainer": [
|
||||||
"ibrar.ahmed@percona.com"
|
"Artem Gavrilov <artem.gavrilov@percona.com>",
|
||||||
|
"Diego dos Santos Fronza <diego.fronza@percona.com>"
|
||||||
],
|
],
|
||||||
"license": "postgresql",
|
"license": {
|
||||||
|
"PostgreSQL": "https://www.postgresql.org/about/licence"
|
||||||
|
},
|
||||||
"provides": {
|
"provides": {
|
||||||
"pg_stat_monitor": {
|
"pg_stat_monitor": {
|
||||||
"abstract": "PostgreSQL Query Performance Monitoring Tool",
|
"abstract": "PostgreSQL Query Performance Monitoring Tool",
|
||||||
"file": "pg_stat_monitor--2.0.sql",
|
"file": "pg_stat_monitor--2.0--2.1.sql",
|
||||||
"docfile": "README.md",
|
"docfile": "README.md",
|
||||||
"version": "2.0.4"
|
"version": "2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"prereqs": {
|
"prereqs": {
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"requires": {
|
"requires": {
|
||||||
"PostgreSQL": "11.0.0"
|
"PostgreSQL": "12.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"resources": {
|
"resources": {
|
||||||
"homepage": "https://percona.github.io/pg_stat_monitor/",
|
"homepage": "https://github.com/percona/pg_stat_monitor",
|
||||||
"bugtracker": {
|
"bugtracker": {
|
||||||
"web": "https://jira.percona.com/projects/PG/issues"
|
"web": "https://perconadev.atlassian.net/jira/software/c/projects/PG/issues"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"url": "https://github.com/percona/pg_stat_monitor.git",
|
"url": "https://github.com/percona/pg_stat_monitor.git",
|
||||||
|
@ -33,7 +36,7 @@
|
||||||
"type": "git"
|
"type": "git"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"generated_by": "ibrar.ahmed@percona.com",
|
"generated_by": "Artem Gavrilov",
|
||||||
"meta-spec": {
|
"meta-spec": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"url": "http://pgxn.org/meta/spec.txt"
|
"url": "http://pgxn.org/meta/spec.txt"
|
||||||
|
|
34
Makefile
34
Makefile
|
@ -4,7 +4,7 @@ MODULE_big = pg_stat_monitor
|
||||||
OBJS = hash_query.o guc.o pg_stat_monitor.o $(WIN32RES)
|
OBJS = hash_query.o guc.o pg_stat_monitor.o $(WIN32RES)
|
||||||
|
|
||||||
EXTENSION = pg_stat_monitor
|
EXTENSION = pg_stat_monitor
|
||||||
DATA = pg_stat_monitor--2.0.sql pg_stat_monitor--1.0--2.0.sql
|
DATA = pg_stat_monitor--2.0.sql pg_stat_monitor--1.0--2.0.sql pg_stat_monitor--2.0--2.1.sql pg_stat_monitor--2.1--2.2.sql
|
||||||
|
|
||||||
PGFILEDESC = "pg_stat_monitor - execution statistics of SQL statements"
|
PGFILEDESC = "pg_stat_monitor - execution statistics of SQL statements"
|
||||||
|
|
||||||
|
@ -12,7 +12,26 @@ LDFLAGS_SL += $(filter -lm, $(LIBS))
|
||||||
|
|
||||||
TAP_TESTS = 1
|
TAP_TESTS = 1
|
||||||
REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_monitor/pg_stat_monitor.conf --inputdir=regression
|
REGRESS_OPTS = --temp-config $(top_srcdir)/contrib/pg_stat_monitor/pg_stat_monitor.conf --inputdir=regression
|
||||||
REGRESS = basic version guc pgsm_query_id functions counters relations database error_insert application_name application_name_unique top_query cmd_type error rows tags user
|
REGRESS = basic \
|
||||||
|
version \
|
||||||
|
guc \
|
||||||
|
pgsm_query_id \
|
||||||
|
functions \
|
||||||
|
counters \
|
||||||
|
relations \
|
||||||
|
database \
|
||||||
|
error_insert \
|
||||||
|
application_name \
|
||||||
|
application_name_unique \
|
||||||
|
top_query \
|
||||||
|
different_parent_queries \
|
||||||
|
cmd_type \
|
||||||
|
error \
|
||||||
|
rows \
|
||||||
|
tags \
|
||||||
|
user \
|
||||||
|
level_tracking \
|
||||||
|
decode_error_level
|
||||||
|
|
||||||
# Disabled because these tests require "shared_preload_libraries=pg_stat_statements",
|
# Disabled because these tests require "shared_preload_libraries=pg_stat_statements",
|
||||||
# which typical installcheck users do not have (e.g. buildfarm clients).
|
# which typical installcheck users do not have (e.g. buildfarm clients).
|
||||||
|
@ -30,3 +49,14 @@ top_builddir = ../..
|
||||||
include $(top_builddir)/src/Makefile.global
|
include $(top_builddir)/src/Makefile.global
|
||||||
include $(top_srcdir)/contrib/contrib-global.mk
|
include $(top_srcdir)/contrib/contrib-global.mk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Fetches typedefs list for PostgreSQL core and merges it with typedefs defined in this project.
|
||||||
|
# https://wiki.postgresql.org/wiki/Running_pgindent_on_non-core_code_or_development_code
|
||||||
|
update-typedefs:
|
||||||
|
wget -q -O - "https://buildfarm.postgresql.org/cgi-bin/typedefs.pl?branch=REL_17_STABLE" | cat - typedefs.list | sort | uniq > typedefs-full.list
|
||||||
|
|
||||||
|
# Indents projects sources.
|
||||||
|
indent:
|
||||||
|
pgindent --typedefs=typedefs-full.list .
|
||||||
|
|
||||||
|
.PHONY: update-typedefs indent
|
74
README.md
74
README.md
|
@ -1,6 +1,15 @@
|
||||||
[](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-11-pgdg-package.yml) [](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-12-pgdg-package.yml) [](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-13-pgdg-package.yml) [](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-14-pgdg-package.yml) [](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-15-pgdg-package.yml)
|
[](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-12-pgdg-package.yml)
|
||||||
|
[](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-13-pgdg-package.yml)
|
||||||
|
[](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-14-pgdg-package.yml)
|
||||||
|
[](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-15-pgdg-package.yml)
|
||||||
|
[](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-16-pgdg-package.yml)
|
||||||
|
[](https://github.com/percona/pg_stat_monitor/actions/workflows/postgresql-17-pgdg-package.yml)
|
||||||
|
|
||||||
|
[](https://badge.fury.io/pg/pg_stat_monitor)
|
||||||
|
[](https://scorecard.dev/viewer/?uri=github.com/percona/pg_stat_monitor)
|
||||||
|
[](https://www.bestpractices.dev/projects/9703)
|
||||||
[](https://codecov.io/gh/percona/pg_stat_monitor)
|
[](https://codecov.io/gh/percona/pg_stat_monitor)
|
||||||
|
[](https://forums.percona.com/)
|
||||||
# pg_stat_monitor: Query Performance Monitoring Tool for PostgreSQL
|
# pg_stat_monitor: Query Performance Monitoring Tool for PostgreSQL
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
@ -16,6 +25,8 @@
|
||||||
- [Installing from Percona repositories](#installing-from-percona-repositories)
|
- [Installing from Percona repositories](#installing-from-percona-repositories)
|
||||||
- [Installing from PostgreSQL `yum` repositories](#installing-from-postgresql-yum-repositories)
|
- [Installing from PostgreSQL `yum` repositories](#installing-from-postgresql-yum-repositories)
|
||||||
- [Installing from PGXN](#installing-from-pgxn)
|
- [Installing from PGXN](#installing-from-pgxn)
|
||||||
|
- [Installing from Trunk](#installing-from-trunk)
|
||||||
|
- [Installing from sources](#building-from-source)
|
||||||
- [Configuration](#configuration)
|
- [Configuration](#configuration)
|
||||||
- [Setup](#setup)
|
- [Setup](#setup)
|
||||||
- [Building from source](#building-from-source)
|
- [Building from source](#building-from-source)
|
||||||
|
@ -43,7 +54,7 @@ To learn about other features, available in `pg_stat_monitor`, see the [Features
|
||||||
|
|
||||||
`pg_stat_monitor` supports PostgreSQL versions 11 and above. It is compatible with both PostgreSQL provided by PostgreSQL Global Development Group (PGDG) and [Percona Distribution for PostgreSQL](https://www.percona.com/software/postgresql-distribution).
|
`pg_stat_monitor` supports PostgreSQL versions 11 and above. It is compatible with both PostgreSQL provided by PostgreSQL Global Development Group (PGDG) and [Percona Distribution for PostgreSQL](https://www.percona.com/software/postgresql-distribution).
|
||||||
|
|
||||||
The `RPM` (for RHEL and CentOS) and the `DEB` (for Debian and Ubuntu) packages are available from Percona repositories for PostgreSQL versions [11](https://www.percona.com/downloads/percona-postgresql-11/LATEST/), [12](https://www.percona.com/downloads/postgresql-distribution-12/LATEST/), [13](https://www.percona.com/downloads/postgresql-distribution-13/LATEST/), [14](https://www.percona.com/downloads/postgresql-distribution-14/LATEST/) and [15](https://www.percona.com/downloads/postgresql-distribution-15/LATEST/).
|
The `RPM` (for RHEL and CentOS) and the `DEB` (for Debian and Ubuntu) packages are available from Percona repositories for PostgreSQL versions [12](https://www.percona.com/downloads/postgresql-distribution-12/LATEST/), [13](https://www.percona.com/downloads/postgresql-distribution-13/LATEST/), [14](https://www.percona.com/downloads/postgresql-distribution-14/LATEST/), [15](https://www.percona.com/downloads/postgresql-distribution-15/LATEST/), [16](https://www.percona.com/downloads/postgresql-distribution-16/LATEST/) and [17](https://www.percona.com/downloads/postgresql-distribution-17/LATEST/).
|
||||||
|
|
||||||
The RPM packages are also available in the official PostgreSQL (PGDG) yum repositories.
|
The RPM packages are also available in the official PostgreSQL (PGDG) yum repositories.
|
||||||
|
|
||||||
|
@ -53,8 +64,8 @@ The `pg_stat_monitor` should work on the latest version of both [Percona Distrib
|
||||||
|
|
||||||
| **Distribution** | **Version** | **Provider** |
|
| **Distribution** | **Version** | **Provider** |
|
||||||
| ---------------- | --------------- | ------------ |
|
| ---------------- | --------------- | ------------ |
|
||||||
|[Percona Distribution for PostgreSQL](https://www.percona.com/software/postgresql-distribution)| [11](https://www.percona.com/downloads/percona-postgresql-11/LATEST/), [12](https://www.percona.com/downloads/postgresql-distribution-12/LATEST/), [13](https://www.percona.com/downloads/postgresql-distribution-13/LATEST/), [14](https://www.percona.com/downloads/postgresql-distribution-14/LATEST/) and [15](https://www.percona.com/downloads/postgresql-distribution-15/LATEST/)| Percona|
|
|[Percona Distribution for PostgreSQL](https://www.percona.com/software/postgresql-distribution)| [12](https://www.percona.com/downloads/postgresql-distribution-12/LATEST/), [13](https://www.percona.com/downloads/postgresql-distribution-13/LATEST/), [14](https://www.percona.com/downloads/postgresql-distribution-14/LATEST/), [15](https://www.percona.com/downloads/postgresql-distribution-15/LATEST/), [16](https://www.percona.com/downloads/postgresql-distribution-16/LATEST/) and [17](https://www.percona.com/downloads/postgresql-distribution-17/LATEST/)| Percona|
|
||||||
| PostgreSQL | 11, 12, 13, 14 and 15 | PostgreSQL Global Development Group (PGDG) |
|
| PostgreSQL | 12, 13, 14, 15, 16 and 17 | PostgreSQL Global Development Group (PGDG) |
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
@ -85,7 +96,7 @@ The following are useful links in [`pg_stat_monitor` documentation](https://docs
|
||||||
|
|
||||||
The PostgreSQL YUM repository supports `pg_stat_monitor` for all [supported versions](#supported-versions) for the following platforms:
|
The PostgreSQL YUM repository supports `pg_stat_monitor` for all [supported versions](#supported-versions) for the following platforms:
|
||||||
|
|
||||||
* Red Hat Enterprise/Rocky/CentOS/Oracle Linux 7 and 8
|
* Red Hat Enterprise/Rocky/CentOS/Oracle Linux 7, 8 and 9
|
||||||
* Fedora 33 and 34
|
* Fedora 33 and 34
|
||||||
|
|
||||||
Find the list of supported platforms for `pg_stat_monitor` within [Percona Distribution for PostgreSQL](https://www.percona.com/software/postgresql-distribution) on the [Percona Release Lifecycle Overview](https://www.percona.com/services/policies/percona-software-support-lifecycle#pgsql) page.
|
Find the list of supported platforms for `pg_stat_monitor` within [Percona Distribution for PostgreSQL](https://www.percona.com/software/postgresql-distribution) on the [Percona Release Lifecycle Overview](https://www.percona.com/services/policies/percona-software-support-lifecycle#pgsql) page.
|
||||||
|
@ -95,10 +106,11 @@ Find the list of supported platforms for `pg_stat_monitor` within [Percona Distr
|
||||||
|
|
||||||
You can install `pg_stat_monitor` from the following sources:
|
You can install `pg_stat_monitor` from the following sources:
|
||||||
|
|
||||||
* [Percona repositories](#installing-from-percona-repositories),
|
* [Percona repositories](#installing-from-percona-repositories)
|
||||||
* [PostgreSQL PGDG yum repositories](#installing-from-postgresql-yum-repositories),
|
* [PostgreSQL PGDG yum repositories](#installing-from-postgresql-yum-repositories)
|
||||||
* [PGXN](#installing-from-pgxn) and
|
* [PGXN](#installing-from-pgxn)
|
||||||
* [source code](#building-from-source).
|
* [Trunk](#installing-from-trunk)
|
||||||
|
* [source code](#building-from-source)
|
||||||
|
|
||||||
|
|
||||||
#### Installing from Percona repositories
|
#### Installing from Percona repositories
|
||||||
|
@ -109,19 +121,19 @@ To install `pg_stat_monitor` from Percona repositories, you need to use the `per
|
||||||
2. Enable Percona repository:
|
2. Enable Percona repository:
|
||||||
|
|
||||||
``` sh
|
``` sh
|
||||||
percona-release setup ppgXX
|
percona-release setup ppg-XX
|
||||||
```
|
```
|
||||||
|
|
||||||
Replace XX with the desired PostgreSQL version. For example, to install `pg_stat_monitor ` for PostgreSQL 15, specify `ppg15`.
|
Replace XX with the desired PostgreSQL version. For example, to install `pg_stat_monitor ` for PostgreSQL 17, specify `ppg-17`.
|
||||||
|
|
||||||
3. Install `pg_stat_monitor` package
|
3. Install `pg_stat_monitor` package
|
||||||
* For Debian and Ubuntu:
|
* For Debian and Ubuntu:
|
||||||
``` sh
|
``` sh
|
||||||
apt-get install percona-pg-stat-monitor15
|
apt-get install percona-pg-stat-monitor17
|
||||||
```
|
```
|
||||||
* For RHEL and CentOS:
|
* For RHEL and CentOS:
|
||||||
``` sh
|
``` sh
|
||||||
yum install percona-pg-stat-monitor15
|
yum install percona-pg-stat-monitor17
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Installing from PostgreSQL `yum` repositories
|
#### Installing from PostgreSQL `yum` repositories
|
||||||
|
@ -134,12 +146,12 @@ Install `pg_stat_monitor`:
|
||||||
dnf install -y pg_stat_monitor_<VERSION>
|
dnf install -y pg_stat_monitor_<VERSION>
|
||||||
```
|
```
|
||||||
|
|
||||||
Replace the `VERSION` variable with the PostgreSQL version you are using (e.g. specify `pg_stat_monitor_15` for PostgreSQL 15)
|
Replace the `VERSION` variable with the PostgreSQL version you are using (e.g. specify `pg_stat_monitor_17` for PostgreSQL 17)
|
||||||
|
|
||||||
|
|
||||||
#### Installing from PGXN
|
#### Installing from PGXN
|
||||||
|
|
||||||
You can install `pg_stat_monitor` from PGXN (PostgreSQL Extensions Network) using the [PGXN client](https://pgxn.github.io/pgxnclient/).
|
You can install `pg_stat_monitor` from [PGXN (PostgreSQL Extensions Network)](https://pgxn.org/) using the [PGXN client](https://pgxn.github.io/pgxnclient/).
|
||||||
|
|
||||||
Use the following command:
|
Use the following command:
|
||||||
|
|
||||||
|
@ -147,9 +159,19 @@ Use the following command:
|
||||||
pgxn install pg_stat_monitor
|
pgxn install pg_stat_monitor
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Installing from Trunk
|
||||||
|
|
||||||
|
You can install `pg_stat_monitor` from [Trunk (A PostgreSQL Extensions Registry)](https://pgt.dev/) using the [Trunk CLI](https://github.com/tembo-io/trunk?tab=readme-ov-file#installation).
|
||||||
|
|
||||||
|
Use the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
trunk install pg_stat_monitor
|
||||||
|
```
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
You can find the configuration parameters of the `pg_stat_monitor` extension in the `pg_stat_monitor_settings` view. To change the default configuration, specify new values for the desired parameters using the GUC (Grant Unified Configuration) system. To learn more, refer to the [Configuration parameters](https://docs.percona.com/pg-stat-monitor/configuration.html) section of the documentation.
|
You can find the configuration parameters of the `pg_stat_monitor` extension in the `pg_settings` view. To change the default configuration, specify new values for the desired parameters using the GUC (Grant Unified Configuration) system. To learn more, refer to the [Configuration parameters](https://docs.percona.com/pg-stat-monitor/configuration.html) section of the documentation.
|
||||||
|
|
||||||
|
|
||||||
### Setup
|
### Setup
|
||||||
|
@ -185,7 +207,7 @@ sudo systemctl restart postgresql.service
|
||||||
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo systemctl restart postgresql-15
|
sudo systemctl restart postgresql-17
|
||||||
```
|
```
|
||||||
|
|
||||||
Create the extension using the [CREATE EXTENSION](https://www.postgresql.org/docs/current/sql-createextension.html) command. Using this command requires the privileges of a superuser or a database owner. Connect to `psql` as a superuser for a database and run the following command:
|
Create the extension using the [CREATE EXTENSION](https://www.postgresql.org/docs/current/sql-createextension.html) command. Using this command requires the privileges of a superuser or a database owner. Connect to `psql` as a superuser for a database and run the following command:
|
||||||
|
@ -247,19 +269,13 @@ make USE_PGXS=1 install
|
||||||
|
|
||||||
To uninstall `pg_stat_monitor`, do the following:
|
To uninstall `pg_stat_monitor`, do the following:
|
||||||
|
|
||||||
1. Disable statistics collection. From the `psql` terminal, run the following command:
|
1. Drop `pg_stat_monitor` extension:
|
||||||
|
|
||||||
```sql
|
|
||||||
ALTER SYSTEM SET pg_stat_monitor.pgsm_enable = 0;
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Drop `pg_stat_monitor` extension:
|
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Remove `pg_stat_monitor` from the `shared_preload_libraries` configuration parameter:
|
2. Remove `pg_stat_monitor` from the `shared_preload_libraries` configuration parameter:
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
ALTER SYSTEM SET shared_preload_libraries = '';
|
ALTER SYSTEM SET shared_preload_libraries = '';
|
||||||
|
@ -267,7 +283,7 @@ To uninstall `pg_stat_monitor`, do the following:
|
||||||
|
|
||||||
**Important**: If the `shared_preload_libraries` parameter includes other modules, specify them all for the `ALTER SYSTEM SET` command to keep using them.
|
**Important**: If the `shared_preload_libraries` parameter includes other modules, specify them all for the `ALTER SYSTEM SET` command to keep using them.
|
||||||
|
|
||||||
4. Restart the `postgresql` instance to apply the changes. The following command restarts PostgreSQL 15. Replace the version value with the one you are using.
|
3. Restart the `postgresql` instance to apply the changes. The following command restarts PostgreSQL 17. Replace the version value with the one you are using.
|
||||||
|
|
||||||
* On Debian and Ubuntu:
|
* On Debian and Ubuntu:
|
||||||
|
|
||||||
|
@ -279,7 +295,7 @@ To uninstall `pg_stat_monitor`, do the following:
|
||||||
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo systemctl restart postgresql-15
|
sudo systemctl restart postgresql-17
|
||||||
```
|
```
|
||||||
|
|
||||||
### How we work
|
### How we work
|
||||||
|
@ -319,6 +335,6 @@ This project is licensed under the same open liberal terms and conditions as the
|
||||||
|
|
||||||
### Copyright notice
|
### Copyright notice
|
||||||
|
|
||||||
* Portions Copyright © 2018-2023, Percona LLC and/or its affiliates
|
* Portions Copyright © 2018-2024, Percona LLC and/or its affiliates
|
||||||
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, The Regents of the University of California
|
* Portions Copyright (c) 1994, The Regents of the University of California
|
||||||
|
|
317
RELEASE_NOTES.md
317
RELEASE_NOTES.md
|
@ -1,317 +0,0 @@
|
||||||
# Release Notes
|
|
||||||
|
|
||||||
Below is the complete list of release notes for every version of ``pg_stat_monitor``.
|
|
||||||
|
|
||||||
## 2.0.4
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
[GH-425](https://github.com/percona/pg_stat_monitor/pull/432) - Resolving a possible issue that could lead to pg_stat_monitor deadlocking in pgsm_store
|
|
||||||
|
|
||||||
## 2.0.3
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
[GH-425](https://jira.percona.com/browse/PG-645) - pg_stat_monitor crashes PostgreSQL if there is citus library loaded
|
|
||||||
|
|
||||||
|
|
||||||
## 2.0.2
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
[GH-418](https://github.com/percona/pg_stat_monitor/issues/418) - Fixed compilation issue with PG16 and added meson.build file.
|
|
||||||
|
|
||||||
|
|
||||||
## 2.0.1
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
[PG-613](https://jira.percona.com/browse/PG-613) - Fixed the issue with segmentation fault error when the query plan is enabled on large queries.
|
|
||||||
|
|
||||||
[PG-624](https://jira.percona.com/browse/PG-624) - Fixed the server crash when running pgbench with pg_stat_monitor loaded by improving the handling of the dynamic number of buckets.
|
|
||||||
|
|
||||||
|
|
||||||
## 2.0.0
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-310](https://jira.percona.com/browse/PG-310): Bucket is “Done” vs still being current/last
|
|
||||||
|
|
||||||
[PG-400](https://jira.percona.com/browse/PG-400): Add timezone in datetime columns in pg_stat_monitor view.
|
|
||||||
|
|
||||||
[PG-435](https://jira.percona.com/browse/PG-435): PostgreSQL 15 Support by adding newly introduced columns
|
|
||||||
|
|
||||||
[PG-488](https://jira.percona.com/browse/PG-488): Update query buffer overflow management to use dynamic shared memory
|
|
||||||
|
|
||||||
[PG-543](https://jira.percona.com/browse/PG-543): PostgreSQL's pg_stat_statements compatible view.
|
|
||||||
|
|
||||||
[PG-545](https://jira.percona.com/browse/PG-545): Same query text should generate same queryid
|
|
||||||
|
|
||||||
[PG-569](https://jira.percona.com/browse/PG-569): Make all data types of pg_stat_monitor view compatible with pg_stat_statements
|
|
||||||
|
|
||||||
[PG-586](https://jira.percona.com/browse/PG-586): CPU and user timing should be captured for utility statements as well
|
|
||||||
|
|
||||||
[PG-588](https://jira.percona.com/browse/PG-588): Fix missing query and query normalization issue; rearchitect pg_stat_monitor
|
|
||||||
|
|
||||||
[PG-606](https://jira.percona.com/browse/PG-606): New GUC required for enabling/disabling of pgsm_query_id calculation
|
|
||||||
|
|
||||||
[PG-607](https://jira.percona.com/browse/PG-607): Allow histogram to track queries in sub-ms time brackets
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
[PG-306](https://jira.percona.com/browse/PG-306): bucket_start_time - TEXT vs TIMESTAMP?
|
|
||||||
|
|
||||||
[PG-320](https://jira.percona.com/browse/PG-320): Remove state/state_code fields from pg_stat_monitor_view.
|
|
||||||
|
|
||||||
[PG-321](https://jira.percona.com/browse/PG-321): Remove redundant `cmd_type`/`cmd_type_text` columns in `pg_stat_monitor` view.
|
|
||||||
|
|
||||||
[PG-354](https://jira.percona.com/browse/PG-354): Remove pg_stat_monitor_settings view
|
|
||||||
|
|
||||||
[PG-373](https://jira.percona.com/browse/PG-373): Remove wal fields for PG12 and below
|
|
||||||
|
|
||||||
[PG-518](https://jira.percona.com/browse/PG-518): Internal Functions should NOT be visible in PGSM API.
|
|
||||||
|
|
||||||
[PG-579](https://jira.percona.com/browse/PG-579): Querying pg_stat_monitor view crashes the server when pg_stat_monitor.so is not configured in shared_preload_libraries
|
|
||||||
|
|
||||||
[PG-582](https://jira.percona.com/browse/PG-582): blk_read_time and blk_write_time are not being rounded.
|
|
||||||
|
|
||||||
[PG-583](https://jira.percona.com/browse/PG-583): Rounded time based values are not consistent
|
|
||||||
|
|
||||||
[PG-597](https://jira.percona.com/browse/PG-597): Remove rounding off for floating point values
|
|
||||||
|
|
||||||
[PG-569](https://jira.percona.com/browse/PG-569): Make all data types of pg_stat_monitor view compatible with pg_stat_statements
|
|
||||||
|
|
||||||
## 1.1.1
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-462](https://jira.percona.com/browse/PG-462): Initial Support for PostgreSQL15 was added
|
|
||||||
|
|
||||||
## 1.1.0
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-474](https://jira.percona.com/browse/PG-474): Make pg_stat_monitor compiled with CLANG
|
|
||||||
|
|
||||||
[PG-159](https://jira.percona.com/browse/PG-159): Change the bucket start time scheme to align with the bucket time size
|
|
||||||
|
|
||||||
[PG-293](https://jira.percona.com/browse/PG-293): Add the ability to control features added on top of `pg_stat_monitor` using GUC (Grand Unified Configuration) parameters
|
|
||||||
|
|
||||||
[PG-300](https://jira.percona.com/browse/PG-300): Improve compatibility with PMM by making QueryIDs persistent for the same queries across different buckets and regardless of the node / client a query is executed on.
|
|
||||||
|
|
||||||
[PG-362](https://jira.percona.com/browse/PG-362): Fix the `pgsm_normalized_query` default value to provide query examples in the `pg_stat_monitor` view by default.
|
|
||||||
|
|
||||||
[PG-439](https://jira.percona.com/browse/PG-439): Remove warning of comparison of unsigned enum expression
|
|
||||||
|
|
||||||
### Bugs Fixed
|
|
||||||
|
|
||||||
[PG-221](https://jira.percona.com/browse/PG-221): Fixed the issue with pg_stat_monitor crashing when querying JSON with parallel workers enabled
|
|
||||||
|
|
||||||
[PG-289](https://jira.percona.com/browse/PG-289): Fixed the issue with pg_stat_monitor failing to build on C11 compilers by removing 'for' loop initial declarations
|
|
||||||
|
|
||||||
[PG-449](https://jira.percona.com/browse/PG-449): Fix comments visibility by correcting the behavior of the `pgsm_extract_comments` parameter
|
|
||||||
|
|
||||||
[PG-453](https://jira.percona.com/browse/PG-453): Fixed query normalization for INSERT statements in PostgreSQL 13 and earlier versions
|
|
||||||
|
|
||||||
[PG-455](https://jira.percona.com/browse/PG-455): Fixed the issue with data collection for any value specified for `pgsm_bucket_time` parameter within the min / max range
|
|
||||||
|
|
||||||
## 1.0.1
|
|
||||||
|
|
||||||
### Bugs Fixed
|
|
||||||
|
|
||||||
[PG-382](https://jira.percona.com/browse/PG-382): Histogram default settings changed to prevent the PostgreSQL server to crash
|
|
||||||
|
|
||||||
[PG-417](https://jira.percona.com/browse/PG-417): Addressed security vulnerabilities to prevent an attacker from precreating functions
|
|
||||||
|
|
||||||
[DISTPG-427](https://jira.percona.com/browse/DISTPG-427): Fixed the issue with the extensions not working when pg_stat_monitor is enabled by replacing the `return` with `goto exit` for the `pgsm_emit_log_hook` function
|
|
||||||
|
|
||||||
## 1.0.0
|
|
||||||
|
|
||||||
Bump version from 1.0.0-rc.2 to 1.0.0.
|
|
||||||
|
|
||||||
## 1.0.0-rc.2
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-331](https://jira.percona.com/browse/PG-331): Changed the default value for the `pg_stat_monitor.pgsm_query_max_len` parameter from 1024 to 2048 for better data presentation in PMM
|
|
||||||
|
|
||||||
[PG-355](https://jira.percona.com/browse/PG-355): Changed the collection of `sys_time` and `user_time` metrics so that they are now presented as an accumulative value
|
|
||||||
|
|
||||||
[PG-286](https://jira.percona.com/browse/PG-286): Improved pg_stat_monitor performance by decreasing the overhead by more than 50%.
|
|
||||||
|
|
||||||
[PG-267](https://jira.percona.com/browse/PG-267): Added test case to verify histogram feature
|
|
||||||
|
|
||||||
[PG-359](https://jira.percona.com/browse/PG-359): Documentation: updated the `pg_stat_monitor_settings` view reference.
|
|
||||||
|
|
||||||
[PG-344](https://jira.percona.com/browse/PG-344): Documentation: Updated the extensions order and behavior with data collection for PostgreSQL 14.
|
|
||||||
|
|
||||||
[PG-358](https://jira.percona.com/browse/PG-358): Documentation: data display of `** blk **` and `** wal **` columns when both `pg_stat_monitor` and `pg_stat_statements` are loaded together.
|
|
||||||
|
|
||||||
### Bugs Fixed
|
|
||||||
|
|
||||||
[PG-350](https://jira.percona.com/browse/PG-350): Fixed bucket time overflow
|
|
||||||
|
|
||||||
[PG-338](https://jira.percona.com/browse/PG-338): Fixed query calls count by setting the default value for `pg_stat_monitor.pgsm_track` to `top`.
|
|
||||||
|
|
||||||
[PG-291](https://jira.percona.com/browse/PG-338): Fixed calls count.
|
|
||||||
|
|
||||||
[PG-325](https://jira.percona.com/browse/PG-325): Fixed deadlock that occurred when the query length exceeded the `pgsm_query_max_len` value.
|
|
||||||
|
|
||||||
[PG-326](https://jira.percona.com/browse/PG-326): Added validation for `pgsm_histogram_min` and `pgsm_histogram_max` ranges
|
|
||||||
|
|
||||||
[PG-329](https://jira.percona.com/browse/PG-329): Fixed creation of `pg_stat_monitor_errors` view on SQL files.
|
|
||||||
|
|
||||||
[PG-296](https://jira.percona.com/browse/PG-296): Fixed issue with the application name not displaying in the view when changed.
|
|
||||||
|
|
||||||
[PG-290](https://jira.percona.com/browse/PG-290): Fixed issue with PostgreSQL crashing after enabling debug log level and when `pg_stat_monitor` is enabled.
|
|
||||||
|
|
||||||
[PG-166](https://jira.percona.com/browse/PG-166): Fixed issue with displaying the actual system time values instead of `NULL`
|
|
||||||
|
|
||||||
[PG-369](https://jira.percona.com/browse/PG-358): Fixed issue with incorrect `wal_bytes` values for PostgreSQL 11 and 12 that caused Query Analytics failure in PMM by ignoring the `WalUsage` variable value for these versions.
|
|
||||||
|
|
||||||
## 1.0.0-rc.1
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-165](https://jira.percona.com/browse/PG-165): Recycle expired buckets
|
|
||||||
|
|
||||||
[PG-167](https://jira.percona.com/browse/PG-167): Make SQL error codes readable by updating their data types
|
|
||||||
|
|
||||||
[PG-193](https://jira.percona.com/browse/PG-193): Create a comment based tags to identify different parameters
|
|
||||||
|
|
||||||
[PG-199](https://jira.percona.com/browse/PG-199): Documentation: Add the integration with PMM section in User Guide
|
|
||||||
|
|
||||||
[PG-210](https://jira.percona.com/browse/PG-210): Documentation: Update column names per POstgreSQL version to match the upstream ones
|
|
||||||
|
|
||||||
### Bugs Fixed
|
|
||||||
|
|
||||||
[PG-177](https://jira.percona.com/browse/PG-177): Fixed the error in histogram ranges
|
|
||||||
|
|
||||||
[PG-214](https://jira.percona.com/browse/PG-214): Fixed the issue with the display of the error message as part of the query column in `pg_stat_monitor` view
|
|
||||||
|
|
||||||
[PG-246](https://jira.percona.com/browse/PG-246): Fixed the issue with significant CPU and memory resource usage when `pg_stat_monitor.pgsm_enable_query_plan` parameter is enabled
|
|
||||||
|
|
||||||
[PG-262](https://jira.percona.com/browse/PG-262): Fixed the way the comments are extracted in pg_stat_monitor view
|
|
||||||
|
|
||||||
[PG-271](https://jira.percona.com/browse/PG-271): Fixed the issue with enabling the ``pg_stat_monitor.pgsm_overflow_target`` configuration parameter.
|
|
||||||
|
|
||||||
[PG-272](https://jira.percona.com/browse/PG-272): Fixed the server crash when calling the `pg_stat_monitor_reset()` function by using the correct `PGSM_MAX_BUCKETS` GUC as the limit to the loop
|
|
||||||
|
|
||||||
## REL0_9_0_STABLE
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-186](https://jira.percona.com/browse/PG-186): Add support to monitor query execution plan
|
|
||||||
|
|
||||||
[PG-147](https://jira.percona.com/browse/PG-147): Store top query, instead of parent query.
|
|
||||||
|
|
||||||
[PG-188](https://jira.percona.com/browse/PG-188): Added a new column to monitor the query state i.e PARSING/PLANNING/ACTIVE/FINISHED.
|
|
||||||
|
|
||||||
[PG-180](https://jira.percona.com/browse/PG-180): Schema Qualified table/relations names.
|
|
||||||
|
|
||||||
Regression Test Suite.
|
|
||||||
|
|
||||||
### Bugs Fixed
|
|
||||||
|
|
||||||
[PG-189](https://jira.percona.com/browse/PG-189): Regression crash in case of PostgreSQL 11.
|
|
||||||
|
|
||||||
[PG-187](https://jira.percona.com/browse/PG-187): Compilation Error for PostgreSQL 11 and PostgreSQL 12.
|
|
||||||
|
|
||||||
[PG-186](https://jira.percona.com/browse/PG-186): Add support to monitor query execution plan.
|
|
||||||
|
|
||||||
[PG-182](https://jira.percona.com/browse/PG-182): Added a new option for the query buffer overflow.
|
|
||||||
|
|
||||||
[PG-181](https://jira.percona.com/browse/PG-181): Segmentation fault in case of track_utility is ON.
|
|
||||||
|
|
||||||
Some Code refactoring.
|
|
||||||
|
|
||||||
## REL0_8_1
|
|
||||||
|
|
||||||
[PG-147](https://jira.percona.com/browse/PG-147): Stored Procedure Support add parentid to track caller.
|
|
||||||
|
|
||||||
[PG-177](https://jira.percona.com/browse/PG-177): Error in Histogram ranges.
|
|
||||||
|
|
||||||
## REL0_8_0_STABLE
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
Column userid (int64) was removed.
|
|
||||||
Column dbid (int64) was removed.
|
|
||||||
|
|
||||||
Column user (string) was added (replacement for userid).
|
|
||||||
Column datname (string) was added (replacement for dbid).
|
|
||||||
|
|
||||||
[PG-176](https://jira.percona.com/browse/PG-176): Extract fully qualified relations name.
|
|
||||||
|
|
||||||
[PG-175](https://jira.percona.com/browse/PG-175): Only Superuser / Privileged user can view IP address.
|
|
||||||
|
|
||||||
[PG-174](https://jira.percona.com/browse/PG-174): Code cleanup.
|
|
||||||
|
|
||||||
[PG-173](https://jira.percona.com/browse/PG-173): Added new WAL usage statistics.
|
|
||||||
|
|
||||||
[PG-172](https://jira.percona.com/browse/PG-172): Exponential histogram for time buckets.
|
|
||||||
|
|
||||||
[PG-164](https://jira.percona.com/browse/PG-164): Query timing will be four decimal places instead of two.
|
|
||||||
|
|
||||||
[PG-167](https://jira.percona.com/browse/PG-167): SQLERRCODE must be in readable format.
|
|
||||||
|
|
||||||
### Bugs Fixed
|
|
||||||
|
|
||||||
[PG-169](https://jira.percona.com/browse/PG-169): Fixing message buffer overrun and incorrect index access to fix the server crash.
|
|
||||||
|
|
||||||
[PG-168](https://jira.percona.com/browse/PG-168): "calls" and histogram parameter does not match.
|
|
||||||
|
|
||||||
[PG-166](https://jira.percona.com/browse/PG-166): Display actual system time instead of null.
|
|
||||||
|
|
||||||
[PG-165](https://jira.percona.com/browse/PG-165): Recycle expired buckets.
|
|
||||||
|
|
||||||
[PG-150](https://jira.percona.com/browse/PG-150): Error while logging CMD Type like SELECT, UPDATE, INSERT, DELETE.
|
|
||||||
|
|
||||||
|
|
||||||
## REL0_7_2
|
|
||||||
|
|
||||||
[PG-165](https://jira.percona.com/browse/PG-165): Recycle expired buckets.
|
|
||||||
|
|
||||||
[PG-164](https://jira.percona.com/browse/PG-164): Query timing will be four decimal places instead of two.
|
|
||||||
|
|
||||||
[PG-161](https://jira.percona.com/browse/PG-161): Miscellaneous small issues.
|
|
||||||
|
|
||||||
## REL0_7_1
|
|
||||||
|
|
||||||
[PG-158](https://jira.percona.com/browse/PG-158): Segmentation fault while using pgbench with clients > 1.
|
|
||||||
|
|
||||||
[PG-159](https://jira.percona.com/browse/PG-159): Bucket start time (bucket_start_time) should be aligned with bucket_time.
|
|
||||||
|
|
||||||
[PG-160](https://jira.percona.com/browse/PG-160): Integration with PGXN.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## REL0_7_0_STABLE
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-153](https://jira.percona.com/browse/PG-153): Capture and record the application_name executing the query.
|
|
||||||
|
|
||||||
[PG-145](https://jira.percona.com/browse/PG-143): Add a new View/Query to show the actual Database name and Username.
|
|
||||||
|
|
||||||
[PG-110](https://jira.percona.com/browse/PG-110); Aggregate the number of warnings.
|
|
||||||
|
|
||||||
[PG-109](https://jira.percona.com/browse/PG-109): Log failed queries or queries with warning messages.
|
|
||||||
|
|
||||||
[PG-150](https://jira.percona.com/browse/PG-150): Differentiate different types of queries such as SELECT, UPDATE, INSERT or DELETE.
|
|
||||||
|
|
||||||
### Bugs Fixed
|
|
||||||
|
|
||||||
[PG-111](https://jira.percona.com/browse/PG-111) Show information for incomplete buckets.
|
|
||||||
|
|
||||||
[PG-148](https://jira.percona.com/browse/PG-148) Loss of query statistics/monitoring due to not enough “slots” available.
|
|
||||||
|
|
||||||
## v0.6.0
|
|
||||||
Initial Release.
|
|
||||||
|
|
||||||
|
|
||||||
## Master
|
|
||||||
|
|
||||||
### Improvements
|
|
||||||
|
|
||||||
[PG-156](https://jira.percona.com/browse/PG-156): Adding a placeholder replacement function for the prepared statement
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
pg_stat_monitor project follows rolling release strategy. So all security updates go to new versions.
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
Please report any vulnerabilities to our project in [Jira](https://perconadev.atlassian.net/jira/software/c/projects/PG/issues).
|
||||||
|
|
||||||
|
If the vulnerability is accepted and confirmed by our experts, you should normally expect us to deliver
|
||||||
|
a version with a fix according to the timelines provided below:
|
||||||
|
|
||||||
|
For Percona created software (our engineers wrote the code):
|
||||||
|
|
||||||
|
- Low/Medium: 120 days
|
||||||
|
- High: 90 days
|
||||||
|
- Critical: ASAP but should not exceed 30 days
|
||||||
|
|
||||||
|
For Non-Percona created software (upstream provided/packaged) from the time the vendor releases a patch:
|
||||||
|
|
||||||
|
- Low/Medium: 2nd release from current version
|
||||||
|
- High: Next release
|
||||||
|
- Critical: Hotfix or no later than next release (our regular release cadence is once every month)
|
|
@ -1,4 +1,4 @@
|
||||||
# Percona Distribution for PostgreSQL Operator Code of Conduct
|
# Percona Code of Conduct
|
||||||
|
|
||||||
All Percona Products follow the [Percona Community Code of Conduct](https://github.com/percona/community/blob/main/content/contribute/coc.md).
|
All Percona Products follow the [Percona Community Code of Conduct](https://github.com/percona/community/blob/main/content/contribute/coc.md).
|
||||||
|
|
||||||
|
|
23
guc.c
23
guc.c
|
@ -1,14 +1,14 @@
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* guc.c: guc variable handling of pg_stat_monitor
|
* guc.c
|
||||||
|
* guc variable handling of pg_stat_monitor
|
||||||
*
|
*
|
||||||
* Portions Copyright © 2018-2020, Percona LLC and/or its affiliates
|
* Portions Copyright © 2018-2024, Percona LLC and/or its affiliates
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1994, The Regents of the University of California
|
* Portions Copyright (c) 1994, The Regents of the University of California
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* contrib/pg_stat_monitor/guc.c
|
* contrib/pg_stat_monitor/guc.c
|
||||||
*
|
*
|
||||||
|
@ -33,6 +33,7 @@ bool pgsm_enable_query_plan;
|
||||||
bool pgsm_enable_overflow;
|
bool pgsm_enable_overflow;
|
||||||
bool pgsm_normalized_query;
|
bool pgsm_normalized_query;
|
||||||
bool pgsm_track_utility;
|
bool pgsm_track_utility;
|
||||||
|
bool pgsm_track_application_names;
|
||||||
bool pgsm_enable_pgsm_query_id;
|
bool pgsm_enable_pgsm_query_id;
|
||||||
int pgsm_track;
|
int pgsm_track;
|
||||||
static int pgsm_overflow_target; /* Not used since 2.0 */
|
static int pgsm_overflow_target; /* Not used since 2.0 */
|
||||||
|
@ -48,7 +49,7 @@ static bool check_overflow_targer(int *newval, void **extra, GucSource source);
|
||||||
void
|
void
|
||||||
init_guc(void)
|
init_guc(void)
|
||||||
{
|
{
|
||||||
pgsm_track = PGSM_TRACK_TOP;
|
pgsm_track = PGSM_TRACK_TOP;
|
||||||
|
|
||||||
DefineCustomIntVariable("pg_stat_monitor.pgsm_max", /* name */
|
DefineCustomIntVariable("pg_stat_monitor.pgsm_max", /* name */
|
||||||
"Sets the maximum size of shared memory in (MB) used for statement's metadata tracked by pg_stat_monitor.", /* short_desc */
|
"Sets the maximum size of shared memory in (MB) used for statement's metadata tracked by pg_stat_monitor.", /* short_desc */
|
||||||
|
@ -190,6 +191,18 @@ init_guc(void)
|
||||||
NULL /* show_hook */
|
NULL /* show_hook */
|
||||||
);
|
);
|
||||||
|
|
||||||
|
DefineCustomBoolVariable("pg_stat_monitor.pgsm_track_application_names", /* name */
|
||||||
|
"Enable/Disable application names tracking.", /* short_desc */
|
||||||
|
NULL, /* long_desc */
|
||||||
|
&pgsm_track_application_names, /* value address */
|
||||||
|
true, /* boot value */
|
||||||
|
PGC_USERSET, /* context */
|
||||||
|
0, /* flags */
|
||||||
|
NULL, /* check_hook */
|
||||||
|
NULL, /* assign_hook */
|
||||||
|
NULL /* show_hook */
|
||||||
|
);
|
||||||
|
|
||||||
DefineCustomBoolVariable("pg_stat_monitor.pgsm_enable_pgsm_query_id", /* name */
|
DefineCustomBoolVariable("pg_stat_monitor.pgsm_enable_pgsm_query_id", /* name */
|
||||||
"Enable/disable PGSM specific query id calculation which is very useful in comparing same query across databases and clusters..", /* short_desc */
|
"Enable/disable PGSM specific query id calculation which is very useful in comparing same query across databases and clusters..", /* short_desc */
|
||||||
NULL, /* long_desc */
|
NULL, /* long_desc */
|
||||||
|
|
31
hash_query.c
31
hash_query.c
|
@ -1,11 +1,11 @@
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* hash_query.c
|
* hash_query.c
|
||||||
* Track statement execution times across a whole database cluster.
|
* Track statement execution times across a whole database cluster.
|
||||||
*
|
*
|
||||||
* Portions Copyright © 2018-2020, Percona LLC and/or its affiliates
|
* Portions Copyright © 2018-2024, Percona LLC and/or its affiliates
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1994, The Regents of the University of California
|
* Portions Copyright (c) 1994, The Regents of the University of California
|
||||||
*
|
*
|
||||||
|
@ -19,9 +19,9 @@
|
||||||
#include "pg_stat_monitor.h"
|
#include "pg_stat_monitor.h"
|
||||||
|
|
||||||
static pgsmLocalState pgsmStateLocal;
|
static pgsmLocalState pgsmStateLocal;
|
||||||
static PGSM_HASH_TABLE_HANDLE pgsm_create_bucket_hash(pgsmSharedState * pgsm, dsa_area *dsa);
|
static PGSM_HASH_TABLE_HANDLE pgsm_create_bucket_hash(pgsmSharedState *pgsm, dsa_area *dsa);
|
||||||
static Size pgsm_get_shared_area_size(void);
|
static Size pgsm_get_shared_area_size(void);
|
||||||
static void InitializeSharedState(pgsmSharedState * pgsm);
|
static void InitializeSharedState(pgsmSharedState *pgsm);
|
||||||
|
|
||||||
#define PGSM_BUCKET_INFO_SIZE (sizeof(TimestampTz) * pgsm_max_buckets)
|
#define PGSM_BUCKET_INFO_SIZE (sizeof(TimestampTz) * pgsm_max_buckets)
|
||||||
#define PGSM_SHARED_STATE_SIZE (sizeof(pgsmSharedState) + PGSM_BUCKET_INFO_SIZE)
|
#define PGSM_SHARED_STATE_SIZE (sizeof(pgsmSharedState) + PGSM_BUCKET_INFO_SIZE)
|
||||||
|
@ -142,9 +142,9 @@ pgsm_startup(void)
|
||||||
*/
|
*/
|
||||||
dsa_detach(dsa);
|
dsa_detach(dsa);
|
||||||
|
|
||||||
pgsmStateLocal.pgsm_mem_cxt = AllocSetContextCreate(TopMemoryContext,
|
pgsmStateLocal.pgsm_mem_cxt = AllocSetContextCreate(TopMemoryContext,
|
||||||
"pg_stat_monitor local store",
|
"pg_stat_monitor local store",
|
||||||
ALLOCSET_DEFAULT_SIZES);
|
ALLOCSET_DEFAULT_SIZES);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef BENCHMARK
|
#ifdef BENCHMARK
|
||||||
|
@ -161,7 +161,7 @@ pgsm_startup(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
InitializeSharedState(pgsmSharedState * pgsm)
|
InitializeSharedState(pgsmSharedState *pgsm)
|
||||||
{
|
{
|
||||||
pg_atomic_init_u64(&pgsm->current_wbucket, 0);
|
pg_atomic_init_u64(&pgsm->current_wbucket, 0);
|
||||||
pg_atomic_init_u64(&pgsm->prev_bucket_sec, 0);
|
pg_atomic_init_u64(&pgsm->prev_bucket_sec, 0);
|
||||||
|
@ -172,7 +172,7 @@ InitializeSharedState(pgsmSharedState * pgsm)
|
||||||
* Create the classic or dshahs hash table for storing the query statistics.
|
* Create the classic or dshahs hash table for storing the query statistics.
|
||||||
*/
|
*/
|
||||||
static PGSM_HASH_TABLE_HANDLE
|
static PGSM_HASH_TABLE_HANDLE
|
||||||
pgsm_create_bucket_hash(pgsmSharedState * pgsm, dsa_area *dsa)
|
pgsm_create_bucket_hash(pgsmSharedState *pgsm, dsa_area *dsa)
|
||||||
{
|
{
|
||||||
PGSM_HASH_TABLE_HANDLE bucket_hash;
|
PGSM_HASH_TABLE_HANDLE bucket_hash;
|
||||||
|
|
||||||
|
@ -238,7 +238,8 @@ pgsm_attach_shmem(void)
|
||||||
MemoryContextSwitchTo(oldcontext);
|
MemoryContextSwitchTo(oldcontext);
|
||||||
}
|
}
|
||||||
|
|
||||||
MemoryContext GetPgsmMemoryContext(void)
|
MemoryContext
|
||||||
|
GetPgsmMemoryContext(void)
|
||||||
{
|
{
|
||||||
return pgsmStateLocal.pgsm_mem_cxt;
|
return pgsmStateLocal.pgsm_mem_cxt;
|
||||||
}
|
}
|
||||||
|
@ -287,7 +288,7 @@ pgsm_shmem_shutdown(int code, Datum arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsmEntry *
|
pgsmEntry *
|
||||||
hash_entry_alloc(pgsmSharedState * pgsm, pgsmHashKey * key, int encoding)
|
hash_entry_alloc(pgsmSharedState *pgsm, pgsmHashKey *key, int encoding)
|
||||||
{
|
{
|
||||||
pgsmEntry *entry = NULL;
|
pgsmEntry *entry = NULL;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
@ -303,6 +304,8 @@ hash_entry_alloc(pgsmSharedState * pgsm, pgsmHashKey * key, int encoding)
|
||||||
memset(&entry->counters, 0, sizeof(Counters));
|
memset(&entry->counters, 0, sizeof(Counters));
|
||||||
entry->query_text.query_pos = InvalidDsaPointer;
|
entry->query_text.query_pos = InvalidDsaPointer;
|
||||||
entry->counters.info.parent_query = InvalidDsaPointer;
|
entry->counters.info.parent_query = InvalidDsaPointer;
|
||||||
|
entry->stats_since = GetCurrentTimestamp();
|
||||||
|
entry->minmax_stats_since = entry->stats_since;
|
||||||
|
|
||||||
/* set the appropriate initial usage count */
|
/* set the appropriate initial usage count */
|
||||||
/* re-initialize the mutex each time ... we assume no one using it */
|
/* re-initialize the mutex each time ... we assume no one using it */
|
||||||
|
@ -391,7 +394,7 @@ IsSystemOOM(void)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void *
|
void *
|
||||||
pgsm_hash_find_or_insert(PGSM_HASH_TABLE * shared_hash, pgsmHashKey * key, bool *found)
|
pgsm_hash_find_or_insert(PGSM_HASH_TABLE * shared_hash, pgsmHashKey *key, bool *found)
|
||||||
{
|
{
|
||||||
#if USE_DYNAMIC_HASH
|
#if USE_DYNAMIC_HASH
|
||||||
void *entry;
|
void *entry;
|
||||||
|
@ -404,7 +407,7 @@ pgsm_hash_find_or_insert(PGSM_HASH_TABLE * shared_hash, pgsmHashKey * key, bool
|
||||||
}
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
pgsm_hash_find(PGSM_HASH_TABLE * shared_hash, pgsmHashKey * key, bool *found)
|
pgsm_hash_find(PGSM_HASH_TABLE * shared_hash, pgsmHashKey *key, bool *found)
|
||||||
{
|
{
|
||||||
#if USE_DYNAMIC_HASH
|
#if USE_DYNAMIC_HASH
|
||||||
return dshash_find(shared_hash, key, false);
|
return dshash_find(shared_hash, key, false);
|
||||||
|
|
|
@ -16,6 +16,8 @@ install_data(
|
||||||
'pg_stat_monitor.control',
|
'pg_stat_monitor.control',
|
||||||
'pg_stat_monitor--2.0.sql',
|
'pg_stat_monitor--2.0.sql',
|
||||||
'pg_stat_monitor--1.0--2.0.sql',
|
'pg_stat_monitor--1.0--2.0.sql',
|
||||||
|
'pg_stat_monitor--2.0--2.1.sql',
|
||||||
|
'pg_stat_monitor--2.1--2.2.sql',
|
||||||
kwargs: contrib_data_args,
|
kwargs: contrib_data_args,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -31,11 +33,13 @@ tests += {
|
||||||
'cmd_type',
|
'cmd_type',
|
||||||
'counters',
|
'counters',
|
||||||
'database',
|
'database',
|
||||||
|
'different_parent_queries'
|
||||||
'error_insert',
|
'error_insert',
|
||||||
'error',
|
'error',
|
||||||
'functions',
|
'functions',
|
||||||
'guc',
|
'guc',
|
||||||
'histogram',
|
'histogram',
|
||||||
|
'level_tracking'
|
||||||
'pgsqm_query_id',
|
'pgsqm_query_id',
|
||||||
'relations',
|
'relations',
|
||||||
'rows',
|
'rows',
|
||||||
|
|
101
mkdocs.yml
101
mkdocs.yml
|
@ -1,101 +0,0 @@
|
||||||
# MkDocs configuration for Netlify builds
|
|
||||||
|
|
||||||
site_name: pg_stat_monitor Documentation
|
|
||||||
site_description: Documentation
|
|
||||||
site_author: Percona LLC
|
|
||||||
copyright: Percona LLC, © 2022
|
|
||||||
|
|
||||||
repo_name: percona/pg_stat_monitor
|
|
||||||
repo_url: https://github.com/percona/pg_stat_monitor
|
|
||||||
edit_uri: edit/master/docs/
|
|
||||||
|
|
||||||
use_directory_urls: false
|
|
||||||
|
|
||||||
# Theme for netlify testing
|
|
||||||
theme:
|
|
||||||
name: material
|
|
||||||
logo: _images/percona-logo.svg
|
|
||||||
favicon: _images/percona-favicon.ico
|
|
||||||
custom_dir: docs/overrides
|
|
||||||
|
|
||||||
palette:
|
|
||||||
|
|
||||||
# Light mode
|
|
||||||
- media: "(prefers-color-scheme: light)"
|
|
||||||
scheme: percona-light
|
|
||||||
toggle:
|
|
||||||
icon: material/toggle-switch-off-outline
|
|
||||||
name: Switch to dark mode
|
|
||||||
|
|
||||||
# Dark mode
|
|
||||||
- media: "(prefers-color-scheme: dark)"
|
|
||||||
scheme: slate
|
|
||||||
toggle:
|
|
||||||
icon: material/toggle-switch
|
|
||||||
name: Switch to light mode
|
|
||||||
|
|
||||||
# Theme features
|
|
||||||
|
|
||||||
features:
|
|
||||||
- search.highlight
|
|
||||||
- navigation.top
|
|
||||||
|
|
||||||
|
|
||||||
extra_css:
|
|
||||||
- https://unicons.iconscout.com/release/v3.0.3/css/line.css
|
|
||||||
- https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css
|
|
||||||
- css/version-select.css
|
|
||||||
- css/toctree.css
|
|
||||||
- css/percona.css
|
|
||||||
|
|
||||||
extra_javascript:
|
|
||||||
- js/version-select.js
|
|
||||||
|
|
||||||
markdown_extensions:
|
|
||||||
- attr_list
|
|
||||||
- toc:
|
|
||||||
permalink: True
|
|
||||||
- admonition
|
|
||||||
- footnotes
|
|
||||||
- def_list # https://michelf.ca/projects/php-markdown/extra/#def-list
|
|
||||||
- meta
|
|
||||||
- smarty:
|
|
||||||
smart_angled_quotes: true
|
|
||||||
- pymdownx.mark
|
|
||||||
- pymdownx.smartsymbols
|
|
||||||
- pymdownx.tabbed
|
|
||||||
- pymdownx.tilde
|
|
||||||
- pymdownx.superfences
|
|
||||||
- pymdownx.highlight:
|
|
||||||
linenums: false
|
|
||||||
- pymdownx.emoji:
|
|
||||||
emoji_index: !!python/name:materialx.emoji.twemoji
|
|
||||||
emoji_generator: !!python/name:materialx.emoji.to_svg
|
|
||||||
#- plantuml_markdown
|
|
||||||
|
|
||||||
plugins:
|
|
||||||
- search
|
|
||||||
- git-revision-date
|
|
||||||
- section-index # Adds links to nodes - comment out when creating PDF
|
|
||||||
# - htmlproofer # Uncomment to check links - but extends build time significantly
|
|
||||||
- mike:
|
|
||||||
version_selector: true
|
|
||||||
css_dir: css
|
|
||||||
javascript_dir: js
|
|
||||||
canonical_version: null
|
|
||||||
|
|
||||||
|
|
||||||
extra:
|
|
||||||
version:
|
|
||||||
provider: mike
|
|
||||||
|
|
||||||
nav:
|
|
||||||
- index.md
|
|
||||||
- setup.md
|
|
||||||
- User guide:
|
|
||||||
- USER_GUIDE.md
|
|
||||||
- REFERENCE.md
|
|
||||||
- COMPARISON.md
|
|
||||||
- Release notes:
|
|
||||||
- RELEASE_NOTES.md
|
|
||||||
# - Version Selector: "../"
|
|
|
@ -21,6 +21,7 @@ Usage: $0 [OPTIONS]
|
||||||
--rpm_release RPM version( default = 1)
|
--rpm_release RPM version( default = 1)
|
||||||
--deb_release DEB version( default = 1)
|
--deb_release DEB version( default = 1)
|
||||||
--pg_release PPG version build on( default = 11)
|
--pg_release PPG version build on( default = 11)
|
||||||
|
--ppg_repo_name PPG repo name (default ppg-11.18)
|
||||||
--version product version
|
--version product version
|
||||||
--help) usage ;;
|
--help) usage ;;
|
||||||
Example $0 --builddir=/tmp/test --get_sources=1 --build_src_rpm=1 --build_rpm=1
|
Example $0 --builddir=/tmp/test --get_sources=1 --build_src_rpm=1 --build_rpm=1
|
||||||
|
@ -57,6 +58,7 @@ append_arg_to_args () {
|
||||||
--rpm_release=*) RPM_RELEASE="$val" ;;
|
--rpm_release=*) RPM_RELEASE="$val" ;;
|
||||||
--deb_release=*) DEB_RELEASE="$val" ;;
|
--deb_release=*) DEB_RELEASE="$val" ;;
|
||||||
--pg_release=*) PG_RELEASE="$val" ;;
|
--pg_release=*) PG_RELEASE="$val" ;;
|
||||||
|
--ppg_repo_name=*) PPG_REPO_NAME="$val";;
|
||||||
--version=*) VERSION="$val" ;;
|
--version=*) VERSION="$val" ;;
|
||||||
--help) usage ;;
|
--help) usage ;;
|
||||||
*)
|
*)
|
||||||
|
@ -160,7 +162,8 @@ get_sources(){
|
||||||
source pg-stat-monitor.properties
|
source pg-stat-monitor.properties
|
||||||
#
|
#
|
||||||
tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL}
|
tar --owner=0 --group=0 --exclude=.* -czf ${PRODUCT_FULL}.tar.gz ${PRODUCT_FULL}
|
||||||
echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${BUILD_ID}" >> pg-stat-monitor.properties
|
DATE_TIMESTAMP=$(date +%F_%H-%M-%S)
|
||||||
|
echo "UPLOAD=UPLOAD/experimental/BUILDS/${PRODUCT}/${PRODUCT_FULL}/${BRANCH}/${REVISION}/${DATE_TIMESTAMP}/${BUILD_ID}" >> pg-stat-monitor.properties
|
||||||
mkdir $WORKDIR/source_tarball
|
mkdir $WORKDIR/source_tarball
|
||||||
mkdir $CURDIR/source_tarball
|
mkdir $CURDIR/source_tarball
|
||||||
cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball
|
cp ${PRODUCT_FULL}.tar.gz $WORKDIR/source_tarball
|
||||||
|
@ -200,18 +203,29 @@ install_deps() {
|
||||||
CURPLACE=$(pwd)
|
CURPLACE=$(pwd)
|
||||||
if [ "$OS" == "rpm" ]
|
if [ "$OS" == "rpm" ]
|
||||||
then
|
then
|
||||||
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
|
|
||||||
if [[ ${PG_RELEASE} == "11" ]]; then
|
|
||||||
percona-release enable ppg-11 release
|
|
||||||
elif [[ $PG_RELEASE == "12" ]]; then
|
|
||||||
percona-release enable ppg-12 release
|
|
||||||
fi
|
|
||||||
yum -y install git wget
|
yum -y install git wget
|
||||||
|
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
|
||||||
|
wget https://raw.githubusercontent.com/percona/percona-repositories/release-1.0-28/scripts/percona-release.sh
|
||||||
|
mv percona-release.sh /usr/bin/percona-release
|
||||||
|
chmod 777 /usr/bin/percona-release
|
||||||
|
percona-release enable ${PPG_REPO_NAME} testing
|
||||||
|
|
||||||
|
if [ x"$RHEL" = x8 ];
|
||||||
|
then
|
||||||
|
clang_version=$(yum list --showduplicates clang-devel | grep "17.0" | grep clang | awk '{print $2}' | head -n 1)
|
||||||
|
llvm_version=$(yum list --showduplicates llvm-devel | grep "17.0" | grep llvm | awk '{print $2}' | head -n 1)
|
||||||
|
yum install -y clang-devel-${clang_version} clang-${clang_version} llvm-devel-${llvm_version}
|
||||||
|
dnf module -y disable llvm-toolset
|
||||||
|
else
|
||||||
|
yum install -y clang-devel clang llvm-devel
|
||||||
|
fi
|
||||||
|
|
||||||
PKGLIST="percona-postgresql${PG_RELEASE}-devel"
|
PKGLIST="percona-postgresql${PG_RELEASE}-devel"
|
||||||
PKGLIST+=" clang-devel git clang llvm-devel rpmdevtools vim wget"
|
PKGLIST+=" git rpmdevtools vim wget"
|
||||||
PKGLIST+=" perl binutils gcc gcc-c++"
|
PKGLIST+=" perl binutils gcc gcc-c++"
|
||||||
PKGLIST+=" clang-devel llvm-devel git rpm-build rpmdevtools wget gcc make autoconf"
|
PKGLIST+=" git rpm-build rpmdevtools wget gcc make autoconf"
|
||||||
if [[ "${RHEL}" -ge 8 ]]; then
|
if [[ "${RHEL}" -ge 8 ]]; then
|
||||||
|
dnf config-manager --set-enabled ol${RHEL}_codeready_builder
|
||||||
dnf -y module disable postgresql || true
|
dnf -y module disable postgresql || true
|
||||||
elif [[ "${RHEL}" -eq 7 ]]; then
|
elif [[ "${RHEL}" -eq 7 ]]; then
|
||||||
PKGLIST+=" llvm-toolset-7-clang llvm-toolset-7-llvm-devel llvm5.0-devel"
|
PKGLIST+=" llvm-toolset-7-clang llvm-toolset-7-llvm-devel llvm5.0-devel"
|
||||||
|
@ -232,14 +246,12 @@ install_deps() {
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
apt-get update
|
apt-get update
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get -y install lsb-release gnupg git wget
|
DEBIAN_FRONTEND=noninteractive apt-get -y install lsb-release gnupg git wget curl
|
||||||
|
|
||||||
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb && dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
|
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
|
||||||
if [[ "${PG_RELEASE}" == "11" ]]; then
|
dpkg -i percona-release_latest.generic_all.deb
|
||||||
percona-release enable ppg-11 release
|
rm -f percona-release_latest.generic_all.deb
|
||||||
elif [[ "${PG_RELEASE}" == "12" ]]; then
|
percona-release enable ${PPG_REPO_NAME} testing
|
||||||
percona-release enable ppg-12 release
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
PKGLIST="percona-postgresql-${PG_RELEASE} percona-postgresql-common percona-postgresql-server-dev-all"
|
PKGLIST="percona-postgresql-${PG_RELEASE} percona-postgresql-common percona-postgresql-server-dev-all"
|
||||||
|
@ -261,8 +273,8 @@ install_deps() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PKGLIST+=" debconf debhelper clang-7 devscripts dh-exec dh-systemd git wget libkrb5-dev libssl-dev"
|
PKGLIST+=" debconf debhelper clang devscripts dh-exec git wget libkrb5-dev libssl-dev"
|
||||||
PKGLIST+=" build-essential debconf debhelper devscripts dh-exec dh-systemd git wget libxml-checker-perl"
|
PKGLIST+=" build-essential debconf debhelper devscripts dh-exec git wget libxml-checker-perl"
|
||||||
PKGLIST+=" libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev"
|
PKGLIST+=" libxml-libxml-perl libio-socket-ssl-perl libperl-dev libssl-dev libxml2-dev txt2man zlib1g-dev libpq-dev"
|
||||||
|
|
||||||
until DEBIAN_FRONTEND=noninteractive apt-get -y install ${PKGLIST}; do
|
until DEBIAN_FRONTEND=noninteractive apt-get -y install ${PKGLIST}; do
|
||||||
|
@ -442,6 +454,19 @@ build_source_deb(){
|
||||||
cp *.orig.tar.gz $CURDIR/source_deb
|
cp *.orig.tar.gz $CURDIR/source_deb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
change_ddeb_package_to_deb(){
|
||||||
|
|
||||||
|
directory=$1
|
||||||
|
|
||||||
|
for file in "$directory"/*.ddeb; do
|
||||||
|
if [ -e "$file" ]; then
|
||||||
|
# Change extension to .deb
|
||||||
|
mv "$file" "${file%.ddeb}.deb"
|
||||||
|
echo "Changed extension of $file to ${file%.ddeb}.deb"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
build_deb(){
|
build_deb(){
|
||||||
if [ $DEB = 0 ]
|
if [ $DEB = 0 ]
|
||||||
then
|
then
|
||||||
|
@ -479,6 +504,7 @@ build_deb(){
|
||||||
mkdir -p $WORKDIR/deb
|
mkdir -p $WORKDIR/deb
|
||||||
cp $WORKDIR/*.*deb $WORKDIR/deb
|
cp $WORKDIR/*.*deb $WORKDIR/deb
|
||||||
cp $WORKDIR/*.*deb $CURDIR/deb
|
cp $WORKDIR/*.*deb $CURDIR/deb
|
||||||
|
change_ddeb_package_to_deb "$CURDIR/deb"
|
||||||
}
|
}
|
||||||
|
|
||||||
CURDIR=$(pwd)
|
CURDIR=$(pwd)
|
||||||
|
@ -502,6 +528,7 @@ DEB_RELEASE=1
|
||||||
REPO="https://github.com/Percona/pg_stat_monitor.git"
|
REPO="https://github.com/Percona/pg_stat_monitor.git"
|
||||||
VERSION="1.0.0"
|
VERSION="1.0.0"
|
||||||
PG_RELEASE=11
|
PG_RELEASE=11
|
||||||
|
PPG_REPO_NAME=ppg-11
|
||||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||||
|
|
||||||
check_workdir
|
check_workdir
|
||||||
|
|
|
@ -0,0 +1,497 @@
|
||||||
|
/* contrib/pg_stat_monitor/pg_stat_monitor--2.0--2.1.sql */
|
||||||
|
|
||||||
|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||||
|
\echo Use "ALTER EXTENSION pg_stat_monitor" to load this file. \quit
|
||||||
|
|
||||||
|
DROP FUNCTION pg_stat_monitor_internal CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_view CASCADE;
|
||||||
|
DROP FUNCTION pgsm_create_11_view();
|
||||||
|
DROP FUNCTION pgsm_create_13_view();
|
||||||
|
DROP FUNCTION pgsm_create_14_view();
|
||||||
|
DROP FUNCTION pgsm_create_15_view();
|
||||||
|
|
||||||
|
CREATE FUNCTION pg_stat_monitor_internal(
|
||||||
|
IN showtext boolean,
|
||||||
|
OUT bucket int8, -- 0
|
||||||
|
OUT userid oid,
|
||||||
|
OUT username text,
|
||||||
|
OUT dbid oid,
|
||||||
|
OUT datname text,
|
||||||
|
OUT client_ip int8,
|
||||||
|
|
||||||
|
OUT queryid int8, -- 6
|
||||||
|
OUT planid int8,
|
||||||
|
OUT query text,
|
||||||
|
OUT query_plan text,
|
||||||
|
OUT pgsm_query_id int8,
|
||||||
|
OUT top_queryid int8,
|
||||||
|
OUT top_query text,
|
||||||
|
OUT application_name text,
|
||||||
|
|
||||||
|
OUT relations text, -- 14
|
||||||
|
OUT cmd_type int,
|
||||||
|
OUT elevel int,
|
||||||
|
OUT sqlcode TEXT,
|
||||||
|
OUT message text,
|
||||||
|
OUT bucket_start_time timestamptz,
|
||||||
|
|
||||||
|
OUT calls int8, -- 20
|
||||||
|
|
||||||
|
OUT total_exec_time float8, -- 21
|
||||||
|
OUT min_exec_time float8,
|
||||||
|
OUT max_exec_time float8,
|
||||||
|
OUT mean_exec_time float8,
|
||||||
|
OUT stddev_exec_time float8,
|
||||||
|
|
||||||
|
OUT rows int8, -- 26
|
||||||
|
|
||||||
|
OUT plans int8, -- 27
|
||||||
|
|
||||||
|
OUT total_plan_time float8, -- 28
|
||||||
|
OUT min_plan_time float8,
|
||||||
|
OUT max_plan_time float8,
|
||||||
|
OUT mean_plan_time float8,
|
||||||
|
OUT stddev_plan_time float8,
|
||||||
|
|
||||||
|
OUT shared_blks_hit int8, -- 33
|
||||||
|
OUT shared_blks_read int8,
|
||||||
|
OUT shared_blks_dirtied int8,
|
||||||
|
OUT shared_blks_written int8,
|
||||||
|
OUT local_blks_hit int8,
|
||||||
|
OUT local_blks_read int8,
|
||||||
|
OUT local_blks_dirtied int8,
|
||||||
|
OUT local_blks_written int8,
|
||||||
|
OUT temp_blks_read int8,
|
||||||
|
OUT temp_blks_written int8,
|
||||||
|
OUT shared_blk_read_time float8,
|
||||||
|
OUT shared_blk_write_time float8,
|
||||||
|
OUT local_blk_read_time float8,
|
||||||
|
OUT local_blk_write_time float8,
|
||||||
|
OUT temp_blk_read_time float8,
|
||||||
|
OUT temp_blk_write_time float8,
|
||||||
|
|
||||||
|
OUT resp_calls text, -- 49
|
||||||
|
OUT cpu_user_time float8,
|
||||||
|
OUT cpu_sys_time float8,
|
||||||
|
OUT wal_records int8,
|
||||||
|
OUT wal_fpi int8,
|
||||||
|
OUT wal_bytes numeric,
|
||||||
|
OUT comments TEXT,
|
||||||
|
|
||||||
|
OUT jit_functions int8, -- 56
|
||||||
|
OUT jit_generation_time float8,
|
||||||
|
OUT jit_inlining_count int8,
|
||||||
|
OUT jit_inlining_time float8,
|
||||||
|
OUT jit_optimization_count int8,
|
||||||
|
OUT jit_optimization_time float8,
|
||||||
|
OUT jit_emission_count int8,
|
||||||
|
OUT jit_emission_time float8,
|
||||||
|
OUT jit_deform_count int8,
|
||||||
|
OUT jit_deform_time float8,
|
||||||
|
|
||||||
|
OUT stats_since timestamp with time zone, -- 66
|
||||||
|
OUT minmax_stats_since timestamp with time zone,
|
||||||
|
|
||||||
|
OUT toplevel BOOLEAN, -- 68
|
||||||
|
OUT bucket_done BOOLEAN
|
||||||
|
)
|
||||||
|
RETURNS SETOF record
|
||||||
|
AS 'MODULE_PATHNAME', 'pg_stat_monitor_2_1'
|
||||||
|
LANGUAGE C STRICT VOLATILE PARALLEL SAFE;
|
||||||
|
|
||||||
|
-- Register a view on the function for ease of use.
|
||||||
|
CREATE FUNCTION pgsm_create_11_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid,
|
||||||
|
username,
|
||||||
|
dbid,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
pgsm_query_id,
|
||||||
|
queryid,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time AS total_time,
|
||||||
|
min_exec_time AS min_time,
|
||||||
|
max_exec_time AS max_time,
|
||||||
|
mean_exec_time AS mean_time,
|
||||||
|
stddev_exec_time AS stddev_time,
|
||||||
|
rows,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
shared_blk_read_time AS blk_read_time,
|
||||||
|
shared_blk_write_time AS blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
bucket_done
|
||||||
|
FROM pg_stat_monitor_internal(TRUE)
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_13_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid,
|
||||||
|
username,
|
||||||
|
dbid,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
pgsm_query_id,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
shared_blk_read_time AS blk_read_time,
|
||||||
|
shared_blk_write_time AS blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
bucket_done,
|
||||||
|
-- PostgreSQL-13 Specific Coulumns
|
||||||
|
plans,
|
||||||
|
total_plan_time,
|
||||||
|
min_plan_time,
|
||||||
|
max_plan_time,
|
||||||
|
mean_plan_time,
|
||||||
|
stddev_plan_time
|
||||||
|
FROM pg_stat_monitor_internal(TRUE)
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_14_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid,
|
||||||
|
username,
|
||||||
|
dbid,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
pgsm_query_id,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
shared_blk_read_time AS blk_read_time,
|
||||||
|
shared_blk_write_time AS blk_write_time,
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
bucket_done,
|
||||||
|
|
||||||
|
plans,
|
||||||
|
total_plan_time,
|
||||||
|
min_plan_time,
|
||||||
|
max_plan_time,
|
||||||
|
mean_plan_time,
|
||||||
|
stddev_plan_time
|
||||||
|
FROM pg_stat_monitor_internal(TRUE)
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_15_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time AS bucket_start_time,
|
||||||
|
userid,
|
||||||
|
username,
|
||||||
|
dbid,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
pgsm_query_id,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
shared_blk_read_time AS blk_read_time,
|
||||||
|
shared_blk_write_time AS blk_write_time,
|
||||||
|
temp_blk_read_time,
|
||||||
|
temp_blk_write_time,
|
||||||
|
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
bucket_done,
|
||||||
|
|
||||||
|
plans,
|
||||||
|
total_plan_time,
|
||||||
|
min_plan_time,
|
||||||
|
max_plan_time,
|
||||||
|
mean_plan_time,
|
||||||
|
stddev_plan_time,
|
||||||
|
|
||||||
|
jit_functions,
|
||||||
|
jit_generation_time,
|
||||||
|
jit_inlining_count,
|
||||||
|
jit_inlining_time,
|
||||||
|
jit_optimization_count,
|
||||||
|
jit_optimization_time,
|
||||||
|
jit_emission_count,
|
||||||
|
jit_emission_time
|
||||||
|
|
||||||
|
FROM pg_stat_monitor_internal(TRUE)
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_17_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
CREATE VIEW pg_stat_monitor AS SELECT
|
||||||
|
bucket,
|
||||||
|
bucket_start_time,
|
||||||
|
userid,
|
||||||
|
username,
|
||||||
|
dbid,
|
||||||
|
datname,
|
||||||
|
'0.0.0.0'::inet + client_ip AS client_ip,
|
||||||
|
pgsm_query_id,
|
||||||
|
queryid,
|
||||||
|
toplevel,
|
||||||
|
top_queryid,
|
||||||
|
query,
|
||||||
|
comments,
|
||||||
|
planid,
|
||||||
|
query_plan,
|
||||||
|
top_query,
|
||||||
|
application_name,
|
||||||
|
string_to_array(relations, ',') AS relations,
|
||||||
|
cmd_type,
|
||||||
|
get_cmd_type(cmd_type) AS cmd_type_text,
|
||||||
|
elevel,
|
||||||
|
sqlcode,
|
||||||
|
message,
|
||||||
|
calls,
|
||||||
|
total_exec_time,
|
||||||
|
min_exec_time,
|
||||||
|
max_exec_time,
|
||||||
|
mean_exec_time,
|
||||||
|
stddev_exec_time,
|
||||||
|
rows,
|
||||||
|
shared_blks_hit,
|
||||||
|
shared_blks_read,
|
||||||
|
shared_blks_dirtied,
|
||||||
|
shared_blks_written,
|
||||||
|
local_blks_hit,
|
||||||
|
local_blks_read,
|
||||||
|
local_blks_dirtied,
|
||||||
|
local_blks_written,
|
||||||
|
temp_blks_read,
|
||||||
|
temp_blks_written,
|
||||||
|
shared_blk_read_time,
|
||||||
|
shared_blk_write_time,
|
||||||
|
local_blk_read_time,
|
||||||
|
local_blk_write_time,
|
||||||
|
temp_blk_read_time,
|
||||||
|
temp_blk_write_time,
|
||||||
|
|
||||||
|
(string_to_array(resp_calls, ',')) resp_calls,
|
||||||
|
cpu_user_time,
|
||||||
|
cpu_sys_time,
|
||||||
|
wal_records,
|
||||||
|
wal_fpi,
|
||||||
|
wal_bytes,
|
||||||
|
bucket_done,
|
||||||
|
|
||||||
|
plans,
|
||||||
|
total_plan_time,
|
||||||
|
min_plan_time,
|
||||||
|
max_plan_time,
|
||||||
|
mean_plan_time,
|
||||||
|
stddev_plan_time,
|
||||||
|
|
||||||
|
jit_functions,
|
||||||
|
jit_generation_time,
|
||||||
|
jit_inlining_count,
|
||||||
|
jit_inlining_time,
|
||||||
|
jit_optimization_count,
|
||||||
|
jit_optimization_time,
|
||||||
|
jit_emission_count,
|
||||||
|
jit_emission_time,
|
||||||
|
jit_deform_count,
|
||||||
|
jit_deform_time,
|
||||||
|
|
||||||
|
stats_since,
|
||||||
|
minmax_stats_since
|
||||||
|
|
||||||
|
FROM pg_stat_monitor_internal(TRUE)
|
||||||
|
ORDER BY bucket_start_time;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
CREATE FUNCTION pgsm_create_view() RETURNS INT AS
|
||||||
|
$$
|
||||||
|
DECLARE ver integer;
|
||||||
|
BEGIN
|
||||||
|
SELECT current_setting('server_version_num') INTO ver;
|
||||||
|
IF (ver >= 170000) THEN
|
||||||
|
return pgsm_create_17_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 150000) THEN
|
||||||
|
return pgsm_create_15_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 140000) THEN
|
||||||
|
return pgsm_create_14_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 130000) THEN
|
||||||
|
return pgsm_create_13_view();
|
||||||
|
END IF;
|
||||||
|
IF (ver >= 110000) THEN
|
||||||
|
return pgsm_create_11_view();
|
||||||
|
END IF;
|
||||||
|
RETURN 0;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
SELECT pgsm_create_view();
|
||||||
|
REVOKE ALL ON FUNCTION pgsm_create_view FROM PUBLIC;
|
||||||
|
REVOKE ALL ON FUNCTION pgsm_create_11_view FROM PUBLIC;
|
||||||
|
REVOKE ALL ON FUNCTION pgsm_create_13_view FROM PUBLIC;
|
||||||
|
REVOKE ALL ON FUNCTION pgsm_create_14_view FROM PUBLIC;
|
||||||
|
REVOKE ALL ON FUNCTION pgsm_create_15_view FROM PUBLIC;
|
||||||
|
REVOKE ALL ON FUNCTION pgsm_create_17_view FROM PUBLIC;
|
||||||
|
|
||||||
|
GRANT EXECUTE ON FUNCTION range TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON FUNCTION decode_error_level TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON FUNCTION get_histogram_timings TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON FUNCTION get_cmd_type TO PUBLIC;
|
||||||
|
GRANT EXECUTE ON FUNCTION pg_stat_monitor_internal TO PUBLIC;
|
||||||
|
|
||||||
|
GRANT SELECT ON pg_stat_monitor TO PUBLIC;
|
||||||
|
|
||||||
|
-- Reset is only available to super user
|
||||||
|
REVOKE ALL ON FUNCTION pg_stat_monitor_reset FROM PUBLIC;
|
|
@ -0,0 +1,48 @@
|
||||||
|
/* contrib/pg_stat_monitor/pg_stat_monitor--2.1--2.2.sql */
|
||||||
|
|
||||||
|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||||
|
\echo Use "ALTER EXTENSION pg_stat_monitor" to load this file. \quit
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION get_cmd_type (cmd_type INTEGER) RETURNS TEXT AS
|
||||||
|
$$
|
||||||
|
SELECT
|
||||||
|
CASE
|
||||||
|
WHEN cmd_type = 0 THEN ''
|
||||||
|
WHEN cmd_type = 1 THEN 'SELECT'
|
||||||
|
WHEN cmd_type = 2 THEN 'UPDATE'
|
||||||
|
WHEN cmd_type = 3 THEN 'INSERT'
|
||||||
|
WHEN cmd_type = 4 THEN 'DELETE'
|
||||||
|
WHEN cmd_type = 5 AND current_setting('server_version_num')::int >= 150000 THEN 'MERGE'
|
||||||
|
WHEN cmd_type = 5 AND current_setting('server_version_num')::int < 150000 THEN 'UTILITY'
|
||||||
|
WHEN cmd_type = 6 AND current_setting('server_version_num')::int >= 150000 THEN 'UTILITY'
|
||||||
|
WHEN cmd_type = 6 AND current_setting('server_version_num')::int < 150000 THEN 'NOTHING'
|
||||||
|
WHEN cmd_type = 7 THEN 'NOTHING'
|
||||||
|
END
|
||||||
|
$$
|
||||||
|
LANGUAGE SQL PARALLEL SAFE;
|
||||||
|
|
||||||
|
-- Create new function that handles error levels across PostgreSQL versions 12-17
|
||||||
|
CREATE OR REPLACE FUNCTION decode_error_level(elevel int)
|
||||||
|
RETURNS text
|
||||||
|
AS $$
|
||||||
|
SELECT CASE
|
||||||
|
WHEN elevel = 0 THEN ''
|
||||||
|
WHEN elevel = 10 THEN 'DEBUG5'
|
||||||
|
WHEN elevel = 11 THEN 'DEBUG4'
|
||||||
|
WHEN elevel = 12 THEN 'DEBUG3'
|
||||||
|
WHEN elevel = 13 THEN 'DEBUG2'
|
||||||
|
WHEN elevel = 14 THEN 'DEBUG1'
|
||||||
|
WHEN elevel = 15 THEN 'LOG'
|
||||||
|
WHEN elevel = 16 THEN 'LOG_SERVER_ONLY'
|
||||||
|
WHEN elevel = 17 THEN 'INFO'
|
||||||
|
WHEN elevel = 18 THEN 'NOTICE'
|
||||||
|
WHEN elevel = 19 THEN 'WARNING'
|
||||||
|
WHEN elevel = 20 AND current_setting('server_version_num')::int < 140000 THEN 'ERROR'
|
||||||
|
WHEN elevel = 20 AND current_setting('server_version_num')::int >= 140000 THEN 'WARNING_CLIENT_ONLY'
|
||||||
|
WHEN elevel = 21 AND current_setting('server_version_num')::int < 140000 THEN 'FATAL'
|
||||||
|
WHEN elevel = 21 AND current_setting('server_version_num')::int >= 140000 THEN 'ERROR'
|
||||||
|
WHEN elevel = 22 AND current_setting('server_version_num')::int < 140000 THEN 'PANIC'
|
||||||
|
WHEN elevel = 22 AND current_setting('server_version_num')::int >= 140000 THEN 'FATAL'
|
||||||
|
WHEN elevel = 23 AND current_setting('server_version_num')::int >= 140000 THEN 'PANIC'
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE SQL PARALLEL SAFE;
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
# pg_stat_monitor extension
|
# pg_stat_monitor extension
|
||||||
comment = 'The pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL contrib module pg_stat_statements. pg_stat_monitor provides aggregated statistics, client information, plan details including plan, and histogram information.'
|
comment = 'The pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL contrib module pg_stat_statements. pg_stat_monitor provides aggregated statistics, client information, plan details including plan, and histogram information.'
|
||||||
default_version = '2.0'
|
default_version = '2.2'
|
||||||
module_pathname = '$libdir/pg_stat_monitor'
|
module_pathname = '$libdir/pg_stat_monitor'
|
||||||
relocatable = true
|
relocatable = true
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* pg_stat_monitor.h
|
* pg_stat_monitor.h
|
||||||
* Track statement execution times across a whole database cluster.
|
* Track statement execution times across a whole database cluster.
|
||||||
*
|
*
|
||||||
* Portions Copyright © 2018-2020, Percona LLC and/or its affiliates
|
* Portions Copyright © 2018-2024, Percona LLC and/or its affiliates
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1994, The Regents of the University of California
|
* Portions Copyright (c) 1994, The Regents of the University of California
|
||||||
*
|
*
|
||||||
|
@ -93,8 +93,8 @@
|
||||||
/* the assumption of query max nested level */
|
/* the assumption of query max nested level */
|
||||||
#define DEFAULT_MAX_NESTED_LEVEL 10
|
#define DEFAULT_MAX_NESTED_LEVEL 10
|
||||||
|
|
||||||
#define MAX_QUERY_BUF (pgsm_query_shared_buffer * 1024 * 1024)
|
#define MAX_QUERY_BUF ((int64)pgsm_query_shared_buffer * 1024 * 1024)
|
||||||
#define MAX_BUCKETS_MEM (pgsm_max * 1024 * 1024)
|
#define MAX_BUCKETS_MEM ((int64)pgsm_max * 1024 * 1024)
|
||||||
#define BUCKETS_MEM_OVERFLOW() ((hash_get_num_entries(pgsm_hash) * sizeof(pgsmEntry)) >= MAX_BUCKETS_MEM)
|
#define BUCKETS_MEM_OVERFLOW() ((hash_get_num_entries(pgsm_hash) * sizeof(pgsmEntry)) >= MAX_BUCKETS_MEM)
|
||||||
#define MAX_BUCKET_ENTRIES (MAX_BUCKETS_MEM / sizeof(pgsmEntry))
|
#define MAX_BUCKET_ENTRIES (MAX_BUCKETS_MEM / sizeof(pgsmEntry))
|
||||||
#define QUERY_BUFFER_OVERFLOW(x,y) ((x + y + sizeof(uint64) + sizeof(uint64)) > MAX_QUERY_BUF)
|
#define QUERY_BUFFER_OVERFLOW(x,y) ((x + y + sizeof(uint64) + sizeof(uint64)) > MAX_QUERY_BUF)
|
||||||
|
@ -112,31 +112,6 @@
|
||||||
/* Update this if need a enum GUC with more options. */
|
/* Update this if need a enum GUC with more options. */
|
||||||
#define MAX_ENUM_OPTIONS 6
|
#define MAX_ENUM_OPTIONS 6
|
||||||
|
|
||||||
/*
|
|
||||||
* API for disabling error capture ereport(ERROR,..) by PGSM's error capture hook
|
|
||||||
* pgsm_emit_log_hook()
|
|
||||||
*
|
|
||||||
* Use these macros as follows:
|
|
||||||
* PGSM_DISABLE_ERROR_CAPUTRE();
|
|
||||||
* {
|
|
||||||
* ... code that might throw ereport(ERROR) ...
|
|
||||||
* }PGSM_END_DISABLE_ERROR_CAPTURE();
|
|
||||||
*
|
|
||||||
* These macros can be used to error recursion if the error gets
|
|
||||||
* thrown from within the function called from pgsm_emit_log_hook()
|
|
||||||
*/
|
|
||||||
extern volatile bool __pgsm_do_not_capture_error;
|
|
||||||
#define PGSM_DISABLE_ERROR_CAPUTRE() \
|
|
||||||
do { \
|
|
||||||
__pgsm_do_not_capture_error = true
|
|
||||||
|
|
||||||
#define PGSM_END_DISABLE_ERROR_CAPTURE() \
|
|
||||||
__pgsm_do_not_capture_error = false; \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
#define PGSM_ERROR_CAPTURE_ENABLED \
|
|
||||||
__pgsm_do_not_capture_error == false
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pg_stat_monitor uses the hash structure to store all query statistics
|
* pg_stat_monitor uses the hash structure to store all query statistics
|
||||||
* except the query text, which gets stored out of line in the raw DSA area.
|
* except the query text, which gets stored out of line in the raw DSA area.
|
||||||
|
@ -195,7 +170,7 @@ typedef enum pgsmStoreKind
|
||||||
PGSM_ERROR,
|
PGSM_ERROR,
|
||||||
|
|
||||||
PGSM_NUMKIND /* Must be last value of this enum */
|
PGSM_NUMKIND /* Must be last value of this enum */
|
||||||
} pgsmStoreKind;
|
} pgsmStoreKind;
|
||||||
|
|
||||||
/* the assumption of query max nested level */
|
/* the assumption of query max nested level */
|
||||||
#define DEFAULT_MAX_NESTED_LEVEL 10
|
#define DEFAULT_MAX_NESTED_LEVEL 10
|
||||||
|
@ -208,7 +183,7 @@ typedef enum AGG_KEY
|
||||||
AGG_KEY_DATABASE = 0,
|
AGG_KEY_DATABASE = 0,
|
||||||
AGG_KEY_USER,
|
AGG_KEY_USER,
|
||||||
AGG_KEY_HOST
|
AGG_KEY_HOST
|
||||||
} AGG_KEY;
|
} AGG_KEY;
|
||||||
|
|
||||||
#define MAX_QUERY_LEN 1024
|
#define MAX_QUERY_LEN 1024
|
||||||
|
|
||||||
|
@ -220,7 +195,7 @@ typedef struct CallTime
|
||||||
double max_time; /* maximum execution time in msec */
|
double max_time; /* maximum execution time in msec */
|
||||||
double mean_time; /* mean execution time in msec */
|
double mean_time; /* mean execution time in msec */
|
||||||
double sum_var_time; /* sum of variances in execution time in msec */
|
double sum_var_time; /* sum of variances in execution time in msec */
|
||||||
} CallTime;
|
} CallTime;
|
||||||
|
|
||||||
|
|
||||||
typedef struct PlanInfo
|
typedef struct PlanInfo
|
||||||
|
@ -228,7 +203,7 @@ typedef struct PlanInfo
|
||||||
uint64 planid; /* plan identifier */
|
uint64 planid; /* plan identifier */
|
||||||
char plan_text[PLAN_TEXT_LEN]; /* plan text */
|
char plan_text[PLAN_TEXT_LEN]; /* plan text */
|
||||||
size_t plan_len; /* strlen(plan_text) */
|
size_t plan_len; /* strlen(plan_text) */
|
||||||
} PlanInfo;
|
} PlanInfo;
|
||||||
|
|
||||||
typedef struct pgsmHashKey
|
typedef struct pgsmHashKey
|
||||||
{
|
{
|
||||||
|
@ -240,11 +215,11 @@ typedef struct pgsmHashKey
|
||||||
Oid dbid; /* database OID */
|
Oid dbid; /* database OID */
|
||||||
uint32 ip; /* client ip address */
|
uint32 ip; /* client ip address */
|
||||||
bool toplevel; /* query executed at top level */
|
bool toplevel; /* query executed at top level */
|
||||||
} pgsmHashKey;
|
uint64 parentid; /* parent queryid of current query */
|
||||||
|
} pgsmHashKey;
|
||||||
|
|
||||||
typedef struct QueryInfo
|
typedef struct QueryInfo
|
||||||
{
|
{
|
||||||
uint64 parentid; /* parent queryid of current query */
|
|
||||||
dsa_pointer parent_query;
|
dsa_pointer parent_query;
|
||||||
int64 type; /* type of query, options are query, info,
|
int64 type; /* type of query, options are query, info,
|
||||||
* warning, error, fatal */
|
* warning, error, fatal */
|
||||||
|
@ -262,14 +237,14 @@ typedef struct ErrorInfo
|
||||||
int64 elevel; /* error elevel */
|
int64 elevel; /* error elevel */
|
||||||
char sqlcode[SQLCODE_LEN]; /* error sqlcode */
|
char sqlcode[SQLCODE_LEN]; /* error sqlcode */
|
||||||
char message[ERROR_MESSAGE_LEN]; /* error message text */
|
char message[ERROR_MESSAGE_LEN]; /* error message text */
|
||||||
} ErrorInfo;
|
} ErrorInfo;
|
||||||
|
|
||||||
typedef struct Calls
|
typedef struct Calls
|
||||||
{
|
{
|
||||||
int64 calls; /* # of times executed */
|
int64 calls; /* # of times executed */
|
||||||
int64 rows; /* total # of retrieved or affected rows */
|
int64 rows; /* total # of retrieved or affected rows */
|
||||||
double usage; /* usage factor */
|
double usage; /* usage factor */
|
||||||
} Calls;
|
} Calls;
|
||||||
|
|
||||||
|
|
||||||
typedef struct Blocks
|
typedef struct Blocks
|
||||||
|
@ -284,9 +259,14 @@ typedef struct Blocks
|
||||||
int64 local_blks_written; /* # of local disk blocks written */
|
int64 local_blks_written; /* # of local disk blocks written */
|
||||||
int64 temp_blks_read; /* # of temp blocks read */
|
int64 temp_blks_read; /* # of temp blocks read */
|
||||||
int64 temp_blks_written; /* # of temp blocks written */
|
int64 temp_blks_written; /* # of temp blocks written */
|
||||||
double blk_read_time; /* time spent reading, in msec */
|
double shared_blk_read_time; /* time spent reading shared blocks,
|
||||||
double blk_write_time; /* time spent writing, in msec */
|
* in msec */
|
||||||
|
double shared_blk_write_time; /* time spent writing shared blocks,
|
||||||
|
* in msec */
|
||||||
|
double local_blk_read_time; /* time spent reading local blocks, in
|
||||||
|
* msec */
|
||||||
|
double local_blk_write_time; /* time spent writing local blocks, in
|
||||||
|
* msec */
|
||||||
double temp_blk_read_time; /* time spent reading temp blocks, in msec */
|
double temp_blk_read_time; /* time spent reading temp blocks, in msec */
|
||||||
double temp_blk_write_time; /* time spent writing temp blocks, in
|
double temp_blk_write_time; /* time spent writing temp blocks, in
|
||||||
* msec */
|
* msec */
|
||||||
|
@ -295,11 +275,15 @@ typedef struct Blocks
|
||||||
* Variables for local entry. The values to be passed to pgsm_update_entry
|
* Variables for local entry. The values to be passed to pgsm_update_entry
|
||||||
* from pgsm_store.
|
* from pgsm_store.
|
||||||
*/
|
*/
|
||||||
instr_time instr_blk_read_time; /* time spent reading blocks */
|
instr_time instr_shared_blk_read_time; /* time spent reading shared
|
||||||
instr_time instr_blk_write_time; /* time spent writing blocks */
|
* blocks */
|
||||||
|
instr_time instr_shared_blk_write_time; /* time spent writing shared
|
||||||
|
* blocks */
|
||||||
|
instr_time instr_local_blk_read_time; /* time spent reading local blocks */
|
||||||
|
instr_time instr_local_blk_write_time; /* time spent writing local blocks */
|
||||||
instr_time instr_temp_blk_read_time; /* time spent reading temp blocks */
|
instr_time instr_temp_blk_read_time; /* time spent reading temp blocks */
|
||||||
instr_time instr_temp_blk_write_time; /* time spent writing temp blocks */
|
instr_time instr_temp_blk_write_time; /* time spent writing temp blocks */
|
||||||
} Blocks;
|
} Blocks;
|
||||||
|
|
||||||
typedef struct JitInfo
|
typedef struct JitInfo
|
||||||
{
|
{
|
||||||
|
@ -307,6 +291,9 @@ typedef struct JitInfo
|
||||||
double jit_generation_time; /* total time to generate jit code */
|
double jit_generation_time; /* total time to generate jit code */
|
||||||
int64 jit_inlining_count; /* number of times inlining time has been
|
int64 jit_inlining_count; /* number of times inlining time has been
|
||||||
* > 0 */
|
* > 0 */
|
||||||
|
double jit_deform_time; /* total time to deform tuples in jit code */
|
||||||
|
int64 jit_deform_count; /* number of times deform time has been >
|
||||||
|
* 0 */
|
||||||
double jit_inlining_time; /* total time to inline jit code */
|
double jit_inlining_time; /* total time to inline jit code */
|
||||||
int64 jit_optimization_count; /* number of times optimization time
|
int64 jit_optimization_count; /* number of times optimization time
|
||||||
* has been > 0 */
|
* has been > 0 */
|
||||||
|
@ -321,22 +308,23 @@ typedef struct JitInfo
|
||||||
*/
|
*/
|
||||||
instr_time instr_generation_counter; /* generation counter */
|
instr_time instr_generation_counter; /* generation counter */
|
||||||
instr_time instr_inlining_counter; /* inlining counter */
|
instr_time instr_inlining_counter; /* inlining counter */
|
||||||
|
instr_time instr_deform_counter; /* deform counter */
|
||||||
instr_time instr_optimization_counter; /* optimization counter */
|
instr_time instr_optimization_counter; /* optimization counter */
|
||||||
instr_time instr_emission_counter; /* emission counter */
|
instr_time instr_emission_counter; /* emission counter */
|
||||||
} JitInfo;
|
} JitInfo;
|
||||||
|
|
||||||
typedef struct SysInfo
|
typedef struct SysInfo
|
||||||
{
|
{
|
||||||
double utime; /* user cpu time */
|
double utime; /* user cpu time */
|
||||||
double stime; /* system cpu time */
|
double stime; /* system cpu time */
|
||||||
} SysInfo;
|
} SysInfo;
|
||||||
|
|
||||||
typedef struct Wal_Usage
|
typedef struct Wal_Usage
|
||||||
{
|
{
|
||||||
int64 wal_records; /* # of WAL records generated */
|
int64 wal_records; /* # of WAL records generated */
|
||||||
int64 wal_fpi; /* # of WAL full page images generated */
|
int64 wal_fpi; /* # of WAL full page images generated */
|
||||||
uint64 wal_bytes; /* total amount of WAL bytes generated */
|
uint64 wal_bytes; /* total amount of WAL bytes generated */
|
||||||
} Wal_Usage;
|
} Wal_Usage;
|
||||||
|
|
||||||
typedef struct Counters
|
typedef struct Counters
|
||||||
{
|
{
|
||||||
|
@ -370,13 +358,15 @@ typedef struct pgsmEntry
|
||||||
char username[NAMEDATALEN]; /* user name */
|
char username[NAMEDATALEN]; /* user name */
|
||||||
Counters counters; /* the statistics for this query */
|
Counters counters; /* the statistics for this query */
|
||||||
int encoding; /* query text encoding */
|
int encoding; /* query text encoding */
|
||||||
|
TimestampTz stats_since; /* timestamp of entry allocation */
|
||||||
|
TimestampTz minmax_stats_since; /* timestamp of last min/max values reset */
|
||||||
slock_t mutex; /* protects the counters only */
|
slock_t mutex; /* protects the counters only */
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
dsa_pointer query_pos; /* query location within query buffer */
|
dsa_pointer query_pos; /* query location within query buffer */
|
||||||
char *query_pointer;
|
char *query_pointer;
|
||||||
} query_text;
|
} query_text;
|
||||||
} pgsmEntry;
|
} pgsmEntry;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global shared state
|
* Global shared state
|
||||||
|
@ -399,8 +389,8 @@ typedef struct pgsmSharedState
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool pgsm_oom;
|
bool pgsm_oom;
|
||||||
TimestampTz bucket_start_time[]; /* start time of the bucket */
|
TimestampTz bucket_start_time[]; /* start time of the bucket */
|
||||||
} pgsmSharedState;
|
} pgsmSharedState;
|
||||||
|
|
||||||
typedef struct pgsmLocalState
|
typedef struct pgsmLocalState
|
||||||
{
|
{
|
||||||
|
@ -408,9 +398,9 @@ typedef struct pgsmLocalState
|
||||||
dsa_area *dsa; /* local dsa area for backend attached to the
|
dsa_area *dsa; /* local dsa area for backend attached to the
|
||||||
* dsa area created by postmaster at startup. */
|
* dsa area created by postmaster at startup. */
|
||||||
PGSM_HASH_TABLE *shared_hash;
|
PGSM_HASH_TABLE *shared_hash;
|
||||||
MemoryContext pgsm_mem_cxt;
|
MemoryContext pgsm_mem_cxt;
|
||||||
|
|
||||||
} pgsmLocalState;
|
} pgsmLocalState;
|
||||||
|
|
||||||
#if PG_VERSION_NUM < 140000
|
#if PG_VERSION_NUM < 140000
|
||||||
/*
|
/*
|
||||||
|
@ -465,7 +455,7 @@ pgsmSharedState *pgsm_get_ss(void);
|
||||||
void hash_query_entries();
|
void hash_query_entries();
|
||||||
void hash_query_entry_dealloc(int new_bucket_id, int old_bucket_id, unsigned char *query_buffer[]);
|
void hash_query_entry_dealloc(int new_bucket_id, int old_bucket_id, unsigned char *query_buffer[]);
|
||||||
void hash_entry_dealloc(int new_bucket_id, int old_bucket_id, unsigned char *query_buffer);
|
void hash_entry_dealloc(int new_bucket_id, int old_bucket_id, unsigned char *query_buffer);
|
||||||
pgsmEntry *hash_entry_alloc(pgsmSharedState * pgsm, pgsmHashKey * key, int encoding);
|
pgsmEntry *hash_entry_alloc(pgsmSharedState *pgsm, pgsmHashKey *key, int encoding);
|
||||||
Size pgsm_ShmemSize(void);
|
Size pgsm_ShmemSize(void);
|
||||||
void pgsm_startup(void);
|
void pgsm_startup(void);
|
||||||
|
|
||||||
|
@ -483,7 +473,7 @@ typedef enum
|
||||||
PSGM_TRACK_NONE = 0, /* track no statements */
|
PSGM_TRACK_NONE = 0, /* track no statements */
|
||||||
PGSM_TRACK_TOP, /* only top level statements */
|
PGSM_TRACK_TOP, /* only top level statements */
|
||||||
PGSM_TRACK_ALL /* all statements, including nested ones */
|
PGSM_TRACK_ALL /* all statements, including nested ones */
|
||||||
} PGSMTrackLevel;
|
} PGSMTrackLevel;
|
||||||
static const struct config_enum_entry track_options[] =
|
static const struct config_enum_entry track_options[] =
|
||||||
{
|
{
|
||||||
{"none", PSGM_TRACK_NONE, false},
|
{"none", PSGM_TRACK_NONE, false},
|
||||||
|
@ -497,7 +487,7 @@ typedef enum
|
||||||
HISTOGRAM_START,
|
HISTOGRAM_START,
|
||||||
HISTOGRAM_END,
|
HISTOGRAM_END,
|
||||||
HISTOGRAM_COUNT
|
HISTOGRAM_COUNT
|
||||||
} HistogramTimingType;
|
} HistogramTimingType;
|
||||||
|
|
||||||
extern int pgsm_max;
|
extern int pgsm_max;
|
||||||
extern int pgsm_query_max_len;
|
extern int pgsm_query_max_len;
|
||||||
|
@ -513,6 +503,7 @@ extern bool pgsm_enable_query_plan;
|
||||||
extern bool pgsm_enable_overflow;
|
extern bool pgsm_enable_overflow;
|
||||||
extern bool pgsm_normalized_query;
|
extern bool pgsm_normalized_query;
|
||||||
extern bool pgsm_track_utility;
|
extern bool pgsm_track_utility;
|
||||||
|
extern bool pgsm_track_application_names;
|
||||||
extern bool pgsm_enable_pgsm_query_id;
|
extern bool pgsm_enable_pgsm_query_id;
|
||||||
extern int pgsm_track;
|
extern int pgsm_track;
|
||||||
|
|
||||||
|
@ -522,8 +513,8 @@ extern int pgsm_track;
|
||||||
#define HOOK_STATS_SIZE 0
|
#define HOOK_STATS_SIZE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void *pgsm_hash_find_or_insert(PGSM_HASH_TABLE * shared_hash, pgsmHashKey * key, bool *found);
|
void *pgsm_hash_find_or_insert(PGSM_HASH_TABLE * shared_hash, pgsmHashKey *key, bool *found);
|
||||||
void *pgsm_hash_find(PGSM_HASH_TABLE * shared_hash, pgsmHashKey * key, bool *found);
|
void *pgsm_hash_find(PGSM_HASH_TABLE * shared_hash, pgsmHashKey *key, bool *found);
|
||||||
void pgsm_hash_seq_init(PGSM_HASH_SEQ_STATUS * hstat, PGSM_HASH_TABLE * shared_hash, bool lock);
|
void pgsm_hash_seq_init(PGSM_HASH_SEQ_STATUS * hstat, PGSM_HASH_TABLE * shared_hash, bool lock);
|
||||||
void *pgsm_hash_seq_next(PGSM_HASH_SEQ_STATUS * hstat);
|
void *pgsm_hash_seq_next(PGSM_HASH_SEQ_STATUS * hstat);
|
||||||
void pgsm_hash_seq_term(PGSM_HASH_SEQ_STATUS * hstat);
|
void pgsm_hash_seq_term(PGSM_HASH_SEQ_STATUS * hstat);
|
||||||
|
|
|
@ -24,4 +24,32 @@ SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
|
SELECT 1 AS num;
|
||||||
|
num
|
||||||
|
-----
|
||||||
|
1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SET pg_stat_monitor.pgsm_track_application_names='no';
|
||||||
|
SELECT 1 AS num;
|
||||||
|
num
|
||||||
|
-----
|
||||||
|
1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C";
|
||||||
|
query | application_name
|
||||||
|
-------------------------------------------------------+-----------------------------
|
||||||
|
SELECT 1 AS num | pg_regress/application_name
|
||||||
|
SELECT 1 AS num |
|
||||||
|
SELECT pg_stat_monitor_reset() | pg_regress/application_name
|
||||||
|
SET pg_stat_monitor.pgsm_track_application_names='no' |
|
||||||
|
(4 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -27,16 +27,16 @@ DROP TABLE t2;
|
||||||
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | cmd_type | cmd_type_text
|
query | cmd_type | cmd_type_text
|
||||||
--------------------------------+----------+---------------
|
--------------------------------+----------+---------------
|
||||||
CREATE TABLE t1 (a INTEGER) | 0 |
|
CREATE TABLE t1 (a INTEGER) | 5 | UTILITY
|
||||||
CREATE TABLE t2 (b INTEGER) | 0 |
|
CREATE TABLE t2 (b INTEGER) | 5 | UTILITY
|
||||||
DELETE FROM t1 | 4 | DELETE
|
DELETE FROM t1 | 4 | DELETE
|
||||||
DROP TABLE t1 | 0 |
|
DROP TABLE t1 | 5 | UTILITY
|
||||||
DROP TABLE t2 | 0 |
|
DROP TABLE t2 | 5 | UTILITY
|
||||||
INSERT INTO t1 VALUES(1) | 3 | INSERT
|
INSERT INTO t1 VALUES(1) | 3 | INSERT
|
||||||
SELECT a FROM t1 | 1 | SELECT
|
SELECT a FROM t1 | 1 | SELECT
|
||||||
SELECT b FROM t2 FOR UPDATE | 1 | SELECT
|
SELECT b FROM t2 FOR UPDATE | 1 | SELECT
|
||||||
SELECT pg_stat_monitor_reset() | 1 | SELECT
|
SELECT pg_stat_monitor_reset() | 1 | SELECT
|
||||||
TRUNCATE t1 | 0 |
|
TRUNCATE t1 | 5 | UTILITY
|
||||||
UPDATE t1 SET a = 2 | 2 | UPDATE
|
UPDATE t1 SET a = 2 | 2 | UPDATE
|
||||||
(11 rows)
|
(11 rows)
|
||||||
|
|
||||||
|
|
|
@ -23,16 +23,22 @@ SELECT b FROM t2 FOR UPDATE;
|
||||||
|
|
||||||
TRUNCATE t1;
|
TRUNCATE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query, cmd_type, cmd_type_text FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
query | cmd_type | cmd_type_text
|
query | cmd_type | cmd_type_text
|
||||||
--------------------------------+----------+---------------
|
--------------------------------+----------+---------------
|
||||||
|
CREATE TABLE t1 (a INTEGER) | 6 | UTILITY
|
||||||
|
CREATE TABLE t2 (b INTEGER) | 6 | UTILITY
|
||||||
DELETE FROM t1 | 4 | DELETE
|
DELETE FROM t1 | 4 | DELETE
|
||||||
|
DROP TABLE t1 | 6 | UTILITY
|
||||||
|
DROP TABLE t2 | 6 | UTILITY
|
||||||
INSERT INTO t1 VALUES(1) | 3 | INSERT
|
INSERT INTO t1 VALUES(1) | 3 | INSERT
|
||||||
SELECT a FROM t1 | 1 | SELECT
|
SELECT a FROM t1 | 1 | SELECT
|
||||||
SELECT b FROM t2 FOR UPDATE | 1 | SELECT
|
SELECT b FROM t2 FOR UPDATE | 1 | SELECT
|
||||||
SELECT pg_stat_monitor_reset() | 1 | SELECT
|
SELECT pg_stat_monitor_reset() | 1 | SELECT
|
||||||
|
TRUNCATE t1 | 6 | UTILITY
|
||||||
UPDATE t1 SET a = 2 | 2 | UPDATE
|
UPDATE t1 SET a = 2 | 2 | UPDATE
|
||||||
(6 rows)
|
(11 rows)
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
DO $$
|
||||||
|
DECLARE
|
||||||
|
i integer;
|
||||||
|
BEGIN
|
||||||
|
FOR i IN 10..24 LOOP
|
||||||
|
RAISE NOTICE 'error_code: %, error_level: %', i, decode_error_level(i);
|
||||||
|
END LOOP;
|
||||||
|
END $$;
|
||||||
|
NOTICE: error_code: 10, error_level: DEBUG5
|
||||||
|
NOTICE: error_code: 11, error_level: DEBUG4
|
||||||
|
NOTICE: error_code: 12, error_level: DEBUG3
|
||||||
|
NOTICE: error_code: 13, error_level: DEBUG2
|
||||||
|
NOTICE: error_code: 14, error_level: DEBUG1
|
||||||
|
NOTICE: error_code: 15, error_level: LOG
|
||||||
|
NOTICE: error_code: 16, error_level: LOG_SERVER_ONLY
|
||||||
|
NOTICE: error_code: 17, error_level: INFO
|
||||||
|
NOTICE: error_code: 18, error_level: NOTICE
|
||||||
|
NOTICE: error_code: 19, error_level: WARNING
|
||||||
|
NOTICE: error_code: 20, error_level: WARNING_CLIENT_ONLY
|
||||||
|
NOTICE: error_code: 21, error_level: ERROR
|
||||||
|
NOTICE: error_code: 22, error_level: FATAL
|
||||||
|
NOTICE: error_code: 23, error_level: PANIC
|
||||||
|
NOTICE: error_code: 24, error_level: <NULL>
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -0,0 +1,25 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
DO $$
|
||||||
|
DECLARE
|
||||||
|
i integer;
|
||||||
|
BEGIN
|
||||||
|
FOR i IN 10..24 LOOP
|
||||||
|
RAISE NOTICE 'error_code: %, error_level: %', i, decode_error_level(i);
|
||||||
|
END LOOP;
|
||||||
|
END $$;
|
||||||
|
NOTICE: error_code: 10, error_level: DEBUG5
|
||||||
|
NOTICE: error_code: 11, error_level: DEBUG4
|
||||||
|
NOTICE: error_code: 12, error_level: DEBUG3
|
||||||
|
NOTICE: error_code: 13, error_level: DEBUG2
|
||||||
|
NOTICE: error_code: 14, error_level: DEBUG1
|
||||||
|
NOTICE: error_code: 15, error_level: LOG
|
||||||
|
NOTICE: error_code: 16, error_level: LOG_SERVER_ONLY
|
||||||
|
NOTICE: error_code: 17, error_level: INFO
|
||||||
|
NOTICE: error_code: 18, error_level: NOTICE
|
||||||
|
NOTICE: error_code: 19, error_level: WARNING
|
||||||
|
NOTICE: error_code: 20, error_level: ERROR
|
||||||
|
NOTICE: error_code: 21, error_level: FATAL
|
||||||
|
NOTICE: error_code: 22, error_level: PANIC
|
||||||
|
NOTICE: error_code: 23, error_level: <NULL>
|
||||||
|
NOTICE: error_code: 24, error_level: <NULL>
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -0,0 +1,54 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
SET pg_stat_monitor.pgsm_track='all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION test() RETURNS VOID AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
PERFORM 1 + 2;
|
||||||
|
END; $$ language plpgsql;
|
||||||
|
CREATE OR REPLACE FUNCTION test2() RETURNS VOID AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
PERFORM 1 + 2;
|
||||||
|
END; $$ language plpgsql;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT test();
|
||||||
|
test
|
||||||
|
------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT test2();
|
||||||
|
test2
|
||||||
|
-------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT 1 + 2;
|
||||||
|
?column?
|
||||||
|
----------
|
||||||
|
3
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT left(query, 15) as query, calls, top_query, pgsm_query_id FROM pg_stat_monitor ORDER BY query, top_query COLLATE "C";
|
||||||
|
query | calls | top_query | pgsm_query_id
|
||||||
|
-----------------+-------+-----------------+----------------------
|
||||||
|
SELECT 1 + 2 | 1 | SELECT test(); | 5193804135051352284
|
||||||
|
SELECT 1 + 2 | 1 | SELECT test2(); | 5193804135051352284
|
||||||
|
SELECT 1 + 2 | 1 | | 5193804135051352284
|
||||||
|
SELECT pg_stat_ | 1 | | 689150021118383254
|
||||||
|
SELECT test() | 1 | | -6801876889834540522
|
||||||
|
SELECT test2() | 1 | | 369102705908374543
|
||||||
|
(6 rows)
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -24,9 +24,10 @@ SELECT routine_schema, routine_name, routine_type, data_type FROM information_sc
|
||||||
public | pgsm_create_13_view | FUNCTION | integer
|
public | pgsm_create_13_view | FUNCTION | integer
|
||||||
public | pgsm_create_14_view | FUNCTION | integer
|
public | pgsm_create_14_view | FUNCTION | integer
|
||||||
public | pgsm_create_15_view | FUNCTION | integer
|
public | pgsm_create_15_view | FUNCTION | integer
|
||||||
|
public | pgsm_create_17_view | FUNCTION | integer
|
||||||
public | pgsm_create_view | FUNCTION | integer
|
public | pgsm_create_view | FUNCTION | integer
|
||||||
public | range | FUNCTION | ARRAY
|
public | range | FUNCTION | ARRAY
|
||||||
(13 rows)
|
(14 rows)
|
||||||
|
|
||||||
SET ROLE u1;
|
SET ROLE u1;
|
||||||
SELECT routine_schema, routine_name, routine_type, data_type FROM information_schema.routines WHERE routine_schema = 'public' ORDER BY routine_name COLLATE "C";
|
SELECT routine_schema, routine_name, routine_type, data_type FROM information_schema.routines WHERE routine_schema = 'public' ORDER BY routine_name COLLATE "C";
|
||||||
|
|
|
@ -24,9 +24,10 @@ SELECT routine_schema, routine_name, routine_type, data_type FROM information_sc
|
||||||
public | pgsm_create_13_view | FUNCTION | integer
|
public | pgsm_create_13_view | FUNCTION | integer
|
||||||
public | pgsm_create_14_view | FUNCTION | integer
|
public | pgsm_create_14_view | FUNCTION | integer
|
||||||
public | pgsm_create_15_view | FUNCTION | integer
|
public | pgsm_create_15_view | FUNCTION | integer
|
||||||
|
public | pgsm_create_17_view | FUNCTION | integer
|
||||||
public | pgsm_create_view | FUNCTION | integer
|
public | pgsm_create_view | FUNCTION | integer
|
||||||
public | range | FUNCTION | ARRAY
|
public | range | FUNCTION | ARRAY
|
||||||
(13 rows)
|
(14 rows)
|
||||||
|
|
||||||
SET ROLE u1;
|
SET ROLE u1;
|
||||||
SELECT routine_schema, routine_name, routine_type, data_type FROM information_schema.routines WHERE routine_schema = 'public' ORDER BY routine_name COLLATE "C";
|
SELECT routine_schema, routine_name, routine_type, data_type FROM information_schema.routines WHERE routine_schema = 'public' ORDER BY routine_name COLLATE "C";
|
||||||
|
|
|
@ -16,25 +16,26 @@ WHERE name LIKE 'pg_stat_monitor.%'
|
||||||
ORDER
|
ORDER
|
||||||
BY name
|
BY name
|
||||||
COLLATE "C";
|
COLLATE "C";
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
-------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
----------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
||||||
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
||||||
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
||||||
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
||||||
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
||||||
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
||||||
pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_track_application_names | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f
|
||||||
(17 rows)
|
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
||||||
|
(18 rows)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -16,24 +16,25 @@ WHERE name LIKE 'pg_stat_monitor.%'
|
||||||
ORDER
|
ORDER
|
||||||
BY name
|
BY name
|
||||||
COLLATE "C";
|
COLLATE "C";
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
-------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
----------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
||||||
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
||||||
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
||||||
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
||||||
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
||||||
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
||||||
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_track_application_names | on | | user | bool | default | | | | on | on | f
|
||||||
(16 rows)
|
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
||||||
|
(17 rows)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -16,24 +16,25 @@ WHERE name LIKE 'pg_stat_monitor.%'
|
||||||
ORDER
|
ORDER
|
||||||
BY name
|
BY name
|
||||||
COLLATE "C";
|
COLLATE "C";
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
-------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
----------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
||||||
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
pg_stat_monitor.pgsm_histogram_max | 100000 | | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
||||||
pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_histogram_min | 1 | | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
||||||
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
||||||
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
||||||
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
||||||
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_track_application_names | on | | user | bool | default | | | | on | on | f
|
||||||
(16 rows)
|
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
||||||
|
(17 rows)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
--
|
||||||
|
-- Statement level tracking
|
||||||
|
--
|
||||||
|
SELECT setting::integer < 140000 AS skip_test FROM pg_settings where name = 'server_version_num' \gset
|
||||||
|
\if :skip_test
|
||||||
|
\quit
|
|
@ -0,0 +1,326 @@
|
||||||
|
--
|
||||||
|
-- Statement level tracking
|
||||||
|
--
|
||||||
|
SELECT setting::integer < 140000 AS skip_test FROM pg_settings where name = 'server_version_num' \gset
|
||||||
|
\if :skip_test
|
||||||
|
\quit
|
||||||
|
\endif
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = TRUE;
|
||||||
|
SET pg_stat_monitor.pgsm_normalized_query = TRUE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- DO block - top-level tracking.
|
||||||
|
CREATE TABLE stats_track_tab (x int);
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
WHERE query LIKE '%DELETE%' ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+--------------------------------
|
||||||
|
t | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | DO $$ +
|
||||||
|
| | BEGIN +
|
||||||
|
| | DELETE FROM stats_track_tab;+
|
||||||
|
| | END; +
|
||||||
|
| | $$ LANGUAGE plpgsql
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- DO block - all-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+----------------------------------------
|
||||||
|
f | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | DO $$ +
|
||||||
|
| | BEGIN +
|
||||||
|
| | DELETE FROM stats_track_tab; +
|
||||||
|
| | END; $$
|
||||||
|
t | 1 | DO LANGUAGE plpgsql $$ +
|
||||||
|
| | BEGIN +
|
||||||
|
| | -- this is a SELECT +
|
||||||
|
| | PERFORM 'hello world'::TEXT; +
|
||||||
|
| | END; $$
|
||||||
|
f | 1 | SELECT $1::TEXT
|
||||||
|
t | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
t | 1 | SET pg_stat_monitor.pgsm_track = 'all'
|
||||||
|
(7 rows)
|
||||||
|
|
||||||
|
-- DO block - top-level tracking without utility.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = FALSE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+--------------------------------
|
||||||
|
t | 2 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | SELECT $1::TEXT
|
||||||
|
t | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
-- DO block - all-level tracking without utility.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+--------------------------------
|
||||||
|
t | 2 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | SELECT $1::TEXT
|
||||||
|
t | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
-- PL/pgSQL function - top-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = FALSE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CREATE FUNCTION PLUS_TWO(i INTEGER) RETURNS INTEGER AS $$
|
||||||
|
DECLARE
|
||||||
|
r INTEGER;
|
||||||
|
BEGIN
|
||||||
|
SELECT (i + 1 + 1.0)::INTEGER INTO r;
|
||||||
|
RETURN r;
|
||||||
|
END; $$ LANGUAGE plpgsql;
|
||||||
|
SELECT PLUS_TWO(3);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
5
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_TWO(7);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
9
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- SQL function --- use LIMIT to keep it from being inlined
|
||||||
|
CREATE FUNCTION PLUS_ONE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT (i + 1.0)::INTEGER LIMIT 1 $$ LANGUAGE SQL;
|
||||||
|
SELECT PLUS_ONE(8);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
9
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_ONE(10);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
11
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
calls | rows | query
|
||||||
|
-------+------+--------------------------------
|
||||||
|
2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
-- immutable SQL function --- can be executed at plan time
|
||||||
|
CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL;
|
||||||
|
SELECT PLUS_THREE(8);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
11
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_THREE(10);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
13
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT toplevel, calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
toplevel | calls | rows | query
|
||||||
|
----------+-------+------+---------------------------------------------------------------------------
|
||||||
|
t | 2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_THREE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
t | 1 | 3 | SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C"
|
||||||
|
f | 2 | 2 | SELECT i + $2 LIMIT $3
|
||||||
|
t | 1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(6 rows)
|
||||||
|
|
||||||
|
-- PL/pgSQL function - all-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- we drop and recreate the functions to avoid any caching funnies
|
||||||
|
DROP FUNCTION PLUS_ONE(INTEGER);
|
||||||
|
DROP FUNCTION PLUS_TWO(INTEGER);
|
||||||
|
DROP FUNCTION PLUS_THREE(INTEGER);
|
||||||
|
-- PL/pgSQL function
|
||||||
|
CREATE FUNCTION PLUS_TWO(i INTEGER) RETURNS INTEGER AS $$
|
||||||
|
DECLARE
|
||||||
|
r INTEGER;
|
||||||
|
BEGIN
|
||||||
|
SELECT (i + 1 + 1.0)::INTEGER INTO r;
|
||||||
|
RETURN r;
|
||||||
|
END; $$ LANGUAGE plpgsql;
|
||||||
|
SELECT PLUS_TWO(-1);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_TWO(2);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
4
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- SQL function --- use LIMIT to keep it from being inlined
|
||||||
|
CREATE FUNCTION PLUS_ONE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT (i + 1.0)::INTEGER LIMIT 1 $$ LANGUAGE SQL;
|
||||||
|
SELECT PLUS_ONE(3);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
4
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_ONE(1);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
2
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
calls | rows | query
|
||||||
|
-------+------+-----------------------------------
|
||||||
|
2 | 2 | SELECT (i + $2 + $3)::INTEGER
|
||||||
|
2 | 2 | SELECT (i + $2)::INTEGER LIMIT $3
|
||||||
|
2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(5 rows)
|
||||||
|
|
||||||
|
-- immutable SQL function --- can be executed at plan time
|
||||||
|
CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL;
|
||||||
|
SELECT PLUS_THREE(8);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
11
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_THREE(10);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
13
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT toplevel, calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
toplevel | calls | rows | query
|
||||||
|
----------+-------+------+---------------------------------------------------------------------------
|
||||||
|
f | 2 | 2 | SELECT (i + $2 + $3)::INTEGER
|
||||||
|
f | 2 | 2 | SELECT (i + $2)::INTEGER LIMIT $3
|
||||||
|
t | 2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_THREE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
t | 1 | 5 | SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C"
|
||||||
|
f | 2 | 2 | SELECT i + $2 LIMIT $3
|
||||||
|
t | 1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(8 rows)
|
||||||
|
|
||||||
|
--
|
||||||
|
-- pg_stat_monitor.pgsm_track = none
|
||||||
|
--
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'none';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT 1 AS "one";
|
||||||
|
one
|
||||||
|
-----
|
||||||
|
1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT 1 + 1 AS "two";
|
||||||
|
two
|
||||||
|
-----
|
||||||
|
2
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
calls | rows | query
|
||||||
|
-------+------+-------
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -0,0 +1,325 @@
|
||||||
|
--
|
||||||
|
-- Statement level tracking
|
||||||
|
--
|
||||||
|
SELECT setting::integer < 140000 AS skip_test FROM pg_settings where name = 'server_version_num' \gset
|
||||||
|
\if :skip_test
|
||||||
|
\quit
|
||||||
|
\endif
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = TRUE;
|
||||||
|
SET pg_stat_monitor.pgsm_normalized_query = TRUE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- DO block - top-level tracking.
|
||||||
|
CREATE TABLE stats_track_tab (x int);
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
WHERE query LIKE '%DELETE%' ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+--------------------------------
|
||||||
|
t | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | DO $$ +
|
||||||
|
| | BEGIN +
|
||||||
|
| | DELETE FROM stats_track_tab;+
|
||||||
|
| | END; +
|
||||||
|
| | $$ LANGUAGE plpgsql
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- DO block - all-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+----------------------------------------
|
||||||
|
f | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | DO $$ +
|
||||||
|
| | BEGIN +
|
||||||
|
| | DELETE FROM stats_track_tab; +
|
||||||
|
| | END; $$
|
||||||
|
t | 1 | DO LANGUAGE plpgsql $$ +
|
||||||
|
| | BEGIN +
|
||||||
|
| | -- this is a SELECT +
|
||||||
|
| | PERFORM 'hello world'::TEXT; +
|
||||||
|
| | END; $$
|
||||||
|
f | 1 | SELECT $1::TEXT
|
||||||
|
t | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
t | 1 | SET pg_stat_monitor.pgsm_track = 'all'
|
||||||
|
(7 rows)
|
||||||
|
|
||||||
|
-- DO block - top-level tracking without utility.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = FALSE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+--------------------------------
|
||||||
|
t | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
-- DO block - all-level tracking without utility.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
toplevel | calls | query
|
||||||
|
----------+-------+--------------------------------
|
||||||
|
f | 1 | DELETE FROM stats_track_tab
|
||||||
|
t | 1 | DELETE FROM stats_track_tab
|
||||||
|
f | 1 | SELECT $1::TEXT
|
||||||
|
t | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(4 rows)
|
||||||
|
|
||||||
|
-- PL/pgSQL function - top-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = FALSE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CREATE FUNCTION PLUS_TWO(i INTEGER) RETURNS INTEGER AS $$
|
||||||
|
DECLARE
|
||||||
|
r INTEGER;
|
||||||
|
BEGIN
|
||||||
|
SELECT (i + 1 + 1.0)::INTEGER INTO r;
|
||||||
|
RETURN r;
|
||||||
|
END; $$ LANGUAGE plpgsql;
|
||||||
|
SELECT PLUS_TWO(3);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
5
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_TWO(7);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
9
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- SQL function --- use LIMIT to keep it from being inlined
|
||||||
|
CREATE FUNCTION PLUS_ONE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT (i + 1.0)::INTEGER LIMIT 1 $$ LANGUAGE SQL;
|
||||||
|
SELECT PLUS_ONE(8);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
9
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_ONE(10);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
11
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
calls | rows | query
|
||||||
|
-------+------+--------------------------------
|
||||||
|
2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(3 rows)
|
||||||
|
|
||||||
|
-- immutable SQL function --- can be executed at plan time
|
||||||
|
CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL;
|
||||||
|
SELECT PLUS_THREE(8);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
11
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_THREE(10);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
13
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT toplevel, calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
toplevel | calls | rows | query
|
||||||
|
----------+-------+------+---------------------------------------------------------------------------
|
||||||
|
t | 2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_THREE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
t | 1 | 3 | SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C"
|
||||||
|
t | 1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(5 rows)
|
||||||
|
|
||||||
|
-- PL/pgSQL function - all-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- we drop and recreate the functions to avoid any caching funnies
|
||||||
|
DROP FUNCTION PLUS_ONE(INTEGER);
|
||||||
|
DROP FUNCTION PLUS_TWO(INTEGER);
|
||||||
|
DROP FUNCTION PLUS_THREE(INTEGER);
|
||||||
|
-- PL/pgSQL function
|
||||||
|
CREATE FUNCTION PLUS_TWO(i INTEGER) RETURNS INTEGER AS $$
|
||||||
|
DECLARE
|
||||||
|
r INTEGER;
|
||||||
|
BEGIN
|
||||||
|
SELECT (i + 1 + 1.0)::INTEGER INTO r;
|
||||||
|
RETURN r;
|
||||||
|
END; $$ LANGUAGE plpgsql;
|
||||||
|
SELECT PLUS_TWO(-1);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_TWO(2);
|
||||||
|
plus_two
|
||||||
|
----------
|
||||||
|
4
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
-- SQL function --- use LIMIT to keep it from being inlined
|
||||||
|
CREATE FUNCTION PLUS_ONE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT (i + 1.0)::INTEGER LIMIT 1 $$ LANGUAGE SQL;
|
||||||
|
SELECT PLUS_ONE(3);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
4
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_ONE(1);
|
||||||
|
plus_one
|
||||||
|
----------
|
||||||
|
2
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
calls | rows | query
|
||||||
|
-------+------+-----------------------------------
|
||||||
|
2 | 2 | SELECT (i + $2 + $3)::INTEGER
|
||||||
|
2 | 2 | SELECT (i + $2)::INTEGER LIMIT $3
|
||||||
|
2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(5 rows)
|
||||||
|
|
||||||
|
-- immutable SQL function --- can be executed at plan time
|
||||||
|
CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL;
|
||||||
|
SELECT PLUS_THREE(8);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
11
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT PLUS_THREE(10);
|
||||||
|
plus_three
|
||||||
|
------------
|
||||||
|
13
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT toplevel, calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
toplevel | calls | rows | query
|
||||||
|
----------+-------+------+---------------------------------------------------------------------------
|
||||||
|
f | 2 | 2 | SELECT (i + $2 + $3)::INTEGER
|
||||||
|
f | 2 | 2 | SELECT (i + $2)::INTEGER LIMIT $3
|
||||||
|
t | 2 | 2 | SELECT PLUS_ONE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_THREE($1)
|
||||||
|
t | 2 | 2 | SELECT PLUS_TWO($1)
|
||||||
|
t | 1 | 5 | SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C"
|
||||||
|
f | 2 | 2 | SELECT i + $2 LIMIT $3
|
||||||
|
t | 1 | 1 | SELECT pg_stat_monitor_reset()
|
||||||
|
(8 rows)
|
||||||
|
|
||||||
|
--
|
||||||
|
-- pg_stat_monitor.pgsm_track = none
|
||||||
|
--
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'none';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT 1 AS "one";
|
||||||
|
one
|
||||||
|
-----
|
||||||
|
1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT 1 + 1 AS "two";
|
||||||
|
two
|
||||||
|
-----
|
||||||
|
2
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
calls | rows | query
|
||||||
|
-------+------+-------
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -0,0 +1,115 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
CREATE DATABASE db2;
|
||||||
|
\c db1
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
CREATE TABLE t2 (b int);
|
||||||
|
CREATE FUNCTION add(integer, integer) RETURNS integer
|
||||||
|
AS 'select $1 + $2;'
|
||||||
|
LANGUAGE SQL
|
||||||
|
IMMUTABLE
|
||||||
|
RETURNS NULL ON NULL INPUT;
|
||||||
|
\c db2
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
CREATE TABLE t3 (c int);
|
||||||
|
CREATE FUNCTION add(integer, integer) RETURNS integer
|
||||||
|
AS 'select $1 + $2;'
|
||||||
|
LANGUAGE SQL
|
||||||
|
IMMUTABLE
|
||||||
|
RETURNS NULL ON NULL INPUT;
|
||||||
|
\c contrib_regression
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\c db1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT *, ADD(1, 2) FROM t1;
|
||||||
|
a | add
|
||||||
|
---+-----
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT * FROM t2;
|
||||||
|
b
|
||||||
|
---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
-- Check that spaces and comments do not generate a different pgsm_query_id
|
||||||
|
SELECT * FROM t2 --WHATEVER;
|
||||||
|
;
|
||||||
|
b
|
||||||
|
---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT * FROM t2 /* ...
|
||||||
|
...
|
||||||
|
More comments to check for spaces.
|
||||||
|
*/
|
||||||
|
;
|
||||||
|
b
|
||||||
|
---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
\c db2
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
SELECT *, ADD(1, 2) FROM t1;
|
||||||
|
a | add
|
||||||
|
---+-----
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
set pg_stat_monitor.pgsm_enable_pgsm_query_id = off;
|
||||||
|
SELECT * FROM t3;
|
||||||
|
c
|
||||||
|
---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
set pg_stat_monitor.pgsm_enable_pgsm_query_id = on;
|
||||||
|
SELECT * FROM t3 where c = 20;
|
||||||
|
c
|
||||||
|
---
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
\c contrib_regression
|
||||||
|
SELECT datname, pgsm_query_id, query, calls FROM pg_stat_monitor ORDER BY pgsm_query_id, query, datname;
|
||||||
|
datname | pgsm_query_id | query | calls
|
||||||
|
--------------------+---------------------+-----------------------------------------------------+-------
|
||||||
|
contrib_regression | 689150021118383254 | SELECT pg_stat_monitor_reset() | 1
|
||||||
|
db1 | 1897482803466821995 | SELECT * FROM t2 | 3
|
||||||
|
db1 | 1988437669671417938 | SELECT * FROM t1 | 1
|
||||||
|
db2 | 1988437669671417938 | SELECT * FROM t1 | 1
|
||||||
|
db2 | 6220142855706866455 | set pg_stat_monitor.pgsm_enable_pgsm_query_id = on | 1
|
||||||
|
db2 | 6633979598391393345 | SELECT * FROM t3 where c = 20 | 1
|
||||||
|
db1 | 8140395000078788481 | SELECT *, ADD(1, 2) FROM t1 | 1
|
||||||
|
db2 | 8140395000078788481 | SELECT *, ADD(1, 2) FROM t1 | 1
|
||||||
|
db2 | | SELECT * FROM t3 | 1
|
||||||
|
db2 | | set pg_stat_monitor.pgsm_enable_pgsm_query_id = off | 1
|
||||||
|
(10 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
\c db1
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP FUNCTION ADD;
|
||||||
|
\c db2
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP FUNCTION ADD;
|
||||||
|
\c contrib_regression
|
||||||
|
DROP DATABASE db1;
|
||||||
|
DROP DATABASE db2;
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -2,7 +2,7 @@ CREATE EXTENSION pg_stat_monitor;
|
||||||
SELECT pg_stat_monitor_version();
|
SELECT pg_stat_monitor_version();
|
||||||
pg_stat_monitor_version
|
pg_stat_monitor_version
|
||||||
-------------------------
|
-------------------------
|
||||||
2.0.4
|
2.2.0
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -1,6 +1,14 @@
|
||||||
CREATE EXTENSION pg_stat_monitor;
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
SELECT 1 AS num;
|
SELECT 1 AS num;
|
||||||
SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
SELECT query,application_name FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
|
SELECT 1 AS num;
|
||||||
|
SET pg_stat_monitor.pgsm_track_application_names='no';
|
||||||
|
SELECT 1 AS num;
|
||||||
|
SELECT query,application_name FROM pg_stat_monitor ORDER BY query, application_name COLLATE "C";
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
|
||||||
|
DO $$
|
||||||
|
DECLARE
|
||||||
|
i integer;
|
||||||
|
BEGIN
|
||||||
|
FOR i IN 10..24 LOOP
|
||||||
|
RAISE NOTICE 'error_code: %, error_level: %', i, decode_error_level(i);
|
||||||
|
END LOOP;
|
||||||
|
END $$;
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -0,0 +1,24 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
SET pg_stat_monitor.pgsm_track='all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION test() RETURNS VOID AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
PERFORM 1 + 2;
|
||||||
|
END; $$ language plpgsql;
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION test2() RETURNS VOID AS
|
||||||
|
$$
|
||||||
|
BEGIN
|
||||||
|
PERFORM 1 + 2;
|
||||||
|
END; $$ language plpgsql;
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
SELECT test();
|
||||||
|
SELECT test2();
|
||||||
|
|
||||||
|
SELECT 1 + 2;
|
||||||
|
SELECT left(query, 15) as query, calls, top_query, pgsm_query_id FROM pg_stat_monitor ORDER BY query, top_query COLLATE "C";
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -0,0 +1,160 @@
|
||||||
|
--
|
||||||
|
-- Statement level tracking
|
||||||
|
--
|
||||||
|
|
||||||
|
SELECT setting::integer < 140000 AS skip_test FROM pg_settings where name = 'server_version_num' \gset
|
||||||
|
\if :skip_test
|
||||||
|
\quit
|
||||||
|
\endif
|
||||||
|
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = TRUE;
|
||||||
|
SET pg_stat_monitor.pgsm_normalized_query = TRUE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
|
-- DO block - top-level tracking.
|
||||||
|
CREATE TABLE stats_track_tab (x int);
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE plpgsql;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
WHERE query LIKE '%DELETE%' ORDER BY query COLLATE "C", toplevel;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
|
-- DO block - all-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
|
||||||
|
-- DO block - top-level tracking without utility.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = FALSE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
|
||||||
|
-- DO block - all-level tracking without utility.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM stats_track_tab;
|
||||||
|
END; $$;
|
||||||
|
DO LANGUAGE plpgsql $$
|
||||||
|
BEGIN
|
||||||
|
-- this is a SELECT
|
||||||
|
PERFORM 'hello world'::TEXT;
|
||||||
|
END; $$;
|
||||||
|
SELECT toplevel, calls, query FROM pg_stat_monitor
|
||||||
|
ORDER BY query COLLATE "C", toplevel;
|
||||||
|
|
||||||
|
-- PL/pgSQL function - top-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'top';
|
||||||
|
SET pg_stat_monitor.pgsm_track_utility = FALSE;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
CREATE FUNCTION PLUS_TWO(i INTEGER) RETURNS INTEGER AS $$
|
||||||
|
DECLARE
|
||||||
|
r INTEGER;
|
||||||
|
BEGIN
|
||||||
|
SELECT (i + 1 + 1.0)::INTEGER INTO r;
|
||||||
|
RETURN r;
|
||||||
|
END; $$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
SELECT PLUS_TWO(3);
|
||||||
|
SELECT PLUS_TWO(7);
|
||||||
|
|
||||||
|
-- SQL function --- use LIMIT to keep it from being inlined
|
||||||
|
CREATE FUNCTION PLUS_ONE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT (i + 1.0)::INTEGER LIMIT 1 $$ LANGUAGE SQL;
|
||||||
|
|
||||||
|
SELECT PLUS_ONE(8);
|
||||||
|
SELECT PLUS_ONE(10);
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
|
||||||
|
-- immutable SQL function --- can be executed at plan time
|
||||||
|
CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL;
|
||||||
|
|
||||||
|
SELECT PLUS_THREE(8);
|
||||||
|
SELECT PLUS_THREE(10);
|
||||||
|
|
||||||
|
SELECT toplevel, calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
|
||||||
|
-- PL/pgSQL function - all-level tracking.
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'all';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
|
-- we drop and recreate the functions to avoid any caching funnies
|
||||||
|
DROP FUNCTION PLUS_ONE(INTEGER);
|
||||||
|
DROP FUNCTION PLUS_TWO(INTEGER);
|
||||||
|
DROP FUNCTION PLUS_THREE(INTEGER);
|
||||||
|
|
||||||
|
-- PL/pgSQL function
|
||||||
|
CREATE FUNCTION PLUS_TWO(i INTEGER) RETURNS INTEGER AS $$
|
||||||
|
DECLARE
|
||||||
|
r INTEGER;
|
||||||
|
BEGIN
|
||||||
|
SELECT (i + 1 + 1.0)::INTEGER INTO r;
|
||||||
|
RETURN r;
|
||||||
|
END; $$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
|
SELECT PLUS_TWO(-1);
|
||||||
|
SELECT PLUS_TWO(2);
|
||||||
|
|
||||||
|
-- SQL function --- use LIMIT to keep it from being inlined
|
||||||
|
CREATE FUNCTION PLUS_ONE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT (i + 1.0)::INTEGER LIMIT 1 $$ LANGUAGE SQL;
|
||||||
|
|
||||||
|
SELECT PLUS_ONE(3);
|
||||||
|
SELECT PLUS_ONE(1);
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
|
||||||
|
-- immutable SQL function --- can be executed at plan time
|
||||||
|
CREATE FUNCTION PLUS_THREE(i INTEGER) RETURNS INTEGER AS
|
||||||
|
$$ SELECT i + 3 LIMIT 1 $$ IMMUTABLE LANGUAGE SQL;
|
||||||
|
|
||||||
|
SELECT PLUS_THREE(8);
|
||||||
|
SELECT PLUS_THREE(10);
|
||||||
|
|
||||||
|
SELECT toplevel, calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
|
||||||
|
--
|
||||||
|
-- pg_stat_monitor.pgsm_track = none
|
||||||
|
--
|
||||||
|
SET pg_stat_monitor.pgsm_track = 'none';
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
|
SELECT 1 AS "one";
|
||||||
|
SELECT 1 + 1 AS "two";
|
||||||
|
|
||||||
|
SELECT calls, rows, query FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -20,7 +20,7 @@ my $pgdata = $node->data_dir;
|
||||||
open my $conf, '>>', "$pgdata/postgresql.conf";
|
open my $conf, '>>', "$pgdata/postgresql.conf";
|
||||||
print $conf "shared_preload_libraries = 'pg_stat_monitor'\n";
|
print $conf "shared_preload_libraries = 'pg_stat_monitor'\n";
|
||||||
print $conf "pg_stat_monitor.pgsm_bucket_time = 360000\n";
|
print $conf "pg_stat_monitor.pgsm_bucket_time = 360000\n";
|
||||||
print $conf "pg_stat_monitor.pgsm_query_shared_buffer = 1\n";
|
print $conf "pg_stat_monitor.pgsm_query_shared_buffer = 1\n"; # Min possible value
|
||||||
print $conf "pg_stat_monitor.pgsm_normalized_query = 'yes'\n";
|
print $conf "pg_stat_monitor.pgsm_normalized_query = 'yes'\n";
|
||||||
close $conf;
|
close $conf;
|
||||||
|
|
||||||
|
@ -109,6 +109,29 @@ ok($cmdret == 0, "Run pgbench");
|
||||||
ok($cmdret == 0, "SELECT XXX FROM pg_stat_monitor");
|
ok($cmdret == 0, "SELECT XXX FROM pg_stat_monitor");
|
||||||
PGSM::append_to_file($stdout);
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_query_shared_buffer = 2048\n");
|
||||||
|
$node->restart();
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Reset PGSM EXTENSION");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Print PGSM EXTENSION Settings");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
$out = system ("pgbench -i -s 10 -p $port example");
|
||||||
|
print " out: $out \n";
|
||||||
|
ok($cmdret == 0, "Perform pgbench init");
|
||||||
|
|
||||||
|
$out = system ("pgbench -c 10 -j 2 -t 1000 -p $port example");
|
||||||
|
print " out: $out \n";
|
||||||
|
ok($cmdret == 0, "Run pgbench");
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "SELECT XXX FROM pg_stat_monitor");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
# DROP EXTENSION
|
# DROP EXTENSION
|
||||||
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
ok($cmdret == 0, "DROP PGSM EXTENSION");
|
ok($cmdret == 0, "DROP PGSM EXTENSION");
|
||||||
|
|
|
@ -19,7 +19,7 @@ my $pgdata = $node->data_dir;
|
||||||
# UPDATE postgresql.conf to include/load pg_stat_monitor library
|
# UPDATE postgresql.conf to include/load pg_stat_monitor library
|
||||||
open my $conf, '>>', "$pgdata/postgresql.conf";
|
open my $conf, '>>', "$pgdata/postgresql.conf";
|
||||||
print $conf "shared_preload_libraries = 'pg_stat_monitor'\n";
|
print $conf "shared_preload_libraries = 'pg_stat_monitor'\n";
|
||||||
print $conf "pg_stat_monitor.pgsm_max = 1000\n";
|
print $conf "pg_stat_monitor.pgsm_max = 2048\n";
|
||||||
close $conf;
|
close $conf;
|
||||||
|
|
||||||
# Start server
|
# Start server
|
||||||
|
@ -62,7 +62,7 @@ PGSM::append_to_file($stdout);
|
||||||
ok($cmdret == 0, "Print PGSM EXTENSION Settings");
|
ok($cmdret == 0, "Print PGSM EXTENSION Settings");
|
||||||
PGSM::append_to_file($stdout);
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_max = 10\n");
|
$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_max = 10\n"); # Min possible value
|
||||||
$node->restart();
|
$node->restart();
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
|
|
@ -22,7 +22,22 @@ print $conf "shared_preload_libraries = 'pg_stat_monitor'\n";
|
||||||
close $conf;
|
close $conf;
|
||||||
|
|
||||||
# Dictionary for expected PGSM columns names on different PG server versions
|
# Dictionary for expected PGSM columns names on different PG server versions
|
||||||
my %pg_versions_pgsm_columns = ( 16 => "application_name,blk_read_time," .
|
my %pg_versions_pgsm_columns = ( 17 => "application_name,".
|
||||||
|
"bucket,bucket_done,bucket_start_time,calls," .
|
||||||
|
"client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," .
|
||||||
|
"datname,dbid,elevel,jit_deform_count,jit_deform_time," .
|
||||||
|
"jit_emission_count,jit_emission_time,jit_functions,jit_generation_time," .
|
||||||
|
"jit_inlining_count,jit_inlining_time,jit_optimization_count,jit_optimization_time," .
|
||||||
|
"local_blk_read_time,local_blk_write_time,local_blks_dirtied,local_blks_hit,".
|
||||||
|
"local_blks_read,local_blks_written,max_exec_time,max_plan_time,mean_exec_time," .
|
||||||
|
"mean_plan_time,message,min_exec_time,min_plan_time,minmax_stats_since," .
|
||||||
|
"pgsm_query_id,planid,plans,query,query_plan,queryid,relations,resp_calls,rows," .
|
||||||
|
"shared_blk_read_time,shared_blk_write_time,shared_blks_dirtied," .
|
||||||
|
"shared_blks_hit,shared_blks_read,shared_blks_written,sqlcode,stats_since," .
|
||||||
|
"stddev_exec_time,stddev_plan_time,temp_blk_read_time,temp_blk_write_time," .
|
||||||
|
"temp_blks_read,temp_blks_written,top_query,top_queryid,toplevel," .
|
||||||
|
"total_exec_time,total_plan_time,userid,username,wal_bytes,wal_fpi,wal_records",
|
||||||
|
16 => "application_name,blk_read_time," .
|
||||||
"blk_write_time,bucket,bucket_done,bucket_start_time,calls," .
|
"blk_write_time,bucket,bucket_done,bucket_start_time,calls," .
|
||||||
"client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," .
|
"client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," .
|
||||||
"datname,dbid,elevel,jit_emission_count,jit_emission_time,jit_functions," .
|
"datname,dbid,elevel,jit_emission_count,jit_emission_time,jit_functions," .
|
||||||
|
|
|
@ -35,6 +35,15 @@ $node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_normalized_query = y
|
||||||
my $rt_value = $node->start;
|
my $rt_value = $node->start;
|
||||||
ok($rt_value == 1, "Start Server");
|
ok($rt_value == 1, "Start Server");
|
||||||
|
|
||||||
|
my $col_shared_blk_read_time = "shared_blk_read_time";
|
||||||
|
my $col_shared_blk_write_time = "shared_blk_write_time";
|
||||||
|
|
||||||
|
if ($PGSM::PG_MAJOR_VERSION <= 16)
|
||||||
|
{
|
||||||
|
$col_shared_blk_read_time = "blk_read_time";
|
||||||
|
$col_shared_blk_write_time = "blk_write_time";
|
||||||
|
}
|
||||||
|
|
||||||
# CREATE EXTENSION and change out file permissions
|
# CREATE EXTENSION and change out file permissions
|
||||||
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_statements;', extra_params => ['-a']);
|
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_statements;', extra_params => ['-a']);
|
||||||
ok($cmdret == 0, "CREATE PGSS EXTENSION");
|
ok($cmdret == 0, "CREATE PGSS EXTENSION");
|
||||||
|
@ -78,10 +87,10 @@ ok($cmdret == 0, "Run pgbench");
|
||||||
ok($cmdret == 0, "Run pg_sleep for 2 seconds ");
|
ok($cmdret == 0, "Run pg_sleep for 2 seconds ");
|
||||||
PGSM::append_to_file($stdout);
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT substr(query,0,30),calls, rows, ROUND(total_exec_time::numeric,4) AS total_exec_time, ROUND(min_exec_time::numeric,4) AS min_exec_time, ROUND(max_exec_time::numeric,4) AS max_exec_time, ROUND(mean_exec_time::numeric,4) AS mean_exec_time, ROUND(stddev_exec_time::numeric,4) AS stddev_exec_time, ROUND(blk_read_time::numeric,4) AS blk_read_time, ROUND(blk_write_time::numeric,4) AS blk_write_time FROM pg_stat_statements WHERE query LIKE \'%bench%\' ORDER BY query,calls DESC;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT substr(query,0,30),calls, rows, ROUND(total_exec_time::numeric,4) AS total_exec_time, ROUND(min_exec_time::numeric,4) AS min_exec_time, ROUND(max_exec_time::numeric,4) AS max_exec_time, ROUND(mean_exec_time::numeric,4) AS mean_exec_time, ROUND(stddev_exec_time::numeric,4) AS stddev_exec_time, ROUND(${col_shared_blk_read_time}::numeric,4) AS ${col_shared_blk_read_time}, ROUND(${col_shared_blk_write_time}::numeric,4) AS ${col_shared_blk_write_time} FROM pg_stat_statements WHERE query LIKE '%bench%' ORDER BY query,calls DESC;", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
PGSM::append_to_debug_file($stdout);
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT bucket, bucket_start_time, queryid, substr(query,0,30) AS query, calls, rows, total_exec_time, min_exec_time, max_exec_time, mean_exec_time, stddev_exec_time, ROUND(blk_read_time::numeric,4) AS blk_read_time, ROUND(blk_write_time::numeric,4) AS blk_write_time, cpu_user_time, cpu_sys_time FROM pg_stat_monitor WHERE query LIKE \'%bench%\' ORDER BY query,calls DESC;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT bucket, bucket_start_time, queryid, substr(query,0,30) AS query, calls, rows, total_exec_time, min_exec_time, max_exec_time, mean_exec_time, stddev_exec_time, ROUND(${col_shared_blk_read_time}::numeric,4) AS ${col_shared_blk_read_time}, ROUND(${col_shared_blk_write_time}::numeric,4) AS ${col_shared_blk_write_time}, cpu_user_time, cpu_sys_time FROM pg_stat_monitor WHERE query LIKE '%bench%' ORDER BY query,calls DESC;", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
PGSM::append_to_debug_file($stdout);
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT substr(query,0,30) AS query,calls,rows,wal_records,wal_fpi,wal_bytes FROM pg_stat_statements WHERE query LIKE \'%bench%\' ORDER BY query,calls;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT substr(query,0,30) AS query,calls,rows,wal_records,wal_fpi,wal_bytes FROM pg_stat_statements WHERE query LIKE \'%bench%\' ORDER BY query,calls;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
@ -160,13 +169,13 @@ is($stdout,'t',"Compare: mean_exec_time is equal.");
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: stddev_exec_time is equal.");
|
is($stdout,'t',"Compare: stddev_exec_time is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(ROUND(PGSM.blk_read_time::numeric,4)) = SUM(ROUND(PGSS.blk_read_time::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT SUM(ROUND(PGSM.${col_shared_blk_read_time}::numeric,4)) = SUM(ROUND(PGSS.${col_shared_blk_read_time}::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: blk_read_time is equal.");
|
is($stdout,'t',"Compare: ${col_shared_blk_read_time} is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(ROUND(PGSM.blk_write_time::numeric,4)) = SUM(ROUND(PGSS.blk_write_time::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT SUM(ROUND(PGSM.${col_shared_blk_write_time}::numeric,4)) = SUM(ROUND(PGSS.${col_shared_blk_write_time}::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: blk_write_time is equal.");
|
is($stdout,'t',"Compare: ${col_shared_blk_write_time} is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.wal_records) = SUM(PGSS.wal_records) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.wal_records) = SUM(PGSS.wal_records) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
|
@ -209,13 +218,13 @@ is($stdout,'t',"Compare: mean_exec_time is equal.");
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: stddev_exec_time is equal.");
|
is($stdout,'t',"Compare: stddev_exec_time is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(ROUND(PGSM.blk_read_time::numeric,4)) = SUM(ROUND(PGSS.blk_read_time::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%SELECT abalance FROM pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT SUM(ROUND(PGSM.${col_shared_blk_read_time}::numeric,4)) = SUM(ROUND(PGSS.${col_shared_blk_read_time}::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%SELECT abalance FROM pgbench_accounts%\' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: blk_read_time is equal.");
|
is($stdout,'t',"Compare: ${col_shared_blk_read_time} is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(ROUND(PGSM.blk_write_time::numeric,4)) = SUM(ROUND(PGSS.blk_write_time::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%SELECT abalance FROM pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT SUM(ROUND(PGSM.${col_shared_blk_write_time}::numeric,4)) = SUM(ROUND(PGSS.${col_shared_blk_write_time}::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%SELECT abalance FROM pgbench_accounts%\' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: blk_write_time is equal.");
|
is($stdout,'t',"Compare: ${col_shared_blk_write_time} is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.wal_records) = SUM(PGSS.wal_records) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%SELECT abalance FROM pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.wal_records) = SUM(PGSS.wal_records) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%SELECT abalance FROM pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
|
@ -258,9 +267,9 @@ is($stdout,'t',"Compare: mean_exec_time is equal.");
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: stddev_exec_time is equal.");
|
is($stdout,'t',"Compare: stddev_exec_time is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(ROUND(PGSM.blk_write_time::numeric,4)) = SUM(ROUND(PGSS.blk_write_time::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT SUM(ROUND(PGSM.${col_shared_blk_write_time}::numeric,4)) = SUM(ROUND(PGSS.${col_shared_blk_write_time}::numeric,4)) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts%\' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Compare: blk_write_time is equal.");
|
is($stdout,'t',"Compare: ${col_shared_blk_write_time} is equal.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.wal_records) = SUM(PGSS.wal_records) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.wal_records) = SUM(PGSS.wal_records) FROM pg_stat_monitor AS PGSM INNER JOIN pg_stat_statements AS PGSS ON PGSS.query = PGSM.query WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
|
|
|
@ -35,6 +35,15 @@ $node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_normalized_query = y
|
||||||
my $rt_value = $node->start;
|
my $rt_value = $node->start;
|
||||||
ok($rt_value == 1, "Start Server");
|
ok($rt_value == 1, "Start Server");
|
||||||
|
|
||||||
|
my $col_shared_blk_read_time = "shared_blk_read_time";
|
||||||
|
my $col_shared_blk_write_time = "shared_blk_write_time";
|
||||||
|
|
||||||
|
if ($PGSM::PG_MAJOR_VERSION <= 16)
|
||||||
|
{
|
||||||
|
$col_shared_blk_read_time = "blk_read_time";
|
||||||
|
$col_shared_blk_write_time = "blk_write_time";
|
||||||
|
}
|
||||||
|
|
||||||
# CREATE EXTENSION and change out file permissions
|
# CREATE EXTENSION and change out file permissions
|
||||||
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_statements;', extra_params => ['-a']);
|
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_statements;', extra_params => ['-a']);
|
||||||
ok($cmdret == 0, "CREATE PGSS EXTENSION");
|
ok($cmdret == 0, "CREATE PGSS EXTENSION");
|
||||||
|
@ -86,7 +95,7 @@ PGSM::append_to_debug_file($stdout);
|
||||||
PGSM::append_to_debug_file($stdout);
|
PGSM::append_to_debug_file($stdout);
|
||||||
PGSM::append_to_debug_file("--------");
|
PGSM::append_to_debug_file("--------");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT substr(query,0,130) AS query, calls, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, blk_read_time, blk_write_time FROM pg_stat_monitor WHERE query LIKE \'%bench%\' ORDER BY query,calls DESC;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT substr(query,0,130) AS query, calls, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, ${col_shared_blk_read_time}, ${col_shared_blk_write_time} FROM pg_stat_monitor WHERE query LIKE '%bench%' ORDER BY query,calls DESC;", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
PGSM::append_to_debug_file($stdout);
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
# Compare values for query 'DELETE FROM pgbench_accounts WHERE $1 = $2'
|
# Compare values for query 'DELETE FROM pgbench_accounts WHERE $1 = $2'
|
||||||
|
@ -106,13 +115,13 @@ is($stdout,'t',"Check: shared_blks_dirtied should not be 0.");
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: shared_blks_written should not be 0.");
|
is($stdout,'t',"Check: shared_blks_written should not be 0.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.blk_read_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%DELETE FROM pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres',"SELECT SUM(PGSM.${col_shared_blk_read_time}) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE '%DELETE FROM pgbench_accounts%' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: blk_read_time should not be 0.");
|
is($stdout,'t',"Check: ${col_shared_blk_read_time} should not be 0.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.blk_write_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%DELETE FROM pgbench_accounts%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres',"SELECT SUM(PGSM.${col_shared_blk_write_time}) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE '%DELETE FROM pgbench_accounts%' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: blk_write_time should not be 0.");
|
is($stdout,'t',"Check: ${col_shared_blk_write_time} should not be 0.");
|
||||||
|
|
||||||
# Compare values for query 'INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP)'
|
# Compare values for query 'INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP)'
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.shared_blks_hit) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.shared_blks_hit) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
@ -127,9 +136,9 @@ is($stdout,'t',"Check: shared_blks_dirtied should not be 0.");
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: shared_blks_written should not be 0.");
|
is($stdout,'t',"Check: shared_blks_written should not be 0.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.blk_write_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%INSERT INTO pgbench_history%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres',"SELECT SUM(PGSM.${col_shared_blk_write_time}) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE '%INSERT INTO pgbench_history%' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: blk_write_time should not be 0.");
|
is($stdout,'t',"Check: ${col_shared_blk_write_time} should not be 0.");
|
||||||
|
|
||||||
# Compare values for query 'UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2'
|
# Compare values for query 'UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2'
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.shared_blks_hit) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts SET abalance%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.shared_blks_hit) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts SET abalance%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
@ -148,13 +157,13 @@ is($stdout,'t',"Check: shared_blks_dirtied should not be 0.");
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: shared_blks_written should not be 0.");
|
is($stdout,'t',"Check: shared_blks_written should not be 0.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.blk_read_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts SET abalance%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT SUM(PGSM.${col_shared_blk_read_time}) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE '%UPDATE pgbench_accounts SET abalance%' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: blk_read_time should not be 0.");
|
is($stdout,'t',"Check: ${col_shared_blk_read_time} should not be 0.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres','SELECT SUM(PGSM.blk_write_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%UPDATE pgbench_accounts SET abalance%\' GROUP BY PGSM.query;', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres',"SELECT SUM(PGSM.${col_shared_blk_write_time}) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE '%UPDATE pgbench_accounts SET abalance%' GROUP BY PGSM.query;", extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: blk_write_time should not be 0.");
|
is($stdout,'t',"Check: ${col_shared_blk_write_time} should not be 0.");
|
||||||
|
|
||||||
# DROP EXTENSION
|
# DROP EXTENSION
|
||||||
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
|
|
@ -70,10 +70,26 @@ is($stdout,'t',"Check: local_blks_hit should not be 0.");
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: local_blks_dirtied should not be 0.");
|
is($stdout,'t',"Check: local_blks_dirtied should not be 0.");
|
||||||
|
|
||||||
|
if ($PGSM::PG_MAJOR_VERSION >= 17)
|
||||||
|
{
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.local_blk_write_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%INSERT INTO t1%\'', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
trim($stdout);
|
||||||
|
is($stdout,'t',"Check: local_blk_write_time should not be 0.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Compare values for query 'SELECT * FROM t1'
|
# Compare values for query 'SELECT * FROM t1'
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT PGSM.local_blks_hit != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT PGSM.local_blks_hit != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: shared_blks_hit should not be 0.");
|
is($stdout,'t',"Check: local_blks_hit should not be 0.");
|
||||||
|
|
||||||
|
# TODO: Find a way how to bypass cache and get real block reads
|
||||||
|
# if ($PGSM::PG_MAJOR_VERSION >= 17)
|
||||||
|
# {
|
||||||
|
# ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.local_blk_read_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
# trim($stdout);
|
||||||
|
# is($stdout,'t',"Check: local_blk_read_time should not be 0.");
|
||||||
|
# }
|
||||||
|
|
||||||
# DROP EXTENSION
|
# DROP EXTENSION
|
||||||
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
|
|
@ -85,11 +85,22 @@ PGSM::append_to_debug_file($stdout);
|
||||||
# Compare values for query 'SELECT * FROM t1'
|
# Compare values for query 'SELECT * FROM t1'
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT PGSM.temp_blks_read != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT PGSM.temp_blks_read != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: shared_blks_hit should not be 0.");
|
is($stdout,'t',"Check: temp_blks_read should not be 0.");
|
||||||
|
|
||||||
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT PGSM.temp_blks_written != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT PGSM.temp_blks_written != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
trim($stdout);
|
trim($stdout);
|
||||||
is($stdout,'t',"Check: temp_blks_read should not be 0.");
|
is($stdout,'t',"Check: temp_blks_written should not be 0.");
|
||||||
|
|
||||||
|
if ($PGSM::PG_MAJOR_VERSION >= 15)
|
||||||
|
{
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.temp_blk_read_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\';', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
trim($stdout);
|
||||||
|
is($stdout,'t',"Check: temp_blk_read_time should not be 0.");
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT SUM(PGSM.temp_blk_write_time) != 0 FROM pg_stat_monitor AS PGSM WHERE PGSM.query LIKE \'%FROM t1%\'', extra_params => ['-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
trim($stdout);
|
||||||
|
is($stdout,'t',"Check: temp_blk_write_time should not be 0.");
|
||||||
|
}
|
||||||
|
|
||||||
# DROP EXTENSION
|
# DROP EXTENSION
|
||||||
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use File::Basename;
|
||||||
|
use File::Compare;
|
||||||
|
use File::Copy;
|
||||||
|
use Test::More;
|
||||||
|
use lib 't';
|
||||||
|
use pgsm;
|
||||||
|
|
||||||
|
# Get file name and CREATE out file name and dirs WHERE requried
|
||||||
|
PGSM::setup_files_dir(basename($0));
|
||||||
|
|
||||||
|
# CREATE new PostgreSQL node and do initdb
|
||||||
|
my $node = PGSM->pgsm_init_pg();
|
||||||
|
my $pgdata = $node->data_dir;
|
||||||
|
|
||||||
|
# UPDATE postgresql.conf to include/load pg_stat_monitor library
|
||||||
|
open my $conf, '>>', "$pgdata/postgresql.conf";
|
||||||
|
print $conf "shared_preload_libraries = 'pg_stat_monitor'\n";
|
||||||
|
print $conf "pg_stat_monitor.pgsm_bucket_time = 2147483647\n"; # Max value for this parameter
|
||||||
|
print $conf "pg_stat_monitor.pgsm_max_buckets = 20000\n"; # Max value for this parameter
|
||||||
|
close $conf;
|
||||||
|
|
||||||
|
# Start server
|
||||||
|
my $rt_value = $node->start;
|
||||||
|
ok($rt_value == 1, "Start Server");
|
||||||
|
|
||||||
|
# CREATE EXTENSION and change out file permissions
|
||||||
|
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE PGSM EXTENSION");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
# Run required commands/queries and dump output to out file.
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Reset PGSM EXTENSION");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT 1 AS num;", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Print results of a test query");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C";', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Check query stats");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
# DROP EXTENSION
|
||||||
|
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "DROP PGSM EXTENSION");
|
||||||
|
PGSM::append_to_file($stdout);
|
||||||
|
|
||||||
|
# Stop the server
|
||||||
|
$node->stop;
|
||||||
|
|
||||||
|
# compare the expected and out file
|
||||||
|
my $compare = PGSM->compare_results();
|
||||||
|
|
||||||
|
# Test/check if expected and result/out file match. If Yes, test passes.
|
||||||
|
is($compare,0,"Compare Files: $PGSM::expected_filename_with_path and $PGSM::out_filename_with_path files.");
|
||||||
|
|
||||||
|
# Done testing for this testcase file.
|
||||||
|
done_testing();
|
|
@ -0,0 +1,113 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use File::Basename;
|
||||||
|
use File::Compare;
|
||||||
|
use File::Copy;
|
||||||
|
use Test::More;
|
||||||
|
use lib 't';
|
||||||
|
use pgsm;
|
||||||
|
|
||||||
|
# Get file name and CREATE out file name and dirs WHERE requried
|
||||||
|
PGSM::setup_files_dir(basename($0));
|
||||||
|
|
||||||
|
my $PG_VERSION_STRING = `pg_config --version`;
|
||||||
|
|
||||||
|
if (index(lc($PG_VERSION_STRING), lc("percona")) == -1)
|
||||||
|
{
|
||||||
|
plan skip_all => "pg_stat_monitor test case only for PPG server package install with extensions.";
|
||||||
|
}
|
||||||
|
|
||||||
|
# CREATE new PostgreSQL node and do initdb
|
||||||
|
my $node = PGSM->pgsm_init_pg();
|
||||||
|
my $pgdata = $node->data_dir;
|
||||||
|
|
||||||
|
# UPDATE postgresql.conf to include/load pg_stat_monitor library
|
||||||
|
open my $conf, '>>', "$pgdata/postgresql.conf";
|
||||||
|
print $conf "shared_preload_libraries = 'pg_stat_monitor, pgaudit, set_user, pg_repack'\n";
|
||||||
|
print $conf "pg_stat_monitor.pgsm_bucket_time = 360000\n";
|
||||||
|
print $conf "pg_stat_monitor.pgsm_normalized_query = 'yes'\n";
|
||||||
|
close $conf;
|
||||||
|
|
||||||
|
# Start server
|
||||||
|
my $rt_value = $node->start;
|
||||||
|
ok($rt_value == 1, "Start Server");
|
||||||
|
|
||||||
|
# Create PGSM extension
|
||||||
|
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE PGSM EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Reset PGSM EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Create Other extensions
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS pgaudit;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE pgaudit EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS set_user;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE set_user EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS pg_repack;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE pg_repack EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SET pgaudit.log = 'none'; CREATE EXTENSION IF NOT EXISTS postgis; SET pgaudit.log = 'all';", extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE postgis EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS postgis_raster;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE postgis_raster EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS postgis_sfcgal;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE postgis_sfcgal EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE fuzzystrmatch EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS address_standardizer;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE address_standardizer EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS address_standardizer_data_us;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE address_standardizer_data_us EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "CREATE postgis_tiger_geocoder EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Print PGSM settings
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Print PGSM EXTENSION Settings");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Create example database and run pgbench init
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE database example;', extra_params => ['-a']);
|
||||||
|
print "cmdret $cmdret\n";
|
||||||
|
ok($cmdret == 0, "CREATE Database example");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
my $port = $node->port;
|
||||||
|
print "port $port \n";
|
||||||
|
|
||||||
|
my $out = system ("pgbench -i -s 20 -p $port example");
|
||||||
|
print " out: $out \n";
|
||||||
|
ok($cmdret == 0, "Perform pgbench init");
|
||||||
|
|
||||||
|
$out = system ("pgbench -c 10 -j 2 -t 5000 -p $port example");
|
||||||
|
print " out: $out \n";
|
||||||
|
ok($cmdret == 0, "Run pgbench");
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls;', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "SELECT XXX FROM pg_stat_monitor");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# DROP EXTENSION
|
||||||
|
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "DROP PGSM EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Stop the server
|
||||||
|
$node->stop;
|
||||||
|
|
||||||
|
# Done testing for this testcase file.
|
||||||
|
done_testing();
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use File::Basename;
|
||||||
|
use File::Compare;
|
||||||
|
use File::Copy;
|
||||||
|
use Text::Trim qw(trim);
|
||||||
|
use Test::More;
|
||||||
|
use lib 't';
|
||||||
|
use pgsm;
|
||||||
|
|
||||||
|
# Get filename and create out file name and dirs where requried
|
||||||
|
PGSM::setup_files_dir(basename($0));
|
||||||
|
|
||||||
|
if ($PGSM::PG_MAJOR_VERSION <= 16)
|
||||||
|
{
|
||||||
|
plan skip_all => "pg_stat_monitor test cases for versions 16 and below.";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create new PostgreSQL node and do initdb
|
||||||
|
my $node = PGSM->pgsm_init_pg();
|
||||||
|
my $pgdata = $node->data_dir;
|
||||||
|
|
||||||
|
# Update postgresql.conf to include/load pg_stat_monitor library
|
||||||
|
$node->append_conf('postgresql.conf', "shared_preload_libraries = 'pg_stat_monitor'");
|
||||||
|
|
||||||
|
# Set change postgresql.conf for this test case.
|
||||||
|
$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_bucket_time = 1");
|
||||||
|
$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_max_buckets = 3");
|
||||||
|
$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_normalized_query = yes");
|
||||||
|
$node->append_conf('postgresql.conf', "pg_stat_monitor.pgsm_track = 'all'");
|
||||||
|
|
||||||
|
# Start server
|
||||||
|
my $rt_value = $node->start;
|
||||||
|
ok($rt_value == 1, "Start Server");
|
||||||
|
|
||||||
|
# Create EXTENSION and change out file permissions
|
||||||
|
my ($cmdret, $stdout, $stderr) = $node->psql('postgres', 'CREATE EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "Create PGSM EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Run 'SELECT pg_stat_monitor settings' and dump output to out file
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Print PGSM EXTENSION Settings");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Run required commands/queries and dump output to out file.
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_stat_monitor_reset();', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "Reset PGSM EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_sleep(1);', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "1 - Run pg_sleep(1)");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_sleep(1);', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "2 - Run pg_sleep(1)");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', 'SELECT pg_sleep(1);', extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($cmdret == 0, "3 - Run pg_sleep(1)");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Check that we have more than one bucket
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT COUNT(bucket) != 0 AS PGSM FROM pg_stat_monitor WHERE query LIKE '%sleep%';", extra_params => ['-t', '-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
trim($stdout);
|
||||||
|
is($stdout,'t',"Check: we have more that one bucket");
|
||||||
|
|
||||||
|
# Check that stats timestamps are different for each query/bucket
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT COUNT(DISTINCT stats_since) = COUNT(stats_since) AS PGSM FROM pg_stat_monitor WHERE query LIKE '%sleep%';", extra_params => ['-t', '-Pformat=unaligned','-Ptuples_only=on']);
|
||||||
|
trim($stdout);
|
||||||
|
is($stdout,'t',"Check: for every bucket stats_since should be unique");
|
||||||
|
|
||||||
|
# Check that minmax_stats_since always match stats_since
|
||||||
|
($cmdret, $stdout, $stderr) = $node->psql('postgres', "SELECT COUNT(*) AS ST FROM pg_stat_monitor WHERE query LIKE '%sleep%' AND stats_since != minmax_stats_since;", extra_params => ['-a', '-Pformat=aligned','-Ptuples_only=off']);
|
||||||
|
ok($stdout == 0, "Compare: Calls count is 1");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# DROP EXTENSION
|
||||||
|
$stdout = $node->safe_psql('postgres', 'DROP EXTENSION pg_stat_monitor;', extra_params => ['-a']);
|
||||||
|
ok($cmdret == 0, "DROP PGSM EXTENSION");
|
||||||
|
PGSM::append_to_debug_file($stdout);
|
||||||
|
|
||||||
|
# Stop the server
|
||||||
|
$node->stop;
|
||||||
|
|
||||||
|
# Done testing for this testcase file.
|
||||||
|
done_testing();
|
|
@ -6,26 +6,27 @@ SELECT pg_stat_monitor_reset();
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
-------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
----------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
||||||
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
||||||
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
||||||
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
||||||
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
||||||
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
||||||
pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_track_application_names | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f
|
||||||
(17 rows)
|
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
||||||
|
(18 rows)
|
||||||
|
|
||||||
SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20;
|
SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20;
|
||||||
datname | query | calls
|
datname | query | calls
|
||||||
|
@ -35,26 +36,27 @@ SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER B
|
||||||
(2 rows)
|
(2 rows)
|
||||||
|
|
||||||
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
-------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
----------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
||||||
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
||||||
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
||||||
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
||||||
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
||||||
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
||||||
pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_track_application_names | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_track_planning | off | | user | bool | default | | | | off | off | f
|
||||||
(17 rows)
|
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
||||||
|
(18 rows)
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -6,25 +6,26 @@ SELECT pg_stat_monitor_reset();
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
-------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
----------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
||||||
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
||||||
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
||||||
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
||||||
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
||||||
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
||||||
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_track_application_names | on | | user | bool | default | | | | on | on | f
|
||||||
(16 rows)
|
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
||||||
|
(17 rows)
|
||||||
|
|
||||||
SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20;
|
SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER BY datname, query, calls DESC Limit 20;
|
||||||
datname | query | calls
|
datname | query | calls
|
||||||
|
@ -34,25 +35,26 @@ SELECT datname, substr(query,0,100) AS query, calls FROM pg_stat_monitor ORDER B
|
||||||
(2 rows)
|
(2 rows)
|
||||||
|
|
||||||
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name LIKE '%pg_stat_monitor%';
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
-------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
----------------------------------------------+---------+------+------------+---------+---------+---------+------------+----------------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
pg_stat_monitor.pgsm_bucket_time | 60 | s | postmaster | integer | default | 1 | 2147483647 | | 60 | 60 | f
|
||||||
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_overflow | on | | postmaster | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_enable_pgsm_query_id | on | | user | bool | default | | | | on | on | f
|
||||||
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_enable_query_plan | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_extract_comments | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_histogram_buckets | 20 | | postmaster | integer | default | 2 | 50 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
pg_stat_monitor.pgsm_histogram_max | 100000 | ms | postmaster | real | default | 10 | 5e+07 | | 100000 | 100000 | f
|
||||||
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_histogram_min | 1 | ms | postmaster | real | default | 0 | 5e+07 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
pg_stat_monitor.pgsm_max | 256 | MB | postmaster | integer | default | 10 | 10240 | | 256 | 256 | f
|
||||||
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
pg_stat_monitor.pgsm_max_buckets | 10 | | postmaster | integer | default | 1 | 20000 | | 10 | 10 | f
|
||||||
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
pg_stat_monitor.pgsm_normalized_query | off | | user | bool | default | | | | off | off | f
|
||||||
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
pg_stat_monitor.pgsm_overflow_target | 1 | | postmaster | integer | default | 0 | 1 | | 1 | 1 | f
|
||||||
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
pg_stat_monitor.pgsm_query_max_len | 2048 | | postmaster | integer | default | 1024 | 2147483647 | | 2048 | 2048 | f
|
||||||
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | default | 1 | 10000 | | 20 | 20 | f
|
||||||
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
pg_stat_monitor.pgsm_track | top | | user | enum | default | | | {none,top,all} | top | top | f
|
||||||
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
pg_stat_monitor.pgsm_track_application_names | on | | user | bool | default | | | | on | on | f
|
||||||
(16 rows)
|
pg_stat_monitor.pgsm_track_utility | on | | user | bool | default | | | | on | on | f
|
||||||
|
(17 rows)
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
pg_stat_monitor_reset
|
pg_stat_monitor_reset
|
||||||
|
|
|
@ -111,4 +111,41 @@ SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_m
|
||||||
example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100
|
example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100
|
||||||
(20 rows)
|
(20 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';
|
||||||
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
|
------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
|
pg_stat_monitor.pgsm_query_shared_buffer | 2048 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 2048 | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;
|
||||||
|
datname | query | calls
|
||||||
|
---------+---------------------------------------------------------------------------------------------------------------+-------
|
||||||
|
example | BEGIN | 10000
|
||||||
|
example | END | 10000
|
||||||
|
example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000
|
||||||
|
example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000
|
||||||
|
example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000
|
||||||
|
example | alter table pgbench_accounts add primary key (aid) | 1
|
||||||
|
example | alter table pgbench_branches add primary key (bid) | 1
|
||||||
|
example | alter table pgbench_tellers add primary key (tid) | 1
|
||||||
|
example | begin | 1
|
||||||
|
example | commit | 1
|
||||||
|
example | copy pgbench_accounts from stdin | 1
|
||||||
|
example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1
|
||||||
|
example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1
|
||||||
|
example | insert into pgbench_branches(bid,bbalance) values($1,$2) | 10
|
||||||
|
example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100
|
||||||
|
(20 rows)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -111,4 +111,41 @@ SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_m
|
||||||
example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100
|
example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100
|
||||||
(20 rows)
|
(20 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';
|
||||||
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
|
------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
|
pg_stat_monitor.pgsm_query_shared_buffer | 2048 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 2048 | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;
|
||||||
|
datname | query | calls
|
||||||
|
---------+---------------------------------------------------------------------------------------------------------------+-------
|
||||||
|
example | BEGIN | 10000
|
||||||
|
example | END | 10000
|
||||||
|
example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000
|
||||||
|
example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000
|
||||||
|
example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000
|
||||||
|
example | alter table pgbench_accounts add primary key (aid) | 1
|
||||||
|
example | alter table pgbench_branches add primary key (bid) | 1
|
||||||
|
example | alter table pgbench_tellers add primary key (tid) | 1
|
||||||
|
example | begin | 1
|
||||||
|
example | commit | 1
|
||||||
|
example | copy pgbench_accounts from stdin with (freeze on) | 1
|
||||||
|
example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1
|
||||||
|
example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1
|
||||||
|
example | insert into pgbench_branches(bid,bbalance) values($1,$2) | 10
|
||||||
|
example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100
|
||||||
|
(20 rows)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -111,4 +111,41 @@ SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_m
|
||||||
example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1
|
example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1
|
||||||
(20 rows)
|
(20 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';
|
||||||
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
|
------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
|
pg_stat_monitor.pgsm_query_shared_buffer | 2048 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 2048 | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;
|
||||||
|
datname | query | calls
|
||||||
|
---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------
|
||||||
|
example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000
|
||||||
|
example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000
|
||||||
|
example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000
|
||||||
|
example | alter table pgbench_accounts add primary key (aid) | 1
|
||||||
|
example | alter table pgbench_branches add primary key (bid) | 1
|
||||||
|
example | alter table pgbench_tellers add primary key (tid) | 1
|
||||||
|
example | begin | 10001
|
||||||
|
example | commit | 10001
|
||||||
|
example | copy pgbench_accounts from stdin with (freeze on) | 1
|
||||||
|
example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1
|
||||||
|
example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1
|
||||||
|
example | insert into pgbench_branches(bid,bbalance) values($1,$2) | 10
|
||||||
|
example | insert into pgbench_tellers(tid,bid,tbalance) values ($1,$2,$3) | 100
|
||||||
|
example | select count(*) from pgbench_branches | 1
|
||||||
|
example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1
|
||||||
|
(20 rows)
|
||||||
|
|
||||||
DROP EXTENSION pg_stat_monitor;
|
DROP EXTENSION pg_stat_monitor;
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';
|
||||||
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
|
------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
|
pg_stat_monitor.pgsm_query_shared_buffer | 1 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 1 | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
CREATE database example;
|
||||||
|
SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;
|
||||||
|
datname | query | calls
|
||||||
|
---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------
|
||||||
|
example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000
|
||||||
|
example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000
|
||||||
|
example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000
|
||||||
|
example | alter table pgbench_accounts add primary key (aid) | 1
|
||||||
|
example | alter table pgbench_branches add primary key (bid) | 1
|
||||||
|
example | alter table pgbench_tellers add primary key (tid) | 1
|
||||||
|
example | begin | 10001
|
||||||
|
example | commit | 10001
|
||||||
|
example | copy pgbench_accounts from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_branches from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_tellers from stdin with (freeze on) | 1
|
||||||
|
example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1
|
||||||
|
example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1
|
||||||
|
example | select count(*) from pgbench_branches | 1
|
||||||
|
example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1
|
||||||
|
(20 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';
|
||||||
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
|
------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
|
pg_stat_monitor.pgsm_query_shared_buffer | 2 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 2 | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;
|
||||||
|
datname | query | calls
|
||||||
|
---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------
|
||||||
|
example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000
|
||||||
|
example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000
|
||||||
|
example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000
|
||||||
|
example | alter table pgbench_accounts add primary key (aid) | 1
|
||||||
|
example | alter table pgbench_branches add primary key (bid) | 1
|
||||||
|
example | alter table pgbench_tellers add primary key (tid) | 1
|
||||||
|
example | begin | 10001
|
||||||
|
example | commit | 10001
|
||||||
|
example | copy pgbench_accounts from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_branches from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_tellers from stdin with (freeze on) | 1
|
||||||
|
example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1
|
||||||
|
example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1
|
||||||
|
example | select count(*) from pgbench_branches | 1
|
||||||
|
example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1
|
||||||
|
(20 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';
|
||||||
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
|
------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
|
pg_stat_monitor.pgsm_query_shared_buffer | 20 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 20 | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;
|
||||||
|
datname | query | calls
|
||||||
|
---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------
|
||||||
|
example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000
|
||||||
|
example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000
|
||||||
|
example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000
|
||||||
|
example | alter table pgbench_accounts add primary key (aid) | 1
|
||||||
|
example | alter table pgbench_branches add primary key (bid) | 1
|
||||||
|
example | alter table pgbench_tellers add primary key (tid) | 1
|
||||||
|
example | begin | 10001
|
||||||
|
example | commit | 10001
|
||||||
|
example | copy pgbench_accounts from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_branches from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_tellers from stdin with (freeze on) | 1
|
||||||
|
example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1
|
||||||
|
example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1
|
||||||
|
example | select count(*) from pgbench_branches | 1
|
||||||
|
example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1
|
||||||
|
(20 rows)
|
||||||
|
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_query_shared_buffer';
|
||||||
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
|
------------------------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
|
pg_stat_monitor.pgsm_query_shared_buffer | 2048 | MB | postmaster | integer | configuration file | 1 | 10000 | | 20 | 2048 | f
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT datname, substr(query,0,150) AS query, SUM(calls) AS calls FROM pg_stat_monitor GROUP BY datname, query ORDER BY datname, query, calls DESC Limit 20;
|
||||||
|
datname | query | calls
|
||||||
|
---------+-------------------------------------------------------------------------------------------------------------------------------------------------------+-------
|
||||||
|
example | INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES ($1, $2, $3, $4, CURRENT_TIMESTAMP) | 10000
|
||||||
|
example | SELECT abalance FROM pgbench_accounts WHERE aid = $1 | 10000
|
||||||
|
example | UPDATE pgbench_accounts SET abalance = abalance + $1 WHERE aid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_branches SET bbalance = bbalance + $1 WHERE bid = $2 | 10000
|
||||||
|
example | UPDATE pgbench_tellers SET tbalance = tbalance + $1 WHERE tid = $2 | 10000
|
||||||
|
example | alter table pgbench_accounts add primary key (aid) | 1
|
||||||
|
example | alter table pgbench_branches add primary key (bid) | 1
|
||||||
|
example | alter table pgbench_tellers add primary key (tid) | 1
|
||||||
|
example | begin | 10001
|
||||||
|
example | commit | 10001
|
||||||
|
example | copy pgbench_accounts from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_branches from stdin with (freeze on) | 1
|
||||||
|
example | copy pgbench_tellers from stdin with (freeze on) | 1
|
||||||
|
example | create table pgbench_accounts(aid int not null,bid int,abalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_branches(bid int not null,bbalance int,filler char(88)) with (fillfactor=100) | 1
|
||||||
|
example | create table pgbench_history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22)) | 1
|
||||||
|
example | create table pgbench_tellers(tid int not null,bid int,tbalance int,filler char(84)) with (fillfactor=100) | 1
|
||||||
|
example | drop table if exists pgbench_accounts, pgbench_branches, pgbench_history, pgbench_tellers | 1
|
||||||
|
example | select count(*) from pgbench_branches | 1
|
||||||
|
example | select o.n, p.partstrat, pg_catalog.count(i.inhparent) from pg_catalog.pg_class as c join pg_catalog.pg_namespace as n on (n.oid = c.relnamespace) cr | 1
|
||||||
|
(20 rows)
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -8,7 +8,7 @@ SELECT pg_stat_monitor_reset();
|
||||||
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_max';
|
SELECT name, setting, unit, context, vartype, source, min_val, max_val, enumvals, boot_val, reset_val, pending_restart FROM pg_settings WHERE name='pg_stat_monitor.pgsm_max';
|
||||||
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
name | setting | unit | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | pending_restart
|
||||||
--------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
--------------------------+---------+------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------
|
||||||
pg_stat_monitor.pgsm_max | 1000 | MB | postmaster | integer | configuration file | 10 | 10240 | | 256 | 1000 | f
|
pg_stat_monitor.pgsm_max | 2048 | MB | postmaster | integer | configuration file | 10 | 10240 | | 256 | 2048 | f
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT pg_stat_monitor_reset();
|
SELECT pg_stat_monitor_reset();
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
CREATE EXTENSION pg_stat_monitor;
|
||||||
|
SELECT pg_stat_monitor_reset();
|
||||||
|
pg_stat_monitor_reset
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT 1 AS num;
|
||||||
|
num
|
||||||
|
-----
|
||||||
|
1
|
||||||
|
(1 row)
|
||||||
|
|
||||||
|
SELECT query, comments FROM pg_stat_monitor ORDER BY query COLLATE "C";
|
||||||
|
query | comments
|
||||||
|
--------------------------------+----------
|
||||||
|
SELECT 1 AS num |
|
||||||
|
SELECT pg_stat_monitor_reset() |
|
||||||
|
(2 rows)
|
||||||
|
|
||||||
|
DROP EXTENSION pg_stat_monitor;
|
|
@ -0,0 +1,22 @@
|
||||||
|
AGG_KEY
|
||||||
|
Blocks
|
||||||
|
CallTime
|
||||||
|
Calls
|
||||||
|
Counters
|
||||||
|
ErrorInfo
|
||||||
|
HistogramTimingType
|
||||||
|
JitInfo
|
||||||
|
JumbleState
|
||||||
|
LocationLen
|
||||||
|
PGSMTrackLevel
|
||||||
|
PlanInfo
|
||||||
|
QueryInfo
|
||||||
|
SysInfo
|
||||||
|
WalUsage
|
||||||
|
Wal_Usage
|
||||||
|
pgsmEntry
|
||||||
|
pgsmHashKey
|
||||||
|
pgsmLocalState
|
||||||
|
pgsmSharedState
|
||||||
|
pgsmStoreKind
|
||||||
|
pgsmVersion
|
Loading…
Reference in New Issue