1
0
Fork 0
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:
Yannick Schutz 2018-07-27 03:09:00 +02:00 committed by Ryuta Kamizono
parent b4d91bb41f
commit 36f28fd818
2 changed files with 24 additions and 2 deletions

View file

@ -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"

View file

@ -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