[stable-1] Various backports from community.postgres (#1789)

* postgresql modules: various backports from community.postgresql

* Add postgresql_set community/postgresql/pull/52 backport

* Fix

* Update plugins/modules/database/postgresql/postgresql_set.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update plugins/modules/database/postgresql/postgresql_set.py

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update changelogs/fragments/1-community-postgresql_backports.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Andrew Klychkov 2021-02-11 20:54:16 +03:00 committed by GitHub
commit 3a2e614071
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 296 additions and 32 deletions

View file

@ -532,3 +532,68 @@
- assert:
that:
- result is failed
#############################################################################
# Issue https://github.com/ansible-collections/community.postgresql/issues/45
- name: Create table containing a decimal value
become_user: '{{ pg_user }}'
become: true
postgresql_query:
login_user: '{{ pg_user }}'
db: postgres
query: CREATE TABLE blabla (id int, num decimal)
- name: Insert data
become_user: '{{ pg_user }}'
become: true
postgresql_query:
login_user: '{{ pg_user }}'
db: postgres
query: INSERT INTO blabla (id, num) VALUES (1, 1::decimal)
- name: Get data
become_user: '{{ pg_user }}'
become: true
postgresql_query:
login_user: '{{ pg_user }}'
db: postgres
query: SELECT * FROM blabla
register: result
- assert:
that:
- result.rowcount == 1
#############################################################################
# Issue https://github.com/ansible-collections/community.postgresql/issues/47
- name: Get datetime.timedelta value
become_user: '{{ pg_user }}'
become: true
postgresql_query:
login_user: '{{ pg_user }}'
db: postgres
query: "SELECT EXTRACT(epoch from make_interval(secs => 3))"
register: result
when: postgres_version_resp.stdout is version('10', '>=')
- assert:
that:
- result.rowcount == 1
- result.query_result[0]["date_part"] == 3
when: postgres_version_resp.stdout is version('10', '>=')
- name: Get interval value
become_user: '{{ pg_user }}'
become: true
postgresql_query:
login_user: '{{ pg_user }}'
db: postgres
query: "SELECT make_interval(secs => 3)"
register: result
when: postgres_version_resp.stdout is version('10', '>=')
- assert:
that:
- result.rowcount == 1
- result.query_result[0]["make_interval"] == "0:00:03"
when: postgres_version_resp.stdout is version('10', '>=')

View file

@ -6,3 +6,6 @@
# Initial CI tests of postgresql_initial module
- include_tasks: postgresql_set_initial.yml
when: postgres_version_resp.stdout is version('9.6', '>=')
- include_tasks: options_coverage.yml
when: postgres_version_resp.stdout is version('9.6', '>=')

View file

@ -0,0 +1,50 @@
# Test code for the postgresql_set module
# Copyright: (c) 2021, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
- vars:
task_parameters: &task_parameters
become_user: '{{ pg_user }}'
become: yes
pg_parameters: &pg_parameters
login_user: '{{ pg_user }}'
login_db: postgres
block:
- name: Define a test setting map
set_fact:
setting_map:
allow_system_table_mods: on
archive_command: /bin/true
archive_timeout: 10min
autovacuum_work_mem: '-1'
backend_flush_after: 0
autovacuum_vacuum_scale_factor: 0.5
client_encoding: UTF-8
bgwriter_delay: 400
maintenance_work_mem: 32mb
effective_cache_size: 1024kB
shared_buffers: 1GB
stats_temp_directory: pg_stat_tmp
wal_level: replica
log_statement: mod
track_functions: none
# Check mode:
- name: Set settings in check mode
<<: *task_parameters
postgresql_set:
<<: *pg_parameters
name: '{{ item.key }}'
value: '{{ item.value }}'
check_mode: yes
with_dict: '{{ setting_map }}'
# Actual mode:
- name: Set settings in actual mode
<<: *task_parameters
postgresql_set:
<<: *pg_parameters
name: '{{ item.key }}'
value: '{{ item.value }}'
with_dict: '{{ setting_map }}'

View file

@ -373,3 +373,70 @@
- assert:
that:
- result is not changed
- name: Pass non-existent parameter
<<: *task_parameters
postgresql_set:
<<: *pg_parameters
name: Timezone
value: utc
register: result
ignore_errors: yes
- assert:
that:
- result is failed
- result.msg is search('No such parameter')
#######################################################################
# https://github.com/ansible-collections/community.postgresql/issues/48
- name: Pass a parameter containing b in check_mode
<<: *task_parameters
postgresql_set:
<<: *pg_parameters
name: archive_command
value: '/usr/bin/touch %f'
register: result
check_mode: yes
- assert:
that:
- result is changed
- name: Pass a parameter containing b
<<: *task_parameters
postgresql_set:
<<: *pg_parameters
name: archive_command
value: '/usr/bin/touch %f'
register: result
- assert:
that:
- result is changed
- name: Pass another parameter containing B in check_mode
<<: *task_parameters
postgresql_set:
<<: *pg_parameters
name: track_activity_query_size
value: '4096B'
register: result
check_mode: yes
- assert:
that:
- result is changed
- name: Pass another parameter containing b in check_mode
<<: *task_parameters
postgresql_set:
<<: *pg_parameters
name: track_activity_query_size
value: '2048b'
register: result
check_mode: yes
- assert:
that:
- result is changed