Обсуждение: ERROR: permission info at index 1 ....

Поиск
Список
Период
Сортировка

ERROR: permission info at index 1 ....

От
tender wang
Дата:
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
Дата:
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
Дата:
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/