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.

Reply via email to