nbtree: fix read page recheck typo.
[pgsql.git] / src / backend / access / sequence / sequence.c
blob8d6b7bb5dc25b66f824d28c197bf26a07a16eefe
1 /*-------------------------------------------------------------------------
3 * sequence.c
4 * Generic routines for sequence-related code.
6 * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
10 * IDENTIFICATION
11 * src/backend/access/sequence/sequence.c
14 * NOTES
15 * This file contains sequence_ routines that implement access to sequences
16 * (in contrast to other relation types like indexes).
18 *-------------------------------------------------------------------------
21 #include "postgres.h"
23 #include "access/relation.h"
24 #include "access/sequence.h"
25 #include "storage/lmgr.h"
27 static inline void validate_relation_kind(Relation r);
29 /* ----------------
30 * sequence_open - open a sequence relation by relation OID
32 * This is essentially relation_open plus check that the relation
33 * is a sequence.
34 * ----------------
36 Relation
37 sequence_open(Oid relationId, LOCKMODE lockmode)
39 Relation r;
41 r = relation_open(relationId, lockmode);
43 validate_relation_kind(r);
45 return r;
48 /* ----------------
49 * sequence_close - close a sequence
51 * If lockmode is not "NoLock", we then release the specified lock.
53 * Note that it is often sensible to hold a lock beyond relation_close;
54 * in that case, the lock is released automatically at xact end.
55 * ----------------
57 void
58 sequence_close(Relation relation, LOCKMODE lockmode)
60 relation_close(relation, lockmode);
63 /* ----------------
64 * validate_relation_kind - check the relation's kind
66 * Make sure relkind is from a sequence.
67 * ----------------
69 static inline void
70 validate_relation_kind(Relation r)
72 if (r->rd_rel->relkind != RELKIND_SEQUENCE)
73 ereport(ERROR,
74 (errcode(ERRCODE_WRONG_OBJECT_TYPE),
75 errmsg("cannot open relation \"%s\"",
76 RelationGetRelationName(r)),
77 errdetail_relkind_not_supported(r->rd_rel->relkind)));