{"record":{"id":"92e18d308401342d","repo":"apache/beam","slug":"no-such-table-name","errorCode":null,"errorMessage":"No such table: ${name}","messagePattern":"No such table: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/store/InMemoryMetaStore.java","lineNumber":158,"sourceCode":"  public TableProvider getProvider(String type) {\n    @Nullable TableProvider provider = providers.get(type.toLowerCase());\n    if (provider != null) {\n      return provider;\n    }\n\n    // check nested InMemoryMetaStore\n    provider = providers.get(getTableType());\n    if (provider != null && (provider instanceof InMemoryMetaStore)) {\n      return ((InMemoryMetaStore) provider).getProvider(type);\n    }\n\n    throw new IllegalStateException(\"No TableProvider registered for table type: \" + type);\n  }\n\n  @Override\n  public AlterTableOps alterTable(String name) {\n    if (!tables.containsKey(name)) {\n      throw new IllegalArgumentException(\"No such table: \" + name);\n    }\n\n    Table table = tables.get(name);\n    return getProvider(table.getType()).alterTable(name);\n  }\n}\n","sourceCodeStart":140,"sourceCodeEnd":165,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/sql/src/main/java/org/apache/beam/sdk/extensions/sql/meta/store/InMemoryMetaStore.java#L140-L165","documentation":"InMemoryMetaStore.alterTable requires the named table to exist in the metastore before returning the provider's AlterTableOps; otherwise it throws IllegalArgumentException(\"No such table: ...\"). It is the alter-path equivalent of the dropTable existence check.","triggerScenarios":"Calling metaStore.alterTable(name) for a table never created, already dropped, or with mismatched casing/spelling.","commonSituations":"Schema-evolution scripts running before table setup; renaming tables and forgetting to update alter calls; running ALTER against a fresh metastore in tests.","solutions":["Create the table before altering it.","Check existence first: if (metaStore.getTable(name) != null) { metaStore.alterTable(name); }","Fix the table name to match the registered one exactly."],"exampleFix":"// before\nmetaStore.alterTable(\"orders\").addFields(...);\n// after\nif (metaStore.getTable(\"orders\") != null) {\n  metaStore.alterTable(\"orders\").addFields(...);\n}","handlingStrategy":"validation","validationCode":"if (metaStore.getTable(name) == null) {\n  throw new IllegalStateException(\"Cannot alter missing table: \" + name);\n}\nmetaStore.alterTable(name);","typeGuard":null,"tryCatchPattern":"try {\n  metaStore.alterTable(name).addFields(...);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().startsWith(\"No such table\")) { /* create first or fix name */ }\n}","preventionTips":["Run schema-evolution scripts after table setup.","Keep table names in shared constants.","Check getTable(name) before any alter."],"tags":["beam-sql","metastore","entity-not-found"],"backgroundTag":"record-not-found","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"}