diff options
author | Amit Langote | 2023-06-13 03:52:47 +0000 |
---|---|---|
committer | Amit Langote | 2023-06-14 03:00:10 +0000 |
commit | 0f8cfaf8921fed35f0b92d918ce95eec7b46ff05 (patch) | |
tree | bab872e8982f9a5ed3e119a0bc77a7996858a887 /src/include | |
parent | ae66716bf3ef6fa9b33904eaf15441813a150320 (diff) |
Retain relkind too in RTE_SUBQUERY entries for views.
47bb9db75 modified the ApplyRetrieveRule()'s conversion of a view's
original RTE_RELATION entry into an RTE_SUBQUERY one to retain relid,
rellockmode, and perminfoindex so that the executor can lock the view
and check its permissions. It seems better to also retain
relkind for cross-checking that the exception of an
RTE_SUBQUERY entry being allowed to carry relation details only
applies to views, so do so.
Bump catversion because this changes the output format of
RTE_SUBQUERY RTEs.
Suggested-by: David Steele <david@pgmasters.net>
Reviewed-by: David Steele <david@pgmasters.net>
Reviewed-by: Álvaro Herrera <alvherre@alvh.no-ip.org>
Discussion: https://postgr.es/m/3953179e-9540-e5d1-a743-4bef368785b0%40pgmasters.net
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/catalog/catversion.h | 2 | ||||
-rw-r--r-- | src/include/nodes/parsenodes.h | 14 |
2 files changed, 8 insertions, 8 deletions
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index c784937a0eb..fe70d8396d6 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -57,6 +57,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202305211 +#define CATALOG_VERSION_NO 202306141 #endif diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 0ca298f5a1b..b3bec90e526 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -1056,13 +1056,13 @@ typedef struct RangeTblEntry * this RTE in the containing struct's list of same; 0 if permissions need * not be checked for this RTE. * - * As a special case, relid, rellockmode, and perminfoindex can also be - * set (nonzero) in an RTE_SUBQUERY RTE. This occurs when we convert an - * RTE_RELATION RTE naming a view into an RTE_SUBQUERY containing the - * view's query. We still need to perform run-time locking and permission - * checks on the view, even though it's not directly used in the query - * anymore, and the most expedient way to do that is to retain these - * fields from the old state of the RTE. + * As a special case, relid, relkind, rellockmode, and perminfoindex can + * also be set (nonzero) in an RTE_SUBQUERY RTE. This occurs when we + * convert an RTE_RELATION RTE naming a view into an RTE_SUBQUERY + * containing the view's query. We still need to perform run-time locking + * and permission checks on the view, even though it's not directly used + * in the query anymore, and the most expedient way to do that is to + * retain these fields from the old state of the RTE. * * As a special case, RTE_NAMEDTUPLESTORE can also set relid to indicate * that the tuple format of the tuplestore is the same as the referenced |