{"record":{"id":"501e3e50565b296d","repo":"apache/beam","slug":"unknown-beam-read-property-key","errorCode":null,"errorMessage":"Unknown Beam read property: {key}","messagePattern":"Unknown Beam read property: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","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":89,"sourceCode":"    String parsedTimestamp = null;\n    Map<String, String> parsedHadoopConfig = new HashMap<>();\n\n    ObjectNode properties = table.getProperties();\n    for (Map.Entry<String, JsonNode> property : properties.properties()) {\n      String key = property.getKey();\n      String lowerKey = key.toLowerCase();\n      JsonNode val = property.getValue();\n\n      if (lowerKey.startsWith(BEAM_WRITE_PROPERTY)) {\n        // TODO: Support writing to Delta Lake tables once a Delta Lake sink is\n        // available.\n        throw new IllegalArgumentException(\n            String.format(\n                \"Beam write property '%s' is not supported. Writing to Delta Lake tables is currently not supported.\",\n                key));\n      } else if (lowerKey.startsWith(BEAM_READ_PROPERTY)) {\n        // none supported yet\n        throw new IllegalArgumentException(\"Unknown Beam read property: \" + key);\n      } else if (lowerKey.equalsIgnoreCase(VERSION_FIELD)) {\n        parsedVersion = parseVersion(val);\n      } else if (lowerKey.equalsIgnoreCase(TIMESTAMP_FIELD)) {\n        parsedTimestamp = val.asText();\n      } else if (lowerKey.equalsIgnoreCase(HADOOP_CONFIG_FIELD)\n          || lowerKey.equalsIgnoreCase(HADOOP_CONFIG_CAMEL_FIELD)) {\n        parseHadoopConfig(val, parsedHadoopConfig);\n      } else {\n        throw new IllegalArgumentException(String.format(\"Unknown property '%s'\", key));\n      }\n    }\n\n    if (parsedVersion != null && parsedTimestamp != null) {\n      throw new IllegalArgumentException(\"Cannot set both version and timestamp.\");\n    }\n\n    this.version = parsedVersion;\n    this.timestamp = parsedTimestamp;","sourceCodeStart":71,"sourceCodeEnd":107,"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#L71-L107","documentation":"DeltaTable.validateTableProperties rejects any property starting with the Beam read property prefix because the Delta provider currently supports no read properties at all. Any 'beam_read_*' key supplied is treated as unknown and rejected with IllegalArgumentException.","triggerScenarios":"Passing a 'beam_read_*' key in the Delta table's properties during table creation or validation.","commonSituations":"Reusing property definitions from providers like text/parquet that support beam_read properties (e.g. format, compression) against a Delta table.","solutions":["Remove the 'beam_read_*' property from the Delta table configuration.","Configure reading behavior through the supported keys instead: 'version', 'timestamp', or 'hadoop_config'.","Upgrade Beam and check if the Delta provider has gained read-property support."],"exampleFix":"// before\nTBLPROPERTIES { 'beam_read_format': 'delta' }\n// after\nTBLPROPERTIES { 'version': '5' }","handlingStrategy":"validation","validationCode":"// before building the Delta table\nproperties.keySet().forEach(k -> {\n  if (k.toLowerCase().startsWith(\"beam_read\")) {\n    throw new IllegalArgumentException(\"beam_read property \" + k + \" not supported for Delta Lake\");\n  }\n});","typeGuard":null,"tryCatchPattern":"try {\n  table = new DeltaTable(tableId, schema, properties);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().startsWith(\"Unknown Beam read property\")) {\n    // strip beam_read_* keys and retry with only version/timestamp/hadoop_config\n  }\n}","preventionTips":["Use only 'version', 'timestamp', and 'hadoop_config' keys for Delta tables.","Read configuration like format/compression belongs to other providers; keep provider configs separate.","Validate property maps against a documented whitelist before table creation."],"tags":["java","beam-sql","delta-lake","table-properties"],"backgroundTag":"invalid-config-value","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}