Thread: cmin increments by 2 except in 7.4?
I've noticed that in PostgreSQL 7.4, successive commands in a transaction get cmin values that increment by 1, but in other versions cmin increments by 2. Example: CREATE TABLE foo (x integer); BEGIN; INSERT INTO foo VALUES (1); INSERT INTO foo VALUES (2); INSERT INTO foo VALUES (3); COMMIT; Results in 8.0.1 (same in 8.1devel, 7.3.9, 7.2.7): SELECT xmin, cmin, x FROM foo; xmin | cmin | x ------+------+--- 7112 | 1 | 1 7112 | 3 | 2 7112 | 5 | 3 (3 rows) Results in 7.4.7: SELECT xmin, cmin, x FROM foo; xmin | cmin | x ------+------+--- 856 | 1 | 1 856 | 2 | 2 856 | 3 | 3 (3 rows) What is 7.4 doing differently than the other versions? -- Michael Fuhr http://www.fuhr.org/~mfuhr/
Michael Fuhr <mike@fuhr.org> writes: > I've noticed that in PostgreSQL 7.4, successive commands in a > transaction get cmin values that increment by 1, but in other > versions cmin increments by 2. Example: Not sure about pre-7.4, but 8.0 is doing this because of a faulty translation of list-munging stuff. PortalRunMulti contains /* * Increment command counter between queries, but not after the * last one. */ if (planlist_item != NULL) CommandCounterIncrement(); but planlist_item will *never* be NULL here. Should be testing lnext(planlist_item), I think. Neil? regards, tom lane
On Tue, 2005-02-01 at 01:53 -0500, Tom Lane wrote: > /* > * Increment command counter between queries, but not after the > * last one. > */ > if (planlist_item != NULL) > CommandCounterIncrement(); > > but planlist_item will *never* be NULL here. Should be testing > lnext(planlist_item), I think. Neil? Indeed :( One-liner attached, and applied to HEAD and REL8_0_STABLE. -Neil
Attachment
Neil Conway <neilc@samurai.com> writes: > On Tue, 2005-02-01 at 01:53 -0500, Tom Lane wrote: >> but planlist_item will *never* be NULL here. Should be testing >> lnext(planlist_item), I think. Neil? > Indeed :( One-liner attached, and applied to HEAD and REL8_0_STABLE. Do you think it's worth groveling through the other uses of forboth() for the same type of error? regards, tom lane
On Tue, 2005-02-01 at 18:37 -0500, Tom Lane wrote: > Do you think it's worth groveling through the other uses of forboth() > for the same type of error? I just checked the other uses of forboth(), and didn't notice any errors. -Neil