aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/pos.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/storage/pos.h')
-rw-r--r--src/backend/storage/pos.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/backend/storage/pos.h b/src/backend/storage/pos.h
new file mode 100644
index 00000000000..9a7f603416b
--- /dev/null
+++ b/src/backend/storage/pos.h
@@ -0,0 +1,64 @@
+/*-------------------------------------------------------------------------
+ *
+ * pos.h--
+ * POSTGRES "position" definitions.
+ *
+ *
+ * Copyright (c) 1994, Regents of the University of California
+ *
+ * $Id: pos.h,v 1.1.1.1 1996/07/09 06:21:53 scrappy Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef POS_H
+#define POS_H
+
+#include "c.h"
+
+/*
+ * a 'position' used to be <pagenumber, offset> in postgres. this has
+ * been changed to just <offset> as the notion of having multiple pages
+ * within a block has been removed.
+ *
+ * the 'offset' abstraction is somewhat confusing. it is NOT a byte
+ * offset within the page; instead, it is an offset into the line
+ * pointer array contained on every page that store (heap or index)
+ * tuples.
+ */
+typedef bits16 PositionIdData;
+typedef PositionIdData *PositionId;
+
+/* ----------------
+ * support macros
+ * ----------------
+ */
+
+/*
+ * PositionIdIsValid --
+ * True iff the position identifier is valid.
+ */
+#define PositionIdIsValid(positionId) \
+ PointerIsValid(positionId)
+
+/*
+ * PositionIdSetInvalid --
+ * Make an invalid position.
+ */
+#define PositionIdSetInvalid(positionId) \
+ *(positionId) = (bits16) 0
+
+/*
+ * PositionIdSet --
+ * Sets a position identifier to the specified value.
+ */
+#define PositionIdSet(positionId, offsetNumber) \
+ *(positionId) = (offsetNumber)
+
+/*
+ * PositionIdGetOffsetNumber --
+ * Retrieve the offset number from a position identifier.
+ */
+#define PositionIdGetOffsetNumber(positionId) \
+ ((OffsetNumber) *(positionId))
+
+#endif /* POS_H */