{"record":{"id":"39c921f13a6cb188","repo":"apache/seatunnel","slug":"getproducedcatalogtables-method-has-not-been-imple","errorCode":null,"errorMessage":"getProducedCatalogTables method has not been implemented.","messagePattern":"getProducedCatalogTables method has not been implemented\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SeaTunnelSource.java","lineNumber":68,"sourceCode":"\n    /**\n     * Get the data type of the records produced by this source.\n     *\n     * @deprecated Please use {@link #getProducedCatalogTables}\n     * @return SeaTunnel data type.\n     */\n    @Deprecated\n    default SeaTunnelDataType<T> getProducedType() {\n        return (SeaTunnelDataType) getProducedCatalogTables().get(0).getSeaTunnelRowType();\n    }\n\n    /**\n     * Get the catalog tables output by this source, It is recommended that all connectors implement\n     * this method instead of {@link #getProducedType}. CatalogTable contains more information to\n     * help downstream support more accurate and complete synchronization capabilities.\n     */\n    default List<CatalogTable> getProducedCatalogTables() {\n        throw new UnsupportedOperationException(\n                \"getProducedCatalogTables method has not been implemented.\");\n    }\n\n    /**\n     * Create source reader, used to produce data.\n     *\n     * @param readerContext reader context.\n     * @return source reader.\n     * @throws Exception when create reader failed.\n     */\n    SourceReader<T, SplitT> createReader(SourceReader.Context readerContext) throws Exception;\n\n    /**\n     * Create split serializer, use to serialize/deserialize split generated by {@link\n     * SourceSplitEnumerator}.\n     *\n     * @return split serializer.\n     */","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-api/src/main/java/org/apache/seatunnel/api/source/SeaTunnelSource.java#L50-L86","documentation":"SeaTunnelSource.getProducedCatalogTables has a default implementation that throws UnsupportedOperationException. The framework increasingly relies on CatalogTable (rich schema metadata) instead of the legacy getProducedType, so sources that have not migrated to implement this method fail when downstream code requests catalog tables.","triggerScenarios":"Calling getProducedCatalogTables() on a custom or older connector Source that only implements getProducedType(); any pipeline path (getProducedType fallback, restoreAndPrepareSource, reader creation) that resolves produced type via catalog tables.","commonSituations":"Using a third-party or hand-written Source written against an older SeaTunnel API version; upgrading the engine while keeping an old custom connector jar.","solutions":["Implement getProducedCatalogTables() in the Source, returning List<CatalogTable> built from the connector's schema","As a stopgap, ensure the job path uses getProducedType or supply schema info via source config if the connector supports it","Update/rebuild the connector against the current SeaTunnel API version"],"exampleFix":"// before\n// Source relies on default method\n// after\n@Override\npublic List<CatalogTable> getProducedCatalogTables() {\n    return Collections.singletonList(CatalogTable.of(...));\n}","handlingStrategy":"fallback","validationCode":"List<CatalogTable> tables;\ntry { tables = source.getProducedCatalogTables(); } catch (UnsupportedOperationException e) { tables = legacyFromProducedType(source); }","typeGuard":null,"tryCatchPattern":"try { tables = src.getProducedCatalogTables(); } catch (UnsupportedOperationException e) { /* fallback to getProducedType */ }","preventionTips":["Implement getProducedCatalogTables in all custom sources","Pin connector versions compatible with your engine","Test sources against CatalogTable-dependent pipelines"],"tags":["source","api-migration","catalog-table"],"backgroundTag":"abstract-method-not-implemented","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}