{"record":{"id":"171f432cf1d32d66","repo":"apache/beam","slug":"failed-to-re-parse-tblproperties-json","errorCode":null,"errorMessage":"Failed to re-parse TBLPROPERTIES JSON ","messagePattern":"Failed to re-parse TBLPROPERTIES JSON ","errorType":"exception","errorClass":"AssertionError","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/SchemaIOTableProviderWrapper.java","lineNumber":87,"sourceCode":"    ObjectNode tableProperties = tableDefinition.getProperties();\n\n    try {\n      RowJson.RowJsonDeserializer deserializer =\n          RowJson.RowJsonDeserializer.forSchema(getSchemaIOProvider().configurationSchema())\n              .withNullBehavior(RowJson.RowJsonDeserializer.NullBehavior.ACCEPT_MISSING_OR_NULL);\n\n      Row configurationRow =\n          newObjectMapperWith(deserializer).readValue(tableProperties.toString(), Row.class);\n\n      SchemaIO schemaIO =\n          getSchemaIOProvider()\n              .from(tableDefinition.getLocation(), configurationRow, tableDefinition.getSchema());\n\n      return new SchemaIOTableWrapper(schemaIO);\n    } catch (InvalidConfigurationException | InvalidSchemaException e) {\n      throw new InvalidTableException(e.getMessage());\n    } catch (JsonProcessingException e) {\n      throw new AssertionError(\"Failed to re-parse TBLPROPERTIES JSON \" + tableProperties);\n    }\n  }\n\n  protected BeamTableStatistics getTableStatistics(PipelineOptions options, SchemaIO schemaIO) {\n    if (isBounded().equals(PCollection.IsBounded.BOUNDED)) {\n      return BeamTableStatistics.BOUNDED_UNKNOWN;\n    }\n    return BeamTableStatistics.UNBOUNDED_UNKNOWN;\n  }\n\n  private PCollection.IsBounded isBounded() {\n    return getSchemaIOProvider().isBounded();\n  }\n\n  /** A generalized {@link BeamSqlTable} for IOs to create IO readers and writers. */\n  private class SchemaIOTableWrapper extends BaseBeamTable {\n    protected final SchemaIO schemaIO;\n","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/SchemaIOTableProviderWrapper.java#L69-L105","documentation":"A sibling guard in SchemaIOTableProviderWrapper.buildBeamSqlTable: when re-parsing the stored TBLPROPERTIES JSON into a configuration Row fails, the wrapper raises InvalidTableException with a 'Failed to re-parse TBLPROPERTIES JSON' message plus the cause. It signals malformed or schema-incompatible JSON in the table definition rather than an IO problem.","triggerScenarios":"Thrown at sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/SchemaIOTableProviderWrapper.java:87 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Validate the TBLPROPERTIES JSON syntax before creating the table.","Align property keys/types with the SchemaIO configuration schema (ACCEPT_MISSING_OR_NULL null behavior is allowed, wrong types are not).","Inspect the wrapped exception for the exact JSON deserialization failure point."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}