Module: PgParty::Hacks::PostgreSQLDatabaseTasks81

Defined in:
lib/pg_party/hacks/postgresql_database_tasks.rb

Instance Method Summary collapse

Instance Method Details

#run_cmd(cmd, *args) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/pg_party/hacks/postgresql_database_tasks.rb', line 32

def run_cmd(cmd, *args)
  if cmd != "pg_dump" || !PgParty.config.schema_exclude_partitions
    return super
  end

  partitions = ActiveRecord::Base.connection.select_values(<<-SQL, "SCHEMA")
    SELECT CONCAT(pg_namespace.nspname, '.', child.relname)
    FROM pg_inherits
      JOIN pg_class parent ON pg_inherits.inhparent = parent.oid
      JOIN pg_class child  ON pg_inherits.inhrelid  = child.oid
      JOIN pg_namespace    ON parent.relnamespace = pg_namespace.oid
    WHERE parent.relkind = 'p'
  SQL

  excluded_tables = partitions.flat_map { |table| ["-T", table] }

  super(cmd, *args, *excluded_tables)
end