rails-pg-extras 1.6.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.circleci/config.yml +1 -0
 - data/README.md +4 -4
 - data/docker-compose.yml.sample +20 -2
 - data/lib/rails-pg-extras.rb +11 -2
 - data/lib/rails-pg-extras/version.rb +1 -1
 - data/spec/smoke_spec.rb +5 -2
 - data/spec/spec_helper.rb +13 -1
 - metadata +5 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c107fe728b02513bceaa617c45f5cf5bc4048fb0376ec46a13a70ba86cff4cf9
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 07fd71c6c2a1ff119b30845f32967d4d2c49d8ae0eccfbdaf52b228b5c907541
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d9de7a07381f8d203e60f98b750b0791e7be932dfaf8a621106bc69bbe44eb4ce5ca0893e4d8b22905913626f28bedc77da7fad282c4171ea51e3b424c359984
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 99872d4b0efcddf6d4a0af106068fc2a83544053c13596c2532320ac746a3ca6174d7ff1fd8e3a8c2533b49acaeaac896bbf6def5bc1f5dc083e6956b9cf52f9
         
     | 
    
        data/.circleci/config.yml
    CHANGED
    
    | 
         @@ -6,6 +6,7 @@ jobs: 
     | 
|
| 
       6 
6 
     | 
    
         
             
                    environment:
         
     | 
| 
       7 
7 
     | 
    
         
             
                      DATABASE_URL: postgresql://postgres:secret@localhost:5432/rails-pg-extras-test
         
     | 
| 
       8 
8 
     | 
    
         
             
                  - image: circleci/postgres:11.5
         
     | 
| 
      
 9 
     | 
    
         
            +
                    command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200
         
     | 
| 
       9 
10 
     | 
    
         
             
                    environment:
         
     | 
| 
       10 
11 
     | 
    
         
             
                      POSTGRES_USER: postgres
         
     | 
| 
       11 
12 
     | 
    
         
             
                      POSTGRES_DB: rails-pg-extras-test
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -526,20 +526,20 @@ This commands kills all the currently active connections to the database. It can 
     | 
|
| 
       526 
526 
     | 
    
         | 
| 
       527 
527 
     | 
    
         
             
            ### `buffercache_stats`
         
     | 
| 
       528 
528 
     | 
    
         | 
| 
       529 
     | 
    
         
            -
            This command shows the relations buffered in database share buffer, ordered by percentage taken. It also shows that how much of the whole relation is buffered.
         
     | 
| 
       530 
     | 
    
         
            -
             
     | 
| 
       531 
529 
     | 
    
         
             
            ```ruby
         
     | 
| 
       532 
530 
     | 
    
         
             
            RailsPGExtras.buffercache_stats(args: { limit: 10 })
         
     | 
| 
       533 
531 
     | 
    
         
             
            ```
         
     | 
| 
       534 
532 
     | 
    
         | 
| 
       535 
     | 
    
         
            -
             
     | 
| 
      
 533 
     | 
    
         
            +
            This command shows the relations buffered in database share buffer, ordered by percentage taken. It also shows that how much of the whole relation is buffered.
         
     | 
| 
       536 
534 
     | 
    
         | 
| 
       537 
     | 
    
         
            -
             
     | 
| 
      
 535 
     | 
    
         
            +
            ### `buffercache_usage`
         
     | 
| 
       538 
536 
     | 
    
         | 
| 
       539 
537 
     | 
    
         
             
            ```ruby
         
     | 
| 
       540 
538 
     | 
    
         
             
            RailsPGExtras.buffercache_usage(args: { limit: 20 })
         
     | 
| 
       541 
539 
     | 
    
         
             
            ```
         
     | 
| 
       542 
540 
     | 
    
         | 
| 
      
 541 
     | 
    
         
            +
            This command calculates how many blocks from which table are currently cached.
         
     | 
| 
      
 542 
     | 
    
         
            +
             
     | 
| 
       543 
543 
     | 
    
         
             
            ### `extensions`
         
     | 
| 
       544 
544 
     | 
    
         | 
| 
       545 
