{"record":{"id":"8daa8afd09f4d1e1","repo":"prestodb/presto","slug":"unknown-data-format-s-for-column-s","errorCode":null,"errorMessage":"unknown data format '%s' for column '%s'","messagePattern":"unknown data format '(.+?)' for column '(.+?)'","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-redis/src/main/java/com/facebook/presto/redis/decoder/hash/HashRedisRowDecoderFactory.java","lineNumber":55,"sourceCode":"        return new HashRedisRowDecoder(chooseFieldDecoders(columns));\n    }\n\n    private Map<DecoderColumnHandle, RedisFieldDecoder<String>> chooseFieldDecoders(Set<DecoderColumnHandle> columns)\n    {\n        return columns.stream()\n                .collect(ImmutableMap.toImmutableMap(identity(), this::chooseFieldDecoder));\n    }\n\n    private RedisFieldDecoder<String> chooseFieldDecoder(DecoderColumnHandle column)\n    {\n        checkArgument(!column.isInternal(), \"unexpected internal column '%s'\", column.getName());\n        if (column.getDataFormat() == null) {\n            return new HashRedisFieldDecoder();\n        }\n        if (column.getType().getJavaType() == long.class && \"iso8601\".equals(column.getDataFormat())) {\n            return new ISO8601HashRedisFieldDecoder();\n        }\n        throw new IllegalArgumentException(format(\"unknown data format '%s' for column '%s'\", column.getDataFormat(), column.getName()));\n    }\n}\n","sourceCodeStart":37,"sourceCodeEnd":58,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-redis/src/main/java/com/facebook/presto/redis/decoder/hash/HashRedisRowDecoderFactory.java#L37-L58","documentation":"HashRedisRowDecoderFactory.chooseFieldDecoder selects a field decoder based on the column's dataFormat. For hash decoders only the default (null dataFormat) and 'iso8601' for BIGINT (long) columns are supported; any other dataFormat string throws IllegalArgumentException naming the format and column.","triggerScenarios":"A Redis hash-table column declares an unsupported dataFormat value (e.g. 'epochmillis', 'bytes', 'json') or uses 'iso8601' on a non-BIGINT (e.g. VARCHAR) column.","commonSituations":"Copying decoder options from other connectors (Kafka supports more formats) into Redis hash DDL; typo in 'iso8601'; applying iso8601 to a VARCHAR timestamp column.","solutions":["Remove the unsupported dataFormat attribute so the default HashRedisFieldDecoder is used","Use dataFormat='iso8601' only on BIGINT columns","If a timestamp string is needed, store/declare as VARCHAR without iso8601 and parse in SQL with date_parse"],"exampleFix":"// before\nevent_time TIMESTAMP WITH (dataFormat='iso8601') -- hash decoder requires BIGINT\n// after\nevent_time BIGINT WITH (dataFormat='iso8601')","handlingStrategy":"validation","validationCode":"String df = column.getDataFormat();\nif (df != null && !(\"iso8601\".equals(df) && column.getType() == BIGINT)) {\n    throw new IllegalArgumentException(\"unsupported dataFormat for hash decoder: \" + df);\n}","typeGuard":null,"tryCatchPattern":"try { Decoder d = HashRedisRowDecoderFactory.create(...); } catch (IllegalArgumentException e) { log.error(\"bad column definition: \" + e.getMessage()); throw e; }","preventionTips":["Only use dataFormat='iso8601' with BIGINT columns in hash tables","Don't copy Kafka decoder options into Redis hash DDL","Validate table definitions against connector-supported formats"],"tags":["redis","decoder","ddl","data-format"],"backgroundTag":"unsupported-data-format","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}