Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ALTER SCHEMA
^^^^^^^^^^^^

The connector supports renaming a schema with the ``ALTER SCHEMA RENAME``
statement. ``ALTER SCHEMA SET AUTHORIZATION`` is not supported.
2 changes: 2 additions & 0 deletions docs/src/main/sphinx/connector/postgresql.rst
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ statements, the connector supports the following features:

.. include:: alter-table-limitation.fragment

.. include:: alter-schema-limitation.fragment

.. _postgresql-pushdown:

Pushdown
Expand Down
11 changes: 5 additions & 6 deletions docs/src/main/sphinx/connector/redshift.rst
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,10 @@ statements, the connector supports the following features:
* :doc:`/sql/insert`
* :doc:`/sql/delete`
* :doc:`/sql/truncate`
* :doc:`/sql/create-table`
* :doc:`/sql/create-table-as`
* :doc:`/sql/drop-table`
* :doc:`/sql/create-schema`
* :doc:`/sql/drop-schema`
* :doc:`/sql/comment`
* :ref:`sql-schema-table-management`

.. include:: sql-delete-limitation.fragment

.. include:: alter-table-limitation.fragment

.. include:: alter-schema-limitation.fragment
Original file line number Diff line number Diff line change
Expand Up @@ -828,6 +828,25 @@ protected String dropSchemaSql(String schemaName)
return "DROP SCHEMA " + quoted(schemaName);
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
ConnectorIdentity identity = session.getIdentity();
try (Connection connection = connectionFactory.openConnection(session)) {
String remoteSchemaName = identifierMapping.toRemoteSchemaName(identity, connection, schemaName);
String newRemoteSchemaName = identifierMapping.toRemoteSchemaName(identity, connection, newSchemaName);
execute(connection, renameSchemaSql(remoteSchemaName, newRemoteSchemaName));
}
catch (SQLException e) {
throw new TrinoException(JDBC_ERROR, e);
}
}

protected String renameSchemaSql(String remoteSchemaName, String newRemoteSchemaName)
{
return "ALTER SCHEMA " + quoted(remoteSchemaName) + " RENAME TO " + quoted(newRemoteSchemaName);
}

