{"record":{"id":"82578c87ff61a18c","repo":"prestodb/presto","slug":"not-supported-82578c","errorCode":"NOT_SUPPORTED","errorMessage":"No lexicoder for type ","messagePattern":"No lexicoder for type ","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-accumulo/src/main/java/com/facebook/presto/accumulo/serializers/LexicoderRowSerializer.java","lineNumber":396,"sourceCode":"    {\n        return (T) getLexicoder(type).decode(value);\n    }\n\n    public static Lexicoder getLexicoder(Type type)\n    {\n        if (Types.isArrayType(type)) {\n            return getListLexicoder(type);\n        }\n        else if (Types.isMapType(type)) {\n            return getMapLexicoder(type);\n        }\n        else if (type instanceof VarcharType) {\n            return LEXICODER_MAP.get(VARCHAR);\n        }\n        else {\n            Lexicoder lexicoder = LEXICODER_MAP.get(type);\n            if (lexicoder == null) {\n                throw new PrestoException(NOT_SUPPORTED, \"No lexicoder for type \" + type);\n            }\n            return lexicoder;\n        }\n    }\n\n    private static ListLexicoder getListLexicoder(Type elementType)\n    {\n        ListLexicoder<?> listLexicoder = LIST_LEXICODERS.get(elementType.getTypeSignature());\n        if (listLexicoder == null) {\n            listLexicoder = new ListLexicoder(getLexicoder(Types.getElementType(elementType)));\n            LIST_LEXICODERS.put(elementType.getTypeSignature(), listLexicoder);\n        }\n        return listLexicoder;\n    }\n\n    private static MapLexicoder getMapLexicoder(Type type)\n    {\n        MapLexicoder<?, ?> mapLexicoder = MAP_LEXICODERS.get(type.getTypeSignature());","sourceCodeStart":378,"sourceCodeEnd":414,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-accumulo/src/main/java/com/facebook/presto/accumulo/serializers/LexicoderRowSerializer.java#L378-L414","documentation":"LexicoderRowSerializer.getLexicoder resolves an Accumulo Lexicoder for a Presto Type from its LEXICODER_MAP; when a type has no registered lexicoder it throws NOT_SUPPORTED with 'No lexicoder for type <type>'. Called from encode/decode and list/map lexicoder resolution, so it blocks reading or writing that column.","triggerScenarios":"Encoding/decoding a column whose Type is absent from LEXICODER_MAP (commonly BOOLEAN, DATE, TIME, TIMESTAMP, DECIMAL, JSON, or any complex type whose element types also resolve to nothing), or using the serializer for a table whose schema contains such types.","commonSituations":"Table created with serializer=lexicoder but schema includes types added in later Presto versions; nested array/map element types unsupported; choosing lexicoder serializer for a table that previously used another serializer.","solutions":["Cast unsupported columns to supported types (BIGINT, DOUBLE, VARCHAR, VARBINARY) in the table schema","Register a lexicoder for the type in LEXICODER_MAP (e.g. a custom Lexicoder) if maintaining a fork","Use a different RowSerializer (e.g. ZookeeperRowSerializer or a custom one) for tables with exotic types","Upgrade to a newer connector version with a broader LEXICODER_MAP"],"exampleFix":"// before\nprivate static final Map<Type, Lexicoder<?>> LEXICODER_MAP = ImmutableMap.<Type, Lexicoder<?>>builder()\n    .put(BIGINT, new ULongLexicoder())...\n    .build();\n// after\nprivate static final Map<Type, Lexicoder<?>> LEXICODER_MAP = ImmutableMap.<Type, Lexicoder<?>>builder()\n    .put(BIGINT, new ULongLexicoder())\n    .put(DATE, new DateLexicoder())\n    .put(BOOLEAN, new BooleanLexicoder())...\n    .build();","handlingStrategy":"validation","validationCode":"private static final Set<Type> LEXICODER_TYPES = ImmutableSet.of(BIGINT, DOUBLE, VARCHAR, VARBINARY, INTEGER, BOOLEAN);\nif (!LEXICODER_TYPES.contains(type)) {\n    throw new IllegalArgumentException(\"No lexicoder registered for \" + type);\n}","typeGuard":"static boolean hasLexicoder(Type t) {\n    return t != null && LEXICODER_MAP.containsKey(t) || t instanceof VarcharType || t instanceof BigintType;\n}","tryCatchPattern":"try {\n    byte[] bytes = serializer.encode(type, value);\n} catch (PrestoException e) {\n    if (e.getErrorCode().getCode() == StandardErrorCode.NOT_SUPPORTED.toErrorCode().getCode()) {\n        // fall back to another serializer or fail the column\n    }\n    throw e;\n}","preventionTips":["Restrict lexicoder-serialized tables to BIGINT, DOUBLE, VARCHAR, VARBINARY and compatible types","Check LEXICODER_MAP coverage when introducing new column types","Choose the serializer (Zookeeper vs lexicoder vs string) based on the full schema, not just current columns","Test encode/decode round trips for every column type in CI"],"tags":["presto","accumulo","unsupported-type","lexicoder","serialization"],"backgroundTag":"unsupported-presto-type","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"}