summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorTom Lane2020-09-17 23:38:05 +0000
committerTom Lane2020-09-17 23:38:05 +0000
commit1ed6b895634ce0dc5fd4bd040e87252b32182cba (patch)
treed0f22d227e7df8ca5139baf4eba578de052f6a82 /src/include
parent76f412ab310554acb970a0b73c8d1f37f35548c6 (diff)
Remove support for postfix (right-unary) operators.
This feature has been a thorn in our sides for a long time, causing many grammatical ambiguity problems. It doesn't seem worth the pain to continue to support it, so remove it. There are some follow-on improvements we can make in the grammar, but this commit only removes the bare minimum number of productions, plus assorted backend support code. Note that pg_dump and psql continue to have full support, since they may be used against older servers. However, pg_dump warns about postfix operators. There is also a check in pg_upgrade. Documentation-wise, I (tgl) largely removed the "left unary" terminology in favor of saying "prefix operator", which is a more standard and IMO less confusing term. I included a catversion bump, although no initial catalog data changes here, to mark the boundary at which oprkind = 'r' stopped being valid in pg_operator. Mark Dilger, based on work by myself and Robert Haas; review by John Naylor Discussion: https://postgr.es/m/38ca86db-42ab-9b48-2902-337a0d6b8311@2ndquadrant.com
Diffstat (limited to 'src/include')
-rw-r--r--src/include/catalog/catversion.h2
-rw-r--r--src/include/catalog/pg_operator.h6
-rw-r--r--src/include/parser/parse_oper.h2
3 files changed, 4 insertions, 6 deletions
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h
index 35893599708..365552635b8 100644
--- a/src/include/catalog/catversion.h
+++ b/src/include/catalog/catversion.h
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 202009171
+#define CATALOG_VERSION_NO 202009172
#endif
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index 1daa2638520..62a7dbf23f6 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -41,7 +41,7 @@ CATALOG(pg_operator,2617,OperatorRelationId)
/* operator owner */
Oid oprowner BKI_DEFAULT(PGUID);
- /* 'l', 'r', or 'b' */
+ /* 'l' for prefix or 'b' for infix */
char oprkind BKI_DEFAULT(b);
/* can be used in merge join? */
@@ -50,10 +50,10 @@ CATALOG(pg_operator,2617,OperatorRelationId)
/* can be used in hash join? */
bool oprcanhash BKI_DEFAULT(f);
- /* left arg type, or 0 if 'l' oprkind */
+ /* left arg type, or 0 if prefix operator */
Oid oprleft BKI_LOOKUP(pg_type);
- /* right arg type, or 0 if 'r' oprkind */
+ /* right arg type */
Oid oprright BKI_LOOKUP(pg_type);
/* result datatype */
diff --git a/src/include/parser/parse_oper.h b/src/include/parser/parse_oper.h
index bcd861e43ac..09695a2765c 100644
--- a/src/include/parser/parse_oper.h
+++ b/src/include/parser/parse_oper.h
@@ -31,8 +31,6 @@ extern Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError);
/* NB: the selected operator may require coercion of the input types! */
extern Operator oper(ParseState *pstate, List *op, Oid arg1, Oid arg2,
bool noError, int location);
-extern Operator right_oper(ParseState *pstate, List *op, Oid arg,
- bool noError, int location);
extern Operator left_oper(ParseState *pstate, List *op, Oid arg,
bool noError, int location);