Header And Logo

PostgreSQL
| The world's most advanced open source database.

Functions

gistdesc.c File Reference

#include "postgres.h"
#include "access/gist_private.h"
#include "lib/stringinfo.h"
#include "storage/relfilenode.h"
Include dependency graph for gistdesc.c:

Go to the source code of this file.

Functions

static void out_target (StringInfo buf, RelFileNode node)
static void out_gistxlogPageUpdate (StringInfo buf, gistxlogPageUpdate *xlrec)
static void out_gistxlogPageSplit (StringInfo buf, gistxlogPageSplit *xlrec)
void gist_desc (StringInfo buf, uint8 xl_info, char *rec)

Function Documentation

void gist_desc ( StringInfo  buf,
uint8  xl_info,
char *  rec 
)

Definition at line 45 of file gistdesc.c.

References appendStringInfo(), out_gistxlogPageSplit(), out_gistxlogPageUpdate(), XLOG_GIST_CREATE_INDEX, XLOG_GIST_PAGE_SPLIT, and XLOG_GIST_PAGE_UPDATE.

{
    uint8       info = xl_info & ~XLR_INFO_MASK;

    switch (info)
    {
        case XLOG_GIST_PAGE_UPDATE:
            appendStringInfo(buf, "page_update: ");
            out_gistxlogPageUpdate(buf, (gistxlogPageUpdate *) rec);
            break;
        case XLOG_GIST_PAGE_SPLIT:
            out_gistxlogPageSplit(buf, (gistxlogPageSplit *) rec);
            break;
        case XLOG_GIST_CREATE_INDEX:
            appendStringInfo(buf, "create_index: rel %u/%u/%u",
                             ((RelFileNode *) rec)->spcNode,
                             ((RelFileNode *) rec)->dbNode,
                             ((RelFileNode *) rec)->relNode);
            break;
        default:
            appendStringInfo(buf, "unknown gist op code %u", info);
            break;
    }
}

static void out_gistxlogPageSplit ( StringInfo  buf,
gistxlogPageSplit xlrec 
) [static]

Definition at line 36 of file gistdesc.c.

References appendStringInfo(), gistxlogPageSplit::node, gistxlogPageSplit::npage, gistxlogPageSplit::origblkno, and out_target().

Referenced by gist_desc().

{
    appendStringInfo(buf, "page_split: ");
    out_target(buf, xlrec->node);
    appendStringInfo(buf, "; block number %u splits to %d pages",
                     xlrec->origblkno, xlrec->npage);
}

static void out_gistxlogPageUpdate ( StringInfo  buf,
gistxlogPageUpdate xlrec 
) [static]

Definition at line 29 of file gistdesc.c.

References appendStringInfo(), gistxlogPageUpdate::blkno, gistxlogPageUpdate::node, and out_target().

Referenced by gist_desc().

{
    out_target(buf, xlrec->node);
    appendStringInfo(buf, "; block number %u", xlrec->blkno);
}

static void out_target ( StringInfo  buf,
RelFileNode  node 
) [static]

Definition at line 22 of file gistdesc.c.

References appendStringInfo(), RelFileNode::dbNode, RelFileNode::relNode, and RelFileNode::spcNode.

Referenced by out_gistxlogPageSplit(), and out_gistxlogPageUpdate().

{
    appendStringInfo(buf, "rel %u/%u/%u",
                     node.spcNode, node.dbNode, node.relNode);
}