bytebase/bytebase · error
invalid folder value %q
Error message
invalid folder value %q
What it means
When the saved-query CEL filter contains `folder == ...`, the parser requires the value to be a CEL string because it is normalized (NormalizeSavedQueryFolder) and matched against `saved_query.folder`. A non-string literal throws this error before normalization is attempted.
Source
Thrown at backend/store/saved_query.go:774
if !ok {
return nil, errors.Errorf("invalid shared value %v, expect true or false", value)
}
granted := qb.Q().Space("FALSE")
for _, principal := range accessMembers {
probe, err := bindingProbe(principal)
if err != nil {
return nil, err
}
granted.Or("saved_query.bindings @> ?", probe)
}
if shared {
return qb.Q().Space("(saved_query.creator <> ? AND (?))", caller, granted), nil
}
return qb.Q().Space("(NOT (saved_query.creator <> ? AND (?)))", caller, granted), nil
case "folder":
folder, ok := value.(string)
if !ok {
return nil, errors.Errorf("invalid folder value %q", value)
}
folder, err := NormalizeSavedQueryFolder(folder)
if err != nil {
return nil, err
}
return qb.Q().Space("saved_query.folder = ?", folder), nil
default:
return nil, errors.Errorf("unsupport variable %q", variable)
}
}
getFilter = func(expr celast.Expr) (*qb.Query, error) {
q := qb.Q()
switch expr.Kind() {
case celast.CallKind:
functionName := expr.AsCall().FunctionName()
switch functionName {
case celoperators.LogicalOr:View on GitHub (pinned to 1870550677)
Solutions
- Quote the folder value: `folder == "my-folder"`
- Ensure the folder string is in normalized form (see NormalizeSavedQueryFolder) or at least a valid folder name
- If filtering by numeric IDs, confirm the folder field is actually identified by name strings in this API, not numeric keys
Example fix
// before filter = "folder == 7" // after filter = "folder == \"team-folder\""
Defensive patterns
Strategy: validation
Validate before calling
const folder = 'team-folder';
if (typeof folder !== 'string' || folder === '') {
throw new Error('folder filter must be a non-empty string');
}
const filter = `folder == "${folder}"`; Type guard
function isNonEmptyString(v) { return typeof v === 'string' && v.length > 0; } Prevention
- Quote the folder name string in the CEL expression
- Use folder names as the API identifies them, not numeric IDs
- Escape quotes/backslashes in folder names derived from user input
When it happens
Trigger: A filter like `folder == 123`, `folder == true`, or `folder == someVar` sent with the saved query list request.
Common situations: Filter strings generated with numeric folder IDs instead of folder name strings; missing quotes in hand-written CEL; templating code that does not quote string values.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- invalid name value %q
- invalid creator value %v, expect a string
- CodeInvalidArgument
- category value must be a string, got %T
- status value must be a string
AI-assisted analysis of bytebase/bytebase@1870550677 (2026-09-06).
Data as JSON: /api/errors/2e8484f3b479064b.
Report an issue: GitHub.