pgslice 0.4.6 → 0.4.7
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/CHANGELOG.md +5 -0
- data/README.md +3 -3
- data/lib/pgslice/cli/add_partitions.rb +5 -2
- data/lib/pgslice/cli/swap.rb +1 -1
- data/lib/pgslice/cli/unswap.rb +1 -1
- data/lib/pgslice/helpers.rb +5 -1
- data/lib/pgslice/table.rb +10 -7
- data/lib/pgslice/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 73d406b68757fa95efcc58a98249f9a8394cab3408a9ae14ef642983720f44b3
         | 
| 4 | 
            +
              data.tar.gz: 7952c9aaa1734c76260b76a59822a4065e6184ac01bf3b1916bd217f7b368403
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 057aeaddcf952f2bb99f657f290e03f2ec3bac2deffce0d7701a7549418d7d8211b2454cbc71039226b369fc5b355d7ad426df0c4ce032d660e8ce09ebe15eab
         | 
| 7 | 
            +
              data.tar.gz: a36f9db976f72cc656e289ff5af6ebb89657eb739fb6ca1bc4ccba652fdfa8b93894bc2e3fde5a9fdcd63d53a24574347a280af60157d124445a565810b9839c
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -171,7 +171,7 @@ ALTER TABLE "public"."visits" RENAME TO "visits_retired"; | |
| 171 171 |  | 
| 172 172 | 
             
            ALTER TABLE "public"."visits_intermediate" RENAME TO "visits";
         | 
| 173 173 |  | 
| 174 | 
            -
            ALTER SEQUENCE "visits_id_seq" OWNED BY "public"."visits"."id";
         | 
| 174 | 
            +
            ALTER SEQUENCE "public"."visits_id_seq" OWNED BY "public"."visits"."id";
         | 
| 175 175 |  | 
| 176 176 | 
             
            COMMIT;
         | 
| 177 177 | 
             
            ```
         | 
| @@ -383,14 +383,14 @@ Everyone is encouraged to help improve this project. Here are a few ways you can | |
| 383 383 | 
             
            - Write, clarify, or fix documentation
         | 
| 384 384 | 
             
            - Suggest or add new features
         | 
| 385 385 |  | 
| 386 | 
            -
            To get started with development | 
| 386 | 
            +
            To get started with development:
         | 
| 387 387 |  | 
| 388 388 | 
             
            ```sh
         | 
| 389 389 | 
             
            git clone https://github.com/ankane/pgslice.git
         | 
| 390 390 | 
             
            cd pgslice
         | 
| 391 391 | 
             
            bundle install
         | 
| 392 392 | 
             
            createdb pgslice_test
         | 
| 393 | 
            -
            bundle exec rake
         | 
| 393 | 
            +
            bundle exec rake test
         | 
