Mark Dilger wrote: > I found a few places in the code where a variable of > type Oid is printed using "%d" rather than "%u" and > changed them in the attached patch. > > In src/backend/replication/logical/reorderbuffer.c, > circa line 2494, chunk_seq is of type Oid, but > ent->last_chunk_seq is of type int32, leading me > to question if perhaps the use of %d for chunk_seq > is correct, but the use of Oid for the type of chunk_seq > is in error. If neither is in error, perhaps someone > can provide a short code comment explaining the > logic of the signed/unsigned discrepancy.
tuptoaster defines chunk_seq as signed int32; ReorderBufferToastAppendChunk is wrong in declaring it Oid, and so this part of your patch is bogus. The others seem correct. > diff --git a/src/backend/replication/logical/reorderbuffer.c > b/src/backend/replication/logical/reorderbuffer.c > index 6e75398..41a4896 100644 > --- a/src/backend/replication/logical/reorderbuffer.c > +++ b/src/backend/replication/logical/reorderbuffer.c > @@ -2487,11 +2487,11 @@ ReorderBufferToastAppendChunk(ReorderBuffer *rb, > ReorderBufferTXN *txn, > dlist_init(&ent->chunks); > > if (chunk_seq != 0) > - elog(ERROR, "got sequence entry %d for toast chunk %u > instead of seq 0", > + elog(ERROR, "got sequence entry %u for toast chunk %u > instead of seq 0", > chunk_seq, chunk_id); > } > else if (found && chunk_seq != ent->last_chunk_seq + 1) > - elog(ERROR, "got sequence entry %d for toast chunk %u instead > of seq %d", > + elog(ERROR, "got sequence entry %u for toast chunk %u instead > of seq %d", > chunk_seq, chunk_id, ent->last_chunk_seq + 1); > > chunk = DatumGetPointer(fastgetattr(&newtup->tuple, 3, desc, &isnull)); -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers