{"record":{"id":"00cdd52f9253417e","repo":"apache/beam","slug":"writing-to-delta-lake-tables-is-currently-not-supported","errorCode":null,"errorMessage":"Writing to Delta Lake tables is currently not supported.","messagePattern":"Writing to Delta Lake tables is currently not supported\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/sql/delta/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/delta/DeltaTable.java","lineNumber":169,"sourceCode":"    // / Managed Delta\n    // Lake source.\n    String error = \"%s does not support predicate/project push-down, yet non-empty %s is passed.\";\n    if (!(filters instanceof DefaultTableFilter)) {\n      throw new UnsupportedOperationException(\n          String.format(error, this.getClass().getName(), \"'filters'\"));\n    }\n    if (!fieldNames.isEmpty()) {\n      throw new UnsupportedOperationException(\n          String.format(error, this.getClass().getName(), \"'fieldNames'\"));\n    }\n    return buildIOReader(begin);\n  }\n\n  @Override\n  public POutput buildIOWriter(PCollection<Row> input) {\n    // TODO: Support writing to Delta Lake tables once a Delta Lake sink is\n    // available.\n    throw new UnsupportedOperationException(\n        \"Writing to Delta Lake tables is currently not supported.\");\n  }\n\n  @Override\n  public PCollection.IsBounded isBounded() {\n    return PCollection.IsBounded.BOUNDED;\n  }\n\n  @Override\n  public BeamSqlTableFilter constructFilter(List<RexNode> filter) {\n    // TODO: Support predicate pushdown when supported by DeltaIO / Managed Delta\n    // Lake source.\n    return new DefaultTableFilter(filter);\n  }\n\n  private Map<String, Object> getBaseConfig() {\n    ImmutableMap.Builder<String, Object> managedConfigBuilder = ImmutableMap.builder();\n    managedConfigBuilder.put(\"table\", tableLocation);","sourceCodeStart":151,"sourceCodeEnd":187,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/sql/delta/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/delta/DeltaTable.java#L151-L187","documentation":"DeltaTable.buildIOWriter is unimplemented because no Delta Lake sink exists in Beam. Any attempt to write pipeline output into a Delta table via Beam SQL (INSERT INTO a Delta table) throws UnsupportedOperationException unconditionally.","triggerScenarios":"Executing INSERT/CREATE TABLE AS SELECT against a Delta table in Beam SQL, or otherwise invoking buildIOWriter on a DeltaTable instance.","commonSituations":"Assuming Delta tables are writable like Iceberg/BigQuery tables in Beam SQL; migrating pipelines from other providers to Delta Lake.","solutions":["Do not write via Beam SQL to Delta Lake; write to an intermediate sink and publish to Delta with Delta Lake tooling (e.g. Spark, delta-rs).","Use a provider with sink support (e.g. Iceberg, BigQuery) if writes from Beam are required.","Track Beam's Delta Lake sink work and upgrade when the TODO is resolved."],"exampleFix":"// before\nINSERT INTO delta_t SELECT * FROM csv_t; -- unsupported\n// after\n-- write csv_t to a supported sink, then append to delta_t via Delta Lake tooling","handlingStrategy":"validation","validationCode":"if (ioTarget instanceof DeltaTable) {\n  throw new IllegalArgumentException(\"Delta Lake tables cannot be written to from Beam SQL; use a supported sink\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  output = sqlTransform.apply(input); // INSERT INTO delta table\n} catch (UnsupportedOperationException e) {\n  if (e.getMessage().contains(\"Writing to Delta Lake\")) {\n    // reroute writes to a supported sink and publish to Delta externally\n  }\n}","preventionTips":["Treat Delta tables in Beam SQL as read-only sources.","Route writes to Iceberg/BigQuery or other sink-capable providers.","Publish to Delta Lake with external tooling (Spark, delta-rs) after Beam writes."],"tags":["java","beam-sql","delta-lake","sink","write"],"backgroundTag":"method-not-implemented","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}