| 394 394 | 
             
            ```
         | 
| 395 395 |  | 
| 396 396 | 
             
            To test against different versions of Postgres with Docker, use:
         | 
| @@ -4,6 +4,7 @@ module PgSlice | |
| 4 4 | 
             
                option :intermediate, type: :boolean, default: false, desc: "Add to intermediate table"
         | 
| 5 5 | 
             
                option :past, type: :numeric, default: 0, desc: "Number of past partitions to add"
         | 
| 6 6 | 
             
                option :future, type: :numeric, default: 0, desc: "Number of future partitions to add"
         | 
| 7 | 
            +
                option :tablespace, type: :string, default: "", desc: "Tablespace to use"
         | 
| 7 8 | 
             
                def add_partitions(table)
         | 
| 8 9 | 
             
                  original_table = create_table(table)
         | 
| 9 10 | 
             
                  table = options[:intermediate] ? original_table.intermediate_table : original_table
         | 
| @@ -13,6 +14,7 @@ module PgSlice | |
| 13 14 |  | 
| 14 15 | 
             
                  future = options[:future]
         | 
| 15 16 | 
             
                  past = options[:past]
         | 
| 17 | 
            +
                  tablespace = options[:tablespace]
         | 
| 16 18 | 
             
                  range = (-1 * past)..future
         | 
| 17 19 |  | 
| 18 20 | 
             
                  period, field, cast, needs_comment, declarative, version = table.fetch_settings(original_table.trigger_name)
         | 
| @@ -50,6 +52,7 @@ module PgSlice | |
| 50 52 | 
             
                  end
         | 
| 51 53 |  | 
| 52 54 | 
             
                  primary_key = schema_table.primary_key
         | 
| 55 | 
            +
                  tablespace_str = tablespace.empty? ? "" : " TABLESPACE #{quote_ident(tablespace)}"
         | 
| 53 56 |  | 
| 54 57 | 
             
                  added_partitions = []
         | 
| 55 58 | 
             
                  range.each do |n|
         | 
| @@ -61,13 +64,13 @@ module PgSlice | |
| 61 64 |  | 
| 62 65 | 
             
                    if declarative
         | 
| 63 66 | 
             
                      queries << <<-SQL
         | 
| 64 | 
            -
            CREATE TABLE #{quote_table(partition)} PARTITION OF #{quote_table(table)} FOR VALUES FROM (#{sql_date(day, cast, false)}) TO (#{sql_date(advance_date(day, period, 1), cast, false)});
         | 
| 67 | 
            +
            CREATE TABLE #{quote_table(partition)} PARTITION OF #{quote_table(table)} FOR VALUES FROM (#{sql_date(day, cast, false)}) TO (#{sql_date(advance_date(day, period, 1), cast, false)})#{tablespace_str};
         | 
| 65 68 | 
             
                      SQL
         | 
| 66 69 | 
             
                    else
         | 
| 67 70 | 
             
                      queries << <<-SQL
         | 
| 68 71 | 
             
            CREATE TABLE #{quote_table(partition)}
         | 
| 69 72 | 
             
                (CHECK (#{quote_ident(field)} >= #{sql_date(day, cast)} AND #{quote_ident(field)} < #{sql_date(advance_date(day, period, 1), cast)}))
         | 
| 70 | 
            -
                INHERITS (#{quote_table(table)});
         | 
| 73 | 
            +
                INHERITS (#{quote_table(table)})#{tablespace_str};
         | 
| 71 74 | 
             
                      SQL
         | 
| 72 75 | 
             
                    end
         | 
| 73 76 |  | 
    
        data/lib/pgslice/cli/swap.rb
    CHANGED
    
    | @@ -17,7 +17,7 @@ module PgSlice | |
| 17 17 | 
             
                  ]
         | 
| 18 18 |  | 
| 19 19 | 
             
                  table.sequences.each do |sequence|
         | 
| 20 | 
            -
                    queries << "ALTER SEQUENCE #{quote_ident(sequence["sequence_name"])} OWNED BY #{quote_table(table)}.#{quote_ident(sequence["related_column"])};"
         | 
| 20 | 
            +
                    queries << "ALTER SEQUENCE #{quote_ident(sequence["sequence_schema"])}.#{quote_ident(sequence["sequence_name"])} OWNED BY #{quote_table(table)}.#{quote_ident(sequence["related_column"])};"
         | 
| 21 21 | 
             
                  end
         | 
| 22 22 |  | 
| 23 23 | 
             
                  queries.unshift("SET LOCAL lock_timeout = '#{options[:lock_timeout]}';") if server_version_num >= 90300
         | 
    
        data/lib/pgslice/cli/unswap.rb
    CHANGED
    
    | @@ -16,7 +16,7 @@ module PgSlice | |
| 16 16 | 
             
                  ]
         | 
| 17 17 |  | 
| 18 18 | 
             
                  table.sequences.each do |sequence|
         | 
| 19 | 
            -
                    queries << "ALTER SEQUENCE #{quote_ident(sequence["sequence_name"])} OWNED BY #{quote_table(table)}.#{quote_ident(sequence["related_column"])};"
         | 
| 19 | 
            +
                    queries << "ALTER SEQUENCE #{quote_ident(sequence["sequence_schema"])}.#{quote_ident(sequence["sequence_name"])} OWNED BY #{quote_table(table)}.#{quote_ident(sequence["related_column"])};"
         | 
| 20 20 | 
             
                  end
         | 
| 21 21 |  | 
| 22 22 | 
             
                  run_queries(queries)
         | 
    
        data/lib/pgslice/helpers.rb
    CHANGED
    
    | @@ -36,7 +36,11 @@ module PgSlice | |
| 36 36 | 
             
                    uri.query = URI.encode_www_form(params)
         | 
| 37 37 |  | 
| 38 38 | 
             
                    ENV["PGCONNECT_TIMEOUT"] ||= "1"
         | 
| 39 | 
            -
                    PG::Connection.new(uri.to_s)
         | 
| 39 | 
            +
                    conn = PG::Connection.new(uri.to_s)
         | 
| 40 | 
            +
                    conn.set_notice_processor do |message|
         | 
| 41 | 
            +
                      say message
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                    conn
         | 
| 40 44 | 
             
                  end
         | 
| 41 45 | 
             
                rescue PG::ConnectionBad => e
         | 
| 42 46 | 
             
                  abort e.message
         | 
    
        data/lib/pgslice/table.rb
    CHANGED
    
    | @@ -23,15 +23,17 @@ module PgSlice | |
| 23 23 | 
             
                def sequences
         | 
| 24 24 | 
             
                  query = <<-SQL
         | 
| 25 25 | 
             
                    SELECT
         | 
| 26 | 
            -
                      a.attname  | 
| 27 | 
            -
                       | 
| 26 | 
            +
                      a.attname AS related_column,
         | 
| 27 | 
            +
                      n.nspname AS sequence_schema,
         | 
| 28 | 
            +
                      s.relname AS sequence_name
         | 
| 28 29 | 
             
                    FROM pg_class s
         | 
| 29 | 
            -
                      JOIN pg_depend d ON d.objid = s.oid
         | 
| 30 | 
            -
                      JOIN pg_class t ON d.objid = s.oid AND d.refobjid = t.oid
         | 
| 31 | 
            -
                      JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum)
         | 
| 32 | 
            -
                      JOIN pg_namespace n ON n.oid = s.relnamespace
         | 
| 30 | 
            +
                      INNER JOIN pg_depend d ON d.objid = s.oid
         | 
| 31 | 
            +
                      INNER JOIN pg_class t ON d.objid = s.oid AND d.refobjid = t.oid
         | 
| 32 | 
            +
                      INNER JOIN pg_attribute a ON (d.refobjid, d.refobjsubid) = (a.attrelid, a.attnum)
         | 
| 33 | 
            +
                      INNER JOIN pg_namespace n ON n.oid = s.relnamespace
         | 
| 34 | 
            +
                      INNER JOIN pg_namespace nt ON nt.oid = t.relnamespace
         | 
| 33 35 | 
             
                    WHERE s.relkind = 'S'
         | 
| 34 | 
            -
                      AND  | 
| 36 | 
            +
                      AND nt.nspname = $1
         | 
| 35 37 | 
             
                      AND t.relname = $2
         | 
| 36 38 | 
             
                    ORDER BY s.relname ASC
         | 
| 37 39 | 
             
                  SQL
         | 
| @@ -109,6 +111,7 @@ module PgSlice | |
| 109 111 | 
             
                  (execute(query)[0]["min"] || 1).to_i
         | 
| 110 112 | 
             
                end
         | 
| 111 113 |  | 
| 114 | 
            +
                # ensure this returns partitions in the correct order
         | 
| 112 115 | 
             
                def partitions
         | 
| 113 116 | 
             
                  query = <<-SQL
         | 
| 114 117 | 
             
                    SELECT
         | 
    
        data/lib/pgslice/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: pgslice
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.4. | 
| 4 | 
            +
              version: 0.4.7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Andrew Kane
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-08-14 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: thor
         |