#
# Anthony Vitale June 13, 2025 Created Cluster Parameter Group aur-pg-v17-cluster-group-v001
#
#
# Anthony Vitale Sept 15, 2025 Alter Parm Group aur-pg-v17-cluster-group-v001 search_path
#
#
# Anthony Vitale Oct 8 2025
#  Set Parameters apg_enable_remove_redundant_inner_joins and apg_enable_correlated_scalar_transform to false
#
#
# Anthony Vitale Nov 11 2025
#  Set Parameters password_encryption in Parm Group aur-pg-v17-cluster-group-v001 to scram-sha-256
#

resource "aws_rds_cluster_parameter_group" "aur-pg-v17-cluster-group-v001" {
  description = "aur-pg-v17-cluster-group-v001"
  family      = "aurora-postgresql17"
  name        = "aur-pg-v17-cluster-group-v001"
  name_prefix = null
  tags        = {}
  tags_all    = {}
  parameter {
    apply_method = "immediate"
    name         = "ansi_constraint_trigger_ordering"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "ansi_force_foreign_key_checks"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "ansi_qualified_update_set_target"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_adaptive_join_cost_threshold"
    value        = "10"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_adaptive_join_crossover_multiplier"
    value        = "100"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_ccm_enabled"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_batch_mode_function_execution"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_correlated_any_transform"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_correlated_scalar_transform"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_function_migration"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_not_in_transform"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_parameterized_adaptive_join"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_remove_redundant_inner_joins"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_enable_subquery_cache"
    value        = "1"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "apg_plan_mgmt.max_plans"
    value        = "50000"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "apg_plan_mgmt.plan_retention_period"
    value        = "7"
  }
  parameter {
    apply_method = "immediate"
    name         = "apg_plan_mgmt.unapproved_plan_execution_threshold"
    value        = "100"
  }

  parameter {
    apply_method = "immediate"
    name         = "application_name"
    value        = "DX4"
  }
  parameter {
    apply_method = "immediate"
    name         = "array_nulls"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_compute_plan_id"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_stat_plans.minutes_until_recapture"
    value        = "7200"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_stat_plans.with_analyze"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_stat_plans.with_buffers"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_stat_plans.with_costs"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_stat_plans.with_timing"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_stat_plans.with_triggers"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "aurora_stat_plans.with_wal"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "authentication_timeout"
    value        = "60"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.hashes"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_analyze"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_buffers"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_format"
    value        = "json"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_min_duration"
    value        = "1000"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_nested_statements"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_parameter_max_length"
    value        = "-1"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_settings"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_timing"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_triggers"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_verbose"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "auto_explain.sample_rate"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_analyze_scale_factor"
    value        = "0.1"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_analyze_threshold"
    value        = "50"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum_freeze_max_age"
    value        = "200000000"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum_multixact_freeze_max_age"
    value        = "400000000"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_naptime"
    value        = "60"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_vacuum_cost_delay"
    value        = "10"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_vacuum_insert_scale_factor"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_vacuum_insert_threshold"
    value        = "50"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_vacuum_scale_factor"
    value        = "0.01"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_vacuum_threshold"
    value        = "50"
  }
  parameter {
    apply_method = "immediate"
    name         = "autovacuum_work_mem"
    value        = "512000"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "babelfishpg_tsql.migration_mode"
    value        = "single-db"
  }
  parameter {
    apply_method = "immediate"
    name         = "backend_flush_after"
    value        = "10"
  }
  parameter {
    apply_method = "immediate"
    name         = "backslash_quote"
    value        = "safe_encoding"
  }
  parameter {
    apply_method = "immediate"
    name         = "check_function_bodies"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "client_connection_check_interval"
    value        = "600000"
  }
  parameter {
    apply_method = "immediate"
    name         = "client_min_messages"
    value        = "notice"
  }
  parameter {
    apply_method = "immediate"
    name         = "constraint_exclusion"
    value        = "on"
  }
  parameter {
    apply_method = "immediate"
    name         = "createrole_self_grant"
    value        = "inherit"
  }
  parameter {
    apply_method = "immediate"
    name         = "cron.log_min_messages"
    value        = "error"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "cron.log_statement"
    value        = "on"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "cron.max_running_jobs"
    value        = "50"
  }
  parameter {
    apply_method = "immediate"
    name         = "deadlock_timeout"
    value        = "5000"
  }
  parameter {
    apply_method = "immediate"
    name         = "debug_pretty_print"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "debug_print_parse"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "debug_print_plan"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "debug_print_rewritten"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "default_statistics_target"
    value        = "256"
  }
  parameter {
    apply_method = "immediate"
    name         = "default_toast_compression"
    value        = "lz4"
  }
  parameter {
    apply_method = "immediate"
    name         = "default_transaction_deferrable"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_async_append"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_bitmapscan"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_gathermerge"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_group_by_reordering"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_hashagg"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_hashjoin"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_incremental_sort"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_indexonlyscan"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_indexscan"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_material"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_memoize"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_mergejoin"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_nestloop"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_parallel_append"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_parallel_hash"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_partition_pruning"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_partitionwise_aggregate"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_partitionwise_join"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_seqscan"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_sort"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "enable_tidscan"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "escape_string_warning"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "event_triggers"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "from_collapse_limit"
    value        = "20"
  }
  parameter {
    apply_method = "immediate"
    name         = "hash_mem_multiplier"
    value        = "2"
  }
  parameter {
    apply_method = "immediate"
    name         = "idle_in_transaction_session_timeout"
    value        = "60000"
  }
  parameter {
    apply_method = "immediate"
    name         = "intervalstyle"
    value        = "sql_standard"
  }
  parameter {
    apply_method = "immediate"
    name         = "join_collapse_limit"
    value        = "20"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_autovacuum_min_duration"
    value        = "150"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_connections"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_disconnections"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_duration"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_error_verbosity"
    value        = "default"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_executor_stats"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_hostname"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_lock_waits"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_min_duration_statement"
    value        = "1000"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_min_error_statement"
    value        = "error"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_min_messages"
    value        = "error"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_parameter_max_length"
    value        = "-1"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_parameter_max_length_on_error"
    value        = "-1"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_parser_stats"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_planner_stats"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_replication_commands"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_rotation_size"
    value        = "50000"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_statement"
    value        = "ddl"
  }
  parameter {
    apply_method = "immediate"
    name         = "log_statement_stats"
    value        = "0"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "max_locks_per_transaction"
    value        = "2000"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "max_logical_replication_workers"
    value        = "30"
  }
  parameter {
    apply_method = "immediate"
    name         = "max_parallel_apply_workers_per_subscription"
    value        = "6"
  }
  parameter {
    apply_method = "immediate"
    name         = "max_parallel_maintenance_workers"
    value        = "10"
  }
  parameter {
    apply_method = "immediate"
    name         = "max_parallel_workers"
    value        = "200"
  }
  parameter {
    apply_method = "immediate"
    name         = "max_parallel_workers_per_gather"
    value        = "2"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "max_replication_slots"
    value        = "300"
  }
  parameter {
    apply_method = "immediate"
    name         = "max_sync_workers_per_subscription"
    value        = "6"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "max_wal_senders"
    value        = "300"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "max_worker_processes"
    value        = "200"
  }
  parameter {
    apply_method = "immediate"
    name         = "parallel_leader_participation"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "password_encryption"
    value        = "scram-sha-256"
  }
  parameter {
    apply_method = "immediate"
    name         = "pg_hint_plan.debug_print"
    value        = "on"
  }
  parameter {
    apply_method = "immediate"
    name         = "pg_hint_plan.enable_hint"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "pg_hint_plan.enable_hint_table"
    value        = "0"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "pg_prewarm.autoprewarm"
    value        = "1"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "pg_stat_statements.max"
    value        = "100000"
  }
  parameter {
    apply_method = "immediate"
    name         = "pg_stat_statements.save"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "pg_stat_statements.track"
    value        = "ALL"
  }
  parameter {
    apply_method = "immediate"
    name         = "pg_stat_statements.track_planning"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "pg_stat_statements.track_utility"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "pgaudit.log"
    value        = "ddl,role"
  }
  parameter {
    apply_method = "immediate"
    name         = "pgaudit.log_catalog"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "pgaudit.log_level"
    value        = "notice"
  }
  parameter {
    apply_method = "immediate"
    name         = "pgaudit.log_parameter"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "pgaudit.log_relation"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "pgaudit.log_statement_once"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "pgaudit.role"
    value        = "rds_pgaudit"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "pglogical.batch_inserts"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "pglogical.conflict_log_level"
    value        = "error"
  }
  parameter {
    apply_method = "immediate"
    name         = "pglogical.conflict_resolution"
    value        = "last_update_wins"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "pglogical.synchronous_commit"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "plan_cache_mode"
    value        = "auto"
  }
  parameter {
    apply_method = "immediate"
    name         = "quote_all_identifiers"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "random_page_cost"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "rds.enable_memory_management"
    value        = "1"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "rds.enable_plan_management"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "rds.force_admin_logging_level"
    value        = "notice"
  }
  parameter {
    apply_method = "immediate"
    name         = "rds.force_autovacuum_logging_level"
    value        = "notice"
  }
  parameter {
    apply_method = "immediate"
    name         = "rds.log_retention_period"
    value        = "10080"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "rds.logical_replication"
    value        = "1"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "rds.logically_replicate_unlogged_tables"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "rds.memory_allocation_guard"
    value        = "1"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "rds.restrict_password_commands"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "remove_temp_files_after_crash"
    value        = "1"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "reserved_connections"
    value        = "3"
  }
  parameter {
    apply_method = "immediate"
    name         = "row_security"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "search_path"
    value        = "\"$user\", dx4, dsam000, smetools, tempdb, hint_plan, dbextensions"

  }
  parameter {
    apply_method = "immediate"
    name         = "session_replication_role"
    value        = "origin"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "shared_preload_libraries"
    value        = "auto_explain,orafce,pgaudit,pg_ad_mapping,pg_bigm,pg_similarity,pg_stat_statements,pg_tle,pg_hint_plan,pg_prewarm,plprofiler,pglogical,pg_cron"
  }
  parameter {
    apply_method = "immediate"
    name         = "standard_conforming_strings"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "statement_timeout"
    value        = "600000"
  }
  parameter {
    apply_method = "immediate"
    name         = "stats_fetch_consistency"
    value        = "cache"
  }
  parameter {
    apply_method = "immediate"
    name         = "synchronize_seqscans"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_count"
    value        = "60"
  }
  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_idle"
    value        = "60"
  }
  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_interval"
    value        = "60"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "trace_connection_negotiation"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "track_activities"
    value        = "1"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "track_activity_query_size"
    value        = "1048576"
  }
  parameter {
    apply_method = "pending-reboot"
    name         = "track_commit_timestamp"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "transform_null_equals"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "update_process_title"
    value        = "1"
  }
  parameter {
    apply_method = "immediate"
    name         = "wal_receiver_timeout"
    value        = "0"
  }
  parameter {
    apply_method = "immediate"
    name         = "wal_sender_timeout"
    value        = "3600000"
  }
  parameter {
    apply_method = "immediate"
    name         = "work_mem"
    value        = "10240"
  }
    parameter {
    apply_method = "pending-reboot"
    name         = "aurora.enhanced_logical_replication"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "aurora.logical_replication_backup"
    value        = "0"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "aurora.logical_replication_globaldb"
    value        = "0"
  }
}



