]> granicus.if.org Git - postgresql/blob - src/backend/utils/adt/tid.c
Move some system includes into c.h, and remove duplicates.
[postgresql] / src / backend / utils / adt / tid.c
1 /*-------------------------------------------------------------------------
2  *
3  * tid.c
4  *        Functions for the built-in type tuple id
5  *
6  * Copyright (c) 1994, Regents of the University of California
7  *
8  *
9  * IDENTIFICATION
10  *        $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.11 1999/07/17 20:18:00 momjian Exp $
11  *
12  * NOTES
13  *        input routine largely stolen from boxin().
14  *
15  *-------------------------------------------------------------------------
16  */
17
18 #include "postgres.h"
19 #include "utils/builtins.h"
20
21 #define LDELIM                  '('
22 #define RDELIM                  ')'
23 #define DELIM                   ','
24 #define NTIDARGS                2
25
26 /* ----------------------------------------------------------------
27  *              tidin
28  * ----------------------------------------------------------------
29  */
30 ItemPointer
31 tidin(char *str)
32 {
33         char       *p,
34                            *coord[NTIDARGS];
35         int                     i;
36         ItemPointer result;
37
38         BlockNumber blockNumber;
39         OffsetNumber offsetNumber;
40
41         if (str == NULL)
42                 return NULL;
43
44         for (i = 0, p = str; *p && i < NTIDARGS && *p != RDELIM; p++)
45                 if (*p == DELIM || (*p == LDELIM && !i))
46                         coord[i++] = p + 1;
47
48         if (i < NTIDARGS - 1)
49                 return NULL;
50
51         blockNumber = (BlockNumber) atoi(coord[0]);
52         offsetNumber = (OffsetNumber) atoi(coord[1]);
53
54         result = (ItemPointer) palloc(sizeof(ItemPointerData));
55
56         ItemPointerSet(result, blockNumber, offsetNumber);
57
58         return result;
59 }
60
61 /* ----------------------------------------------------------------
62  *              tidout
63  * ----------------------------------------------------------------
64  */
65 char *
66 tidout(ItemPointer itemPtr)
67 {
68         BlockNumber blockNumber;
69         OffsetNumber offsetNumber;
70         BlockId         blockId;
71         char            buf[32];
72         char       *str;
73
74         blockId = &(itemPtr->ip_blkid);
75
76         blockNumber = BlockIdGetBlockNumber(blockId);
77         offsetNumber = itemPtr->ip_posid;
78
79         sprintf(buf, "(%d,%d)", blockNumber, offsetNumber);
80
81         str = (char *) palloc(strlen(buf) + 1);
82         strcpy(str, buf);
83
84         return str;
85 }