Re: [HACKERS] Improving RLS planning
От | Dean Rasheed |
---|---|
Тема | Re: [HACKERS] Improving RLS planning |
Дата | |
Msg-id | CAEZATCVwfeVdo5CFSnmoi_dt2fznDww+TJ=hE4sfU1=TMkD9dA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] Improving RLS planning (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
On 29 December 2016 at 15:55, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Dean Rasheed <dean.a.rasheed@gmail.com> writes: >> On 28 December 2016 at 19:12, Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> [ getting back to this patch finally... ] I made the suggested change >>> to that test case, and what I see is a whole lot of "NOTICE: snooped value >>> = whatever" outputs. >>> >>> I'd leave it as shown in the attached diff fragment, except that I'm >>> a bit worried about possible platform dependency of the output. The >>> hashing occurring in the subplans shouldn't affect output order, but >>> I'm not sure if we want a test output like this or not. Thoughts? > >> How about replacing "a = 3" with "a < 7 AND a != 6". That then >> exercises more of the possible types of behaviour for quals: The "a < >> 7" qual is pushed down and used as an index condition. The "a != 6" >> qual is pushed down and used as a filter, because it's cheap and >> leakproof. The leakproof() qual isn't pushed down on cost grounds. The >> snoop() qual isn't pushed down on security grounds. Both snoop() and >> leakproof() are used as filters, along with "a != 6", and a SB subplan >> qual. "a != 6" is executed first because it has a security_level of 0, >> and is cheaper than the subplan. snoop() is executed later, despite >> being cheaper than the other filter quals, because it has a higher >> security_level, and leakproof() is executed last because it has the >> same security level as snoop() but is more expensive. > > Will do, although I think that the next test case (the one with "a = 8") > already shows most of those behaviors. > Except that it doesn't have a cheap leakproof qual like "a != 6", not handled automatically by the index, that order_qual_clauses() can assign security_level = 0 to, and then move to the start of the list. I think it's probably worth having a clause like that in one of the tests, but it could perhaps be added to the "a = 8" test, if you wanted to drop the "a = 3" test. Regards, Dean
В списке pgsql-hackers по дате отправления: