This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 79b0d73 Add SQLServer Revoke statement (#16032)
79b0d73 is described below
commit 79b0d731c4c9ad2bd3b39c8c598e4d65312859b2
Author: Thanoshan MV <[email protected]>
AuthorDate: Mon Mar 14 16:59:27 2022 +0530
Add SQLServer Revoke statement (#16032)
* Add SQLServer Revoke statement
* Change List to Collection in SQLServerRevoke statement
---
.../main/antlr4/imports/sqlserver/DCLStatement.g4 | 10 ++++-
.../impl/SQLServerDCLStatementSQLVisitor.java | 45 ++++++++++++++++++----
.../sqlserver/dcl/SQLServerRevokeStatement.java | 8 ++++
.../statement/dcl/impl/RevokeStatementAssert.java | 4 ++
.../SQLServerRevokeStatementAssert.java} | 28 ++++++++------
.../statement/dcl/RevokeStatementTestCase.java | 4 ++
.../src/main/resources/case/dcl/revoke.xml | 42 ++++++++++++++++++++
.../resources/sql/supported/dcl/revoke-user.xml | 25 +++++++++++-
8 files changed, 145 insertions(+), 21 deletions(-)
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
index 2ebb27a52f..36dcccb 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/antlr4/imports/sqlserver/DCLStatement.g4
@@ -56,7 +56,15 @@ principal
;
revoke
- : REVOKE (optionForClause? classPrivilegesClause |
classTypePrivilegesClause | roleClause)
+ : REVOKE (optionForClause? revokeClassPrivilegesClause |
revokeClassTypePrivilegesClause)
+ ;
+
+revokeClassPrivilegesClause
+ : grantClassPrivileges (ON grantOnClassClause)? (TO | FROM) principal
(COMMA_ principal)* (CASCADE)? (AS principal)?
+ ;
+
+revokeClassTypePrivilegesClause
+ : grantClassTypePrivileges (ON grantOnClassTypeClause)? (TO | FROM)
principal (COMMA_ principal)* (CASCADE)?
;
deny
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
index 7b5eb1f..1630842 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/impl/SQLServerDCLStatementSQLVisitor.java
@@ -41,6 +41,8 @@ import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.Gra
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.GrantContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.IgnoredNameIdentifierContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.OwnerContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.RevokeClassPrivilegesClauseContext;
+import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.RevokeClassTypePrivilegesClauseContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.RevokeContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.SecurableContext;
import
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.SetUserContext;
@@ -96,30 +98,59 @@ public final class SQLServerDCLStatementSQLVisitor extends
SQLServerStatementSQL
}
}
if (null != ctx.grantClassTypePrivilegesClause()) {
- for (SimpleTableSegment each :
getTableFromGrantPrivilegeClause(ctx.grantClassTypePrivilegesClause())) {
+ for (SimpleTableSegment each :
getTableFromGrantTypePrivilegeClause(ctx.grantClassTypePrivilegesClause())) {
result.getTables().add(each);
}
}
return result;
}
+ private Collection<SimpleTableSegment>
getTableFromGrantPrivilegeClause(final GrantClassPrivilegesClauseContext ctx) {
+ Collection<SimpleTableSegment> result = new ArrayList<>();
+ if (null != ctx.grantOnClassClause()) {
+ if (null != ctx.grantOnClassClause().classItem() && null !=
ctx.grantOnClassClause().classItem().OBJECT()) {
+ result = Collections.singletonList((SimpleTableSegment)
visit(ctx.grantOnClassClause().securable()));
+ }
+ if (null !=
ctx.grantClassPrivileges().privilegeType().get(0).objectPermission()) {
+ result = Collections.singletonList((SimpleTableSegment)
visit(ctx.grantOnClassClause().securable()));
+ }
+ if (null !=
ctx.grantClassPrivileges().privilegeType().get(0).PRIVILEGES()) {
+ result = Collections.singletonList((SimpleTableSegment)
visit(ctx.grantOnClassClause().securable()));
+ }
+ }
+ return result;
+ }
+
+ private Collection<SimpleTableSegment>
getTableFromGrantTypePrivilegeClause(final
GrantClassTypePrivilegesClauseContext ctx) {
+ Collection<SimpleTableSegment> result = new ArrayList<>();
+ if (null != ctx.grantOnClassTypeClause() && null !=
ctx.grantOnClassTypeClause().grantClassType() && null !=
ctx.grantOnClassTypeClause().grantClassType().OBJECT()) {
+ result = Collections.singletonList((SimpleTableSegment)
visit(ctx.grantOnClassTypeClause().securable()));
+ }
+ return result;
+ }
+
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
SQLServerRevokeStatement result = new SQLServerRevokeStatement();
- if (null != ctx.classPrivilegesClause()) {
- for (SimpleTableSegment each :
getTableFromPrivilegeClause(ctx.classPrivilegesClause())) {
+ if (null != ctx.revokeClassPrivilegesClause()) {
+ for (SimpleTableSegment each :
getTableFromRevokeClassPrivilegesClause(ctx.revokeClassPrivilegesClause())) {
result.getTables().add(each);
}
+ if (null !=
ctx.revokeClassPrivilegesClause().grantClassPrivileges().columnNames()) {
+ for (ColumnNamesContext each :
ctx.revokeClassPrivilegesClause().grantClassPrivileges().columnNames()) {
+
result.getColumns().addAll(((CollectionValue<ColumnSegment>)
visit(each)).getValue());
+ }
+ }
}
- if (null != ctx.classTypePrivilegesClause()) {
- for (SimpleTableSegment each :
getTableFromPrivilegeClause(ctx.classTypePrivilegesClause())) {
+ if (null != ctx.revokeClassTypePrivilegesClause()) {
+ for (SimpleTableSegment each :
getTableFromRevokeClassTypePrivilegesClause(ctx.revokeClassTypePrivilegesClause()))
{
result.getTables().add(each);
}
}
return result;
}
- private Collection<SimpleTableSegment>
getTableFromGrantPrivilegeClause(final GrantClassPrivilegesClauseContext ctx) {
+ private Collection<SimpleTableSegment>
getTableFromRevokeClassPrivilegesClause(final
RevokeClassPrivilegesClauseContext ctx) {
Collection<SimpleTableSegment> result = new ArrayList<>();
if (null != ctx.grantOnClassClause()) {
if (null != ctx.grantOnClassClause().classItem() && null !=
ctx.grantOnClassClause().classItem().OBJECT()) {
@@ -135,7 +166,7 @@ public final class SQLServerDCLStatementSQLVisitor extends
SQLServerStatementSQL
return result;
}
- private Collection<SimpleTableSegment>
getTableFromGrantPrivilegeClause(final GrantClassTypePrivilegesClauseContext
ctx) {
+ private Collection<SimpleTableSegment>
getTableFromRevokeClassTypePrivilegesClause(final
RevokeClassTypePrivilegesClauseContext ctx) {
Collection<SimpleTableSegment> result = new ArrayList<>();
if (null != ctx.grantOnClassTypeClause() && null !=
ctx.grantOnClassTypeClause().grantClassType() && null !=
ctx.grantOnClassTypeClause().grantClassType().OBJECT()) {
result = Collections.singletonList((SimpleTableSegment)
visit(ctx.grantOnClassTypeClause().securable()));
diff --git
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerRevokeStatement.java
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerRevokeStatement.java
index d1804b1..7c7d326 100644
---
a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerRevokeStatement.java
+++
b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/sqlserver/dcl/SQLServerRevokeStatement.java
@@ -17,13 +17,21 @@
package
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dcl;
+import lombok.Getter;
import lombok.ToString;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.RevokeStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.SQLServerStatement;
+import java.util.Collection;
+import java.util.LinkedList;
+
/**
* SQLServer revoke statement.
*/
@ToString
+@Getter
public final class SQLServerRevokeStatement extends RevokeStatement implements
SQLServerStatement {
+
+ private final Collection<ColumnSegment> columns = new LinkedList<>();
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/RevokeStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/RevokeStatementAssert.java
index 20bba52..17052ac 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/RevokeStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/RevokeStatementAssert.java
@@ -21,8 +21,10 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.RevokeStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dcl.MySQLRevokeStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dcl.SQLServerRevokeStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dcl.impl.mysql.MySQLRevokeStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dcl.impl.sqlserver.SQLServerRevokeStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dcl.RevokeStatementTestCase;
/**
@@ -41,6 +43,8 @@ public final class RevokeStatementAssert {
public static void assertIs(final SQLCaseAssertContext assertContext,
final RevokeStatement actual, final RevokeStatementTestCase expected) {
if (actual instanceof MySQLRevokeStatement) {
MySQLRevokeStatementAssert.assertIs(assertContext,
(MySQLRevokeStatement) actual, expected);
+ } else if (actual instanceof SQLServerRevokeStatement) {
+ SQLServerRevokeStatementAssert.assertIs(assertContext,
(SQLServerRevokeStatement) actual, expected);
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/RevokeStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/sqlserver/SQLServerRevokeStatementAssert.java
similarity index 64%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/RevokeStatementAssert.java
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/sqlserver/SQLServerRevokeStatementAssert.java
index 20bba52..956a47f 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/RevokeStatementAssert.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/dcl/impl/sqlserver/SQLServerRevokeStatementAssert.java
@@ -15,32 +15,36 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dcl.impl;
+package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dcl.impl.sqlserver;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.sql.parser.sql.common.statement.dcl.RevokeStatement;
-import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dcl.MySQLRevokeStatement;
+import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dcl.SQLServerRevokeStatement;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.dcl.impl.mysql.MySQLRevokeStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.column.ColumnAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.table.TableAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dcl.RevokeStatementTestCase;
+
/**
- * Revoke statement assert.
+ * SQLServer Revoke statement assert.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class RevokeStatementAssert {
+public final class SQLServerRevokeStatementAssert {
/**
- * Assert revoke statement is correct with expected parser result.
- *
+ * Assert SQLServer Revoke statement is correct with expected parser
result.
+ *
* @param assertContext assert context
- * @param actual actual revoke statement
+ * @param actual actual SQLServer revoke statement
* @param expected expected revoke statement test case
*/
- public static void assertIs(final SQLCaseAssertContext assertContext,
final RevokeStatement actual, final RevokeStatementTestCase expected) {
- if (actual instanceof MySQLRevokeStatement) {
- MySQLRevokeStatementAssert.assertIs(assertContext,
(MySQLRevokeStatement) actual, expected);
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final SQLServerRevokeStatement actual, final RevokeStatementTestCase expected) {
+ if (0 != expected.getTables().size()) {
+ TableAssert.assertIs(assertContext, actual.getTables(),
expected.getTables());
+ }
+ if (0 != expected.getColumns().size()) {
+ ColumnAssert.assertIs(assertContext, actual.getColumns(),
expected.getColumns());
}
}
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/RevokeStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/RevokeStatementTestCase.java
index 89a1f21..8acfeed 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/RevokeStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/dcl/RevokeStatementTestCase.java
@@ -18,6 +18,7 @@
package
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dcl;
import lombok.Getter;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.column.ExpectedColumn;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.table.ExpectedSimpleTable;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
@@ -33,4 +34,7 @@ public final class RevokeStatementTestCase extends
SQLParserTestCase {
@XmlElement(name = "table")
private final List<ExpectedSimpleTable> tables = new LinkedList<>();
+
+ @XmlElement(name = "column")
+ private final List<ExpectedColumn> columns = new LinkedList<>();
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/revoke.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/revoke.xml
index 5ac1956a..cfa8343 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/revoke.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dcl/revoke.xml
@@ -173,6 +173,7 @@
<revoke sql-case-id="revoke_select_to_users">
<table name="t_order" start-index="28" stop-index="34" />
+ <column name="order_id" start-index="15" stop-index="22" />
</revoke>
<revoke sql-case-id="revoke_crud_on_table">
@@ -186,4 +187,45 @@
<revoke sql-case-id="revoke_select_on_table_for_sqlserver">
<table name="t_order" start-index="17" stop-index="23" />
</revoke>
+
+ <revoke
sql-case-id="revoke_view_definition_on_availability_group_to_login" />
+ <revoke sql-case-id="revoke_take_ownership_on_availability_group_to_user"
/>
+ <revoke sql-case-id="revoke_grant_option_on_availability_group_to_user" />
+ <revoke sql-case-id="revoke_create_certificate_from_user" />
+ <revoke sql-case-id="revoke_references_from_role" />
+ <revoke sql-case-id="revoke_view_definition_from_user" />
+ <revoke sql-case-id="revoke_control_on_user" />
+ <revoke sql-case-id="revoke_view_definition_on_role_from_user" />
+ <revoke sql-case-id="revoke_impersonate_on_user" />
+ <revoke sql-case-id="revoke_view_definition_on_endpoint_from_login" />
+ <revoke sql-case-id="revoke_take_ownership_on_endpoint_from_user" />
+
+ <revoke sql-case-id="revoke_select_on_object_from_user">
+ <table name="t_order" start-index="25" stop-index="35" >
+ <owner name="db1" start-index="25" stop-index="27" />
+ </table>
+ </revoke>
+
+ <revoke sql-case-id="revoke_execute_on_object_from_role">
+ <table name="t_order" start-index="26" stop-index="36" >
+ <owner name="db1" start-index="26" stop-index="28" />
+ </table>
+ </revoke>
+
+ <revoke sql-case-id="revoke_references_on_object_from_user">
+ <table name="t_order" start-index="40" stop-index="50" >
+ <owner name="db1" start-index="40" stop-index="42" />
+ </table>
+ <column name="order_id" start-index="19" stop-index="26" />
+ </revoke>
+
+ <revoke sql-case-id="revoke_view_server_state_from_login" />
+ <revoke sql-case-id="revoke_grant_option_for_connect_sql_from_login" />
+ <revoke sql-case-id="revoke_impersonate_on_login_from_windows_user" />
+ <revoke sql-case-id="revoke_view_definition_on_login" />
+ <revoke sql-case-id="revoke_view_definition_on_server_role" />
+ <revoke sql-case-id="revoke_alter_on_symmetric_key_to_user" />
+ <revoke sql-case-id="revoke_execute_on_system_object" />
+ <revoke sql-case-id="revoke_view_definition_on_type" />
+ <revoke sql-case-id="revoke_execute_on_xml_schema_collection" />
</sql-parser-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/revoke-user.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/revoke-user.xml
index bd4d2fe..8ccf8f4 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/revoke-user.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/dcl/revoke-user.xml
@@ -18,7 +18,7 @@
<sql-cases>
<sql-case id="revoke_user_without_hostname" value="REVOKE SELECT, UPDATE
on t_order from user_dev" db-types="Oracle,PostgreSQL,openGauss,SQLServer" />
- <sql-case id="revoke_role" value="REVOKE role_dev from user_dev"
db-types="Oracle,PostgreSQL,openGauss,SQLServer" />
+ <sql-case id="revoke_role" value="REVOKE role_dev from user_dev"
db-types="Oracle,PostgreSQL,openGauss" />
<sql-case id="revoke_user_from" value="REVOKE ADVISOR, ALTER DATABASE from
user_dev" db-types="Oracle" />
<sql-case id="revoke_user_with_hostname_on_db" value="REVOKE select,
insert ON * FROM 'user_dev'@'localhost'" db-types="MySQL" />
<sql-case id="revoke_user_with_hostname_on_table" value="REVOKE select,
insert ON t_order FROM 'user_dev'@'localhost'" db-types="MySQL" />
@@ -102,4 +102,27 @@
<sql-case id="revoke_crud_on_table" value="REVOKE INSERT, SELECT, UPDATE,
DELETE ON t_order FROM user1" db-types="SQLServer" />
<sql-case id="revoke_select_on_table_for_postgresql" value="REVOKE SELECT
ON TABLE t_order FROM role1" db-types="PostgreSQL,openGauss" />
<sql-case id="revoke_select_on_table_for_sqlserver" value="REVOKE SELECT
ON t_order FROM user1" db-types="SQLServer" />
+ <sql-case id="revoke_view_definition_on_availability_group_to_login"
value="REVOKE VIEW DEFINITION ON AVAILABILITY GROUP::group1 TO login1"
db-types="SQLServer" />
+ <sql-case id="revoke_take_ownership_on_availability_group_to_user"
value="REVOKE TAKE OWNERSHIP ON AVAILABILITY GROUP::group1 TO user1 CASCADE"
db-types="SQLServer" />
+ <sql-case id="revoke_grant_option_on_availability_group_to_user"
value="REVOKE GRANT OPTION FOR CONTROL ON AVAILABILITY GROUP::group1 TO user1
CASCADE" db-types="SQLServer" />
+ <sql-case id="revoke_create_certificate_from_user" value="REVOKE CREATE
CERTIFICATE FROM user1" db-types="SQLServer" />
+ <sql-case id="revoke_references_from_role" value="REVOKE REFERENCES FROM
role1" db-types="SQLServer" />
+ <sql-case id="revoke_view_definition_from_user" value="REVOKE VIEW
DEFINITION FROM user1 CASCADE" db-types="SQLServer" />
+ <sql-case id="revoke_control_on_user" value="REVOKE CONTROL ON USER::user1
FROM user2" db-types="SQLServer" />
+ <sql-case id="revoke_view_definition_on_role_from_user" value="REVOKE VIEW
DEFINITION ON ROLE::role1 FROM user1 CASCADE" db-types="SQLServer" />
+ <sql-case id="revoke_impersonate_on_user" value="REVOKE IMPERSONATE ON
USER::user1 FROM role1" db-types="SQLServer" />
+ <sql-case id="revoke_view_definition_on_endpoint_from_login" value="REVOKE
VIEW DEFINITION ON ENDPOINT::endpoint1 FROM login1" db-types="SQLServer" />
+ <sql-case id="revoke_take_ownership_on_endpoint_from_user" value="REVOKE
TAKE OWNERSHIP ON ENDPOINT::endpoint1 FROM user1 CASCADE" db-types="SQLServer"
/>
+ <sql-case id="revoke_select_on_object_from_user" value="REVOKE SELECT ON
OBJECT::db1.t_order FROM user1" db-types="SQLServer" />
+ <sql-case id="revoke_execute_on_object_from_role" value="REVOKE EXECUTE ON
OBJECT::db1.t_order FROM role1" db-types="SQLServer" />
+ <sql-case id="revoke_references_on_object_from_user" value="REVOKE
REFERENCES (order_id) ON OBJECT::db1.t_order FROM user1 CASCADE"
db-types="SQLServer" />
+ <sql-case id="revoke_view_server_state_from_login" value="REVOKE VIEW
SERVER STATE FROM login1" db-types="SQLServer" />
+ <sql-case id="revoke_grant_option_for_connect_sql_from_login"
value="REVOKE GRANT OPTION FOR CONNECT SQL FROM login1" db-types="SQLServer" />
+ <sql-case id="revoke_impersonate_on_login_from_windows_user" value="REVOKE
IMPERSONATE ON LOGIN::login1 FROM [windows\user]" db-types="SQLServer" />
+ <sql-case id="revoke_view_definition_on_login" value="REVOKE VIEW
DEFINITION ON LOGIN::login1 FROM login2 CASCADE" db-types="SQLServer" />
+ <sql-case id="revoke_view_definition_on_server_role" value="REVOKE VIEW
DEFINITION ON SERVER ROLE::role1 TO role2" db-types="SQLServer" />
+ <sql-case id="revoke_alter_on_symmetric_key_to_user" value="REVOKE ALTER
ON SYMMETRIC KEY::key1 TO user1 CASCADE" db-types="SQLServer" />
+ <sql-case id="revoke_execute_on_system_object" value="REVOKE EXECUTE ON
sys.sp_addlinkedserver FROM public" db-types="SQLServer" />
+ <sql-case id="revoke_view_definition_on_type" value="REVOKE VIEW
DEFINITION ON TYPE::schema1.type1 FROM user1 CASCADE" db-types="SQLServer" />
+ <sql-case id="revoke_execute_on_xml_schema_collection" value="REVOKE
EXECUTE ON XML SCHEMA COLLECTION::schema1.xmlschemacollection1 FROM user1"
db-types="SQLServer" />
</sql-cases>