@Override public Node visitRenameSchema(SqlBaseParser.RenameSchemaContext context) { return new RenameSchema( getLocation(context), getQualifiedName(context.qualifiedName()), (Identifier) visit(context.identifier())); }
@Override public ListenableFuture<?> execute(RenameSchema statement, TransactionManager transactionManager, Metadata metadata, AccessControl accessControl, QueryStateMachine stateMachine, List<Expression> parameters) { Session session = stateMachine.getSession(); CatalogSchemaName source = createCatalogSchemaName(session, statement, Optional.of(statement.getSource())); CatalogSchemaName target = new CatalogSchemaName(source.getCatalogName(), statement.getTarget().getValue()); if (!metadata.schemaExists(session, source)) { throw new SemanticException(MISSING_SCHEMA, statement, "Schema '%s' does not exist", source); } if (metadata.schemaExists(session, target)) { throw new SemanticException(SCHEMA_ALREADY_EXISTS, statement, "Target schema '%s' already exists", target); } accessControl.checkCanRenameSchema(session.getRequiredTransactionId(), session.getIdentity(), source, statement.getTarget().getValue()); metadata.renameSchema(session, source, statement.getTarget().getValue()); return immediateFuture(null); } }
@Test public void testRenameSchema() { assertStatement("ALTER SCHEMA foo RENAME TO bar", new RenameSchema(QualifiedName.of("foo"), identifier("bar"))); assertStatement("ALTER SCHEMA foo.bar RENAME TO baz", new RenameSchema(QualifiedName.of("foo", "bar"), identifier("baz"))); assertStatement("ALTER SCHEMA \"awesome schema\".\"awesome table\" RENAME TO \"even more awesome table\"", new RenameSchema(QualifiedName.of("awesome schema", "awesome table"), quotedIdentifier("even more awesome table"))); }
@Override protected Void visitRenameSchema(RenameSchema node, Integer context) { builder.append("ALTER SCHEMA ") .append(formatName(node.getSource())) .append(" RENAME TO ") .append(formatExpression(node.getTarget(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier)); return null; }
@Override public Node visitRenameSchema(SqlBaseParser.RenameSchemaContext context) { return new RenameSchema( getLocation(context), getQualifiedName(context.qualifiedName()), (Identifier) visit(context.identifier())); }
@Test public void testRenameSchema() { assertStatement("ALTER SCHEMA foo RENAME TO bar", new RenameSchema(QualifiedName.of("foo"), identifier("bar"))); assertStatement("ALTER SCHEMA foo.bar RENAME TO baz", new RenameSchema(QualifiedName.of("foo", "bar"), identifier("baz"))); assertStatement("ALTER SCHEMA \"awesome schema\".\"awesome table\" RENAME TO \"even more awesome table\"", new RenameSchema(QualifiedName.of("awesome schema", "awesome table"), quotedIdentifier("even more awesome table"))); }