{"record":{"id":"6d312a6110546112","repo":"apache/beam","slug":"the-sequence-generator-for-integers-only-supports-integer","errorCode":null,"errorMessage":"The 'sequence' generator for integers only supports integer types, but field '%s' is of type '%s'.","messagePattern":"The 'sequence' generator for integers only supports integer types, but field '(.+?)' is of type '(.+?)'\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/datagen/DataGeneratorRowFn.java","lineNumber":118,"sourceCode":"  }\n\n  private FieldGenerator createValueGeneratorForField(Schema.Field field) {\n    String fieldName = field.getName();\n    String kind = properties.path(\"fields.\" + fieldName + \".kind\").asText(\"random\");\n\n    final SqlTypeName sqlTypeName = CalciteUtils.toSqlTypeName(field.getType());\n    if (sqlTypeName == null) {\n      throw new UnsupportedOperationException(\n          \"Data generator requires a defined SQL type. Beam type '\"\n              + field.getType().getTypeName()\n              + \"' on field '\"\n              + field.getName()\n              + \"' is not supported.\");\n    }\n\n    if (\"sequence\".equalsIgnoreCase(kind)) {\n      if (!SqlTypeName.INT_TYPES.contains(sqlTypeName)) {\n        throw new IllegalArgumentException(\n            String.format(\n                \"The 'sequence' generator for integers only supports integer types, but field '%s' is of type '%s'.\",\n                field.getName(), sqlTypeName));\n      }\n\n      JsonNode startNode = properties.path(\"fields.\" + fieldName + \".start\");\n      JsonNode endNode = properties.path(\"fields.\" + fieldName + \".end\");\n\n      if (startNode.isMissingNode() && endNode.isMissingNode()) {\n        return (index) -> index;\n      }\n\n      if (startNode.isMissingNode() || endNode.isMissingNode()) {\n        throw new IllegalArgumentException(\n            \"For a cycling sequence generator, both 'start' and 'end' must be specified.\");\n      }\n\n      long start = startNode.asLong(0L);","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/datagen/DataGeneratorRowFn.java#L100-L136","documentation":"The 'sequence' field kind cycles through integer values, so it is only valid on Calcite INT_TYPES columns (TINYINT, SMALLINT, INTEGER, BIGINT). Applying kind='sequence' to any other type (VARCHAR, DOUBLE, TIMESTAMP, ...) throws an IllegalArgumentException during generator creation.","triggerScenarios":"Setting TBLPROPERTIES '{\"fields.<name>.kind\":\"sequence\"}' on a datagen table field whose SQL type is not an integer type.","commonSituations":"Copy-pasting a sequence config from an integer column onto a string or float column; renaming a column's type in DDL but keeping the old generator config.","solutions":["Change the field's SQL type to TINYINT/SMALLINT/INTEGER/BIGINT.","Use kind='random' (default) for non-integer fields instead of 'sequence'.","Remove the fields.<name>.kind='sequence' property for that field."],"exampleFix":"// before\n'{\"fields\":{\"name\":{\"kind\":\"sequence\"}}}'  -- name VARCHAR\n// after\n'{\"fields\":{\"name\":{\"kind\":\"random\"}}}'","handlingStrategy":"validation","validationCode":"if (\"sequence\".equals(kind) && !SqlTypeName.INT_TYPES.contains(sqlTypeName)) {\n  throw new IllegalArgumentException(\"sequence requires integer type: \" + fieldName);\n}","typeGuard":"boolean supportsSequence(Schema.Field f) {\n  return SqlTypeName.INT_TYPES.contains(CalciteUtils.toSqlTypeName(f.getType()));\n}","tryCatchPattern":"try { buildRowFn(props); } catch (IllegalArgumentException e) { /* switch kind to random or fix column type */ }","preventionTips":["Only pair kind=sequence with TINYINT/SMALLINT/INTEGER/BIGINT columns.","Generate field-kind configs from the schema so mismatches cannot happen."],"tags":["beam-sql","datagen","config-validation"],"backgroundTag":"invalid-config-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"}