{"record":{"id":"6dd885425f5499d2","repo":"cayleygraph/cayley","slug":"unsupported-language-q","errorCode":null,"errorMessage":"unsupported language: %q","messagePattern":"unsupported language: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"query/session.go","lineNumber":137,"sourceCode":"\t}\n\treturn nil\n}\n\n// Languages returns names of registered query languages.\nfunc Languages() []string {\n\tout := make([]string, 0, len(languages))\n\tfor name := range languages {\n\t\tout = append(out, name)\n\t}\n\treturn out\n}\n\n// Execute runs the query in a given language and returns an iterator over the results.\n// Type of results depends on Collation. See Options for details.\nfunc Execute(ctx context.Context, qs graph.QuadStore, lang, query string, opt Options) (Iterator, error) {\n\tl := GetLanguage(lang)\n\tif l == nil {\n\t\treturn nil, fmt.Errorf(\"unsupported language: %q\", lang)\n\t}\n\tsess := l.Session(qs)\n\treturn sess.Execute(ctx, query, opt)\n}\n","sourceCodeStart":119,"sourceCodeEnd":142,"githubUrl":"https://github.com/cayleygraph/cayley/blob/81dcd7d73e45136bc0d01802a8ba4685d8a533eb/query/session.go#L119-L142","documentation":"Execute() looks up a query language by name via GetLanguage(lang). If no language plugin is registered under that name (e.g. \"gremlin\", \"gql\", \"sparql\"), it returns this error instead of running the query. It is a guard against calling Session() on a nil language.","triggerScenarios":"Calling query.Execute(ctx, qs, lang, q, opt) with a lang string that has not been registered, misspelled, or whose language package was never imported.","commonSituations":"Typos like \"gremelin\"; using a language whose side-effect import (which registers it via init) was removed during refactoring; building with a trimmed dependency set that excludes a query language package.","solutions":["Check the lang string spelling against registered languages (see query.GetLanguage and the language packages' init registration).","Add a blank import for the language package, e.g. _ \"github.com/hknutzen/cayley/query/gremlin\" or the gopl dialect you need.","Log or enumerate available languages before executing to confirm registration."],"exampleFix":"// before\nit, err := query.Execute(ctx, qs, \"gql\", q, query.Options{})\n// after\nimport _ \"github.com/hknutzen/cayley/query/gql\"\nit, err := query.Execute(ctx, qs, \"gql\", q, query.Options{})","handlingStrategy":"validation","validationCode":"if query.GetLanguage(lang) == nil {\n    return fmt.Errorf(\"query language %q not registered; check imports\", lang)\n}","typeGuard":"func languageAvailable(lang string) bool { return query.GetLanguage(lang) != nil }","tryCatchPattern":"it, err := query.Execute(ctx, qs, lang, q, opt)\nif err != nil {\n    if strings.HasPrefix(err.Error(), \"unsupported language\") {\n        // register/import the language package or fix the name\n    }\n    return err\n}","preventionTips":["Blank-import every query language package you use in one init file.","Centralize the language name in a constant to avoid typos.","Smoke-test query execution in CI for each supported language."],"tags":["go","query-language","registration"],"backgroundTag":"invalid-enum-value","analyzedSha":"81dcd7d73e45136bc0d01802a8ba4685d8a533eb","analyzedAt":"2026-09-06T06:14:12.358Z","contentChangedAt":"2026-09-06T06:14:12.358Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}