545 
     | 
    
         
             
            ```ruby
         
     | 
    
        data/docker-compose.yml.sample
    CHANGED
    
    | 
         @@ -1,12 +1,30 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            version: '3'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            services:
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 4 
     | 
    
         
            +
              postgres11:
         
     | 
| 
       5 
5 
     | 
    
         
             
                image: postgres:11.5-alpine
         
     | 
| 
      
 6 
     | 
    
         
            +
                command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200
         
     | 
| 
       6 
7 
     | 
    
         
             
                environment:
         
     | 
| 
       7 
8 
     | 
    
         
             
                  POSTGRES_USER: postgres
         
     | 
| 
       8 
9 
     | 
    
         
             
                  POSTGRES_DB: rails-pg-extras-test
         
     | 
| 
       9 
10 
     | 
    
         
             
                  POSTGRES_PASSWORD: secret
         
     | 
| 
       10 
11 
     | 
    
         
             
                ports:
         
     | 
| 
       11 
12 
     | 
    
         
             
                  - '5432:5432'
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
              postgres12:
         
     | 
| 
      
 14 
     | 
    
         
            +
                image: postgres:12.7-alpine
         
     | 
| 
      
 15 
     | 
    
         
            +
                command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200
         
     | 
| 
      
 16 
     | 
    
         
            +
                environment:
         
     | 
| 
      
 17 
     | 
    
         
            +
                  POSTGRES_USER: postgres
         
     | 
| 
      
 18 
     | 
    
         
            +
                  POSTGRES_DB: rails-pg-extras-test
         
     | 
| 
      
 19 
     | 
    
         
            +
                  POSTGRES_PASSWORD: secret
         
     | 
| 
      
 20 
     | 
    
         
            +
                ports:
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - '5433:5432'
         
     | 
| 
      
 22 
     | 
    
         
            +
              postgres13:
         
     | 
| 
      
 23 
     | 
    
         
            +
                image: postgres:13.3-alpine
         
     | 
| 
      
 24 
     | 
    
         
            +
                command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200
         
     | 
| 
      
 25 
     | 
    
         
            +
                environment:
         
     | 
| 
      
 26 
     | 
    
         
            +
                  POSTGRES_USER: postgres
         
     | 
| 
      
 27 
     | 
    
         
            +
                  POSTGRES_DB: rails-pg-extras-test
         
     | 
| 
      
 28 
     | 
    
         
            +
                  POSTGRES_PASSWORD: secret
         
     | 
| 
      
 29 
     | 
    
         
            +
                ports:
         
     | 
| 
      
 30 
     | 
    
         
            +
                  - '5434:5432'
         
     | 
    
        data/lib/rails-pg-extras.rb
    CHANGED
    
    | 
         @@ -6,6 +6,7 @@ require 'ruby-pg-extras' 
     | 
|
| 
       6 
6 
     | 
    
         
             
            module RailsPGExtras
         
     | 
| 
       7 
7 
     | 
    
         
             
              QUERIES = RubyPGExtras::QUERIES
         
     | 
| 
       8 
8 
     | 
    
         
             
              DEFAULT_ARGS = RubyPGExtras::DEFAULT_ARGS
         
     | 
| 
      
 9 
     | 
    
         
            +
              NEW_PG_STAT_STATEMENTS = RubyPGExtras::NEW_PG_STAT_STATEMENTS
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
              QUERIES.each do |query_name|
         
     | 
| 
       11 
12 
     | 
    
         
             
                define_singleton_method query_name do |options = {}|
         
     | 
| 
         @@ -18,6 +19,16 @@ module RailsPGExtras 
     | 
|
| 
       18 
19 
     | 
    
         
             
              end
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
              def self.run_query(query_name:, in_format:, args: {})
         
     | 
| 
      
 22 
     | 
    
         
            +
                if %i(calls outliers).include?(query_name)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  pg_stat_statements_ver = RailsPGExtras.connection.execute("select installed_version from pg_available_extensions where name='pg_stat_statements'")
         
     | 
| 
      
 24 
     | 
    
         
            +
                    .to_a[0].fetch("installed_version", nil)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  if pg_stat_statements_ver != nil
         
     | 
| 
      
 26 
     | 
    
         
            +
                    if Gem::Version.new(pg_stat_statements_ver) < Gem::Version.new(NEW_PG_STAT_STATEMENTS)
         
     | 
| 
      
 27 
     | 
    
         
            +
                      query_name = "#{query_name}_legacy".to_sym
         
     | 
| 
      
 28 
     | 
    
         
            +
                    end
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       21 
32 
     | 
    
         
             
                sql = if (custom_args = DEFAULT_ARGS[query_name].merge(args)) != {}
         
     | 
| 
       22 
33 
     | 
    
         
             
                  RubyPGExtras.sql_for(query_name: query_name) % custom_args
         
     | 
| 
       23 
34 
     | 
    
         
             
                else
         
     | 
| 
         @@ -36,8 +47,6 @@ module RailsPGExtras 
     | 
|
| 
       36 
47 
     | 
    
         
             
              def self.connection
         
     | 
| 
       37 
48 
     | 
    
         
             
                ActiveRecord::Base.connection
         
     | 
| 
       38 
49 
     | 
    
         
             
              end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
              private_class_method :connection
         
     | 
| 
       41 
50 
     | 
    
         
             
            end
         
     | 
| 
       42 
51 
     | 
    
         | 
| 
       43 
52 
     | 
    
         
             
            require 'rails-pg-extras/railtie' if defined?(Rails)
         
     | 
    
        data/spec/smoke_spec.rb
    CHANGED
    
    | 
         @@ -3,9 +3,12 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            describe RailsPGExtras do
         
     | 
| 
       6 
     | 
    
         
            -
               
     | 
| 
      
 6 
     | 
    
         
            +
              before(:all) do
         
     | 
| 
      
 7 
     | 
    
         
            +
                RailsPGExtras.connection.execute("CREATE EXTENSION IF NOT EXISTS pg_buffercache;")
         
     | 
| 
      
 8 
     | 
    
         
            +
                RubyPGExtras.connection.exec("CREATE EXTENSION IF NOT EXISTS pg_stat_statements;")
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
       7 
10 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
               
     | 
| 
      
 11 
     | 
    
         
            +
              RailsPGExtras::QUERIES.each do |query_name|
         
     | 
| 
       9 
12 
     | 
    
         
             
                it "#{query_name} query can be executed" do
         
     | 
| 
       10 
13 
     | 
    
         
             
                  expect do
         
     | 
| 
       11 
14 
     | 
    
         
             
                    RailsPGExtras.run_query(
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -5,7 +5,19 @@ require 'bundler/setup' 
     | 
|
| 
       5 
5 
     | 
    
         
             
            require 'active_record'
         
     | 
| 
       6 
6 
     | 
    
         
             
            require_relative '../lib/rails-pg-extras'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            ENV[" 
     | 
| 
      
 8 
     | 
    
         
            +
            pg_version = ENV["PG_VERSION"]
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            port = if pg_version == "11"
         
     | 
| 
      
 11 
     | 
    
         
            +
              "5432"
         
     | 
| 
      
 12 
     | 
    
         
            +
            elsif pg_version == "12"
         
     | 
| 
      
 13 
     | 
    
         
            +
              "5433"
         
     | 
| 
      
 14 
     | 
    
         
            +
            elsif pg_version == "13"
         
     | 
| 
      
 15 
     | 
    
         
            +
              "5434"
         
     | 
| 
      
 16 
     | 
    
         
            +
            else
         
     | 
| 
      
 17 
     | 
    
         
            +
              "5432"
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ENV["DATABASE_URL"] ||= "postgresql://postgres:secret@localhost:#{port}/rails-pg-extras-test"
         
     | 
| 
       9 
21 
     | 
    
         | 
| 
       10 
22 
     | 
    
         
             
            RSpec.configure do |config|
         
     | 
| 
       11 
23 
     | 
    
         
             
              config.before :suite do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rails-pg-extras
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - pawurb
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2021- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-07-08 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: ruby-pg-extras
         
     | 
| 
         @@ -16,14 +16,14 @@ dependencies: 
     | 
|
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
17 
     | 
    
         
             
                - - '='
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version:  
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 2.0.0
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - '='
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version:  
     | 
| 
      
 26 
     | 
    
         
            +
                    version: 2.0.0
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: activerecord
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       108 
108 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       109 
109 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       110 
110 
     | 
    
         
             
            requirements: []
         
     | 
| 
       111 
     | 
    
         
            -
            rubygems_version: 3.1. 
     | 
| 
      
 111 
     | 
    
         
            +
            rubygems_version: 3.1.6
         
     | 
| 
       112 
112 
     | 
    
         
             
            signing_key:
         
     | 
| 
       113 
113 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       114 
114 
     | 
    
         
             
            summary: Rails PostgreSQL performance database insights
         
     |