create table user_table(
idx text,
_section text[]
);
create table section_table(
_section text,
sub_section text[]
);
alter table user_table enable row level security;
create policy user_p on user_table for select
using (section @>
(select _section from user_table
intersect
(select _section::text[]
from section_table
where current_setting('my.sub_section',true)::text[]
<@ (select sub_section
from section_table)
)
)
);
insert into user_table values
(1,'{"section1"}'),(2,'{"section2"}'),
(2,'{"section2","section1"}');
insert into section_table values
('section1','{"s","b"}'),
('section2','{"c","d"}');
出力を期待します:
set my.sub_section ='{"c"}';
select * from user_table;
のみを表示する必要(2,'{"section2"}')
がありますが、すべてを表示します。
がsub_section
入力されるsection_table
と、対応するセクションを見つけて と交差しuser_table
、交差の値が null でなくなると、対応する の値を返す必要があります
user_table
。
なぜ正しい期待結果が表示されないのか混乱しています。