apache/beam · error · UnsupportedOperationException
Cannot write to SHOW DATABASES
Error message
Cannot write to SHOW DATABASES
What it means
The SHOW DATABASES system table is read-only: its buildIOWriter is a fixed guard that throws whenever a write is attempted against the databases metadata view. It reflects that Beam SQL metadata tables never accept writes.
Solutions
- Treat SHOW DATABASES as query-only and remove any DML targeting it.
- Create or drop databases via catalog API operations rather than writing to the metadata table.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/SystemTables.java:129 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/b94eb2d4844de20b.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/SystemTables.java:129
public PCollection<Row> buildIOReader(PBegin begin) {
Collection<String> databases;
if (currentOnly) {
@Nullable String currentDb = catalog.currentDatabase();
databases = currentDb != null ? Collections.singleton(currentDb) : Collections.emptyList();
} else {
databases = catalog.databases();
}
List<Row> rows =
databases.stream()
.map(db -> Row.withSchema(SCHEMA).addValues(db).build())
.collect(Collectors.toList());
return begin.apply(Create.of(rows).withRowSchema(SCHEMA));
}
@Override
public POutput buildIOWriter(PCollection<Row> input) {
throw new UnsupportedOperationException("Cannot write to SHOW DATABASES");
}
@Override
public PCollection.IsBounded isBounded() {
return PCollection.IsBounded.BOUNDED;
}
@Override
public Schema getSchema() {
return SCHEMA;
}
}
public static class TablesMetaTable extends BaseBeamTable {
private final Catalog catalog;
private final String dbName;
private static final Schema SCHEMA =
Schema.builder().addStringField("NAME").addStringField("TYPE").build();View on GitHub (pinned to 12126d8942)