1 /*-------------------------------------------------------------------------
4 * Functions for the built-in type tuple id
6 * Copyright (c) 1994, Regents of the University of California
10 * $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.8 1999/07/15 15:20:20 momjian Exp $
13 * input routine largely stolen from boxin().
15 *-------------------------------------------------------------------------
17 #include <stdio.h> /* for sprintf() */
20 #include "storage/bufpage.h"
22 #include "utils/builtins.h" /* where function declarations go */
29 /* ----------------------------------------------------------------
31 * ----------------------------------------------------------------
41 BlockNumber blockNumber;
42 OffsetNumber offsetNumber;
47 for (i = 0, p = str; *p && i < NTIDARGS && *p != RDELIM; p++)
48 if (*p == DELIM || (*p == LDELIM && !i))
54 blockNumber = (BlockNumber) atoi(coord[0]);
55 offsetNumber = (OffsetNumber) atoi(coord[1]);
57 result = (ItemPointer) palloc(sizeof(ItemPointerData));
59 ItemPointerSet(result, blockNumber, offsetNumber);
64 /* ----------------------------------------------------------------
66 * ----------------------------------------------------------------
69 tidout(ItemPointer itemPtr)
71 BlockNumber blockNumber;
72 OffsetNumber offsetNumber;
77 blockId = &(itemPtr->ip_blkid);
79 blockNumber = BlockIdGetBlockNumber(blockId);
80 offsetNumber = itemPtr->ip_posid;
82 sprintf(buf, "(%d,%d)", blockNumber, offsetNumber);
84 str = (char *) palloc(strlen(buf) + 1);