On Thu, Jun 20, 2019 at 09:30:34AM +0200, Peter Eisentraut wrote: > The discussion in bug #15631 revealed that serial/identity sequences of > temporary tables should really also be temporary (easy), and that > serial/identity sequences of unlogged tables should also be unlogged. > But there is no support for unlogged sequences, so I looked into that.
Thanks for doing so. > If you copy the initial sequence relation file to the init fork, then > this all seems to work out just fine. Attached is a patch. The > low-level copying seems to be handled quite inconsistently across the > code, so I'm not sure what the most appropriate way to do this would be. > I'm looking for feedback from those who have worked on tableam and > storage manager to see what the right interfaces are or whether some new > interfaces might perhaps be appropriate. But the actual deal is that the sequence meta-data is now in pg_sequences and not the init forks, no? I have just done a small test: 1) Some SQL queries: create unlogged sequence popo; alter sequence popo increment 2; select nextval('popo'); select nextval('popo'); 2) Then a hard crash: pg_ctl stop -m immediate pg_ctl start 3) Again, with a crash: select nextval('popo'); #2 0x000055ce60f3208d in ExceptionalCondition (conditionName=0x55ce610f0570 "!(((PageHeader) (page))->pd_special >= (__builtin_offsetof (PageHeaderData, pd_linp)))", errorType=0x55ce610f0507 "FailedAssertion", fileName=0x55ce610f04e0 "../../../src/include/storage/bufpage.h", lineNumber=317) at assert.c:54 #3 0x000055ce60b43200 in PageValidateSpecialPointer (page=0x7ff7692b3d80 "") at ../../../src/include/storage/bufpage.h:317 #4 0x000055ce60b459d4 in read_seq_tuple (rel=0x7ff768ad27e0, buf=0x7ffc5707f0bc, seqdatatuple=0x7ffc5707f0a0) at sequence.c:1213 #5 0x000055ce60b447ee in nextval_internal (relid=16385, check_permissions=true) at sequence.c:678 #6 0x000055ce60b44533 in nextval_oid (fcinfo=0x55ce62537570) at sequence.c:607 -- Michael
signature.asc
Description: PGP signature