@@ -28,53 +28,101 @@ spg_desc(StringInfo buf, XLogReaderState *record)
2828{
2929spgxlogAddLeaf * xlrec = (spgxlogAddLeaf * )rec ;
3030
31- appendStringInfoString (buf ,"add leaf to page" );
32- appendStringInfo (buf ,"; off %u; headoff %u; parentoff %u" ,
31+ appendStringInfo (buf ,"off: %u, headoff: %u, parentoff: %u, nodeI: %u" ,
3332xlrec -> offnumLeaf ,xlrec -> offnumHeadLeaf ,
34- xlrec -> offnumParent );
33+ xlrec -> offnumParent , xlrec -> nodeI );
3534if (xlrec -> newPage )
3635appendStringInfoString (buf ," (newpage)" );
3736if (xlrec -> storesNulls )
3837appendStringInfoString (buf ," (nulls)" );
3938}
4039break ;
4140case XLOG_SPGIST_MOVE_LEAFS :
42- appendStringInfo (buf ,"%u leafs" ,
43- ((spgxlogMoveLeafs * )rec )-> nMoves );
41+ {
42+ spgxlogMoveLeafs * xlrec = (spgxlogMoveLeafs * )rec ;
43+
44+ appendStringInfo (buf ,"nmoves: %u, parentoff: %u, nodeI: %u" ,
45+ xlrec -> nMoves ,
46+ xlrec -> offnumParent ,xlrec -> nodeI );
47+ if (xlrec -> newPage )
48+ appendStringInfoString (buf ," (newpage)" );
49+ if (xlrec -> replaceDead )
50+ appendStringInfoString (buf ," (replacedead)" );
51+ if (xlrec -> storesNulls )
52+ appendStringInfoString (buf ," (nulls)" );
53+ }
4454break ;
4555case XLOG_SPGIST_ADD_NODE :
46- appendStringInfo (buf ,"off %u" ,
47- ((spgxlogAddNode * )rec )-> offnum );
56+ {
57+ spgxlogAddNode * xlrec = (spgxlogAddNode * )rec ;
58+
59+ appendStringInfo (buf ,"off: %u, newoff: %u, parentBlk: %d, "
60+ "parentoff: %u, nodeI: %u" ,
61+ xlrec -> offnum ,
62+ xlrec -> offnumNew ,
63+ xlrec -> parentBlk ,
64+ xlrec -> offnumParent ,
65+ xlrec -> nodeI );
66+ if (xlrec -> newPage )
67+ appendStringInfoString (buf ," (newpage)" );
68+ }
4869break ;
4970case XLOG_SPGIST_SPLIT_TUPLE :
50- appendStringInfo (buf ,"prefix off: %u, postfix off: %u (same %d, new %d)" ,
51- ((spgxlogSplitTuple * )rec )-> offnumPrefix ,
52- ((spgxlogSplitTuple * )rec )-> offnumPostfix ,
53- ((spgxlogSplitTuple * )rec )-> postfixBlkSame ,
54- ((spgxlogSplitTuple * )rec )-> newPage
55- );
71+ {
72+ spgxlogSplitTuple * xlrec = (spgxlogSplitTuple * )rec ;
73+
74+ appendStringInfo (buf ,"prefixoff: %u, postfixoff: %u" ,
75+ xlrec -> offnumPrefix ,
76+ xlrec -> offnumPostfix );
77+ if (xlrec -> newPage )
78+ appendStringInfoString (buf ," (newpage)" );
79+ if (xlrec -> postfixBlkSame )
80+ appendStringInfoString (buf ," (same)" );
81+ }
5682break ;
5783case XLOG_SPGIST_PICKSPLIT :
5884{
5985spgxlogPickSplit * xlrec = (spgxlogPickSplit * )rec ;
6086
61- appendStringInfo (buf ,"ndel %u; nins %u" ,
62- xlrec -> nDelete ,xlrec -> nInsert );
87+ appendStringInfo (buf ,"ndelete: %u, ninsert: %u, inneroff: %u, "
88+ "parentoff: %u, nodeI: %u" ,
89+ xlrec -> nDelete ,xlrec -> nInsert ,
90+ xlrec -> offnumInner ,
91+ xlrec -> offnumParent ,xlrec -> nodeI );
6392if (xlrec -> innerIsParent )
6493appendStringInfoString (buf ," (innerIsParent)" );
94+ if (xlrec -> storesNulls )
95+ appendStringInfoString (buf ," (nulls)" );
6596if (xlrec -> isRootSplit )
6697appendStringInfoString (buf ," (isRootSplit)" );
6798}
6899break ;
69100case XLOG_SPGIST_VACUUM_LEAF :
70- /* no further information */
101+ {
102+ spgxlogVacuumLeaf * xlrec = (spgxlogVacuumLeaf * )rec ;
103+
104+ appendStringInfo (buf ,"ndead: %u, nplaceholder: %u, nmove: %u, nchain: %u" ,
105+ xlrec -> nDead ,xlrec -> nPlaceholder ,
106+ xlrec -> nMove ,xlrec -> nChain );
107+ }
71108break ;
72109case XLOG_SPGIST_VACUUM_ROOT :
73- /* no further information */
110+ {
111+ spgxlogVacuumRoot * xlrec = (spgxlogVacuumRoot * )rec ;
112+
113+ appendStringInfo (buf ,"ndelete: %u" ,
114+ xlrec -> nDelete );
115+ }
74116break ;
75117case XLOG_SPGIST_VACUUM_REDIRECT :
76- appendStringInfo (buf ,"newest XID %u" ,
77- ((spgxlogVacuumRedirect * )rec )-> newestRedirectXid );
118+ {
119+ spgxlogVacuumRedirect * xlrec = (spgxlogVacuumRedirect * )rec ;
120+
121+ appendStringInfo (buf ,"ntoplaceholder: %u, firstplaceholder: %u, newestredirectxid: %u" ,
122+ xlrec -> nToPlaceholder ,
123+ xlrec -> firstPlaceholder ,
124+ xlrec -> newestRedirectXid );
125+ }
78126break ;
79127}
80128}