{"record":{"id":"54e0874b85759995","repo":"apache/beam","slug":"s-is-not-supported-in-sum0","errorCode":null,"errorMessage":"[%s] is not supported in SUM0","messagePattern":"\\[(.+?)\\] is not supported in SUM0","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/transform/BeamBuiltinAggregations.java","lineNumber":204,"sourceCode":"   */\n  static CombineFn createSum0(Schema.FieldType fieldType) {\n    switch (fieldType.getTypeName()) {\n      case INT32:\n        return new IntegerSum0();\n      case INT16:\n        return new ShortSum0();\n      case BYTE:\n        return new ByteSum0();\n      case INT64:\n        return new LongSum0();\n      case FLOAT:\n        return new FloatSum0();\n      case DOUBLE:\n        return new DoubleSum0();\n      case DECIMAL:\n        return new BigDecimalSum0();\n      default:\n        throw new UnsupportedOperationException(\n            String.format(\"[%s] is not supported in SUM0\", fieldType));\n    }\n  }\n\n  /** {@link CombineFn} for AVG. */\n  static CombineFn createAvg(Schema.FieldType fieldType) {\n    switch (fieldType.getTypeName()) {\n      case INT32:\n        return new IntegerAvg();\n      case INT16:\n        return new ShortAvg();\n      case BYTE:\n        return new ByteAvg();\n      case INT64:\n        return new LongAvg();\n      case FLOAT:\n        return new FloatAvg();\n      case DOUBLE:","sourceCodeStart":186,"sourceCodeEnd":222,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/transform/BeamBuiltinAggregations.java#L186-L222","documentation":"createSum0 builds the SUM0 aggregation (SUM where the sum of all-null input is 0 instead of NULL). It supports the same numeric types as SUM — INTEGER-family (FloatSum0/IntSum0), DOUBLE (DoubleSum0), DECIMAL (BigDecimalSum0) — and throws UnsupportedOperationException for any other field type.","triggerScenarios":"Calling BeamBuiltinAggregations.createSum0(fieldType) with a TypeName outside the supported numeric set (e.g. STRING, BOOLEAN, TIMESTAMP) — reached when Beam SQL plans a SUM0 aggregate (emitted for COUNT-style or null-safe SUM rewrites) over an unsupported column type.","commonSituations":"Optimizer rewriting SUM into SUM0 internally over a column type that was not validated; users constructing aggregation pipelines programmatically with the wrong Schema.FieldType.","solutions":["Ensure the aggregated column's schema type is INTEGER, INT64, DOUBLE, or DECIMAL before the aggregation is planned.","Cast the column to a supported numeric type in the SQL query.","Implement a custom zero-returning CombineFn (mirroring DoubleSum0: extractOutput returns 0 when accumulator empty) for the needed type."],"exampleFix":"// before\nCombineFn fn = BeamBuiltinAggregations.createSum0(Schema.FieldType.BOOLEAN); // throws\n\n// after\nCombineFn fn = BeamBuiltinAggregations.createSum0(Schema.FieldType.INT64);","handlingStrategy":"validation","validationCode":"java.util.Set<Schema.TypeName> ok =\n    java.util.Set.of(Schema.TypeName.INTEGER, Schema.TypeName.INT64, Schema.TypeName.DOUBLE, Schema.TypeName.DECIMAL);\nif (!ok.contains(fieldType.getTypeName())) {\n  throw new IllegalArgumentException(\"SUM0 unsupported for \" + fieldType);\n}","typeGuard":"boolean sum0Supported(Schema.FieldType t) {\n  switch (t.getTypeName()) {\n    case INTEGER: case INT64: case DOUBLE: case DECIMAL: return true;\n    default: return false;\n  }\n}","tryCatchPattern":"try {\n  CombineFn fn = BeamBuiltinAggregations.createSum0(fieldType);\n} catch (UnsupportedOperationException e) {\n  // substitute a custom zero-defaulting combiner\n}","preventionTips":["Ensure SUM0-planned columns resolve to INTEGER/INT64/DOUBLE/DECIMAL.","When constructing aggregates programmatically, validate Schema.FieldType before calling the factory.","Track Beam SQL optimizer rewrites (SUM->SUM0) in query plans when debugging."],"tags":["beam-sql","unsupported-type","aggregation","java"],"backgroundTag":"unsupported-enum-value","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}