mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
PostgreSQL 10 new relkind for partitioned tables (#31336)
* PostgreSQL 10 new relkind for partitioned tables Starting with PostgreSQL 10, we can now have partitioned tables natively * Add comment * Remove extra space * Add test for partition table in postgreSQL10 * Select 'p' for "BASE TABLE" and add a test case to support PostgreSQL 10 partition tables * Address RuboCop offense * Addressed incorrect `postgresql_version` Fixes #33008. [Yannick Schutz & Yasuo Honda & Ryuta Kamizono]
This commit is contained in:
parent
b4d91bb41f
commit
36f28fd818
2 changed files with 24 additions and 2 deletions
|
@ -751,7 +751,7 @@ module ActiveRecord
|
|||
|
||||
def data_source_sql(name = nil, type: nil)
|
||||
scope = quoted_scope(name, type: type)
|
||||
scope[:type] ||= "'r','v','m','f'" # (r)elation/table, (v)iew, (m)aterialized view, (f)oreign table
|
||||
scope[:type] ||= "'r','v','m','p','f'" # (r)elation/table, (v)iew, (m)aterialized view, (p)artitioned table, (f)oreign table
|
||||
|
||||
sql = "SELECT c.relname FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace".dup
|
||||
sql << " WHERE n.nspname = #{scope[:schema]}"
|
||||
|
@ -765,7 +765,7 @@ module ActiveRecord
|
|||
type = \
|
||||
case type
|
||||
when "BASE TABLE"
|
||||
"'r'"
|
||||
"'r','p'"
|
||||
when "VIEW"
|
||||
"'v','m'"
|
||||
when "FOREIGN TABLE"
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "cases/helper"
|
||||
|
||||
class PostgreSQLPartitionsTest < ActiveRecord::PostgreSQLTestCase
|
||||
def setup
|
||||
@connection = ActiveRecord::Base.connection
|
||||
end
|
||||
|
||||
def teardown
|
||||
@connection.drop_table "partitioned_events", if_exists: true
|
||||
end
|
||||
|
||||
def test_partitions_table_exists
|
||||
skip unless ActiveRecord::Base.connection.postgresql_version >= 100000
|
||||
@connection.create_table :partitioned_events, force: true, id: false,
|
||||
options: "partition by range (issued_at)" do |t|
|
||||
t.timestamp :issued_at
|
||||
end
|
||||
assert @connection.table_exists?("partitioned_events")
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue