diff --git a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt index 28754d1d97..0511833da1 100644 --- a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt +++ b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt @@ -151,7 +151,16 @@ truncateStatement = 'TRUNCATE TABLE' tableName [ 'CONTINUE IDENTITY' | 'RESTART grantStatement = 'GRANT' ( 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE' ) 'ON' tableName 'TO' ( userName | roleName | 'PUBLIC') [ 'WITH GRANT OPTION' ] ; -revokeStatement = 'REVOKE' ( 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE' ) 'ON' tableName 'FROM' ( userName | roleName | 'PUBLIC') +revokeStatement = 'REVOKE' + [ 'GRANT OPTION FOR' ] + ( + 'SELECT' + | 'INSERT' + | 'UPDATE' + | 'DELETE' + ) + 'ON' tableName + 'FROM' ( userName | roleName | 'PUBLIC') ; selectStatement = select | values [ correlationName ] diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 0edd78a733..875f11ecde 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -1323,6 +1323,7 @@ class ParserImpl implements Parser { private static final DDLQuery parseRevoke(ParserContext ctx) { parseKeyword(ctx, "REVOKE"); + boolean grantOptionFor = parseKeywordIf(ctx, "GRANT OPTION FOR"); Privilege privilege = parsePrivilege(ctx); List privileges = null; @@ -1339,7 +1340,12 @@ class ParserImpl implements Parser { parseKeywordIf(ctx, "TABLE"); Table table = parseTableName(ctx); - RevokeOnStep s1 = privileges == null ? ctx.dsl.revoke(privilege) : ctx.dsl.revoke(privileges); + RevokeOnStep s1 = null; + if (grantOptionFor) + s1 = privileges == null ? ctx.dsl.revokeGrantOptionFor(privilege) : ctx.dsl.revokeGrantOptionFor(privileges); + else + s1 = privileges == null ? ctx.dsl.revoke(privilege) : ctx.dsl.revoke(privileges); + parseKeyword(ctx, "FROM"); User user = parseKeywordIf(ctx, "PUBLIC") ? null : parseUser(ctx);