{"record":{"id":"e4f02cb63e909466","repo":"apache/skywalking","slug":"unsupported-predicted-value-type","errorCode":null,"errorMessage":"Unsupported predicted value type: {}","messagePattern":"Unsupported predicted value type: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"oap-server/mqe-rt/src/main/java/org/apache/skywalking/mqe/rt/MQEVisitorBase.java","lineNumber":617,"sourceCode":"                    }\n                }\n                timeValues.put(pointOfTime, dataTable);\n            }\n        }\n        return buildLabledMqeValuesList(timeValues, queryLabels, pointOfTimes);\n    }\n\n    private long getValueByType(PredictServiceMetrics.PredictSingleValue predictSingleValue,\n                                int valueType) {\n        switch (valueType) {\n            case MQEParser.VALUE:\n                return predictSingleValue.getValue();\n            case MQEParser.UPPER:\n                return predictSingleValue.getUpperValue();\n            case MQEParser.LOWER:\n                return predictSingleValue.getLowerValue();\n            default:\n                throw new IllegalArgumentException(\"Unsupported predicted value type: \" + valueType);\n        }\n    }\n\n    protected List<MQEValues> buildLabledMqeValuesList(Map<String, DataTable> timeValues, List<KeyValue> queryLabels,\n                                                       ArrayList<String> pointOfTimes) {\n        List<MQEValues> mqeValuesList = new ArrayList<>();\n        List<String> labelConditions = composeLabelConditions(queryLabels, timeValues.values());\n        for (String labelCondition : labelConditions) {\n            MQEValues mqeValues = new MQEValues();\n            for (String pointOfTime : pointOfTimes) {\n                DataTable dataTable = timeValues.getOrDefault(pointOfTime, new DataTable());\n                Long metricValue = dataTable.get(labelCondition);\n                MQEValue mqeValue = new MQEValue();\n                //use timeBucket as id here\n                mqeValue.setId(pointOfTime);\n                if (metricValue != null) {\n                    mqeValue.setDoubleValue(metricValue);\n                } else {","sourceCodeStart":599,"sourceCodeEnd":635,"githubUrl":"https://github.com/apache/skywalking/blob/102af09b4a56064e22050dded10e2c52e490d040/oap-server/mqe-rt/src/main/java/org/apache/skywalking/mqe/rt/MQEVisitorBase.java#L599-L635","documentation":"IllegalArgumentException from MQEVisitorBase.getValueByType when a 'predict' (forecast) MQE query asks for a value type other than VALUE, UPPER or LOWER. PredictServiceMetrics.PredictSingleValue exposes a base value plus upper/lower confidence bounds; anything else (an unexpected token/type code reaching this private helper) is not representable and is rejected.","triggerScenarios":"A predict expression like 'predict(metric, pt10m, 0.8)' evaluated through a code path that requests a bound the visitor does not map — in practice triggered by internal type-code drift (e.g. a new grammar token reaching this switch) rather than ordinary user syntax, because the public predict grammar only exposes value/upper/lower.","commonSituations":"Almost always a version-mismatch bug surface: OAP server-core query types and mqe-rt visitor built from mismatched versions, or a custom fork adding a new value-type token without extending this switch. End users hitting it should suspect an incomplete upgrade.","solutions":["Align versions: rebuild/redeploy so mqe-rt and server-core come from the same OAP release (no mixed jars in oap-libs)","If you are extending the MQE grammar, add the new value type to this switch (VALUE/UPPER/LOWER pattern) and provide it in PredictSingleValue","As a workaround, re-issue the predict query with the default value output (omit the bound selector) to stay on the VALUE branch","Report upstream with the exact MQE expression if it reproduces on a clean single-version install"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"catch (IllegalArgumentException e) { /* indicate version skew; rebuild with consistent OAP modules and retry */ }","preventionTips":["Never mix mqe-rt and server-core jars from different releases","Pin a single OAP distribution image","Extend getValueByType's switch when adding grammar value-type tokens in forks"],"tags":["mqe","predict","query","internal","version-mismatch"],"backgroundTag":null,"analyzedSha":"102af09b4a56064e22050dded10e2c52e490d040","analyzedAt":"2026-08-14T10:47:52.647Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}