@ -34,74 +34,26 @@ btree_desc(StringInfo buf, XLogRecord *record)
switch ( info )
{
case XLOG_BTREE_INSERT_LEAF :
{
xl_btree_insert * xlrec = ( xl_btree_insert * ) rec ;
appendStringInfoString ( buf , " insert: " ) ;
out_target ( buf , & ( xlrec - > target ) ) ;
break ;
}
case XLOG_BTREE_INSERT_UPPER :
{
xl_btree_insert * xlrec = ( xl_btree_insert * ) rec ;
appendStringInfoString ( buf , " insert_upper: " ) ;
out_target ( buf , & ( xlrec - > target ) ) ;
break ;
}
case XLOG_BTREE_INSERT_META :
{
xl_btree_insert * xlrec = ( xl_btree_insert * ) rec ;
appendStringInfoString ( buf , " insert_meta: " ) ;
out_target ( buf , & ( xlrec - > target ) ) ;
break ;
}
case XLOG_BTREE_SPLIT_L :
{
xl_btree_split * xlrec = ( xl_btree_split * ) rec ;
appendStringInfo ( buf , " split_l: rel %u/%u/%u " ,
xlrec - > node . spcNode , xlrec - > node . dbNode ,
xlrec - > node . relNode ) ;
appendStringInfo ( buf , " left %u, right %u, next %u, level %u, firstright %d " ,
xlrec - > leftsib , xlrec - > rightsib , xlrec - > rnext ,
xlrec - > level , xlrec - > firstright ) ;
break ;
}
case XLOG_BTREE_SPLIT_R :
{
xl_btree_split * xlrec = ( xl_btree_split * ) rec ;
appendStringInfo ( buf , " split_r: rel %u/%u/%u " ,
xlrec - > node . spcNode , xlrec - > node . dbNode ,
xlrec - > node . relNode ) ;
appendStringInfo ( buf , " left %u, right %u, next %u, level %u, firstright %d " ,
xlrec - > leftsib , xlrec - > rightsib , xlrec - > rnext ,
xlrec - > level , xlrec - > firstright ) ;
break ;
}
case XLOG_BTREE_SPLIT_L_ROOT :
{
xl_btree_split * xlrec = ( xl_btree_split * ) rec ;
appendStringInfo ( buf , " split_l_root: rel %u/%u/%u " ,
xlrec - > node . spcNode , xlrec - > node . dbNode ,
xlrec - > node . relNode ) ;
appendStringInfo ( buf , " left %u, right %u, next %u, level %u, firstright %d " ,
xlrec - > leftsib , xlrec - > rightsib , xlrec - > rnext ,
xlrec - > level , xlrec - > firstright ) ;
break ;
}
case XLOG_BTREE_SPLIT_R_ROOT :
{
xl_btree_split * xlrec = ( xl_btree_split * ) rec ;
appendStringInfo ( buf , " split_r_root: rel %u/%u/%u " ,
appendStringInfo ( buf , " rel %u/%u/%u " ,
xlrec - > node . spcNode , xlrec - > node . dbNode ,
xlrec - > node . relNode ) ;
appendStringInfo ( buf , " left %u, right %u, next %u, level %u, firstright %d " ,
xlrec - > leftsib , xlrec - > rightsib , xlrec - > rnext ,
xlrec - > leftsib , xlrec - > rightsib , xlrec - > rnext ,
xlrec - > level , xlrec - > firstright ) ;
break ;
}
@ -109,7 +61,7 @@ btree_desc(StringInfo buf, XLogRecord *record)
{
xl_btree_vacuum * xlrec = ( xl_btree_vacuum * ) rec ;
appendStringInfo ( buf , " vacuum: rel %u/%u/%u; blk %u, lastBlockVacuumed %u" ,
appendStringInfo ( buf , " rel %u/%u/%u; blk %u, lastBlockVacuumed %u " ,
xlrec - > node . spcNode , xlrec - > node . dbNode ,
xlrec - > node . relNode , xlrec - > block ,
xlrec - > lastBlockVacuumed ) ;
@ -119,8 +71,8 @@ btree_desc(StringInfo buf, XLogRecord *record)
{
xl_btree_delete * xlrec = ( xl_btree_delete * ) rec ;
appendStringInfo ( buf , " delete: index %u/%u/%u; iblk %u, heap %u/%u/%u;" ,
xlrec - > node . spcNode , xlrec - > node . dbNode , xlrec - > node . relNode ,
appendStringInfo ( buf , " index %u/%u/%u; iblk %u, heap %u/%u/%u; " ,
xlrec - > node . spcNode , xlrec - > node . dbNode , xlrec - > node . relNode ,
xlrec - > block ,
xlrec - > hnode . spcNode , xlrec - > hnode . dbNode , xlrec - > hnode . relNode ) ;
break ;
@ -129,7 +81,6 @@ btree_desc(StringInfo buf, XLogRecord *record)
{
xl_btree_mark_page_halfdead * xlrec = ( xl_btree_mark_page_halfdead * ) rec ;
appendStringInfoString ( buf , " mark_page_halfdead: " ) ;
out_target ( buf , & ( xlrec - > target ) ) ;
appendStringInfo ( buf , " ; topparent %u; leaf %u; left %u; right %u " ,
xlrec - > topparent , xlrec - > leafblk , xlrec - > leftblk , xlrec - > rightblk ) ;
@ -140,8 +91,8 @@ btree_desc(StringInfo buf, XLogRecord *record)
{
xl_btree_unlink_page * xlrec = ( xl_btree_unlink_page * ) rec ;
appendStringInfo ( buf , " unlink_page: rel %u/%u/%u; " ,
xlrec - > node . spcNode , xlrec - > node . dbNode , xlrec - > node . relNode ) ;
appendStringInfo ( buf , " rel %u/%u/%u; " ,
xlrec - > node . spcNode , xlrec - > node . dbNode , xlrec - > node . relNode ) ;
appendStringInfo ( buf , " dead %u; left %u; right %u; btpo_xact %u; " ,
xlrec - > deadblk , xlrec - > leftsib , xlrec - > rightsib , xlrec - > btpo_xact ) ;
appendStringInfo ( buf , " leaf %u; leafleft %u; leafright %u; topparent %u " ,
@ -152,7 +103,7 @@ btree_desc(StringInfo buf, XLogRecord *record)
{
xl_btree_newroot * xlrec = ( xl_btree_newroot * ) rec ;
appendStringInfo ( buf , " newroot: rel %u/%u/%u; root %u lev %u" ,
appendStringInfo ( buf , " rel %u/%u/%u; root %u lev %u " ,
xlrec - > node . spcNode , xlrec - > node . dbNode ,
xlrec - > node . relNode ,
xlrec - > rootblk , xlrec - > level ) ;
@ -162,13 +113,64 @@ btree_desc(StringInfo buf, XLogRecord *record)
{
xl_btree_reuse_page * xlrec = ( xl_btree_reuse_page * ) rec ;
appendStringInfo ( buf , " reuse_page: re l %u/%u/%u; latestRemovedXid %u " ,
appendStringInfo ( buf , " rel %u/%u/%u; latestRemovedXid %u " ,
xlrec - > node . spcNode , xlrec - > node . dbNode ,
xlrec - > node . relNode , xlrec - > latestRemovedXid ) ;
xlrec - > node . relNode , xlrec - > latestRemovedXid ) ;
break ;
}
default :
appendStringInfoString ( buf , " UNKNOWN " ) ;
}
}
const char *
btree_identify ( uint8 info )
{
const char * id = NULL ;
switch ( info )
{
case XLOG_BTREE_INSERT_LEAF :
id = " INSERT_LEAF " ;
break ;
case XLOG_BTREE_INSERT_UPPER :
id = " INSERT_UPPER " ;
break ;
case XLOG_BTREE_INSERT_META :
id = " INSERT_META " ;
break ;
case XLOG_BTREE_SPLIT_L :
id = " SPLIT_L " ;
break ;
case XLOG_BTREE_SPLIT_R :
id = " SPLIT_R " ;
break ;
case XLOG_BTREE_SPLIT_L_ROOT :
id = " SPLIT_L_ROOT " ;
break ;
case XLOG_BTREE_SPLIT_R_ROOT :
id = " SPLIT_R_ROOT " ;
break ;
case XLOG_BTREE_VACUUM :
id = " VACUUM " ;
break ;
case XLOG_BTREE_DELETE :
id = " DELETE " ;
break ;
case XLOG_BTREE_MARK_PAGE_HALFDEAD :
id = " MARK_PAGE_HALFDEAD " ;
break ;
case XLOG_BTREE_UNLINK_PAGE :
id = " UNLINK_PAGE " ;
break ;
case XLOG_BTREE_UNLINK_PAGE_META :
id = " UNLINK_PAGE_META " ;
break ;
case XLOG_BTREE_NEWROOT :
id = " NEWROOT " ;
break ;
case XLOG_BTREE_REUSE_PAGE :
id = " REUSE_PAGE " ;
break ;
}
return id ;
}