Sha256: 22e07c62f27196039e2d50079d2ac1c8245de2b71ab6bcbc498ff71c70abe5cc

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

module PgHero
  module Methods
    module Settings
      def settings
        names =
          if server_version_num >= 100000
            %i(
              max_connections shared_buffers effective_cache_size maintenance_work_mem
              checkpoint_completion_target wal_buffers default_statistics_target
              random_page_cost effective_io_concurrency work_mem huge_pages
              min_wal_size max_wal_size
            )
          elsif server_version_num >= 90500
            %i(
              max_connections shared_buffers effective_cache_size work_mem
              maintenance_work_mem min_wal_size max_wal_size checkpoint_completion_target
              wal_buffers default_statistics_target
            )
          else
            %i(
              max_connections shared_buffers effective_cache_size work_mem
              maintenance_work_mem checkpoint_segments checkpoint_completion_target
              wal_buffers default_statistics_target
            )
          end
        fetch_settings(names)
      end

      def autovacuum_settings
        fetch_settings %i(autovacuum autovacuum_max_workers autovacuum_vacuum_cost_limit autovacuum_vacuum_scale_factor autovacuum_analyze_scale_factor)
      end

      def vacuum_settings
        fetch_settings %i(vacuum_cost_limit)
      end

      private

      def fetch_settings(names)
        names.to_h { |name| [name, select_one("SHOW #{name}")] }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pghero-3.6.1 lib/pghero/methods/settings.rb
pghero-3.6.0 lib/pghero/methods/settings.rb
pghero-3.4.1 lib/pghero/methods/settings.rb