1 /*-------------------------------------------------------------------------
2  *
3  * sequence.h
4  *	  prototypes for sequence.c.
5  *
6  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/commands/sequence.h
10  *
11  *-------------------------------------------------------------------------
12  */
13 #ifndef SEQUENCE_H
14 #define SEQUENCE_H
15 
16 #include "access/xlogreader.h"
17 #include "catalog/objectaddress.h"
18 #include "fmgr.h"
19 #include "lib/stringinfo.h"
20 #include "nodes/parsenodes.h"
21 #include "parser/parse_node.h"
22 #include "storage/relfilenode.h"
23 
24 
25 typedef struct FormData_pg_sequence_data
26 {
27 	int64		last_value;
28 	int64		log_cnt;
29 	bool		is_called;
30 } FormData_pg_sequence_data;
31 
32 typedef FormData_pg_sequence_data *Form_pg_sequence_data;
33 
34 /*
35  * Columns of a sequence relation
36  */
37 
38 #define SEQ_COL_LASTVAL			1
39 #define SEQ_COL_LOG				2
40 #define SEQ_COL_CALLED			3
41 
42 #define SEQ_COL_FIRSTCOL		SEQ_COL_LASTVAL
43 #define SEQ_COL_LASTCOL			SEQ_COL_CALLED
44 
45 /* XLOG stuff */
46 #define XLOG_SEQ_LOG			0x00
47 
48 typedef struct xl_seq_rec
49 {
50 	RelFileNode node;
51 	/* SEQUENCE TUPLE DATA FOLLOWS AT THE END */
52 } xl_seq_rec;
53 
54 extern int64 nextval_internal(Oid relid, bool check_permissions);
55 extern Datum nextval(PG_FUNCTION_ARGS);
56 extern List *sequence_options(Oid relid);
57 
58 extern ObjectAddress DefineSequence(ParseState *pstate, CreateSeqStmt *stmt);
59 extern ObjectAddress AlterSequence(ParseState *pstate, AlterSeqStmt *stmt);
60 extern void DeleteSequenceTuple(Oid relid);
61 extern void ResetSequence(Oid seq_relid);
62 extern void ResetSequenceCaches(void);
63 
64 extern void seq_redo(XLogReaderState *rptr);
65 extern void seq_desc(StringInfo buf, XLogReaderState *rptr);
66 extern const char *seq_identify(uint8 info);
67 extern void seq_mask(char *pagedata, BlockNumber blkno);
68 
69 #endif							/* SEQUENCE_H */
70