Coverage Report

Created: 2025-09-27 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/postgres/src/backend/access/sequence/sequence.c
Line
Count
Source
1
/*-------------------------------------------------------------------------
2
 *
3
 * sequence.c
4
 *    Generic routines for sequence-related code.
5
 *
6
 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
7
 * Portions Copyright (c) 1994, Regents of the University of California
8
 *
9
 *
10
 * IDENTIFICATION
11
 *    src/backend/access/sequence/sequence.c
12
 *
13
 *
14
 * NOTES
15
 *    This file contains sequence_ routines that implement access to sequences
16
 *    (in contrast to other relation types like indexes).
17
 *
18
 *-------------------------------------------------------------------------
19
 */
20
21
#include "postgres.h"
22
23
#include "access/relation.h"
24
#include "access/sequence.h"
25
#include "utils/rel.h"
26
27
static inline void validate_relation_kind(Relation r);
28
29
/* ----------------
30
 *    sequence_open - open a sequence relation by relation OID
31
 *
32
 *    This is essentially relation_open plus check that the relation
33
 *    is a sequence.
34
 * ----------------
35
 */
36
Relation
37
sequence_open(Oid relationId, LOCKMODE lockmode)
38
0
{
39
0
  Relation  r;
40
41
0
  r = relation_open(relationId, lockmode);
42
43
0
  validate_relation_kind(r);
44
45
0
  return r;
46
0
}
47
48
/* ----------------
49
 *    sequence_close - close a sequence
50
 *
51
 *    If lockmode is not "NoLock", we then release the specified lock.
52
 *
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
 * ----------------
56
 */
57
void
58
sequence_close(Relation relation, LOCKMODE lockmode)
59
0
{
60
0
  relation_close(relation, lockmode);
61
0
}
62
63
/* ----------------
64
 *    validate_relation_kind - check the relation's kind
65
 *
66
 *    Make sure relkind is from a sequence.
67
 * ----------------
68
 */
69
static inline void
70
validate_relation_kind(Relation r)
71
0
{
72
0
  if (r->rd_rel->relkind != RELKIND_SEQUENCE)
73
0
    ereport(ERROR,
74
0
        (errcode(ERRCODE_WRONG_OBJECT_TYPE),
75
0
         errmsg("cannot open relation \"%s\"",
76
0
            RelationGetRelationName(r)),
77
0
         errdetail_relkind_not_supported(r->rd_rel->relkind)));
78
0
}