{"record":{"id":"a8d71095d3544528","repo":"prestodb/presto","slug":"not-supported-a8d710","errorCode":"NOT_SUPPORTED","errorMessage":"'%s' is a materialized view, and rename is not supported","messagePattern":"'(.+?)' is a materialized view, and rename is not supported","errorType":"error_code","errorClass":"SemanticException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/execution/RenameTableTask.java","lineNumber":64,"sourceCode":"        return \"RENAME TABLE\";\n    }\n\n    @Override\n    public ListenableFuture<?> execute(RenameTable statement, TransactionManager transactionManager, Metadata metadata, AccessControl accessControl, Session session, List<Expression> parameters, WarningCollector warningCollector, String query)\n    {\n        QualifiedObjectName tableName = createQualifiedObjectName(session, statement, statement.getSource(), metadata);\n        Optional<TableHandle> tableHandle = metadata.getMetadataResolver(session).getTableHandle(tableName);\n        if (!tableHandle.isPresent()) {\n            if (!statement.isExists()) {\n                throw new SemanticException(MISSING_TABLE, statement, \"Table '%s' does not exist\", tableName);\n            }\n            return immediateFuture(null);\n        }\n\n        Optional<MaterializedViewDefinition> optionalMaterializedView = metadata.getMetadataResolver(session).getMaterializedView(tableName);\n        if (optionalMaterializedView.isPresent()) {\n            if (!statement.isExists()) {\n                throw new SemanticException(NOT_SUPPORTED, statement, \"'%s' is a materialized view, and rename is not supported\", tableName);\n            }\n            return immediateFuture(null);\n        }\n\n        QualifiedObjectName target = createQualifiedObjectName(session, statement, statement.getTarget(), metadata);\n        getConnectorIdOrThrow(session, metadata, target.getCatalogName(), statement, targetTableCatalogError);\n        if (metadata.getMetadataResolver(session).getTableHandle(target).isPresent()) {\n            throw new SemanticException(TABLE_ALREADY_EXISTS, statement, \"Target table '%s' already exists\", target);\n        }\n        if (!tableName.getCatalogName().equals(target.getCatalogName())) {\n            throw new SemanticException(NOT_SUPPORTED, statement, \"Table rename across catalogs is not supported\");\n        }\n        accessControl.checkCanRenameTable(session.getRequiredTransactionId(), session.getIdentity(), session.getAccessControlContext(), tableName, target);\n\n        metadata.renameTable(session, tableHandle.get(), target);\n\n        return immediateFuture(null);\n    }","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/execution/RenameTableTask.java#L46-L82","documentation":"SemanticException (NOT_SUPPORTED) from RenameTableTask.execute: the source name passed to ALTER TABLE ... RENAME resolves to a materialized view rather than a base table, and Presto has no rename operation for materialized views. Suppressed when IF EXISTS is specified.","triggerScenarios":"Thrown at presto-main-base/src/main/java/com/facebook/presto/execution/RenameTableTask.java:64 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use CREATE MATERIALIZED VIEW with the new name and DROP the old view to emulate a rename","Check whether the underlying connector/catalog offers a native rename DDL for materialized views","Target a base table if the intent was to rename a table"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}