{"record":{"id":"542175653f14c6da","repo":"Tencent/WeKnora","slug":"failed-to-retrieve-s","errorCode":null,"errorMessage":"failed to retrieve: %s","messagePattern":"failed to retrieve: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/application/repository/retriever/elasticsearch/v7/repository.go","lineNumber":789,"sourceCode":"\n\tresults, err := e.processSearchResponse(ctx, response, typesLocal.KeywordsRetrieverType)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn results, nil\n}\n\n// processSearchResponse Process search response\nfunc (e *elasticsearchRepository) processSearchResponse(ctx context.Context,\n\tresponse *esapi.Response, retrieverType typesLocal.RetrieverType,\n) ([]*typesLocal.IndexWithScore, error) {\n\tlog := logger.GetLogger(ctx)\n\n\tif response.IsError() {\n\t\terrMsg := fmt.Sprintf(\"failed to retrieve: %s\", response.String())\n\t\tlog.Errorf(\"[ElasticsearchV7] %s\", errMsg)\n\t\treturn nil, errors.New(errMsg)\n\t}\n\n\t// Decode response body\n\trJson, err := e.decodeSearchResponse(ctx, response)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Extract hits from response\n\thitsList, err := e.extractHitsFromResponse(ctx, rJson)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Process hits into results\n\tresults, err := e.processHits(ctx, hitsList, retrieverType)\n\tif err != nil {\n\t\treturn nil, err","sourceCodeStart":771,"sourceCodeEnd":807,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/application/repository/retriever/elasticsearch/v7/repository.go#L771-L807","documentation":"A RangeSubselect (a parenthesized subquery used as a FROM item, e.g. `FROM (SELECT ...) x`) was encountered. When checkSubqueries is enabled the validator rejects such FROM subqueries outright, because they can hide arbitrary constructs (dangerous functions, more subqueries) inside an opaque derived table.","triggerScenarios":"Validating `SELECT * FROM (SELECT id FROM users) t` or `SELECT ... FROM (SELECT * FROM read_text('/etc/passwd')) x` while subquery checking is enabled.","commonSituations":"Queries written with derived tables/inline views, which is idiomatic SQL; ORM-generated paginated queries using `FROM (SELECT ... LIMIT ...) sub`; refactored queries that wrapped an original flat SELECT in a subquery.","solutions":["Rewrite the derived table into a flat query (join the inner tables directly in the outer FROM).","Flatten aggregates: replace `FROM (SELECT dept, MAX(s) m FROM emp GROUP BY dept) d` with a CTE-free join or HAVING on the outer query where possible.","If subqueries are required and the input is trusted, disable checkSubqueries in the validator configuration so the subquery is recursed into and validated instead of rejected."],"exampleFix":"// before\nSELECT * FROM (SELECT id, name FROM users WHERE active = true) t;\n\n// after\nSELECT id, name FROM users WHERE active = true;","handlingStrategy":"validation","validationCode":"var fromSubselect = regexp.MustCompile(`(?i)\\bfrom\\s*\\(`)\nif fromSubselect.MatchString(sql) {\n\t// flatten the derived table before validating/executing\n}","typeGuard":null,"tryCatchPattern":"if err := validator.ValidateQuery(sql); err != nil {\n\tif strings.Contains(err.Error(), \"subqueries in FROM clause\") {\n\t\treturn fmt.Errorf(\"rewrite query without derived tables: %w\", err)\n\t}\n}","preventionTips":["Write flat queries with direct joins instead of inline views.","Configure ORMs to avoid subquery-based pagination wrappers where a JOIN/LIMIT form exists.","Enable checkSubqueries whenever input is not fully trusted so this class is rejected early."],"tags":["sql","security","subquery","validation"],"backgroundTag":"subquery-not-allowed","analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}