{"record":{"id":"03038a515fb3676f","repo":"prestodb/presto","slug":"unsupported-stream-kind","errorCode":null,"errorMessage":"Unsupported stream kind: ","messagePattern":"Unsupported stream kind: ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-orc/src/main/java/com/facebook/presto/orc/metadata/OrcMetadataWriter.java","lineNumber":342,"sourceCode":"    private static OrcProto.Stream.Kind toStreamKind(StreamKind streamKind)\n    {\n        switch (streamKind) {\n            case PRESENT:\n                return OrcProto.Stream.Kind.PRESENT;\n            case DATA:\n                return OrcProto.Stream.Kind.DATA;\n            case LENGTH:\n                return OrcProto.Stream.Kind.LENGTH;\n            case DICTIONARY_DATA:\n                return OrcProto.Stream.Kind.DICTIONARY_DATA;\n            case DICTIONARY_COUNT:\n                return OrcProto.Stream.Kind.DICTIONARY_COUNT;\n            case SECONDARY:\n                return OrcProto.Stream.Kind.SECONDARY;\n            case ROW_INDEX:\n                return OrcProto.Stream.Kind.ROW_INDEX;\n        }\n        throw new IllegalArgumentException(\"Unsupported stream kind: \" + streamKind);\n    }\n\n    private static OrcProto.ColumnEncoding toColumnEncoding(ColumnEncoding columnEncodings)\n    {\n        checkArgument(\n                !columnEncodings.getAdditionalSequenceEncodings().isPresent(),\n                \"Writing columns with non-zero sequence IDs is not supported in ORC: \" + columnEncodings);\n\n        return OrcProto.ColumnEncoding.newBuilder()\n                .setKind(toColumnEncoding(columnEncodings.getColumnEncodingKind()))\n                .setDictionarySize(columnEncodings.getDictionarySize())\n                .build();\n    }\n\n    private static OrcProto.ColumnEncoding.Kind toColumnEncoding(ColumnEncodingKind columnEncodingKind)\n    {\n        switch (columnEncodingKind) {\n            case DIRECT:","sourceCodeStart":324,"sourceCodeEnd":360,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-orc/src/main/java/com/facebook/presto/orc/metadata/OrcMetadataWriter.java#L324-L360","documentation":"OrcMetadataWriter.toStreamKind() converts internal StreamKind values into ORC protobuf Stream.Kind during stream serialization. A StreamKind with no switch case causes IllegalArgumentException(\"Unsupported stream kind: ...\"). This is an exhaustiveness check so unknown internal stream kinds never silently serialize.","triggerScenarios":"Writing a stream whose StreamKind falls through the switch in toStream(), e.g. a new stream kind introduced internally but not mapped.","commonSituations":"Writer internals out of sync with the protobuf schema; forks/custom ORC writers adding stream kinds; version skew after an upgrade.","solutions":["Upgrade presto-orc so all internal StreamKind values map to protobuf kinds","Identify the stream kind from the message and add the missing mapping if maintaining a fork","Avoid writer code paths that emit the unsupported stream kind"],"exampleFix":"// before\nthrow new IllegalArgumentException(\"Unsupported stream kind: \" + streamKind);\n// after\ncase BLOOM_FILTER_UTF8:\n    return OrcProto.Stream.Kind.BLOOM_FILTER_UTF8; // add missing mapping","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    orcWriter.close();\n} catch (IllegalArgumentException e) {\n    if (e.getMessage() != null && e.getMessage().startsWith(\"Unsupported stream kind:\")) {\n        log.error(\"ORC writer emitted an unmapped stream kind; upgrade presto-orc\", e);\n        throw new IOException(\"ORC stream kind not supported by this writer version\", e);\n    }\n    throw e;\n}","preventionTips":["Keep presto-orc internal and protobuf versions in lockstep","When forking, add exhaustive switch cases for new stream kinds","Run ORC write+read round-trip tests in CI"],"tags":["orc","stream","metadata-writer","unsupported-kind"],"backgroundTag":"unsupported-stream-kind","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"}