Estou aprendendo como o WAL funciona no postgresql, mas realmente não entendo como o valor len(record) é obtido e onde posso encontrar o registro.
Para testes, fiz essas inserções:
INSERT INTO int_table (field1, field2, field3, field4, field5) VALUES (1, 1, 1, 1, 1);
INSERT INTO int_table (field1, field2, field3, field4) VALUES (1, 1, 1, 1);
INSERT INTO int_table (field1, field2, field3) VALUES (1, 1, 1);
Depois, com a ajuda de pg_waldump.exe, consegui o dump do wal:
rmgr: Heap len (rec/tot): 79/ 79, ...
rmgr: Heap len (rec/tot): 75/ 75, ...
rmgr: Heap len (rec/tot): 71/ 71, ...
Então, posso ver que a diferença entre os registros é de 4 bytes (um valor int). Porém, estou curioso sobre as informações contidas nos outros bytes. Por exemplo, o último registro possui 59 bytes de informações adicionais, juntamente com 4 + 4 + 4 bytes para três valores (1, 1, 1).
Então, minha pergunta é onde e por que esses 59 bytes estão escritos.