{"record":{"id":"b62ac421c8cb1122","repo":"prestodb/presto","slug":"permission-denied-b62ac4","errorCode":"PERMISSION_DENIED","errorMessage":"DROP TABLE is disabled in this Cassandra catalog","messagePattern":"DROP TABLE is disabled in this Cassandra catalog","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraMetadata.java","lineNumber":261,"sourceCode":"    {\n        return toStringHelper(this)\n                .add(\"connectorId\", connectorId)\n                .toString();\n    }\n\n    @Override\n    public void createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, boolean ignoreExisting)\n    {\n        createTable(session, tableMetadata);\n    }\n\n    @Override\n    public void dropTable(ConnectorSession session, ConnectorTableHandle tableHandle)\n    {\n        checkArgument(tableHandle instanceof CassandraTableHandle, \"tableHandle is not an instance of CassandraTableHandle\");\n\n        if (!allowDropTable) {\n            throw new PrestoException(PERMISSION_DENIED, \"DROP TABLE is disabled in this Cassandra catalog\");\n        }\n\n        CassandraTableHandle cassandraTableHandle = (CassandraTableHandle) tableHandle;\n        if (cassandraSession.isMaterializedView(cassandraTableHandle.getSchemaTableName())) {\n            throw new PrestoException(NOT_SUPPORTED, \"Dropping materialized views not yet supported\");\n        }\n\n        cassandraSession.execute(String.format(\"DROP TABLE \\\"%s\\\".\\\"%s\\\"\", cassandraTableHandle.getSchemaName(), cassandraTableHandle.getTableName()));\n\n        // Refresh metadata after DROP to ensure schema cache is updated in Driver 4.x\n        cassandraSession.refreshSchema();\n    }\n\n    @Override\n    public void renameTable(ConnectorSession session, ConnectorTableHandle tableHandle, SchemaTableName newTableName)\n    {\n        throw new PrestoException(NOT_SUPPORTED, \"Renaming tables not yet supported for Cassandra\");\n    }","sourceCodeStart":243,"sourceCodeEnd":279,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraMetadata.java#L243-L279","documentation":"Raised by dropTable in the Cassandra connector when the connector-level allowDropTable safety flag is false. It is a deliberate permission guard, not a data problem: the catalog was configured to forbid destructive DDL, so any DROP TABLE against it is rejected with PERMISSION_DENIED.","triggerScenarios":"Thrown at presto-cassandra/src/main/java/com/facebook/presto/cassandra/CassandraMetadata.java:261 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Enable allow-drop-table in the catalog configuration if drops are intended","Drop the table directly in Cassandra with CQL","Use a catalog configured for DDL if multiple catalogs exist"],"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"}