{"record":{"id":"3bf44ea2b8e49389","repo":"prestodb/presto","slug":"already-exists-3bf44e","errorCode":"ALREADY_EXISTS","errorMessage":"View already exists: ","messagePattern":"View already exists: ","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-main-base/src/main/java/com/facebook/presto/testing/TestingMetadata.java","lineNumber":212,"sourceCode":"            throw new IllegalArgumentException(\"Target table already exists: \" + tableMetadata.getTable());\n        }\n    }\n\n    @Override\n    public void dropTable(ConnectorSession session, ConnectorTableHandle tableHandle)\n    {\n        tables.remove(getTableName(tableHandle));\n    }\n\n    @Override\n    public void createView(ConnectorSession session, ConnectorTableMetadata viewMetadata, String viewData, boolean replace)\n    {\n        SchemaTableName viewName = viewMetadata.getTable();\n        if (replace) {\n            views.put(viewName, viewData);\n        }\n        else if (views.putIfAbsent(viewName, viewData) != null) {\n            throw new PrestoException(ALREADY_EXISTS, \"View already exists: \" + viewName);\n        }\n    }\n\n    @Override\n    public void dropView(ConnectorSession session, SchemaTableName viewName)\n    {\n        if (views.remove(viewName) == null) {\n            throw new ViewNotFoundException(viewName);\n        }\n    }\n\n    @Override\n    public List<SchemaTableName> listViews(ConnectorSession session, Optional<String> schemaName)\n    {\n        ImmutableList.Builder<SchemaTableName> builder = ImmutableList.builder();\n        for (SchemaTableName viewName : views.keySet()) {\n            if (schemaName.map(viewName.getSchemaName()::equals).orElse(true)) {\n                builder.add(viewName);","sourceCodeStart":194,"sourceCodeEnd":230,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main-base/src/main/java/com/facebook/presto/testing/TestingMetadata.java#L194-L230","documentation":"TestingMetadata.createView: a view with the same schema.table name already exists and replace=false, so creation is refused with ALREADY_EXISTS. This is the in-memory test connector's stand-in for a real metastore conflict.","triggerScenarios":"Thrown at presto-main-base/src/main/java/com/facebook/presto/testing/TestingMetadata.java:212 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use CREATE OR REPLACE VIEW semantics (replace=true)","Drop the existing view before creating","Pick a different view name in the test"],"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"}