Bugfix for rule system - Mailing list pgsql-hackers
From | jwieck@debis.com (Jan Wieck) |
---|---|
Subject | Bugfix for rule system |
Date | |
Msg-id | m0zVfAo-000EBPC@orion.SAPserv.Hamburg.dsh.de Whole thread Raw |
Responses |
Re: [HACKERS] Bugfix for rule system
|
List | 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 by date: