{"record":{"id":"893ef632cb9f020b","repo":"apache/druid","slug":"expected-a-string-with-a-number-received-value","errorCode":null,"errorMessage":"Expected a string with a number, received value ","messagePattern":"Expected a string with a number, received value ","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchComplexMetricSerde.java","lineNumber":67,"sourceCode":"\n      @Override\n      public Object extractValue(final InputRow inputRow, final String metricName)\n      {\n        final Object object = inputRow.getRaw(metricName);\n        if (object == null || object instanceof Number || object instanceof MergingDigest) {\n          return object;\n        }\n        if (object instanceof String) {\n          String objectString = (String) object;\n          if (Character.isDigit((objectString).charAt(0))) {\n            // Base64 representation of MergingDigest starts with A. So if it's a\n            // string that starts with a digit, we assume it is a number.\n            try {\n              Double doubleValue = Double.parseDouble(objectString);\n              return doubleValue;\n            }\n            catch (NumberFormatException e) {\n              throw new IAE(\"Expected a string with a number, received value \" + objectString);\n            }\n          }\n        }\n        return TDigestSketchUtils.deserialize(object);\n      }\n    };\n  }\n\n  @Override\n  public ObjectStrategy<MergingDigest> getObjectStrategy()\n  {\n    return STRATEGY;\n  }\n}\n","sourceCodeStart":49,"sourceCodeEnd":82,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchComplexMetricSerde.java#L49-L82","documentation":"TDigestSketchComplexMetricSerde.extractValue accepts raw values that are null, Number, or MergingDigest, and strings only if they look like a number (start with a digit) or decode as a base64-encoded MergingDigest (which always starts with 'A'). The error fires when a string value matches neither shape, meaning the row column contains arbitrary text that cannot be interpreted as sketch input.","triggerScenarios":"Thrown at extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchComplexMetricSerde.java:67 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the input column contains numeric values or base64-encoded MergingDigest strings","Fix the ingestion spec (parseSpec/flattener) so the field is parsed as a number or sketch, not raw text","Preprocess or filter out rows whose sketch column holds non-numeric, non-base64 strings"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}