Skip to content

Instantly share code, notes, and snippets.

@divyenduz
Last active September 25, 2025 09:11
Show Gist options
  • Select an option

  • Save divyenduz/7e32495c6840bb9eb888348a9f28ec38 to your computer and use it in GitHub Desktop.

Select an option

Save divyenduz/7e32495c6840bb9eb888348a9f28ec38 to your computer and use it in GitHub Desktop.
Postgres amen
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 9fd48acb1f8..ce8e7ecb8b7 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -698,7 +698,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
/* ordinary key words in alphabetical order */
%token <keyword> ABORT_P ABSENT ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER
- AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC
+ AGGREGATE ALL ALSO ALTER ALWAYS AMEN ANALYSE ANALYZE AND ANY ARRAY AS ASC
ASENSITIVE ASSERTION ASSIGNMENT ASYMMETRIC ATOMIC AT ATTACH ATTRIBUTE AUTHORIZATION
BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
@@ -11208,6 +11208,16 @@ TransactionStmt:
n->location = -1;
$$ = (Node *) n;
}
+ | AMEN opt_transaction opt_transaction_chain
+ {
+ TransactionStmt *n = makeNode(TransactionStmt);
+
+ n->kind = TRANS_STMT_COMMIT;
+ n->options = NIL;
+ n->chain = $3;
+ n->location = -1;
+ $$ = (Node *) n;
+ }
| ROLLBACK opt_transaction opt_transaction_chain
{
TransactionStmt *n = makeNode(TransactionStmt);
@@ -17743,6 +17753,7 @@ unreserved_keyword:
| ALSO
| ALTER
| ALWAYS
+ | AMEN
| ASENSITIVE
| ASSERTION
| ASSIGNMENT
@@ -18285,6 +18296,7 @@ bare_label_keyword:
| ALSO
| ALTER
| ALWAYS
+ | AMEN
| ANALYSE
| ANALYZE
| AND
diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h
index a4af3f717a1..9659447c738 100644
--- a/src/include/parser/kwlist.h
+++ b/src/include/parser/kwlist.h
@@ -38,6 +38,7 @@ PG_KEYWORD("all", ALL, RESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("also", ALSO, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("alter", ALTER, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("always", ALWAYS, UNRESERVED_KEYWORD, BARE_LABEL)
+PG_KEYWORD("amen", AMEN, UNRESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("analyse", ANALYSE, RESERVED_KEYWORD, BARE_LABEL) /* British spelling */
PG_KEYWORD("analyze", ANALYZE, RESERVED_KEYWORD, BARE_LABEL)
PG_KEYWORD("and", AND, RESERVED_KEYWORD, BARE_LABEL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment