1 # Define for reassigning the ownership of objects within a database. See README.md for more details.
2 # This enables us to force the a particular ownership for objects within a database
3 define postgresql::server::reassign_owned_by (
7 String $psql_user = $postgresql::server::user,
8 Integer $port = $postgresql::server::port,
9 Hash $connect_settings = $postgresql::server::default_connect_settings,
12 $sql_command = "REASSIGN OWNED BY \"${old_role}\" TO \"${new_role}\""
14 $group = $postgresql::server::group
15 $psql_path = $postgresql::server::psql_path
18 # Port, order of precedence: $port parameter, $connect_settings[PGPORT], $postgresql::server::port
21 $port_override = $port
22 } elsif $connect_settings != undef and has_key( $connect_settings, 'PGPORT') {
23 $port_override = undef
25 $port_override = $postgresql::server::port
28 $onlyif = "SELECT tablename FROM pg_catalog.pg_tables WHERE
29 schemaname NOT IN ('pg_catalog', 'information_schema') AND
30 tableowner = '${old_role}'
31 UNION ALL SELECT proname FROM pg_catalog.pg_proc WHERE
32 pg_get_userbyid(proowner) = '${old_role}'
33 UNION ALL SELECT viewname FROM pg_catalog.pg_views WHERE
34 pg_views.schemaname NOT IN ('pg_catalog', 'information_schema') AND
35 viewowner = '${old_role}'
36 UNION ALL SELECT relname FROM pg_catalog.pg_class WHERE
37 relkind='S' AND pg_get_userbyid(relowner) = '${old_role}'"
39 postgresql_psql { "reassign_owned_by:${db}:${sql_command}":
40 command => $sql_command,
42 port => $port_override,
43 connect_settings => $connect_settings,
44 psql_user => $psql_user,
46 psql_path => $psql_path,
48 require => Class['postgresql::server']
51 if($old_role != undef and defined(Postgresql::Server::Role[$old_role])) {
52 Postgresql::Server::Role[$old_role]->Postgresql_psql["reassign_owned_by:${db}:${sql_command}"]
54 if($new_role != undef and defined(Postgresql::Server::Role[$new_role])) {
55 Postgresql::Server::Role[$new_role]->Postgresql_psql["reassign_owned_by:${db}:${sql_command}"]
58 if($db != undef and defined(Postgresql::Server::Database[$db])) {
59 Postgresql::Server::Database[$db]->Postgresql_psql["reassign_owned_by:${db}:${sql_command}"]