resource "aws_db_parameter_group" "nuxeo-pg-default" {
    name        = "nuxeo-pg-default"
    family      = "postgres9.4"
    description = "Default PostgreSQL parameters for Nuxeo instances"

    parameter {
        name         = "archive_command"
        value        = "/etc/rds/dbbin/pgscripts/rds_wal_archive %p"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "archive_timeout"
        value        = "300"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "autovacuum_analyze_scale_factor"
        value        = "0.05"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "autovacuum_naptime"
        value        = "30"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "autovacuum_vacuum_scale_factor"
        value        = "0.1"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "checkpoint_completion_target"
        value        = "0.9"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "checkpoint_segments"
        value        = "32"
        apply_method = "immediate"
    }

    parameter {
        name         = "client_encoding"
        value        = "UTF8"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "config_file"
        value        = "/rdsdbdata/config/postgresql.conf"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "data_directory"
        value        = "/rdsdbdata/db"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "effective_cache_size"
        value        = "{DBInstanceClassMemory/16384}"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "full_page_writes"
        value        = "1"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "hba_file"
        value        = "/rdsdbdata/config/pg_hba.conf"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "ident_file"
        value        = "/rdsdbdata/config/pg_ident.conf"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_checkpoints"
        value        = "1"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_directory"
        value        = "/rdsdbdata/log/error"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_file_mode"
        value        = "0644"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_filename"
        value        = "postgresql.log.%Y-%m-%d-%H"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_hostname"
        value        = "1"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_line_prefix"
        value        = "%t:%r:%u@%d:[%p]:"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_lock_waits"
        value        = "1"
        apply_method = "immediate"
    }

    parameter {
        name         = "log_min_duration_statement"
        value        = "400"
        apply_method = "immediate"
    }

    parameter {
        name         = "log_rotation_age"
        value        = "60"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_statement"
        value        = "ddl"
        apply_method = "immediate"
    }

    parameter {
        name         = "log_temp_files"
        value        = "0"
        apply_method = "immediate"
    }

    parameter {
        name         = "log_timezone"
        value        = "UTC"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "log_truncate_on_rotation"
        value        = "0"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "logging_collector"
        value        = "1"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "maintenance_work_mem"
        value        = "524288"
        apply_method = "immediate"
    }

    parameter {
        name         = "max_connections"
        value        = "{DBInstanceClassMemory/31457280}"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "max_locks_per_transaction"
        value        = "64"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "max_prepared_transactions"
        value        = "50"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "max_replication_slots"
        value        = "5"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "max_stack_depth"
        value        = "6144"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "max_wal_senders"
        value        = "5"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "pg_stat_statements.max"
        value        = "10000"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "pg_stat_statements.track"
        value        = "TOP"
        apply_method = "immediate"
    }

    parameter {
        name         = "port"
        value        = "{EndPointPort}"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "postgis.gdal_enabled_drivers"
        value        = "ENABLE_ALL"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "rds.extensions"
        value        = "btree_gin,btree_gist,chkpass,citext,cube,dblink,dict_int,dict_xsyn,earthdistance,fuzzystrmatch,hstore,intagg,intarray,ip4r,isn,ltree,pgcrypto,pgrowlocks,pgstattuple,pg_buffercache,pg_prewarm,pg_stat_statements,pg_trgm,plcoffee,plls,plperl,plpgsql,pltcl,plv8,postgis,postgis_tiger_geocoder,postgis_topology,postgres_fdw,sslinfo,tablefunc,test_parser,tsearch2,unaccent,uuid-ossp"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "rds.force_ssl"
        value        = "0"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "rds.log_retention_period"
        value        = "4320"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "rds.logical_replication"
        value        = "0"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "rds.max_tcp_buffers"
        value        = "33554432"
        apply_method = "immediate"
    }

    parameter {
        name         = "rds.pg_stat_ramdisk_size"
        value        = "0"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "rds.rds_superuser_reserved_connections"
        value        = "0"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "rds.superuser_variables"
        value        = "session_replication_role"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "shared_buffers"
        value        = "{DBInstanceClassMemory/32768}"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "shared_preload_libraries"
        value        = "pg_stat_statements"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "ssl"
        value        = "1"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "ssl_ca_file"
        value        = "/rdsdbdata/rds-metadata/ca-cert.pem"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "ssl_cert_file"
        value        = "/rdsdbdata/rds-metadata/server-cert.pem"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "ssl_key_file"
        value        = "/rdsdbdata/rds-metadata/server-key.pem"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "ssl_renegotiation_limit"
        value        = "0"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "stats_temp_directory"
        value        = "/rdsdbdata/db/pg_stat_tmp"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "superuser_reserved_connections"
        value        = "3"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "synchronous_commit"
        value        = "on"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "timezone"
        value        = "UTC"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "unix_socket_directories"
        value        = "/tmp"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "unix_socket_group"
        value        = "rdsdb"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "unix_socket_permissions"
        value        = "0700"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "wal_buffers"
        value        = "2048"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "wal_keep_segments"
        value        = "32"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "wal_receiver_timeout"
        value        = "30000"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "wal_sender_timeout"
        value        = "30000"
        apply_method = "pending-reboot"
    }

    parameter {
        name         = "work_mem"
        value        = "12288"
        apply_method = "immediate"
    }
}