appsmithorg/appsmith · error · AppsmithPluginException
PE-ARG-5000
PE-ARG-5000
Error message
{} not found in the known column names: {} What it means
An argument-validation error from `validateProjectionColumns`: you asked the UQI filter to project (display) a column name that does not exist in the auto-derived schema (`schema.keySet()`). The schema is built from the first row of the data, so a projection column must match a key actually present in that row.
Source
Thrown at app/server/appsmith-interfaces/src/main/java/com/appsmith/external/services/ce/FilterDataServiceCE.java:293
limit = "20";
}
values.add(new PreparedStatementValueDTO(limit, DataType.INTEGER));
// Set offset value and data type for prepared statement substitution
String offset = paginateBy.get(PAGINATE_OFFSET_KEY);
if (isBlank(offset)) {
offset = "0";
}
values.add(new PreparedStatementValueDTO(offset, DataType.INTEGER));
}
private void validateProjectionColumns(List<String> projectionColumns, Map<String, DataType> schema) {
if (CollectionUtils.isEmpty(projectionColumns)) {
return;
}
for (String columnName : projectionColumns) {
if (!schema.containsKey(columnName)) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,
columnName + " not found in the known column names: " + schema.keySet());
}
}
}
private void validateSortByColumns(List<Map<String, String>> sortBy, Map<String, DataType> schema) {
if (isSortConditionEmpty(sortBy)) {
return;
}
for (Map<String, String> sortCondition : sortBy) {
String columnName = sortCondition.get(SORT_BY_COLUMN_NAME_KEY);
if (!isBlank(columnName) && !schema.containsKey(columnName)) {
throw new AppsmithPluginException(
AppsmithPluginError.PLUGIN_EXECUTE_ARGUMENT_ERROR,
columnName + " not found in the known column names: " + schema.keySet());
}
if (!isBlank(columnName)) {View on GitHub (pinned to 8cd9021c24)
Solutions
- Print `schema.keySet()` (shown in the error) and compare against your projection list.
- Correct the spelling/case of the offending column, or remove it from `projectionColumns`.
- If the field genuinely exists in the data, ensure the first item in `items` contains it - schema is derived from `items.get(0)`.
Example fix
// before projectionColumns = ["UserNAme"] // typo / wrong case // after projectionColumns = ["UserName"] // matches a key in schema.keySet()
Defensive patterns
Strategy: validation
Validate before calling
Map<String, DataType> schema = filterDataService.generateSchema(items, conversionMap);
List<String> projectionColumns = List.of("UserName");
List<String> unknown = projectionColumns.stream()
.filter(c -> !schema.containsKey(c))
.collect(Collectors.toList());
if (!unknown.isEmpty()) {
throw new IllegalArgumentException("Unknown projection columns: " + unknown
+ ". Valid: " + schema.keySet());
} Prevention
- Derive the schema from the same `items` you pass to the filter and validate projection names against `schema.keySet()` first.
- Drive projection column lists from the schema keys in the UI rather than free-text input.
- Remember schema is case-sensitive and inferred from items.get(0).
When it happens
Trigger: Calling the filter flow with `projectionColumns` containing a name that is not a key in the generated schema map - typically a typo, a stale field name, or referencing a column that only appears in later rows.
Common situations: Renaming a field upstream and forgetting to update the projection list; case mismatch (schema is case-sensitive under H2 with `DATABASE_TO_UPPER=FALSE`); projecting a computed/aliased field that does not exist in the raw items.
Related errors
AI-assisted analysis of appsmithorg/appsmith@8cd9021c24 (2026-08-12).
Data as JSON: /api/errors/9102a1b9c5793b3c.
Report an issue: GitHub.