prestodb/presto · error · IllegalArgumentException
pad must not be in alphabet or whitespace
Error message
pad must not be in alphabet or whitespace
What it means
Argument validation in the Base32 codec constructor: the configured padding byte (or a byte in the line separator overlap check) is also a member of the encoding alphabet or is whitespace. Because the pad character must be unambiguous for decode, the codec refuses the configuration at construction time.
Source
Thrown at presto-common/src/main/java/com/facebook/presto/common/type/encoding/Base32.java:308
throw new IllegalArgumentException("lineLength " + lineLength + " > 0, but lineSeparator is null");
}
// Must be done after initializing the tables
if (containsAlphabetOrPad(lineSeparator)) {
final String sep = StringUtils.newStringUtf8(lineSeparator);
throw new IllegalArgumentException("lineSeparator must not contain Base32 characters: [" + sep + "]");
}
this.encodeSize = BYTES_PER_ENCODED_BLOCK + lineSeparator.length;
this.lineSeparator = new byte[lineSeparator.length];
System.arraycopy(lineSeparator, 0, this.lineSeparator, 0, lineSeparator.length);
}
else {
this.encodeSize = BYTES_PER_ENCODED_BLOCK;
this.lineSeparator = null;
}
this.decodeSize = this.encodeSize - 1;
if (isInAlphabet(pad) || isWhiteSpace(pad)) {
throw new IllegalArgumentException("pad must not be in alphabet or whitespace");
}
}
/**
* <p>
* Decodes all of the provided data, starting at inPos, for inAvail bytes. Should be called at least twice: once
* with the data to decode, and once with inAvail set to "-1" to alert decoder that EOF has been reached. The "-1"
* call is not necessary when decoding, but it doesn't hurt, either.
* </p>
* <p>
* Ignores all non-Base32 characters. This is how chunked (e.g. 76 character) data is handled, since CR and LF are
* silently ignored, but has implications for other bytes, too. This method subscribes to the garbage-in,
* garbage-out philosophy: it will not check the provided data for validity.
* </p>
*
* @param in byte[] array of ascii data to Base32 decode.
* @param inPos Position to start reading data from.
* @param inAvail Amount of bytes available from input for encoding.View on GitHub (pinned to 55bb57d202)
Solutions
- Choose a pad byte outside the alphabet and whitespace
- Use the default '=' pad character
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-common/src/main/java/com/facebook/presto/common/type/encoding/Base32.java:308 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/2a1459bca82336a4.
Report an issue: GitHub.