# PostgreSQL config for the SQL regression suite on a 4 vCPU / 16 GB CI runner. # Sized down from the team's r8i.4xlarge development profile (16 vCPU / 128 GB). # # wal_level=logical and max_wal_senders are load-bearing: without them the # background worker crash-loops and the SQL tests hang after enrollment. # log_min_messages stays at its default ('warning'): 'log' outranks 'error' and # 'warning' in PostgreSQL's severity ordering, so setting it to 'log' would # hide the ERROR and WARNING output the tests check for. shared_preload_libraries = 'vector,svs' svs.launcher_database = 'contrib_regression' svs.worker_timeout_ms = 15000 svs.max_batch_size = 0 # These are declared admission-control ceilings, not physical memory # reservations, so generous headroom costs nothing on a small runner. Test # fixtures insert databases with search_work_mem/residency_memory up to a # few GB; undersizing these ceilings makes admission fail where the test # expects success. svs.max_build_memory = 4096 svs.max_residency_memory = 32768 svs.default_residency_memory = 1024 svs.max_search_work_mem = 131072 svs.default_search_work_mem = 4096 wal_level = logical synchronous_commit = on wal_buffers = 16MB checkpoint_timeout = 1h checkpoint_warning = 0 max_wal_size = 2GB min_wal_size = 256MB max_wal_senders = 10 max_replication_slots = 64 random_page_cost = 1.1 autovacuum = off datestyle = 'iso, mdy' timezone = 'UTC' lc_messages = 'C' lc_monetary = 'C' lc_numeric = 'C' lc_time = 'C' default_text_search_config = 'pg_catalog.english' listen_addresses = 'localhost' dynamic_shared_memory_type = posix shared_buffers = 512MB work_mem = 32MB effective_cache_size = 2GB maintenance_work_mem = 256MB # cpu_governance.sql grants search threads through the same pool PostgreSQL # uses for parallel query workers (BGWORKER_CLASS_PARALLEL) and asserts a # database can be granted 6; max_parallel_workers must be at least that high # or the grant ceiling clamps below what the test expects. Later files also # build indexes while cpu_governance's 8 search threads stay parked in the same # database, so the pool must cover those 8 plus a build's # max_parallel_maintenance_workers (2), or builds start fewer workers than # granted and print the shortfall WARNING. max_parallel_workers = 10 max_worker_processes = 32 max_parallel_maintenance_workers = 2 max_connections = 50 max_parallel_workers_per_gather = 2 log_destination = 'stderr' logging_collector = off