{"record":{"id":"263c41adcacde1be","repo":"apache/seatunnel","slug":"table-tablepath-does-not-exist-in-catalog-cat-263c41","errorCode":null,"errorMessage":"Table ${tablePath} does not exist in catalog ${catalogName}","messagePattern":"Table (.+?) does not exist in catalog (.+?)","errorType":"exception","errorClass":"TableNotExistException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/catalog/PaimonCatalog.java","lineNumber":150,"sourceCode":"        List<String> tables = new ArrayList<>();\n        try {\n            if (databaseExists(identifier.getDatabaseName())) {\n                tables = catalog.listTables(identifier.getDatabaseName());\n            }\n        } catch (org.apache.paimon.catalog.Catalog.DatabaseNotExistException e) {\n            return false;\n        }\n        return tables.contains(identifier.getTableName());\n    }\n\n    @Override\n    public CatalogTable getTable(TablePath tablePath)\n            throws CatalogException, TableNotExistException {\n        try {\n            FileStoreTable paimonFileStoreTableTable = (FileStoreTable) getPaimonTable(tablePath);\n            return toCatalogTable(paimonFileStoreTableTable, tablePath);\n        } catch (Exception e) {\n            throw new TableNotExistException(this.catalogName, tablePath);\n        }\n    }\n\n    public CatalogTable getTableWithProjection(TablePath tablePath, int[] projectionIndex)\n            throws CatalogException, TableNotExistException {\n        try {\n            FileStoreTable paimonFileStoreTableTable = (FileStoreTable) getPaimonTable(tablePath);\n            return toCatalogTable(paimonFileStoreTableTable, tablePath, projectionIndex);\n        } catch (Exception e) {\n            throw new TableNotExistException(this.catalogName, tablePath);\n        }\n    }\n\n    @Override\n    public Table getPaimonTable(TablePath tablePath)\n            throws CatalogException, TableNotExistException {\n        try {\n            return catalog.getTable(toIdentifier(tablePath));","sourceCodeStart":132,"sourceCodeEnd":168,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-paimon/src/main/java/org/apache/seatunnel/connectors/seatunnel/paimon/catalog/PaimonCatalog.java#L132-L168","documentation":"PaimonCatalog.getTable wraps all failures from fetching/converting a Paimon table into SeaTunnel's TableNotExistException for this catalog. Because the catch block swallows every exception type, any error loading or converting the FileStoreTable surfaces as 'table does not exist', which can mask the real cause.","triggerScenarios":"Calling getTable(tablePath) (directly or via toCatalogTable) when the Paimon table is missing at the identifier, the database is missing, the table is not a FileStoreTable, or schema conversion throws — all collapsed to TableNotExistException.","commonSituations":"Table name typo/case mismatch, reading a table that was dropped, schema-file corruption in the warehouse, or an unrelated conversion exception being misreported as not-exist.","solutions":["Confirm the table path (database.table) exists in the Paimon warehouse/metastore, including case.","Check warehouse/metastore config matches the environment containing the table.","Inspect the underlying cause: enable debug logs or open the warehouse directory to see if the real failure is schema conversion rather than a missing table.","Use getPaimonTable to get a narrower native exception when debugging."],"exampleFix":"// before\ncatalog.getTable(TablePath.of(\"db1\", \"Table1\")); // actual table \"table1\"\n// after\nif (catalog.tableExists(TablePath.of(\"db1\", \"table1\"))) {\n    catalog.getTable(TablePath.of(\"db1\", \"table1\"));\n}","handlingStrategy":"try-catch","validationCode":"TablePath tp = TablePath.of(db, table);\nif (!catalog.tableExists(tp)) {\n    throw new IllegalArgumentException(\"Table missing: \" + tp);\n}","typeGuard":null,"tryCatchPattern":"try {\n    CatalogTable t = catalog.getTable(tablePath);\n} catch (TableNotExistException e) {\n    // may be a masked conversion failure; check warehouse dir/logs for the real cause\n    throw e;\n}","preventionTips":["Call tableExists before getTable.","Watch for the broad catch masking non-existence errors — verify the table physically exists in the warehouse when the error seems wrong.","Keep table names case-exact in configs."],"tags":["paimon","catalog","table-not-exist"],"backgroundTag":"resource-not-found","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}