diff options
| author | Alvaro Herrera | 2012-10-23 21:07:26 +0000 |
|---|---|---|
| committer | Alvaro Herrera | 2012-10-23 21:24:24 +0000 |
| commit | f4c4335a4aaf5f2ee6e741cdf4f5c8e338d86a2f (patch) | |
| tree | 5367e466c939f55a3bf9dba7275887b309378b16 /src/include | |
| parent | 4c9d0901f135d724a9f3cfa4140a5afd44b10f08 (diff) | |
Add context info to OAT_POST_CREATE security hook
... and have sepgsql use it to determine whether to check permissions
during certain operations. Indexes that are being created as a result
of REINDEX, for instance, do not need to have their permissions checked;
they were already checked when the index was created.
Author: KaiGai Kohei, slightly revised by me
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/catalog/heap.h | 3 | ||||
| -rw-r--r-- | src/include/catalog/index.h | 3 | ||||
| -rw-r--r-- | src/include/catalog/objectaccess.h | 13 |
3 files changed, 17 insertions, 2 deletions
diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h index bc8c63a15e1..1465456cc7d 100644 --- a/src/include/catalog/heap.h +++ b/src/include/catalog/heap.h @@ -66,7 +66,8 @@ extern Oid heap_create_with_catalog(const char *relname, OnCommitAction oncommit, Datum reloptions, bool use_user_acl, - bool allow_system_table_mods); + bool allow_system_table_mods, + bool is_internal); extern void heap_create_init_fork(Relation rel); diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h index eb417cecb74..298641baf7c 100644 --- a/src/include/catalog/index.h +++ b/src/include/catalog/index.h @@ -50,7 +50,8 @@ extern Oid index_create(Relation heapRelation, bool initdeferred, bool allow_system_table_mods, bool skip_build, - bool concurrent); + bool concurrent, + bool is_internal); extern void index_constraint_create(Relation heapRelation, Oid indexRelationId, diff --git a/src/include/catalog/objectaccess.h b/src/include/catalog/objectaccess.h index 3b40dbc4923..b4b84a64d05 100644 --- a/src/include/catalog/objectaccess.h +++ b/src/include/catalog/objectaccess.h @@ -31,6 +31,19 @@ typedef enum ObjectAccessType } ObjectAccessType; /* + * Arguments of OAT_POST_CREATE event + */ +typedef struct +{ + /* + * This flag informs extensions whether the context of this creation + * is invoked by user's operations, or not. E.g, it shall be dealt + * as internal stuff on toast tables or indexes due to type changes. + */ + bool is_internal; +} ObjectAccessPostCreate; + +/* * Arguments of OAT_DROP event */ typedef struct |
