Is this a bug? - Mailing list pgsql-hackers

From Roberto Abalde
Subject Is this a bug?
Date
Msg-id 000901c0f058$76ab4ce0$e1023dc8@ultra
Whole thread Raw
Responses Re: Is this a bug?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Hi people,

I've found that some two functions in /src/backend/optimizer/plan/planner.c
have side effects.

First, I've added two pprints before and after line 89-90 like this.



pprint(parse->rtable);

/* primary planning entry point (may recurse for subqueries) */
result_plan = subquery_planner(parse, -1.0 /* default case */);

pprint(parse->rtable);



Then I ran the query "select * from F1 where fk6 > 50;" and get this on the
log (I put "<<<<<<" to highlite the differences)

DEBUG:  query: select * from F1 where fk6 > 50;
(  { RTE  :relname f1  :relid 782787  :subquery <>  :alias <>  :eref     { ATTR     :relname f1     :attrs ( "pk"
"fk1"  "fk2"   "fk3"   "fk4"   "fk5"   "fk6"   "valu     e" )     }
 
  :inh true <<<<<<  :inFromCl true  :checkForRead true  :checkForWrite false  :checkAsUser 0  }
)
(  { RTE  :relname f1  :relid 782787  :subquery <>  :alias <>  :eref     { ATTR     :relname f1     :attrs ( "pk"
"fk1"  "fk2"   "fk3"   "fk4"   "fk5"   "fk6"   "valu     e" )     }
 
  :inh false <<<<<<  :inFromCl true  :checkForRead true  :checkForWrite false  :checkAsUser 0  }
)

So, parse->rtable->inh changes. In the same way I've tested
"set_plan_references" (lines 97-98)


pprint(parse->jointree);

/* final cleanup of the plan */
set_plan_references(result_plan);

pprint(parse->jointree);



Again I ran the query "select * from F1 where fk6 > 50;" and get this on the
log (I put "<<<<<<" to highlite the differences)

DEBUG:  query: select * from F1 where fk6 > 50;
{ FROMEXPR  :fromlist (     { RANGETBLREF 1     }  )
  :quals (     { EXPR     :typeOid 16     :opType op     :oper        { OPER        :opno 521        :opid 0
<<<<<<<<<<<<<       :opresulttype 16        }        ...
 

{ FROMEXPR  :fromlist (     { RANGETBLREF 1     }  )
  :quals (     { EXPR     :typeOid 16     :opType op     :oper        { OPER        :opno 521        :opid 147
<<<<<<<<<<<<<       :opresulttype 16        }
 


Now, parse->jointre->opid changes. The odd thing is that
"set_plan_references" does not have "parse" as a parameter (!).

I need help to check this again to see if these are actual bugs. Can someone
help me with this? BTW, I'm using the 7.1.1 sources.

Saludos,
Roberto

---------------------
A "No" uttered from deepest conviction is better and greater than a "Yes"
merely uttered to please, or what is worse, to avoid trouble. -- Mahatma
Gandhi





pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: ERROR: Memory exhausted in AllocSetAlloc(909324558)
Next
From: Tom Ivar Helbekkmo
Date:
Subject: Re: Re: AW: Re: [SQL] behavior of ' = NULL' vs. MySQL vs. Stand ards