Repository navigation
Add active ACL inspection functions - #37
Merged
Merged
Conversation
glasstiger
commented
Oct 21, 2026
glasstiger
left a comment
Contributor
Author
There was a problem hiding this comment.
Review
No blocking issues. Ready to merge.
Verified
- Correct category. In questdb/questdb-enterprise#1222 (merged), both functions take no arguments and both factories return
isCursor() == true(ActiveGrantsFunctionFactoryextendsActivePermissionsFunctionFactory).functions()reports cursor factories asCURSOR, so theCURSORsection is right. Alphabetical order holds (active_grants<active_permissions<all_permissions). Both are registered automatically by the package scan inEntCairoEngine. - No grammar changes needed. Parse,
toSqlround-trip andformatall work forFROM active_permissions()andFROM active_grants(), including aliases, JOINs, CTEs andWHERE grant_option. - Autocomplete in the right places only. Suggested after FROM, JOIN (including ASOF and CROSS), a comma join, inside CTEs and subqueries, EXPLAIN,
INSERT … SELECTandCREATE TABLE … AS (SELECT …). Not suggested in the SELECT list or WHERE. - The tests are meaningful.
- The positive test (
FROM act|) fails with thefunctions.tschange reverted. - The negative test (
SELECT act|) passes either way, but it's a real guard: about 255 function suggestions come back atSELECT actwithout prefix filtering, so moving these two into the scalar, aggregate or window lists would fail it.
- The positive test (
- Docs examples work. Every new SQL example in questdb/documentation#566 parses, round-trips and formats idempotently, so adding them to the fixtures later won't break anything. The only exception is the syntax-notation line
permissions([entityName]), which isn't SQL. - Local checks.
yarn test(15,106 passed),yarn typecheck,yarn lintandprettier --checkare clean. The branch is up to date withmaster.
Optional nits
- The new tests sit in
"Regression scenarios (bugs that motivated this plan)". That matches the neighbouringgen|andlong|tests, but these aren't really regressions. Fine as is. - Once questdb/documentation#566 merges, consider adding
SELECT * FROM active_permissions()andSELECT * FROM active_grants()totests/fixtures/docs-queries.json, next toall_permissions(). - The PR description still lists questdb/questdb-enterprise#1222 as a dependency, but it has merged. Only the docs PR is still open, and it doesn't block this one.
Out of scope
reload_tick_calendars() (Enterprise, questdb/questdb-enterprise#883) is missing from scalarFunctions. This gap predates this PR and could be a small follow-up.
puzpuzpuz
self-requested a review
October 21, 2026 17:00
puzpuzpuz
approved these changes
Oct 21, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Register the new QuestDB Enterprise ACL inspection functions as table-valued functions:
active_permissions()returns effective permissions across persisted users, groups, and service accounts, including group inheritance.active_grants()returns direct grants across those entities.Both functions are added to the
CURSORsection oftableValuedFunctions, in alphabetical order. This makes them available for autocomplete in table-source contexts such asSELECT * FROM active_permissions(), while keeping them out of scalar-expression suggestions.Autocomplete regression tests cover both the positive
FROMcontext and the negativeSELECTexpression context.Dependencies
Verification
corepack yarn test: 15,105 tests passed, 1 skippedcorepack yarn vitest run tests/autocomplete.test.ts -t "active": 2 tests passedcorepack yarn typecheckcorepack yarn lint