{"id":"fe84cbfc35a7401d","repo":"go-redis/redis","slug":"ft-hybrid-asc-and-desc-are-mutually-exclusive","errorCode":null,"errorMessage":"FT.HYBRID: ASC and DESC are mutually exclusive","messagePattern":"FT\\.HYBRID: ASC and DESC are mutually exclusive","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"search_commands.go","lineNumber":3975,"sourceCode":"\t\t\tif options.GroupBy.ReduceFunc != \"\" {\n\t\t\t\targs = append(args, \"REDUCE\", options.GroupBy.ReduceFunc, options.GroupBy.ReduceCount)\n\t\t\t\targs = append(args, options.GroupBy.ReduceParams...)\n\t\t\t}\n\t\t}\n\n\t\t// Add APPLY transformations\n\t\tfor _, apply := range options.Apply {\n\t\t\targs = append(args, \"APPLY\", apply.Expression, \"AS\", apply.AsField)\n\t\t}\n\n\t\t// Add SORTBY\n\t\tif len(options.SortBy) > 0 {\n\t\t\tsortByOptions := []interface{}{}\n\t\t\tfor _, sortBy := range options.SortBy {\n\t\t\t\tsortByOptions = append(sortByOptions, sortBy.FieldName)\n\t\t\t\tif sortBy.Asc && sortBy.Desc {\n\t\t\t\t\tcmd := newFTHybridCmd(ctx, options, args...)\n\t\t\t\t\tcmd.SetErr(fmt.Errorf(\"FT.HYBRID: ASC and DESC are mutually exclusive\"))\n\t\t\t\t\treturn cmd\n\t\t\t\t}\n\t\t\t\tif sortBy.Asc {\n\t\t\t\t\tsortByOptions = append(sortByOptions, \"ASC\")\n\t\t\t\t}\n\t\t\t\tif sortBy.Desc {\n\t\t\t\t\tsortByOptions = append(sortByOptions, \"DESC\")\n\t\t\t\t}\n\t\t\t}\n\t\t\targs = append(args, \"SORTBY\", len(sortByOptions))\n\t\t\targs = append(args, sortByOptions...)\n\t\t}\n\n\t\t// Add FILTER (post-filter)\n\t\tif options.Filter != \"\" {\n\t\t\targs = append(args, \"FILTER\", options.Filter)\n\t\t}\n","sourceCodeStart":3957,"sourceCodeEnd":3993,"githubUrl":"https://github.com/go-redis/redis/blob/36d97525cd8076aed67cddf54778e9ea84550929/search_commands.go#L3957-L3993","documentation":"Error \"FT.HYBRID: ASC and DESC are mutually exclusive\" thrown in go-redis/redis.","triggerScenarios":"Thrown at search_commands.go:3975 when the library encounters an invalid state.","commonSituations":"Model sort direction as one enum field rather than two booleans.","solutions":["Set only one of Asc/Desc in the FT.HYBRID sort options","Derive sort direction from a single enum value"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"36d97525cd8076aed67cddf54778e9ea84550929","analyzedAt":"2026-08-06T01:08:27.376Z","schemaVersion":2}