protected void execute(ConnectorSession session, String query)
{
try (Connection connection = connectionFactory.openConnection(session)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,13 @@ public void dropSchema(ConnectorSession session, String schemaName)
invalidateSchemasCache();
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
delegate.renameSchema(session, schemaName, newSchemaName);
invalidateSchemasCache();
}

@Override
public void setColumnComment(ConnectorSession session, JdbcTableHandle handle, JdbcColumnHandle column, Optional<String> comment)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -790,4 +790,10 @@ public void dropSchema(ConnectorSession session, String schemaName)
{
jdbcClient.dropSchema(session, schemaName);
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
jdbcClient.renameSchema(session, schemaName, newSchemaName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,12 @@ public void dropSchema(ConnectorSession session, String schemaName)
delegate().dropSchema(session, schemaName);
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
delegate().renameSchema(session, schemaName, newSchemaName);
}

@Override
public Optional<SystemTable> getSystemTable(ConnectorSession session, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ PreparedStatement getPreparedStatement(Connection connection, String sql)

void dropSchema(ConnectorSession session, String schemaName);

void renameSchema(ConnectorSession session, String schemaName, String newSchemaName);

default Optional<SystemTable> getSystemTable(ConnectorSession session, SchemaTableName tableName)
{
return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public final class JdbcClientStats
private final JdbcApiStats setColumnComment = new JdbcApiStats();
private final JdbcApiStats dropColumn = new JdbcApiStats();
private final JdbcApiStats dropSchema = new JdbcApiStats();
private final JdbcApiStats renameSchema = new JdbcApiStats();
private final JdbcApiStats dropTable = new JdbcApiStats();
private final JdbcApiStats finishInsertTable = new JdbcApiStats();
private final JdbcApiStats getColumns = new JdbcApiStats();
Expand Down Expand Up @@ -154,6 +155,13 @@ public JdbcApiStats getDropSchema()
return dropSchema;
}

@Managed
@Nested
public JdbcApiStats getRenameSchema()
{
return renameSchema;
}

@Managed
@Nested
public JdbcApiStats getDropTable()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,12 @@ public void dropSchema(ConnectorSession session, String schemaName)
stats.getDropSchema().wrap(() -> delegate().dropSchema(session, schemaName));
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
stats.getRenameSchema().wrap(() -> delegate().renameSchema(session, schemaName, newSchemaName));
}

@Override
public Optional<SystemTable> getSystemTable(ConnectorSession session, SchemaTableName tableName)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@ protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior)
{
switch (connectorBehavior) {
case SUPPORTS_RENAME_TABLE_ACROSS_SCHEMAS:
case SUPPORTS_RENAME_SCHEMA:
return false;

default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior)
return false;

case SUPPORTS_RENAME_TABLE_ACROSS_SCHEMAS:
case SUPPORTS_RENAME_SCHEMA:
return false;

case SUPPORTS_COMMENT_ON_TABLE:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,13 @@ public void dropSchema(ConnectorSession session, String schemaName)
execute(session, "DROP DATABASE " + quoted(schemaName));
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
// TODO: https://github.com/trinodb/trino/issues/10558
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

@Override
public void addColumn(ConnectorSession session, JdbcTableHandle handle, ColumnMetadata column)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,12 @@ public void dropSchema(ConnectorSession session, String schemaName)
throw new TrinoException(NOT_SUPPORTED, "This connector does not support dropping schemas");
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

private WriteMapping legacyToWriteMapping(Type type)
{
// TODO (https://github.com/trinodb/trino/issues/497) Implement proper type mapping and add test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,12 @@ public void renameColumn(ConnectorSession session, JdbcTableHandle handle, JdbcC
}
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

@Override
protected String getTableSchemaName(ResultSet resultSet)
throws SQLException
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,12 @@ public void renameColumn(ConnectorSession session, JdbcTableHandle handle, JdbcC
}
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

@Override
protected void copyTableSchema(Connection connection, String catalogName, String schemaName, String tableName, String newTableName, List<String> columnNames)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,12 @@ public void dropSchema(ConnectorSession session, String schemaName)
throw new TrinoException(NOT_SUPPORTED, "This connector does not support dropping schemas");
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

@Override
public Optional<ColumnMapping> toColumnMapping(ConnectorSession session, Connection connection, JdbcTypeHandle typeHandle)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -621,6 +621,12 @@ protected void renameTable(ConnectorSession session, String catalogName, String
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming tables");
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

@Override
public Map<String, Object> getTableProperties(ConnectorSession session, JdbcTableHandle handle)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,12 @@ protected void renameTable(ConnectorSession session, String catalogName, String
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming tables");
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

@Override
public Map<String, Object> getTableProperties(ConnectorSession session, JdbcTableHandle handle)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,6 @@ protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior)
case SUPPORTS_RENAME_TABLE_ACROSS_SCHEMAS:
return false;

case SUPPORTS_RENAME_SCHEMA:
return false;

case SUPPORTS_CANCELLATION:
return true;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,12 @@ public void renameColumn(ConnectorSession session, JdbcTableHandle handle, JdbcC
execute(session, sql);
}

@Override
public void renameSchema(ConnectorSession session, String schemaName, String newSchemaName)
{
throw new TrinoException(NOT_SUPPORTED, "This connector does not support renaming schemas");
}

@Override
protected void copyTableSchema(Connection connection, String catalogName, String schemaName, String tableName, String newTableName, List<String> columnNames)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ public enum TestingConnectorBehavior
SUPPORTS_JOIN_PUSHDOWN_WITH_VARCHAR_EQUALITY(fallback -> fallback.test(SUPPORTS_JOIN_PUSHDOWN) && fallback.test(SUPPORTS_PREDICATE_PUSHDOWN_WITH_VARCHAR_EQUALITY)),
SUPPORTS_JOIN_PUSHDOWN_WITH_VARCHAR_INEQUALITY(fallback -> fallback.test(SUPPORTS_JOIN_PUSHDOWN) && fallback.test(SUPPORTS_PREDICATE_PUSHDOWN_WITH_VARCHAR_INEQUALITY)),
SUPPORTS_CREATE_SCHEMA,
SUPPORTS_RENAME_SCHEMA,
// Expect rename to be supported when create schema is supported, to help make connector implementations coherent.
SUPPORTS_RENAME_SCHEMA(SUPPORTS_CREATE_SCHEMA),

SUPPORTS_CREATE_TABLE,
SUPPORTS_CREATE_TABLE_WITH_DATA(SUPPORTS_CREATE_TABLE),
Expand Down