prestodb/presto · error · ParquetDecodingException

Dictionary encoding does not support:

Error message

Dictionary encoding does not support: 

What it means

Dispatch guard in initDictionary: dictionary decoding has no Dictionary implementation for the column's physical type (only BINARY/FIXED_LEN_BYTE_ARRAY/INT96/INT64/DOUBLE/... are mapped). The writer used dictionary encoding on a type Presto cannot decode that way.

Source

Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetEncoding.java:99

                throws IOException
        {
            switch (descriptor.getType()) {
                case BINARY:
                    return new BinaryDictionary(dictionaryPage);
                case FIXED_LEN_BYTE_ARRAY:
                    return new BinaryDictionary(dictionaryPage, descriptor.getTypeLength());
                case INT96:
                    return new BinaryDictionary(dictionaryPage, INT96_TYPE_LENGTH);
                case INT64:
                    return new LongDictionary(dictionaryPage);
                case DOUBLE:
                    return new DoubleDictionary(dictionaryPage);
                case INT32:
                    return new IntegerDictionary(dictionaryPage);
                case FLOAT:
                    return new FloatDictionary(dictionaryPage);
                default:
                    throw new ParquetDecodingException("Dictionary encoding does not support: " + descriptor.getType());
            }
        }
    },

    RLE {
        @Override
        public ValuesReader getValuesReader(ColumnDescriptor descriptor, ValuesType valuesType)
        {
            int bitWidth = BytesUtils.getWidthFromMaxInt(getMaxLevel(descriptor, valuesType));
            if (bitWidth == 0) {
                return new ZeroIntegerValuesReader();
            }
            return new RunLengthBitPackingHybridValuesReader(bitWidth);
        }
    },

    BIT_PACKED {
        @Override

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Rewrite the file without dictionary encoding for that column (e.g. plain encoding)
  2. Cast/convert the column to a dictionary-supported physical type
  3. Upgrade Presto to a release with the missing dictionary decoder
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetEncoding.java:99 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/a007fb93745f5474. Report an issue: GitHub.