{"record":{"id":"b761aa1a746c22af","repo":"prestodb/presto","slug":"already-exists-b761aa","errorCode":"ALREADY_EXISTS","errorMessage":"Schema [%s] already exists","messagePattern":"Schema \\[(.+?)\\] already exists","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-blackhole/src/main/java/com/facebook/presto/plugin/blackhole/BlackHoleMetadata.java","lineNumber":87,"sourceCode":"    private final List<String> schemas = new ArrayList<>();\n    private final Map<SchemaTableName, BlackHoleTableHandle> tables = new ConcurrentHashMap<>();\n\n    public BlackHoleMetadata()\n    {\n        schemas.add(SCHEMA_NAME);\n    }\n\n    @Override\n    public List<String> listSchemaNames(ConnectorSession session)\n    {\n        return ImmutableList.copyOf(schemas);\n    }\n\n    @Override\n    public synchronized void createSchema(ConnectorSession session, String schemaName, Map<String, Object> properties)\n    {\n        if (schemas.contains(schemaName)) {\n            throw new PrestoException(ALREADY_EXISTS, format(\"Schema [%s] already exists\", schemaName));\n        }\n        schemas.add(schemaName);\n    }\n\n    @Override\n    public ConnectorTableHandle getTableHandle(ConnectorSession session, SchemaTableName tableName)\n    {\n        return tables.get(tableName);\n    }\n\n    @Override\n    public ConnectorTableMetadata getTableMetadata(ConnectorSession session, ConnectorTableHandle tableHandle)\n    {\n        BlackHoleTableHandle blackHoleTableHandle = (BlackHoleTableHandle) tableHandle;\n        return toTableMetadata(blackHoleTableHandle, session);\n    }\n\n    public ConnectorTableMetadata toTableMetadata(BlackHoleTableHandle blackHoleTableHandle, ConnectorSession session)","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-blackhole/src/main/java/com/facebook/presto/plugin/blackhole/BlackHoleMetadata.java#L69-L105","documentation":"Generic guard in BlackHoleMetadata.createSchema: the blackhole connector keeps schemas only in an in-memory list, and this fires when CREATE SCHEMA is issued for a schema name already in that list — a duplicate schema creation by the user.","triggerScenarios":"Thrown at presto-blackhole/src/main/java/com/facebook/presto/plugin/blackhole/BlackHoleMetadata.java:87 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a schema name that does not already exist","Drop or restart the BlackHole catalog to reset the in-memory schema list"],"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"}