apache/beam · error · SqlUtil.newContextException

Schema is not instanceof CatalogManagerSchema or…

Error message

Schema is not instanceof CatalogManagerSchema or BeamCalciteSchema

What it means

SET (pipeline option) operations require the schema to be a CatalogManagerSchema or BeamCalciteSchema so Beam can get/set/remove pipeline options. If execute() resolves any other schema type, it raises this internal error because pipeline options cannot be stored there.

Solutions

  1. Run SET against a Beam SQL connection backed by BeamCalciteSchema/CatalogManagerSchema
  2. Use the default Beam SQL environment (e.g. BeamSqlEnv or the standard SQL shell)
  3. Verify the schema the statement resolves to in your embedded setup
  4. Set pipeline options programmatically via PipelineOptions if SET is unavailable
Defensive patterns

Strategy: type-guard

Validate before calling

if (!(schema instanceof BeamCalciteSchema) && !(schema instanceof CatalogManagerSchema)) {
  throw new IllegalStateException("SET pipeline options requires a Beam-managed schema");
}

Type guard

boolean supportsPipelineOptions(Schema s) {
  return s instanceof BeamCalciteSchema || s instanceof CatalogManagerSchema;
}

Prevention

When it happens

Trigger: `SET <option> = 'value'` (or SET '<option>' / RESET variants) in a session whose resolved schema is neither CatalogManagerSchema nor BeamCalciteSchema.

Common situations: Running Beam SET commands over a plain Calcite schema connection; embedding Beam SQL with custom root schemas; typos causing resolution to a non-Beam schema.

Understand the failure class

Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/6d17c5b1dfd5382f. Report an issue: GitHub.

Appendix: source

Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/impl/parser/SqlSetOptionBeam.java:69

      CatalogManagerSchema catalogManagerSchema = (CatalogManagerSchema) schema;
      if (value != null) {
        catalogManagerSchema.setPipelineOption(pair.right, SqlDdlNodes.getString(value));
      } else if ("ALL".equals(pair.right)) {
        catalogManagerSchema.removeAllPipelineOptions();
      } else {
        catalogManagerSchema.removePipelineOption(pair.right);
      }
    } else if (schema instanceof BeamCalciteSchema) {
      BeamCalciteSchema beamCalciteSchema = (BeamCalciteSchema) schema;
      if (value != null) {
        beamCalciteSchema.setPipelineOption(pair.right, SqlDdlNodes.getString(value));
      } else if ("ALL".equals(pair.right)) {
        beamCalciteSchema.removeAllPipelineOptions();
      } else {
        beamCalciteSchema.removePipelineOption(pair.right);
      }
    } else {
      throw SqlUtil.newContextException(
          name.getParserPosition(),
          RESOURCE.internal("Schema is not instanceof CatalogManagerSchema or BeamCalciteSchema"));
    }
  }
}

// End SqlDropObject.java

View on GitHub (pinned to 12126d8942)