sql: add parser grammar for DROP PROVISIONED ROLES - #166923
Conversation
|
Merging to
|
⚪ Sysbench [SQL, 3node, oltp_read_write]
Reproducebenchdiff binaries: mkdir -p benchdiff/7d4afec/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/7d4afece35c40ce2f60116aaa3ba54488ed4e291/bin/pkg_sql_tests benchdiff/7d4afec/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/7d4afec/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/d59acc6/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/d59acc6b0a891f6535267bcb2c34b9a483bd38d7/bin/pkg_sql_tests benchdiff/d59acc6/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/d59acc6/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/SQL/3node/oltp_read_write$ --old=d59acc6 --new=7d4afec --memprofile ./pkg/sql/tests🔴 Sysbench [KV, 3node, oltp_read_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/7d4afec/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/7d4afece35c40ce2f60116aaa3ba54488ed4e291/bin/pkg_sql_tests benchdiff/7d4afec/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/7d4afec/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/d59acc6/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/d59acc6b0a891f6535267bcb2c34b9a483bd38d7/bin/pkg_sql_tests benchdiff/d59acc6/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/d59acc6/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_read_only$ --old=d59acc6 --new=7d4afec --memprofile ./pkg/sql/tests⚪ Sysbench [KV, 3node, oltp_write_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/7d4afec/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/7d4afece35c40ce2f60116aaa3ba54488ed4e291/bin/pkg_sql_tests benchdiff/7d4afec/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/7d4afec/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/d59acc6/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/d59acc6b0a891f6535267bcb2c34b9a483bd38d7/bin/pkg_sql_tests benchdiff/d59acc6/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/d59acc6/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_write_only$ --old=d59acc6 --new=7d4afec --memprofile ./pkg/sql/testsArtifactsdownload: mkdir -p new
gcloud storage cp gs://cockroach-microbench-ci/artifacts/7d4afece35c40ce2f60116aaa3ba54488ed4e291/23660531214-1/\* new/
mkdir -p old
gcloud storage cp gs://cockroach-microbench-ci/artifacts/d59acc6b0a891f6535267bcb2c34b9a483bd38d7/23660531214-1/\* old/built with commit: 7d4afece35c40ce2f60116aaa3ba54488ed4e291 |
7d4afec to
34b247f
Compare
34b247f to
7e755db
Compare
⚪ Sysbench [SQL, 3node, oltp_read_write]
Reproducebenchdiff binaries: mkdir -p benchdiff/34b247f/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/34b247f5bf43d32a7fb20b3ff622f41bf88deb88/bin/pkg_sql_tests benchdiff/34b247f/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/34b247f/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/SQL/3node/oltp_read_write$ --old=905f7e3 --new=34b247f --memprofile ./pkg/sql/tests⚪ Sysbench [KV, 3node, oltp_read_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/34b247f/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/34b247f5bf43d32a7fb20b3ff622f41bf88deb88/bin/pkg_sql_tests benchdiff/34b247f/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/34b247f/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_read_only$ --old=905f7e3 --new=34b247f --memprofile ./pkg/sql/tests⚪ Sysbench [KV, 3node, oltp_write_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/34b247f/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/34b247f5bf43d32a7fb20b3ff622f41bf88deb88/bin/pkg_sql_tests benchdiff/34b247f/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/34b247f/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_write_only$ --old=905f7e3 --new=34b247f --memprofile ./pkg/sql/testsArtifactsdownload: mkdir -p new
gcloud storage cp gs://cockroach-microbench-ci/artifacts/34b247f5bf43d32a7fb20b3ff622f41bf88deb88/24123026689-1/\* new/
mkdir -p old
gcloud storage cp gs://cockroach-microbench-ci/artifacts/905f7e3442bee845401cfbb4600fab828e348665/24123026689-1/\* old/built with commit: 34b247f5bf43d32a7fb20b3ff622f41bf88deb88 |
⚪ Sysbench [SQL, 3node, oltp_read_write]
Reproducebenchdiff binaries: mkdir -p benchdiff/7e755db/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/7e755dbdbcf0093f7ab792396ca99edebd740ee2/bin/pkg_sql_tests benchdiff/7e755db/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/7e755db/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/SQL/3node/oltp_read_write$ --old=905f7e3 --new=7e755db --memprofile ./pkg/sql/tests⚪ Sysbench [KV, 3node, oltp_read_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/7e755db/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/7e755dbdbcf0093f7ab792396ca99edebd740ee2/bin/pkg_sql_tests benchdiff/7e755db/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/7e755db/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_read_only$ --old=905f7e3 --new=7e755db --memprofile ./pkg/sql/tests🟢 Sysbench [KV, 3node, oltp_write_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/7e755db/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/7e755dbdbcf0093f7ab792396ca99edebd740ee2/bin/pkg_sql_tests benchdiff/7e755db/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/7e755db/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_write_only$ --old=905f7e3 --new=7e755db --memprofile ./pkg/sql/testsArtifactsdownload: mkdir -p new
gcloud storage cp gs://cockroach-microbench-ci/artifacts/7e755dbdbcf0093f7ab792396ca99edebd740ee2/24123963428-1/\* new/
mkdir -p old
gcloud storage cp gs://cockroach-microbench-ci/artifacts/905f7e3442bee845401cfbb4600fab828e348665/24123963428-1/\* old/built with commit: 7e755dbdbcf0093f7ab792396ca99edebd740ee2 |
7e755db to
88d4cc4
Compare
⚪ Sysbench [SQL, 3node, oltp_read_write]
Reproducebenchdiff binaries: mkdir -p benchdiff/88d4cc4/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/88d4cc420fe1674ec0763fd8f631b6fcd4694952/bin/pkg_sql_tests benchdiff/88d4cc4/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/88d4cc4/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/SQL/3node/oltp_read_write$ --old=905f7e3 --new=88d4cc4 --memprofile ./pkg/sql/tests⚪ Sysbench [KV, 3node, oltp_read_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/88d4cc4/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/88d4cc420fe1674ec0763fd8f631b6fcd4694952/bin/pkg_sql_tests benchdiff/88d4cc4/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/88d4cc4/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_read_only$ --old=905f7e3 --new=88d4cc4 --memprofile ./pkg/sql/tests⚪ Sysbench [KV, 3node, oltp_write_only]
Reproducebenchdiff binaries: mkdir -p benchdiff/88d4cc4/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/88d4cc420fe1674ec0763fd8f631b6fcd4694952/bin/pkg_sql_tests benchdiff/88d4cc4/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/88d4cc4/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
mkdir -p benchdiff/905f7e3/bin/1058449141
gcloud storage cp gs://cockroach-microbench-ci/builds/905f7e3442bee845401cfbb4600fab828e348665/bin/pkg_sql_tests benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_tests
chmod +x benchdiff/905f7e3/bin/1058449141/cockroachdb_cockroach_pkg_sql_testsbenchdiff command: # NB: for best (most stable) results, also add a suitable `--benchtime` that
# results in ~1s to ~5s of benchmark runs. For example, if ops average ~3ms, a
# benchtime of `1000x` is appropriate.
#
# Some benchmarks (in particular BenchmarkSysbench) output additional memory
# profiles covering only the execution (excluding the setup/teardown) - those
# should be preferred for analysis since they more closely correspond to what's
# reported as B/op and alloc/op.
benchdiff --run=^BenchmarkSysbench/KV/3node/oltp_write_only$ --old=905f7e3 --new=88d4cc4 --memprofile ./pkg/sql/testsArtifactsdownload: mkdir -p new
gcloud storage cp gs://cockroach-microbench-ci/artifacts/88d4cc420fe1674ec0763fd8f631b6fcd4694952/24126378736-1/\* new/
mkdir -p old
gcloud storage cp gs://cockroach-microbench-ci/artifacts/905f7e3442bee845401cfbb4600fab828e348665/24126378736-1/\* old/built with commit: 88d4cc420fe1674ec0763fd8f631b6fcd4694952 |
sanchit-CRL
left a comment
There was a problem hiding this comment.
PR description and commit message say LAST ACCESS TIME OLDER THAN but the actual grammar uses LAST LOGIN BEFORE .
No execution handler registered — statement will panic at runtime. DropProvisionedRoles has no case in planOpaque (pkg/sql/opaque.go). Running DROP PROVISIONED ROLES will hit errors.AssertionFailedf("planNode cannot be nil for %T", stmt) an internal error, not a graceful "unimplemented" message. Is this intended to be done in the next PR ?
| @@ -6670,11 +6633,12 @@ discard_stmt: | |||
| // %Category: Group | |||
| // %Text: | |||
| // DROP DATABASE, DROP INDEX, DROP TABLE, DROP VIEW, DROP SEQUENCE, | |||
| // DROP USER, DROP ROLE, DROP TYPE | |||
| // DROP USER, DROP ROLE, DROP TYPE, DROP PROVISIONED ROLES, | |||
There was a problem hiding this comment.
| // DROP USER, DROP ROLE, DROP TYPE, DROP PROVISIONED ROLES, | |
| // DROP USER, DROP ROLE, DROP TYPE, DROP PROVISIONED ROLES |
| DROP PROVISIONED ROLES LIMIT 5 | ||
| DROP PROVISIONED ROLES LIMIT (5) -- fully parenthesized | ||
| DROP PROVISIONED ROLES LIMIT _ -- literals removed | ||
| DROP PROVISIONED ROLES LIMIT 5 -- identifiers removed |
There was a problem hiding this comment.
DROP PROVISIONED ROLES WITH SOURCE = 'a', SOURCE = 'b'
----
SOURCE option specified multiple times
error
DROP PROVISIONED ROLES WITH LAST LOGIN BEFORE '2025-01-01', LAST LOGIN BEFORE '2025-06-01'
----
LAST LOGIN BEFORE option specified multiple times```
these cases can also be added ?
There was a problem hiding this comment.
DROP PROVISIONED ROLES WITH LAST LOGIN BEFORE '2025-01-01', SOURCE = 'ldap:ldap.example.com'
----
DROP PROVISIONED ROLES WITH SOURCE = 'ldap:ldap.example.com', LAST LOGIN BEFORE '2025-01-01'```
reversed option order parse test can also be added ?
Extend the SQL parser grammar to support the DROP PROVISIONED ROLES statement with optional WITH clauses and LIMIT: DROP PROVISIONED ROLES [WITH <options>] [LIMIT <n>] Options (comma-separated): SOURCE = <string> LAST LOGIN BEFORE <expr> Add `PROVISIONED` as an unreserved keyword. Define dedicated grammar rules (`opt_with_drop_provisioned_roles_options`, `drop_provisioned_roles_options_list`, `drop_provisioned_roles_option`) and wire the new `drop_provisioned_roles_stmt` production into `drop_stmt`. Add parse roundtrip tests covering all option combinations, including error tests for duplicate option detection. Fix a pre-existing format string bug in `combineExpr` and `combineStringOrPlaceholderOptList` where `%` was used instead of `%s`, producing garbled error messages for duplicate options. Epic CRDB-52460 fixes: CRDB-52797 Release note: None Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
88d4cc4 to
e622b04
Compare
…D ROLES Add a parser test case for DROP PROVISIONED ROLES WITH options specified in reversed order (LAST LOGIN BEFORE before SOURCE) to verify the formatter normalizes option ordering. Also remove trailing comma from the drop_stmt help text comment. Release note: None Epic: none Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Closing this as changes were reviewed and commited as part of #166980 |
Extend the SQL parser grammar to support the DROP PROVISIONED ROLES
statement with optional WITH clauses and LIMIT:
DROP PROVISIONED ROLES [WITH ] [LIMIT ]
Options (comma-separated):
SOURCE =
LAST LOGIN BEFORE
Add
PROVISIONEDas an unreserved keyword. Define dedicated grammarrules (
opt_with_drop_provisioned_roles_options,drop_provisioned_roles_options_list,drop_provisioned_roles_option)and wire the new
drop_provisioned_roles_stmtproduction intodrop_stmt.Add parse roundtrip tests covering all option combinations, including
error tests for duplicate option detection.
Fix a pre-existing format string bug in
combineExprandcombineStringOrPlaceholderOptListwhere%was used instead of%s,producing garbled error messages for duplicate options.
Epic CRDB-52460
fixes: CRDB-52797
Release note: None
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com