Bugfix for rule system
| От | jwieck@debis.com (Jan Wieck) |
|---|---|
| Тема | Bugfix for rule system |
| Дата | |
| Msg-id | m0zVfAo-000EBPC@orion.SAPserv.Hamburg.dsh.de обсуждение исходный текст |
| Ответы |
Re: [HACKERS] Bugfix for rule system
|
| Список | pgsql-hackers |
Hi,
while writing some documentation for the rule system I found
this little bug. Causes crashing backend.
Please apply.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#======================================== jwieck@debis.com (Jan Wieck) #
diff -cr rewrite.orig/rewriteHandler.c rewrite/rewriteHandler.c
*** rewrite.orig/rewriteHandler.c Tue Oct 20 18:59:24 1998
--- rewrite/rewriteHandler.c Tue Oct 20 18:55:19 1998
***************
*** 1789,1799 ****
return;
}
if (var->varlevelsup > 0 &&
nodeTag(exp) == T_Var) {
- exp = copyObject(exp);
((Var *)exp)->varlevelsup = var->varlevelsup;
! }
*nodePtr = exp;
*modified = TRUE;
}
--- 1789,1799 ----
return;
}
+ exp = copyObject(exp);
if (var->varlevelsup > 0 &&
nodeTag(exp) == T_Var) {
((Var *)exp)->varlevelsup = var->varlevelsup;
! }
*nodePtr = exp;
*modified = TRUE;
}
diff -cr rewrite.orig/rewriteManip.c rewrite/rewriteManip.c
*** rewrite.orig/rewriteManip.c Tue Oct 20 18:59:24 1998
--- rewrite/rewriteManip.c Tue Oct 20 18:58:18 1998
***************
*** 418,431 ****
{
if (info->event == CMD_UPDATE)
{
! ((Var *) node)->varno = info->current_varno;
! ((Var *) node)->varnoold = info->current_varno;
}
else
*nodePtr = make_null(((Var *) node)->vartype);
}
else
! *nodePtr = n;
}
break;
}
--- 418,432 ----
{
if (info->event == CMD_UPDATE)
{
! *nodePtr = n = copyObject(node);
! ((Var *) n)->varno = info->current_varno;
! ((Var *) n)->varnoold = info->current_varno;
}
else
*nodePtr = make_null(((Var *) node)->vartype);
}
else
! *nodePtr = copyObject(n);
}
break;
}
В списке pgsql-hackers по дате отправления: