Thread
Commits
-
Fix buggy recursion in flatten_rtes_walker().
- c7468c73f7b6 16.0 landed
-
ERROR: permission info at index 1 ....
Tender Wang <tndrwang@gmail.com> — 2023-02-13T14:32:32Z
Hi hackers, After a61b1f74823c commit, below query reports error: create table perm_test1(a int); create table perm_test2(b int); select subq.c0 from (select (select a from perm_test1 order by a limit 1) as c0, b as c1 from perm_test2 where false order by c0, c1) as subq where false; ERROR: permission info at index 1 (with relid=16457) does not match provided RTE (with relid=16460) Below codes can fix this: --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -512,11 +512,16 @@ flatten_rtes_walker(Node *node, flatten_rtes_walker_context *cxt) * Recurse into subselects. Must update cxt->query to this query so * that the rtable and rteperminfos correspond with each other. */ + Query *current_query = cxt->query; + bool result; + cxt->query = (Query *) node; - return query_tree_walker((Query *) node, + result = query_tree_walker((Query *) node, flatten_rtes_walker, (void *) cxt, QTW_EXAMINE_RTES_BEFORE); + cxt->query = current_query; + return result; } regards, tender wang -
Re: ERROR: permission info at index 1 ....
Tom Lane <tgl@sss.pgh.pa.us> — 2023-02-13T17:21:57Z
tender wang <tndrwang@gmail.com> writes: > After a61b1f74823c commit, below query reports error: > create table perm_test1(a int); > create table perm_test2(b int); > select subq.c0 > from (select (select a from perm_test1 order by a limit 1) as c0, b as c1 > from perm_test2 where false order by c0, c1) as subq where false; > ERROR: permission info at index 1 (with relid=16457) does not match > provided RTE (with relid=16460) Yeah, this was also reported by Justin Pryzby [1]. > Below codes can fix this: Right you are. Pushed, thanks! regards, tom lane [1] https://www.postgresql.org/message-id/20230212233711.GA1316%40telsasoft.com
-
Re: ERROR: permission info at index 1 ....
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2023-02-13T18:33:07Z
On 2023-Feb-13, Tom Lane wrote: > tender wang <tndrwang@gmail.com> writes: > > After a61b1f74823c commit, below query reports error: > > create table perm_test1(a int); > > create table perm_test2(b int); > > select subq.c0 > > from (select (select a from perm_test1 order by a limit 1) as c0, b as c1 > > from perm_test2 where false order by c0, c1) as subq where false; > > ERROR: permission info at index 1 (with relid=16457) does not match > > provided RTE (with relid=16460) > > Yeah, this was also reported by Justin Pryzby [1]. > > > Below codes can fix this: > > Right you are. Pushed, thanks! Thank you both! -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/