{"record":{"id":"9fa7e45d7e797b40","repo":"beego/beego","slug":"have-not-implement-9fa7e4","errorCode":null,"errorMessage":"have not implement","messagePattern":"have not implement","errorType":"panic","errorClass":"ErrNotImplement","httpStatus":null,"severity":"critical","filePath":"client/orm/orm_queryset.go","lineNumber":358,"sourceCode":"\n// ValuesFlatWithCtx see ValuesFlat\nfunc (o querySet) ValuesFlatWithCtx(ctx context.Context, result *ParamsList, expr string) (int64, error) {\n\treturn o.orm.alias.DbBaser.ReadValues(ctx, o.orm.db, o, o.mi, o.cond, []string{expr}, result, o.orm.alias.TZ)\n}\n\n// RowsToMap query rows into map[string]interface with specify key and value column name.\n// keyCol = \"name\", valueCol = \"value\"\n// table data\n// name  | value\n// total | 100\n// found | 200\n//\n//\tto map[string]interface{}{\n//\t\t\"total\": 100,\n//\t\t\"found\": 200,\n//\t}\nfunc (o querySet) RowsToMap(result *Params, keyCol, valueCol string) (int64, error) {\n\tpanic(ErrNotImplement)\n}\n\n// RowsToStruct query rows into struct with specify key and value column name.\n// keyCol = \"name\", valueCol = \"value\"\n// table data\n// name  | value\n// total | 100\n// found | 200\n//\n//\tto struct {\n//\t\tTotal int\n//\t\tFound int\n//\t}\nfunc (o querySet) RowsToStruct(ptrStruct interface{}, keyCol, valueCol string) (int64, error) {\n\tpanic(ErrNotImplement)\n}\n\n// create new QuerySeter.","sourceCodeStart":340,"sourceCodeEnd":376,"githubUrl":"https://github.com/beego/beego/blob/939cfde380bb9f15844ad633b84f037f7da21584/client/orm/orm_queryset.go#L340-L376","documentation":"client/orm/orm_queryset.go:358: querySet.RowsToMap is a stub that unconditionally panics with ErrNotImplement. It is declared on the exported QuerySeter interface (mapping query rows into a map[string]interface{} keyed by one column), but no implementation exists anywhere in the package — the method body is only 'panic(ErrNotImplement)'. Any call always panics, regardless of driver or data.","triggerScenarios":"Calling qs.RowsToMap(&m, \"name\", \"value\") on any QuerySeter obtained from o.QueryTable(...). It panics immediately — there is no data-dependent path that avoids it.","commonSituations":"Porting code from beego v1 docs or other ORMs (e.g. Django-ish APIs) where a row-to-map helper existed; AI-assisted code or IDE autocomplete selecting RowsToMap because it appears in the QuerySeter interface; refactoring a Values() query into what looks like a cleaner helper.","solutions":["Replace RowsToMap with Values/ValuesList and build the map yourself (see exampleFix).","For arbitrary SQL, use orm.NewOrm().Raw(...).QueryRows(&rows) into a []Params or use ValuesMap on the QuerySeter if the shape fits.","Delete any call to RowsToMap/RowsToStruct from shared helpers so future callers cannot rediscover the panic."],"exampleFix":"// before\nvar m Params\nqs.RowsToMap(&m, \"name\", \"value\") // always panics: not implemented\n\n// after\nvar rows []Params\nif _, err := qs.Values(&rows, \"name\", \"value\"); err != nil { return err }\nm := Params{}\nfor _, r := range rows {\n    m[r[\"name\"].(string)] = r[\"value\"]\n}","handlingStrategy":"fallback","validationCode":"// There is nothing to validate: the call always panics. Detect and reject it early.\nfunc rowsToMapSafe(qs orm.QuerySeter, keyCol, valueCol string) (Params, error) {\n    // never call qs.RowsToMap — not implemented in beego v2\n    var rows []Params\n    if _, err := qs.Values(&rows, keyCol, valueCol); err != nil {\n        return nil, err\n    }\n    out := Params{}\n    for _, r := range rows {\n        if k, ok := r[keyCol].(string); ok {\n            out[k] = r[valueCol]\n        }\n    }\n    return out, nil\n}","typeGuard":null,"tryCatchPattern":"Go: if third-party code may call it, recover and fall back: defer func() { if r := recover(); r != nil { if e, ok := r.(error); ok && errors.Is(e, orm.ErrNotImplement) { err = rowsToMapSafe(qs, keyCol, valueCol); return }; panic(r) } }()","preventionTips":["Ban RowsToMap/RowsToStruct in code review — both are permanent stubs in beego v2.","Wrap QuerySeter usage in project helpers so swapping implementations later is one edit.","When copying ORM snippets, cross-check each method against the current beego docs."],"tags":["go","beego","orm","panic","not-implemented","queryseter"],"backgroundTag":null,"analyzedSha":"939cfde380bb9f15844ad633b84f037f7da21584","analyzedAt":"2026-08-15T17:22:06.535Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}