Обсуждение: BUG #6692: Potential Bug in equalfuncs.c
The following bug has been logged on the website:
Bug reference: 6692
Logged by: Ken Cheung
Email address: msrbugzilla@gmail.com
PostgreSQL version: 9.1.3
Operating system: Linux
Description:=20=20=20=20=20=20=20=20
I observed a code clone in the following files. The function
"COMPARE_LOCATION_FIELD" is called in some functions and missed in other
functions. I wonder if this is a bug. Hope it helps.
function : _equalA_ArrayExpr @ (file:
"postgresql-9.1.3/src/backend/nodes/equalfuncs.c", line: 2118)~2121
COMPARE_NODE_FIELD(elements);
COMPARE_LOCATION_FIELD(location);
return true;
function : _equalAlternativeSubPlan @ (file:
"postgresql-9.1.3/src/backend/nodes/equalfuncs.c", line: 415)~417
COMPARE_NODE_FIELD(subplans);
return true;
function : _equalColumnRef @ (file:
"postgresql-9.1.3/src/backend/nodes/equalfuncs.c", line: 2051)~2054
COMPARE_NODE_FIELD(fields);
COMPARE_LOCATION_FIELD(location);
return true;
function : _equalDoStmt @ (file:
"postgresql-9.1.3/src/backend/nodes/equalfuncs.c", line: 1306)~1308
COMPARE_NODE_FIELD(args);
return true;
msrbugzilla@gmail.com writes:
> I observed a code clone in the following files. The function
> "COMPARE_LOCATION_FIELD" is called in some functions and missed in other
> functions. I wonder if this is a bug. Hope it helps.
Well, COMPARE_LOCATION_FIELD() is a no-op anyway, but for
documentation's sake it should be called in the comparison function for
every node type that has a token location field (some do, some don't).
So far as I can see, it is called where it should be. Did you observe a
place where it is not, and if so where?
regards, tom lane