apache/beam · error · UnsupportedOperationException
Cannot write to SHOW CATALOGS
Error message
Cannot write to SHOW CATALOGS
What it means
SystemTables' SHOW CATALOGS pseudo-table is read-only by design: its buildIOWriter is a sentinel guard that always throws because catalog metadata views in Beam SQL cannot be written to. Any INSERT/UPDATE targeting SHOW CATALOGS reaches this throw.
Solutions
- Do not write to metadata views; query SHOW CATALOGS only.
- To change the catalog set, use catalog management operations (CREATE/DROP CATALOG) instead of writing to the system 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:86 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/8dbdda7431216db9.
Report an issue: GitHub.
Appendix: source
Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/SystemTables.java:86
}
@Override
public PCollection<Row> buildIOReader(PBegin begin) {
Collection<Catalog> catalogs =
currentOnly
? ImmutableList.of(catalogManager.currentCatalog())
: catalogManager.catalogs();
List<Row> rows =
catalogs.stream()
.map(cat -> Row.withSchema(SCHEMA).addValues(cat.name(), cat.type()).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 CATALOGS");
}
@Override
public PCollection.IsBounded isBounded() {
return PCollection.IsBounded.BOUNDED;
}
@Override
public Schema getSchema() {
return SCHEMA;
}
}
public static class DatabasesMetaTable extends BaseBeamTable {
private final Catalog catalog;
private final boolean currentOnly;
private static final Schema SCHEMA = Schema.builder().addStringField("NAME").build();
View on GitHub (pinned to 12126d8942)