Re: Skipping logical replication transactions on subscriber side
Tom Lane <tgl@sss.pgh.pa.us>
[ sorry for not having tracked this thread more closely ... ] Robert Haas <robertmhaas@gmail.com> writes: > Regarding (1), it is my opinion that the only real value of typalign > is for system catalogs, and specifically that it lets you put the > fields in an order that is aesthetically pleasing rather than worrying > about alignment considerations. After all, if we just ordered the > fields by descending alignment requirement, we could get rid of > typalign altogether (at least, if we didn't care about backward > compatibility). User tables would get smaller because we'd get rid of > alignment padding, and I don't think we'd see much impact on > performance because, for user tables, we copy the values into a datum > array before doing anything interesting with them. So (1) seems to me > to be conceding that typalign is unfit for the only purpose it has. That's a fundamental misreading of the situation. typalign is essential on alignment-picky architectures, else you will get a SIGBUS fault when trying to fetch a multibyte value (whether it's just going to get stored into a Datum array is not very relevant here). It appears that what we've got on AIX is that typalign 'd' overstates the actual alignment requirement for 'double', which is safe from the SIGBUS angle. However, it is a problem for our usage with system catalogs, where our C struct declarations may not line up with the way that a tuple is constructed by the tuple assembly routines. I concur that Noah's description of #2 is not an accurate statement of the rules we'd have to impose to be sure that the C structs line up with the actual tuple layouts. I don't think we want rules exactly, what we need is mechanical verification that the field orderings in use are safe. The last time I looked at this thread, what was being discussed was (a) re-ordering pg_subscription's columns and (b) adding some kind of regression test to verify that all catalogs meet the expectation of 'd'-aligned fields not needing alignment padding that an AIX compiler might choose not to insert. That still seems like the most plausible answer to me. I don't especially want to invent an additional typalign code that we could only test on legacy platforms. regards, tom lane
Commits
-
Test ALIGNOF_DOUBLE==4 compatibility under ALIGNOF_DOUBLE==8.
- c1da0acbb06e 15.0 landed
-
Reorder subskiplsn in pg_subscription to avoid alignment issues.
- 79b716cfb7a1 15.0 landed
-
Add ALTER SUBSCRIPTION ... SKIP.
- 208c5d65bbd6 15.0 landed
-
Optionally disable subscriptions on error.
- 705e20f8550c 15.0 cited
-
Update docs of logical replication for commit 8d74fc96db.
- 85c61ba8920b 15.0 landed
-
Respect permissions within logical replication.
- a2ab9c06ea15 15.0 cited
-
Fix regression test failure caused by commit 8d74fc96db.
- 41e66fee0516 15.0 landed
-
Add a view to show the stats of subscription workers.
- 8d74fc96db5f 15.0 landed
-
Add logical change details to logical replication worker errcontext.
- abc0910e2e0a 15.0 landed
-
Rename LOGICAL_REP_MSG_STREAM_END to LOGICAL_REP_MSG_STREAM_STOP.
- 4cd7a1896871 15.0 landed
-
Fix typo in protocol.sgml.
- e1915646658d 14.0 landed
- 0ac1aee0d7d8 15.0 landed
-
Remove unused argument in apply_handle_commit_internal().
- f4b939f1a372 14.0 landed
- 16bd4becee32 15.0 landed
-
Fix replication of in-progress transactions in tablesync worker.
- 0926e96c4934 14.0 cited
-
Reorder pg_sequence columns to avoid alignment issue
- f3b421da5f4a 10.0 cited