dbTalk Databases Forums  

Re: [BUGS] BUG #1002: Update using rule on view with inheritance alters 0 rows, 1 row expected.

mailing.database.pgsql-bugs mailing.database.pgsql-bugs


Discuss Re: [BUGS] BUG #1002: Update using rule on view with inheritance alters 0 rows, 1 row expected. in the mailing.database.pgsql-bugs forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Tom Lane
 
Posts: n/a

Default Re: [BUGS] BUG #1002: Update using rule on view with inheritance alters 0 rows, 1 row expected. - 12-08-2003 , 08:00 PM






"PostgreSQL Bugs List" <pgsql-bugs (AT) postgresql (DOT) org> writes:
Quote:
The following query updates 0 rows, when 1 row is
expected to be updated:
Nice catch. The attached patch seems to fix it.

regards, tom lane


*** src/backend/optimizer/util/clauses.c.orig Sat Nov 29 14:51:51 2003
--- src/backend/optimizer/util/clauses.c Mon Dec 8 20:41:07 2003
***************
*** 2960,2995 ****
RangeTblEntry *rte = (RangeTblEntry *) lfirst(rt);
RangeTblEntry *newrte;

switch (rte->rtekind)
{
case RTE_RELATION:
case RTE_SPECIAL:
! /* nothing to do, don't bother to make a copy */
break;
case RTE_SUBQUERY:
if (!(flags & QTW_IGNORE_RT_SUBQUERIES))
{
- FLATCOPY(newrte, rte, RangeTblEntry);
CHECKFLATCOPY(newrte->subquery, rte->subquery, Query);
MUTATE(newrte->subquery, newrte->subquery, Query *);
- rte = newrte;
}
break;
case RTE_JOIN:
if (!(flags & QTW_IGNORE_JOINALIASES))
{
- FLATCOPY(newrte, rte, RangeTblEntry);
MUTATE(newrte->joinaliasvars, rte->joinaliasvars, List *);
- rte = newrte;
}
break;
case RTE_FUNCTION:
- FLATCOPY(newrte, rte, RangeTblEntry);
MUTATE(newrte->funcexpr, rte->funcexpr, Node *);
- rte = newrte;
break;
}
! FastAppend(&newrt, rte);
}
query->rtable = FastListValue(&newrt);
return query;
--- 2960,2990 ----
RangeTblEntry *rte = (RangeTblEntry *) lfirst(rt);
RangeTblEntry *newrte;

+ FLATCOPY(newrte, rte, RangeTblEntry);
switch (rte->rtekind)
{
case RTE_RELATION:
case RTE_SPECIAL:
! /* we don't bother to copy eref, aliases, etc; OK? */
break;
case RTE_SUBQUERY:
if (!(flags & QTW_IGNORE_RT_SUBQUERIES))
{
CHECKFLATCOPY(newrte->subquery, rte->subquery, Query);
MUTATE(newrte->subquery, newrte->subquery, Query *);
}
break;
case RTE_JOIN:
if (!(flags & QTW_IGNORE_JOINALIASES))
{
MUTATE(newrte->joinaliasvars, rte->joinaliasvars, List *);
}
break;
case RTE_FUNCTION:
MUTATE(newrte->funcexpr, rte->funcexpr, Node *);
break;
}
! FastAppend(&newrt, newrte);
}
query->rtable = FastListValue(&newrt);
return query;

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.