aboutsummaryrefslogtreecommitdiff
path: root/src/include/commands/sequence.h
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2016-12-20 12:00:00 -0500
committerPeter Eisentraut <peter_e@gmx.net>2016-12-20 08:28:18 -0500
commit1753b1b027035029c2a2a1649065762fafbf63f3 (patch)
treecd5b4d8fca4ffca2581e3822a2fa7b5f2f49062a /src/include/commands/sequence.h
parentdb80acfc9d50ac56811d22802ab3d822ab313055 (diff)
downloadpostgresql-1753b1b027035029c2a2a1649065762fafbf63f3.tar.gz
postgresql-1753b1b027035029c2a2a1649065762fafbf63f3.zip
Add pg_sequence system catalog
Move sequence metadata (start, increment, etc.) into a proper system catalog instead of storing it in the sequence heap object. This separates the metadata from the sequence data. Sequence metadata is now operated on transactionally by DDL commands, whereas previously rollbacks of sequence-related DDL commands would be ignored. Reviewed-by: Andreas Karlsson <andreas@proxel.se>
Diffstat (limited to 'src/include/commands/sequence.h')
-rw-r--r--src/include/commands/sequence.h29
1 files changed, 8 insertions, 21 deletions
diff --git a/src/include/commands/sequence.h b/src/include/commands/sequence.h
index 6695bbe4c7a..1fd75b216df 100644
--- a/src/include/commands/sequence.h
+++ b/src/include/commands/sequence.h
@@ -22,38 +22,24 @@
#include "storage/relfilenode.h"
-typedef struct FormData_pg_sequence
+typedef struct FormData_pg_sequence_data
{
- NameData sequence_name;
int64 last_value;
- int64 start_value;
- int64 increment_by;
- int64 max_value;
- int64 min_value;
- int64 cache_value;
int64 log_cnt;
- bool is_cycled;
bool is_called;
-} FormData_pg_sequence;
+} FormData_pg_sequence_data;
-typedef FormData_pg_sequence *Form_pg_sequence;
+typedef FormData_pg_sequence_data *Form_pg_sequence_data;
/*
* Columns of a sequence relation
*/
-#define SEQ_COL_NAME 1
-#define SEQ_COL_LASTVAL 2
-#define SEQ_COL_STARTVAL 3
-#define SEQ_COL_INCBY 4
-#define SEQ_COL_MAXVALUE 5
-#define SEQ_COL_MINVALUE 6
-#define SEQ_COL_CACHE 7
-#define SEQ_COL_LOG 8
-#define SEQ_COL_CYCLE 9
-#define SEQ_COL_CALLED 10
+#define SEQ_COL_LASTVAL 1
+#define SEQ_COL_LOG 2
+#define SEQ_COL_CALLED 3
-#define SEQ_COL_FIRSTCOL SEQ_COL_NAME
+#define SEQ_COL_FIRSTCOL SEQ_COL_LASTVAL
#define SEQ_COL_LASTCOL SEQ_COL_CALLED
/* XLOG stuff */
@@ -77,6 +63,7 @@ extern Datum pg_sequence_last_value(PG_FUNCTION_ARGS);
extern ObjectAddress DefineSequence(ParseState *pstate, CreateSeqStmt *stmt);
extern ObjectAddress AlterSequence(ParseState *pstate, AlterSeqStmt *stmt);
+extern void DeleteSequenceTuple(Oid relid);
extern void ResetSequence(Oid seq_relid);
extern void ResetSequenceCaches(void);