Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
544b2808
Commit
544b2808
authored
Apr 21, 2021
by
Peter Eisentraut
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
doc: Improve hyphenation consistency
parent
32860656
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
31 additions
and
31 deletions
+31
-31
doc/src/sgml/catalogs.sgml
doc/src/sgml/catalogs.sgml
+7
-7
doc/src/sgml/ddl.sgml
doc/src/sgml/ddl.sgml
+1
-1
doc/src/sgml/ref/alter_policy.sgml
doc/src/sgml/ref/alter_policy.sgml
+1
-1
doc/src/sgml/ref/alter_table.sgml
doc/src/sgml/ref/alter_table.sgml
+3
-3
doc/src/sgml/ref/create_policy.sgml
doc/src/sgml/ref/create_policy.sgml
+3
-3
doc/src/sgml/ref/drop_policy.sgml
doc/src/sgml/ref/drop_policy.sgml
+3
-3
doc/src/sgml/rules.sgml
doc/src/sgml/rules.sgml
+1
-1
src/backend/commands/copyto.c
src/backend/commands/copyto.c
+1
-1
src/backend/commands/functioncmds.c
src/backend/commands/functioncmds.c
+1
-1
src/backend/executor/execMain.c
src/backend/executor/execMain.c
+2
-2
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/path/allpaths.c
+1
-1
src/backend/rewrite/rewriteHandler.c
src/backend/rewrite/rewriteHandler.c
+2
-2
src/backend/rewrite/rowsecurity.c
src/backend/rewrite/rowsecurity.c
+2
-2
src/include/catalog/pg_authid.h
src/include/catalog/pg_authid.h
+1
-1
src/test/regress/expected/rowsecurity.out
src/test/regress/expected/rowsecurity.out
+1
-1
src/test/regress/sql/rowsecurity.sql
src/test/regress/sql/rowsecurity.sql
+1
-1
No files found.
doc/src/sgml/catalogs.sgml
View file @
544b2808
...
@@ -1556,7 +1556,7 @@
...
@@ -1556,7 +1556,7 @@
<structfield>rolbypassrls</structfield> <type>bool</type>
<structfield>rolbypassrls</structfield> <type>bool</type>
</para>
</para>
<para>
<para>
Role bypasses every row
level security policy, see
Role bypasses every row
-
level security policy, see
<xref linkend="ddl-rowsecurity"/> for more information.
<xref linkend="ddl-rowsecurity"/> for more information.
</para></entry>
</para></entry>
</row>
</row>
...
@@ -2130,7 +2130,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l
...
@@ -2130,7 +2130,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l
<structfield>relrowsecurity</structfield> <type>bool</type>
<structfield>relrowsecurity</structfield> <type>bool</type>
</para>
</para>
<para>
<para>
True if table has row
level security enabled; see
True if table has row
-
level security enabled; see
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
</para></entry>
</para></entry>
</row>
</row>
...
@@ -2140,7 +2140,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l
...
@@ -2140,7 +2140,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l
<structfield>relforcerowsecurity</structfield> <type>bool</type>
<structfield>relforcerowsecurity</structfield> <type>bool</type>
</para>
</para>
<para>
<para>
True if row
level security (when enabled) will also apply to table owner; see
True if row
-
level security (when enabled) will also apply to table owner; see
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
<link linkend="catalog-pg-policy"><structname>pg_policy</structname></link> catalog
</para></entry>
</para></entry>
</row>
</row>
...
@@ -5531,7 +5531,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l
...
@@ -5531,7 +5531,7 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l
</indexterm>
</indexterm>
<para>
<para>
The catalog <structname>pg_policy</structname> stores row
level
The catalog <structname>pg_policy</structname> stores row
-
level
security policies for tables. A policy includes the kind of
security policies for tables. A policy includes the kind of
command that it applies to (possibly all commands), the roles that it
command that it applies to (possibly all commands), the roles that it
applies to, the expression to be added as a security-barrier
applies to, the expression to be added as a security-barrier
...
@@ -11765,7 +11765,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
...
@@ -11765,7 +11765,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
<structfield>rolbypassrls</structfield> <type>bool</type>
<structfield>rolbypassrls</structfield> <type>bool</type>
</para>
</para>
<para>
<para>
Role bypasses every row
level security policy, see
Role bypasses every row
-
level security policy, see
<xref linkend="ddl-rowsecurity"/> for more information.
<xref linkend="ddl-rowsecurity"/> for more information.
</para></entry>
</para></entry>
</row>
</row>
...
@@ -12554,7 +12554,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
...
@@ -12554,7 +12554,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
<structfield>usebypassrls</structfield> <type>bool</type>
<structfield>usebypassrls</structfield> <type>bool</type>
</para>
</para>
<para>
<para>
User bypasses every row
level security policy, see
User bypasses every row
-
level security policy, see
<xref linkend="ddl-rowsecurity"/> for more information.
<xref linkend="ddl-rowsecurity"/> for more information.
</para></entry>
</para></entry>
</row>
</row>
...
@@ -13667,7 +13667,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
...
@@ -13667,7 +13667,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
<structfield>usebypassrls</structfield> <type>bool</type>
<structfield>usebypassrls</structfield> <type>bool</type>
</para>
</para>
<para>
<para>
User bypasses every row
level security policy, see
User bypasses every row
-
level security policy, see
<xref linkend="ddl-rowsecurity"/> for more information.
<xref linkend="ddl-rowsecurity"/> for more information.
</para></entry>
</para></entry>
</row>
</row>
...
...
doc/src/sgml/ddl.sgml
View file @
544b2808
...
@@ -2382,7 +2382,7 @@ INSERT INTO passwd VALUES
...
@@ -2382,7 +2382,7 @@ INSERT INTO passwd VALUES
INSERT
INTO
passwd
VALUES
INSERT
INTO
passwd
VALUES
(
'alice'
,
'xxx'
,
2
,
1
,
'Alice'
,
'098-765-4321'
,
null
,
'/home/alice'
,
'/bin/zsh'
);
(
'alice'
,
'xxx'
,
2
,
1
,
'Alice'
,
'098-765-4321'
,
null
,
'/home/alice'
,
'/bin/zsh'
);
--
Be
sure
to
enable
row
level
security
on
the
table
--
Be
sure
to
enable
row
-
level
security
on
the
table
ALTER
TABLE
passwd
ENABLE
ROW
LEVEL
SECURITY
;
ALTER
TABLE
passwd
ENABLE
ROW
LEVEL
SECURITY
;
--
Create
policies
--
Create
policies
...
...
doc/src/sgml/ref/alter_policy.sgml
View file @
544b2808
...
@@ -16,7 +16,7 @@ PostgreSQL documentation
...
@@ -16,7 +16,7 @@ PostgreSQL documentation
<refnamediv>
<refnamediv>
<refname>ALTER POLICY</refname>
<refname>ALTER POLICY</refname>
<refpurpose>change the definition of a row
level security policy</refpurpose>
<refpurpose>change the definition of a row
-
level security policy</refpurpose>
</refnamediv>
</refnamediv>
<refsynopsisdiv>
<refsynopsisdiv>
...
...
doc/src/sgml/ref/alter_table.sgml
View file @
544b2808
...
@@ -611,7 +611,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
...
@@ -611,7 +611,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
These forms control the application of row security policies belonging
These forms control the application of row security policies belonging
to the table. If enabled and no policies exist for the table, then a
to the table. If enabled and no policies exist for the table, then a
default-deny policy is applied. Note that policies can exist for a table
default-deny policy is applied. Note that policies can exist for a table
even if row
level security is disabled. In this case, the policies will
even if row
-
level security is disabled. In this case, the policies will
<emphasis>not</emphasis> be applied and the policies will be ignored.
<emphasis>not</emphasis> be applied and the policies will be ignored.
See also
See also
<link linkend="sql-createpolicy"><command>CREATE POLICY</command></link>.
<link linkend="sql-createpolicy"><command>CREATE POLICY</command></link>.
...
@@ -624,9 +624,9 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
...
@@ -624,9 +624,9 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
<listitem>
<listitem>
<para>
<para>
These forms control the application of row security policies belonging
These forms control the application of row security policies belonging
to the table when the user is the table owner. If enabled, row
level
to the table when the user is the table owner. If enabled, row
-
level
security policies will be applied when the user is the table owner. If
security policies will be applied when the user is the table owner. If
disabled (the default) then row
level security will not be applied when
disabled (the default) then row
-
level security will not be applied when
the user is the table owner.
the user is the table owner.
See also
See also
<link linkend="sql-createpolicy"><command>CREATE POLICY</command></link>.
<link linkend="sql-createpolicy"><command>CREATE POLICY</command></link>.
...
...
doc/src/sgml/ref/create_policy.sgml
View file @
544b2808
...
@@ -16,7 +16,7 @@ PostgreSQL documentation
...
@@ -16,7 +16,7 @@ PostgreSQL documentation
<refnamediv>
<refnamediv>
<refname>CREATE POLICY</refname>
<refname>CREATE POLICY</refname>
<refpurpose>define a new row
level security policy for a table</refpurpose>
<refpurpose>define a new row
-
level security policy for a table</refpurpose>
</refnamediv>
</refnamediv>
<refsynopsisdiv>
<refsynopsisdiv>
...
@@ -188,7 +188,7 @@ CREATE POLICY <replaceable class="parameter">name</replaceable> ON <replaceable
...
@@ -188,7 +188,7 @@ CREATE POLICY <replaceable class="parameter">name</replaceable> ON <replaceable
Any <acronym>SQL</acronym> conditional expression (returning
Any <acronym>SQL</acronym> conditional expression (returning
<type>boolean</type>). The conditional expression cannot contain
<type>boolean</type>). The conditional expression cannot contain
any aggregate or window functions. This expression will be added
any aggregate or window functions. This expression will be added
to queries that refer to the table if row
level security is enabled.
to queries that refer to the table if row
-
level security is enabled.
Rows for which the expression returns true will be visible. Any
Rows for which the expression returns true will be visible. Any
rows for which the expression returns false or null will not be
rows for which the expression returns false or null will not be
visible to the user (in a <command>SELECT</command>), and will not be
visible to the user (in a <command>SELECT</command>), and will not be
...
@@ -207,7 +207,7 @@ CREATE POLICY <replaceable class="parameter">name</replaceable> ON <replaceable
...
@@ -207,7 +207,7 @@ CREATE POLICY <replaceable class="parameter">name</replaceable> ON <replaceable
<type>boolean</type>). The conditional expression cannot contain
<type>boolean</type>). The conditional expression cannot contain
any aggregate or window functions. This expression will be used in
any aggregate or window functions. This expression will be used in
<command>INSERT</command> and <command>UPDATE</command> queries against
<command>INSERT</command> and <command>UPDATE</command> queries against
the table if row
level security is enabled. Only rows for which the
the table if row
-
level security is enabled. Only rows for which the
expression evaluates to true will be allowed. An error will be thrown
expression evaluates to true will be allowed. An error will be thrown
if the expression evaluates to false or null for any of the records
if the expression evaluates to false or null for any of the records
inserted or any of the records that result from the update. Note that
inserted or any of the records that result from the update. Note that
...
...
doc/src/sgml/ref/drop_policy.sgml
View file @
544b2808
...
@@ -16,7 +16,7 @@ PostgreSQL documentation
...
@@ -16,7 +16,7 @@ PostgreSQL documentation
<refnamediv>
<refnamediv>
<refname>DROP POLICY</refname>
<refname>DROP POLICY</refname>
<refpurpose>remove a row
level security policy from a table</refpurpose>
<refpurpose>remove a row
-
level security policy from a table</refpurpose>
</refnamediv>
</refnamediv>
<refsynopsisdiv>
<refsynopsisdiv>
...
@@ -31,9 +31,9 @@ DROP POLICY [ IF EXISTS ] <replaceable class="parameter">name</replaceable> ON <
...
@@ -31,9 +31,9 @@ DROP POLICY [ IF EXISTS ] <replaceable class="parameter">name</replaceable> ON <
<para>
<para>
<command>DROP POLICY</command> removes the specified policy from the table.
<command>DROP POLICY</command> removes the specified policy from the table.
Note that if the last policy is removed for a table and the table still has
Note that if the last policy is removed for a table and the table still has
row
level security enabled via <command>ALTER TABLE</command>, then the
row
-
level security enabled via <command>ALTER TABLE</command>, then the
default-deny policy will be used. <literal>ALTER TABLE ... DISABLE ROW
default-deny policy will be used. <literal>ALTER TABLE ... DISABLE ROW
LEVEL SECURITY</literal> can be used to disable row
level security for a
LEVEL SECURITY</literal> can be used to disable row
-
level security for a
table, whether policies for the table exist or not.
table, whether policies for the table exist or not.
</para>
</para>
</refsect1>
</refsect1>
...
...
doc/src/sgml/rules.sgml
View file @
544b2808
...
@@ -2123,7 +2123,7 @@ SELECT * FROM phone_number WHERE tricky(person, phone);
...
@@ -2123,7 +2123,7 @@ SELECT * FROM phone_number WHERE tricky(person, phone);
</para>
</para>
<para>
<para>
When it is necessary for a view to provide row
level security, the
When it is necessary for a view to provide row
-
level security, the
<literal>security_barrier</literal> attribute should be applied to
<literal>security_barrier</literal> attribute should be applied to
the view. This prevents maliciously-chosen functions and operators from
the view. This prevents maliciously-chosen functions and operators from
being passed values from rows until after the view has done its work. For
being passed values from rows until after the view has done its work. For
...
...
src/backend/commands/copyto.c
View file @
544b2808
...
@@ -512,7 +512,7 @@ BeginCopyTo(ParseState *pstate,
...
@@ -512,7 +512,7 @@ BeginCopyTo(ParseState *pstate,
CURSOR_OPT_PARALLEL_OK
,
NULL
);
CURSOR_OPT_PARALLEL_OK
,
NULL
);
/*
/*
* With row
level security and a user using "COPY relation TO", we
* With row
-
level security and a user using "COPY relation TO", we
* have to convert the "COPY relation TO" to a query-based COPY (eg:
* have to convert the "COPY relation TO" to a query-based COPY (eg:
* "COPY (SELECT * FROM relation) TO"), to allow the rewriter to add
* "COPY (SELECT * FROM relation) TO"), to allow the rewriter to add
* in any RLS clauses.
* in any RLS clauses.
...
...
src/backend/commands/functioncmds.c
View file @
544b2808
...
@@ -1129,7 +1129,7 @@ CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt)
...
@@ -1129,7 +1129,7 @@ CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt)
/*
/*
* Only superuser is allowed to create leakproof functions because
* Only superuser is allowed to create leakproof functions because
* leakproof functions can see tuples which have not yet been filtered out
* leakproof functions can see tuples which have not yet been filtered out
* by security barrier views or row
level security policies.
* by security barrier views or row
-
level security policies.
*/
*/
if
(
isLeakProof
&&
!
superuser
())
if
(
isLeakProof
&&
!
superuser
())
ereport
(
ERROR
,
ereport
(
ERROR
,
...
...
src/backend/executor/execMain.c
View file @
544b2808
...
@@ -558,7 +558,7 @@ ExecutorRewind(QueryDesc *queryDesc)
...
@@ -558,7 +558,7 @@ ExecutorRewind(QueryDesc *queryDesc)
* Returns true if permissions are adequate. Otherwise, throws an appropriate
* Returns true if permissions are adequate. Otherwise, throws an appropriate
* error if ereport_on_violation is true, or simply returns false otherwise.
* error if ereport_on_violation is true, or simply returns false otherwise.
*
*
* Note that this does NOT address row
level security policies (aka: RLS). If
* Note that this does NOT address row
-
level security policies (aka: RLS). If
* rows will be returned to the user as a result of this permission check
* rows will be returned to the user as a result of this permission check
* passing, then RLS also needs to be consulted (and check_enable_rls()).
* passing, then RLS also needs to be consulted (and check_enable_rls()).
*
*
...
@@ -1947,7 +1947,7 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
...
@@ -1947,7 +1947,7 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
*
*
* Note that this needs to be called multiple times to ensure that all kinds of
* Note that this needs to be called multiple times to ensure that all kinds of
* WITH CHECK OPTIONs are handled (both those from views which have the WITH
* WITH CHECK OPTIONs are handled (both those from views which have the WITH
* CHECK OPTION set and from row
level security policies). See ExecInsert()
* CHECK OPTION set and from row
-
level security policies). See ExecInsert()
* and ExecUpdate().
* and ExecUpdate().
*/
*/
void
void
...
...
src/backend/optimizer/path/allpaths.c
View file @
544b2808
...
@@ -2141,7 +2141,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
...
@@ -2141,7 +2141,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel,
/*
/*
* If the subquery has the "security_barrier" flag, it means the subquery
* If the subquery has the "security_barrier" flag, it means the subquery
* originated from a view that must enforce row
level security. Then we
* originated from a view that must enforce row
-
level security. Then we
* must not push down quals that contain leaky functions. (Ideally this
* must not push down quals that contain leaky functions. (Ideally this
* would be checked inside subquery_is_pushdown_safe, but since we don't
* would be checked inside subquery_is_pushdown_safe, but since we don't
* currently pass the RTE to that function, we must do it here.)
* currently pass the RTE to that function, we must do it here.)
...
...
src/backend/rewrite/rewriteHandler.c
View file @
544b2808
...
@@ -2159,7 +2159,7 @@ fireRIRrules(Query *parsetree, List *activeRIRs)
...
@@ -2159,7 +2159,7 @@ fireRIRrules(Query *parsetree, List *activeRIRs)
QTW_IGNORE_RC_SUBQUERIES
);
QTW_IGNORE_RC_SUBQUERIES
);
/*
/*
* Apply any row
level security policies. We do this last because it
* Apply any row
-
level security policies. We do this last because it
* requires special recursion detection if the new quals have sublink
* requires special recursion detection if the new quals have sublink
* subqueries, and if we did it in the loop above query_tree_walker would
* subqueries, and if we did it in the loop above query_tree_walker would
* then recurse into those quals a second time.
* then recurse into those quals a second time.
...
@@ -2249,7 +2249,7 @@ fireRIRrules(Query *parsetree, List *activeRIRs)
...
@@ -2249,7 +2249,7 @@ fireRIRrules(Query *parsetree, List *activeRIRs)
}
}
/*
/*
* Make sure the query is marked correctly if row
level security
* Make sure the query is marked correctly if row
-
level security
* applies, or if the new quals had sublinks.
* applies, or if the new quals had sublinks.
*/
*/
if
(
hasRowSecurity
)
if
(
hasRowSecurity
)
...
...
src/backend/rewrite/rowsecurity.c
View file @
544b2808
/*
/*
* rewrite/rowsecurity.c
* rewrite/rowsecurity.c
* Routines to support policies for row
level security (aka RLS).
* Routines to support policies for row
-
level security (aka RLS).
*
*
* Policies in PostgreSQL provide a mechanism to limit what records are
* Policies in PostgreSQL provide a mechanism to limit what records are
* returned to a user and what records a user is permitted to add to a table.
* returned to a user and what records a user is permitted to add to a table.
...
@@ -100,7 +100,7 @@ row_security_policy_hook_type row_security_policy_hook_restrictive = NULL;
...
@@ -100,7 +100,7 @@ row_security_policy_hook_type row_security_policy_hook_restrictive = NULL;
* Get any row security quals and WithCheckOption checks that should be
* Get any row security quals and WithCheckOption checks that should be
* applied to the specified RTE.
* applied to the specified RTE.
*
*
* In addition, hasRowSecurity is set to true if row
level security is enabled
* In addition, hasRowSecurity is set to true if row
-
level security is enabled
* (even if this RTE doesn't have any row security quals), and hasSubLinks is
* (even if this RTE doesn't have any row security quals), and hasSubLinks is
* set to true if any of the quals returned contain sublinks.
* set to true if any of the quals returned contain sublinks.
*/
*/
...
...
src/include/catalog/pg_authid.h
View file @
544b2808
...
@@ -38,7 +38,7 @@ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(284
...
@@ -38,7 +38,7 @@ CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(284
bool
rolcreatedb
;
/* allowed to create databases? */
bool
rolcreatedb
;
/* allowed to create databases? */
bool
rolcanlogin
;
/* allowed to log in as session user? */
bool
rolcanlogin
;
/* allowed to log in as session user? */
bool
rolreplication
;
/* role used for streaming replication */
bool
rolreplication
;
/* role used for streaming replication */
bool
rolbypassrls
;
/* bypasses row
level security? */
bool
rolbypassrls
;
/* bypasses row
-
level security? */
int32
rolconnlimit
;
/* max connections allowed (-1=no limit) */
int32
rolconnlimit
;
/* max connections allowed (-1=no limit) */
/* remaining fields may be null; use heap_getattr to read them! */
/* remaining fields may be null; use heap_getattr to read them! */
...
...
src/test/regress/expected/rowsecurity.out
View file @
544b2808
...
@@ -3514,7 +3514,7 @@ CREATE POLICY p ON t USING (c % 2 = 1);
...
@@ -3514,7 +3514,7 @@ CREATE POLICY p ON t USING (c % 2 = 1);
ALTER TABLE t ENABLE ROW LEVEL SECURITY;
ALTER TABLE t ENABLE ROW LEVEL SECURITY;
SAVEPOINT q;
SAVEPOINT q;
CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD
CREATE RULE "_RETURN" AS ON SELECT TO t DO INSTEAD
SELECT * FROM generate_series(1,5) t0(c); -- fails due to row
level security enabled
SELECT * FROM generate_series(1,5) t0(c); -- fails due to row
-
level security enabled
ERROR: could not convert table "t" to a view because it has row security enabled
ERROR: could not convert table "t" to a view because it has row security enabled
ROLLBACK TO q;
ROLLBACK TO q;
ALTER TABLE t DISABLE ROW LEVEL SECURITY;
ALTER TABLE t DISABLE ROW LEVEL SECURITY;
...
...
src/test/regress/sql/rowsecurity.sql
View file @
544b2808
...
@@ -1445,7 +1445,7 @@ ALTER TABLE t ENABLE ROW LEVEL SECURITY;
...
@@ -1445,7 +1445,7 @@ ALTER TABLE t ENABLE ROW LEVEL SECURITY;
SAVEPOINT
q
;
SAVEPOINT
q
;
CREATE
RULE
"_RETURN"
AS
ON
SELECT
TO
t
DO
INSTEAD
CREATE
RULE
"_RETURN"
AS
ON
SELECT
TO
t
DO
INSTEAD
SELECT
*
FROM
generate_series
(
1
,
5
)
t0
(
c
);
-- fails due to row
level security enabled
SELECT
*
FROM
generate_series
(
1
,
5
)
t0
(
c
);
-- fails due to row
-
level security enabled
ROLLBACK
TO
q
;
ROLLBACK
TO
q
;
ALTER
TABLE
t
DISABLE
ROW
LEVEL
SECURITY
;
ALTER
TABLE
t
DISABLE
ROW
LEVEL
SECURITY
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment