On Tue, Sep 27, 2022 at 12:46 PM 'Maria Fradkin' via sequel-talk < sequel-talk@googlegroups.com> wrote:
> Hello, > > I have recently came across a problem with foreign_key_list not working > correctly with partitioned tables on Postgres. > My table is partitioned by hash on some_id column, I have few partitions > attached > some_table_p_hash_p1 > some_table_p_hash_p2 > ... > some_table_p_hash_p16 > > the table has few foreign keys , e.g. fk_tab1, fk_tab2, ... > When i try SomeTable.db.foreign_key_list(SomeTable.table_name) on a main > table I am getting an empty array [] > when I use an actual partition everything is working as expected: > SomeTable.db.foreign_key_list(:some_table_p_hash_p1) > [{:name=>:some_table_tab1_id_fkey, :columns=>[:tab1_id], :key=>[:id], > :on_update=>:no_action, :on_delete=>:cascade, :deferrable=>false, > :table=>:tab1, :schema=>:public}, > {:name=>:some_table_tab2_id_fkey, :columns=>[:tab2_id, :org_id], > :key=>[:id], :on_update=>:no_action, :on_delete=>:cascade, > :deferrable=>false, :table=>:tab2, :schema=>:public},..] > > Can you please advise how to fix this issue with an actual model table? > Thanks for reporting this issue. Can you let me know if the following patch fixes it: diff --git a/lib/sequel/adapters/shared/postgres.rb b/lib/sequel/adapters/shared/postgres.rb index c2f354f16..148a466ff 100644 --- a/lib/sequel/adapters/shared/postgres.rb +++ b/lib/sequel/adapters/shared/postgres.rb @@ -586,7 +586,7 @@ module Sequel join(Sequel[:pg_namespace].as(:nsp), :oid=>Sequel[:cl2][:relnamespace]). order{[co[:conname], cpos]}. where{{ - cl[:relkind]=>'r', + cl[:relkind]=>%w'r p', co[:contype]=>'f', cl[:oid]=>oid, cpos=>rpos Thanks, Jeremy -- You received this message because you are subscribed to the Google Groups "sequel-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to sequel-talk+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sequel-talk/CADGZSSf_uO2zQnRaMx%3DsnxbPo-pw08eGd9E3Xk%3D_UKv9N4ciUw%40mail.gmail.com.