WARNING: outfuncs/readfuncs failed to produce an equal rewritten parse tree

Started by Pavel Stehuleabout 3 years ago3 messageshackers
Jump to latest
#1Pavel Stehule
pavel.stehule@gmail.com

Hi

Last time I wrote new tests for session variables.

One is

create variable :"DBNAME".public.var as int;

On platform with enabled WRITE_READ_PARSE_PLAN_TREES I got warning

"WARNING: outfuncs/readfuncs failed to produce an equal rewritten parse
tree"

After some investigation, I found a problem in the RangeVar node.

The field "catalogname" is setted to NULL in _readRangeVar, but it is
compared in _equalRangeVar function.

I thought so it is problem in my patch, but it looks like generic issue:

create table postgres.public.foo(a int);
WARNING: outfuncs/readfuncs failed to produce an equal rewritten parse tree
CREATE TABLE

Is it a known issue?

Regards

Pavel

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Pavel Stehule (#1)
Re: WARNING: outfuncs/readfuncs failed to produce an equal rewritten parse tree

Pavel Stehule <pavel.stehule@gmail.com> writes:

After some investigation, I found a problem in the RangeVar node.

The field "catalogname" is setted to NULL in _readRangeVar, but it is
compared in _equalRangeVar function.

I thought so it is problem in my patch, but it looks like generic issue:

create table postgres.public.foo(a int);
WARNING: outfuncs/readfuncs failed to produce an equal rewritten parse tree
CREATE TABLE

Heh. Probably we should just drop that special treatment of the
catalogname field --- that was always premature optimization,
given that (I think) we don't ever store RangeVar in the catalogs.

The alternative would be to also lobotomize comparisons of RangeVars
by marking the field equal_ignore, but what's the point?

regards, tom lane

#3Pavel Stehule
pavel.stehule@gmail.com
In reply to: Tom Lane (#2)
Re: WARNING: outfuncs/readfuncs failed to produce an equal rewritten parse tree

po 23. 1. 2023 v 17:31 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:

Pavel Stehule <pavel.stehule@gmail.com> writes:

After some investigation, I found a problem in the RangeVar node.

The field "catalogname" is setted to NULL in _readRangeVar, but it is
compared in _equalRangeVar function.

I thought so it is problem in my patch, but it looks like generic issue:

create table postgres.public.foo(a int);
WARNING: outfuncs/readfuncs failed to produce an equal rewritten parse

tree

CREATE TABLE

Heh. Probably we should just drop that special treatment of the
catalogname field --- that was always premature optimization,
given that (I think) we don't ever store RangeVar in the catalogs.

+1

Regards

Pavel

Show quoted text

The alternative would be to also lobotomize comparisons of RangeVars
by marking the field equal_ignore, but what's the point?

regards, tom lane