From 85d19e2d786355e3f730df6f5e1925e3792fbc7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:20:06 +0200 Subject: [PATCH 01/13] Migrate AccumuloMetadata to non-deprecated methods --- .../io/trino/plugin/accumulo/AccumuloMetadata.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java index a48a946091b2..5b08f50b5d75 100644 --- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java +++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java @@ -38,6 +38,7 @@ import io.trino.spi.connector.ConnectorViewDefinition; import io.trino.spi.connector.Constraint; import io.trino.spi.connector.ConstraintApplicationResult; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.connector.TableNotFoundException; @@ -59,6 +60,7 @@ import static com.google.common.base.Preconditions.checkState; import static io.trino.plugin.accumulo.AccumuloErrorCode.ACCUMULO_TABLE_EXISTS; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static java.lang.String.format; import static java.util.Objects.requireNonNull; @@ -95,8 +97,12 @@ public void dropSchema(ConnectorSession session, String schemaName) } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + checkNoRollback(); SchemaTableName tableName = tableMetadata.getTable(); @@ -212,8 +218,12 @@ private List listViews(Optional filterSchema) } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + checkNoRollback(); AccumuloTableHandle handle = (AccumuloTableHandle) tableHandle; setRollback(() -> rollbackInsert(handle)); From 5e7ce02a6b331728e43b98ca319b298d6e3874db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:24:07 +0200 Subject: [PATCH 02/13] Migrate CassandraMetadata to non-deprecated methods --- .../plugin/cassandra/CassandraMetadata.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java index cf1f9a45a54c..1740cbbd599f 100644 --- a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java +++ b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java @@ -33,6 +33,7 @@ import io.trino.spi.connector.Constraint; import io.trino.spi.connector.ConstraintApplicationResult; import io.trino.spi.connector.NotFoundException; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaNotFoundException; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; @@ -63,6 +64,7 @@ import static io.trino.plugin.cassandra.util.CassandraCqlUtils.validTableName; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; import static io.trino.spi.StandardErrorCode.PERMISSION_DENIED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static java.lang.String.format; import static java.util.Locale.ENGLISH; import static java.util.Objects.requireNonNull; @@ -275,8 +277,12 @@ public void dropTable(ConnectorSession session, ConnectorTableHandle tableHandle } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + return createTable(tableMetadata); } @@ -335,8 +341,12 @@ public void truncateTable(ConnectorSession session, ConnectorTableHandle tableHa } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List insertedColumns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + CassandraTableHandle table = (CassandraTableHandle) tableHandle; if (cassandraSession.isMaterializedView(table.getSchemaTableName())) { throw new TrinoException(NOT_SUPPORTED, "Inserting into materialized views not yet supported"); @@ -383,7 +393,7 @@ public ColumnHandle getDeleteRowIdColumnHandle(ConnectorSession session, Connect } @Override - public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { throw new TrinoException(NOT_SUPPORTED, "Delete without primary key or partition key is not supported"); } From dbfbc320102980632f76ccfff1f55330cce01ce1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:26:09 +0200 Subject: [PATCH 03/13] Migrate BlackHoleMetadata to non-deprecated methods --- .../io/trino/plugin/blackhole/BlackHoleMetadata.java | 10 ++++++---- .../trino/plugin/blackhole/TestBlackHoleMetadata.java | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleMetadata.java b/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleMetadata.java index a77d6d74b6c5..5fd1626f0ca7 100644 --- a/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleMetadata.java +++ b/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleMetadata.java @@ -32,6 +32,7 @@ import io.trino.spi.connector.ConnectorTableMetadata; import io.trino.spi.connector.ConnectorTableProperties; import io.trino.spi.connector.ConnectorViewDefinition; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaNotFoundException; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; @@ -61,6 +62,7 @@ import static io.trino.plugin.blackhole.BlackHolePageSourceProvider.isNumericType; import static io.trino.spi.StandardErrorCode.ALREADY_EXISTS; import static io.trino.spi.StandardErrorCode.INVALID_TABLE_PROPERTY; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static io.trino.spi.type.BigintType.BIGINT; import static java.lang.String.format; import static java.util.stream.Collectors.toList; @@ -216,7 +218,7 @@ public void renameTable(ConnectorSession session, ConnectorTableHandle tableHand @Override public void createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, boolean ignoreExisting) { - ConnectorOutputTableHandle outputTableHandle = beginCreateTable(session, tableMetadata, Optional.empty()); + ConnectorOutputTableHandle outputTableHandle = beginCreateTable(session, tableMetadata, Optional.empty(), NO_RETRIES); finishCreateTable(session, outputTableHandle, ImmutableList.of(), ImmutableList.of()); } @@ -242,7 +244,7 @@ public Optional getNewTableLayout(ConnectorSession connect } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { checkSchemaExists(tableMetadata.getTable().getSchemaName()); int splitCount = (Integer) tableMetadata.getProperties().get(SPLIT_COUNT_PROPERTY); @@ -288,7 +290,7 @@ public Optional finishCreateTable(ConnectorSession sess } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { BlackHoleTableHandle handle = (BlackHoleTableHandle) tableHandle; return new BlackHoleInsertTableHandle(handle.getPageProcessingDelay()); @@ -307,7 +309,7 @@ public ColumnHandle getDeleteRowIdColumnHandle(ConnectorSession session, Connect } @Override - public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { return tableHandle; } diff --git a/plugin/trino-blackhole/src/test/java/io/trino/plugin/blackhole/TestBlackHoleMetadata.java b/plugin/trino-blackhole/src/test/java/io/trino/plugin/blackhole/TestBlackHoleMetadata.java index 191bb70dca7c..696dc4ddd2ef 100644 --- a/plugin/trino-blackhole/src/test/java/io/trino/plugin/blackhole/TestBlackHoleMetadata.java +++ b/plugin/trino-blackhole/src/test/java/io/trino/plugin/blackhole/TestBlackHoleMetadata.java @@ -27,6 +27,7 @@ import java.util.Optional; import static io.trino.spi.StandardErrorCode.NOT_FOUND; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static io.trino.spi.security.PrincipalType.USER; import static io.trino.testing.TestingConnectorSession.SESSION; import static io.trino.testing.assertions.TrinoExceptionAssert.assertTrinoExceptionThrownBy; @@ -61,7 +62,8 @@ public void tableIsCreatedAfterCommits() ConnectorOutputTableHandle table = metadata.beginCreateTable( SESSION, new ConnectorTableMetadata(schemaTableName, ImmutableList.of(), tableProperties), - Optional.empty()); + Optional.empty(), + NO_RETRIES); assertThatNoTableIsCreated(); @@ -76,7 +78,7 @@ public void tableIsCreatedAfterCommits() public void testCreateTableInNotExistSchema() { SchemaTableName schemaTableName = new SchemaTableName("schema1", "test_table"); - assertTrinoExceptionThrownBy(() -> metadata.beginCreateTable(SESSION, new ConnectorTableMetadata(schemaTableName, ImmutableList.of(), tableProperties), Optional.empty())) + assertTrinoExceptionThrownBy(() -> metadata.beginCreateTable(SESSION, new ConnectorTableMetadata(schemaTableName, ImmutableList.of(), tableProperties), Optional.empty(), NO_RETRIES)) .hasErrorCode(NOT_FOUND) .hasMessage("Schema schema1 not found"); } From 51a0f25687158ddb6b2211c7492693c9ae0fb336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:46:27 +0200 Subject: [PATCH 04/13] Migrate PhoenixMetadata metadata to non-deprecated methods --- .../io/trino/plugin/phoenix/PhoenixMetadata.java | 12 ++++++++++-- .../io/trino/plugin/phoenix5/PhoenixMetadata.java | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixMetadata.java b/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixMetadata.java index d698283ac66e..243a900560ff 100644 --- a/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixMetadata.java +++ b/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixMetadata.java @@ -31,6 +31,7 @@ import io.trino.spi.connector.ConnectorTableLayout; import io.trino.spi.connector.ConnectorTableMetadata; import io.trino.spi.connector.ConnectorTableSchema; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.security.TrinoPrincipal; import io.trino.spi.statistics.ComputedStatistics; @@ -50,6 +51,7 @@ import static io.trino.plugin.phoenix.MetadataUtil.toTrinoSchemaName; import static io.trino.plugin.phoenix.PhoenixErrorCode.PHOENIX_METADATA_ERROR; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static java.lang.String.format; import static java.util.Objects.requireNonNull; import static org.apache.phoenix.util.SchemaUtil.getEscapedArgument; @@ -149,8 +151,11 @@ public void createTable(ConnectorSession session, ConnectorTableMetadata tableMe } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } return phoenixClient.beginCreateTable(session, tableMetadata); } @@ -167,8 +172,11 @@ public boolean supportsMissingColumnsOnInsert() } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } JdbcTableHandle handle = (JdbcTableHandle) tableHandle; Optional rowkeyColumn = phoenixClient.getColumns(session, handle).stream() .map(JdbcColumnHandle::getColumnName) diff --git a/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixMetadata.java b/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixMetadata.java index 6910f45217c6..b170ff53893a 100644 --- a/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixMetadata.java +++ b/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixMetadata.java @@ -34,6 +34,7 @@ import io.trino.spi.connector.ConnectorTableProperties; import io.trino.spi.connector.ConnectorTableSchema; import io.trino.spi.connector.LocalProperty; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SortingProperty; import io.trino.spi.predicate.TupleDomain; @@ -55,6 +56,7 @@ import static io.trino.plugin.phoenix5.MetadataUtil.toTrinoSchemaName; import static io.trino.plugin.phoenix5.PhoenixErrorCode.PHOENIX_METADATA_ERROR; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static java.lang.String.format; import static java.util.Objects.requireNonNull; import static org.apache.phoenix.util.SchemaUtil.getEscapedArgument; @@ -170,8 +172,11 @@ public void createTable(ConnectorSession session, ConnectorTableMetadata tableMe } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } return phoenixClient.beginCreateTable(session, tableMetadata); } @@ -188,8 +193,11 @@ public boolean supportsMissingColumnsOnInsert() } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } JdbcTableHandle handle = (JdbcTableHandle) tableHandle; Optional rowkeyColumn = phoenixClient.getColumns(session, handle).stream() .map(JdbcColumnHandle::getColumnName) From 6c68ceab6e87c766a97cdd0798faab83256d8937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:27:28 +0200 Subject: [PATCH 05/13] Migrate DefaultJdbcMetadata to non-deprecated methods --- .../io/trino/plugin/jdbc/DefaultJdbcMetadata.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java index 969848f7b4a1..b228049a971d 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java @@ -41,6 +41,7 @@ import io.trino.spi.connector.JoinType; import io.trino.spi.connector.LimitApplicationResult; import io.trino.spi.connector.ProjectionApplicationResult; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.connector.SortItem; @@ -84,6 +85,7 @@ import static io.trino.plugin.jdbc.JdbcMetadataSessionProperties.isJoinPushdownEnabled; import static io.trino.plugin.jdbc.JdbcMetadataSessionProperties.isTopNPushdownEnabled; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static io.trino.spi.type.BigintType.BIGINT; import static java.lang.Math.max; import static java.util.Objects.requireNonNull; @@ -659,8 +661,11 @@ public void dropTable(ConnectorSession session, ConnectorTableHandle tableHandle } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } JdbcOutputTableHandle handle = jdbcClient.beginCreateTable(session, tableMetadata); setRollback(() -> jdbcClient.rollbackCreateTable(session, handle)); return handle; @@ -692,9 +697,12 @@ public void rollback() } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { verify(!((JdbcTableHandle) tableHandle).isSynthetic(), "Not a table reference: %s", tableHandle); + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } List columnHandles = columns.stream() .map(JdbcColumnHandle.class::cast) .collect(toImmutableList()); @@ -728,7 +736,7 @@ public ColumnHandle getDeleteRowIdColumnHandle(ConnectorSession session, Connect } @Override - public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { throw new TrinoException(NOT_SUPPORTED, "Unsupported delete"); } From d7f8211cd3625a3deafb2883384e8a1a2cb7cf0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:29:12 +0200 Subject: [PATCH 06/13] Migrate KuduMetadata to non-deprecated methods --- .../io/trino/plugin/kudu/KuduMetadata.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java b/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java index c7e37773f5d6..92a5f3fac2ff 100755 --- a/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java +++ b/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java @@ -40,6 +40,7 @@ import io.trino.spi.connector.LocalProperty; import io.trino.spi.connector.NotFoundException; import io.trino.spi.connector.ProjectionApplicationResult; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.expression.ConnectorExpression; @@ -72,6 +73,8 @@ import static com.google.common.collect.ImmutableList.toImmutableList; import static io.trino.plugin.kudu.KuduSessionProperties.isKuduGroupedExecutionEnabled; import static io.trino.spi.StandardErrorCode.GENERIC_INTERNAL_ERROR; +import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static java.util.Objects.requireNonNull; public class KuduMetadata @@ -285,8 +288,12 @@ public void renameColumn(ConnectorSession session, ConnectorTableHandle tableHan } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle connectorTableHandle) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle connectorTableHandle, List insertedColumns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + KuduTableHandle tableHandle = (KuduTableHandle) connectorTableHandle; KuduTable table = tableHandle.getTable(clientSession); @@ -316,8 +323,12 @@ public Optional finishInsert( public ConnectorOutputTableHandle beginCreateTable( ConnectorSession session, ConnectorTableMetadata tableMetadata, - Optional layout) + Optional layout, + RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } PartitionDesign design = KuduTableProperties.getPartitionDesign(tableMetadata.getProperties()); boolean generateUUID = !design.hasPartitions(); ConnectorTableMetadata finalTableMetadata = tableMetadata; @@ -381,8 +392,11 @@ public ColumnHandle getDeleteRowIdColumnHandle(ConnectorSession session, Connect } @Override - public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle table) + public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle table, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } KuduTableHandle handle = (KuduTableHandle) table; return new KuduTableHandle( handle.getSchemaTableName(), From e8164fbcdcf206d93b396d26cc69c1a08897c03f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:30:10 +0200 Subject: [PATCH 07/13] Migrate MongoMetadata to non-deprecated methods --- .../io/trino/plugin/mongodb/MongoMetadata.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java index dc59ee2ba4de..15ab2a5f34c2 100644 --- a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java +++ b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java @@ -18,6 +18,7 @@ import io.airlift.log.Logger; import io.airlift.slice.Slice; import io.trino.plugin.mongodb.MongoIndex.MongodbIndexKey; +import io.trino.spi.TrinoException; import io.trino.spi.connector.ColumnHandle; import io.trino.spi.connector.ColumnMetadata; import io.trino.spi.connector.ConnectorInsertTableHandle; @@ -34,6 +35,7 @@ import io.trino.spi.connector.LimitApplicationResult; import io.trino.spi.connector.LocalProperty; import io.trino.spi.connector.NotFoundException; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.connector.SortingProperty; @@ -53,6 +55,8 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.ImmutableList.toImmutableList; +import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static java.lang.Math.toIntExact; import static java.util.Locale.ENGLISH; import static java.util.Objects.requireNonNull; @@ -218,8 +222,12 @@ public void dropColumn(ConnectorSession session, ConnectorTableHandle tableHandl } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + List columns = buildColumnHandles(tableMetadata); mongoSession.createTable(tableMetadata.getTable(), columns, tableMetadata.getComment()); @@ -239,8 +247,12 @@ public Optional finishCreateTable(ConnectorSession sess } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List insertedColumns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + MongoTableHandle table = (MongoTableHandle) tableHandle; List columns = mongoSession.getTable(table.getSchemaTableName()).getColumns(); From 6100756fb60065fca7ad3f1173e8bbf25ca0e718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:33:34 +0200 Subject: [PATCH 08/13] Migrate RaptorMetadata to non-deprecated methods --- .../plugin/raptor/legacy/RaptorMetadata.java | 22 +++++++++++++++---- .../raptor/legacy/TestRaptorConnector.java | 9 ++++---- .../legacy/metadata/TestRaptorMetadata.java | 13 ++++++----- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java index 27914c8a5905..b074e38d0016 100644 --- a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java +++ b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java @@ -51,6 +51,7 @@ import io.trino.spi.connector.ConnectorViewDefinition; import io.trino.spi.connector.Constraint; import io.trino.spi.connector.ConstraintApplicationResult; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.connector.SystemTable; @@ -112,6 +113,7 @@ import static io.trino.spi.StandardErrorCode.INVALID_TABLE_PROPERTY; import static io.trino.spi.StandardErrorCode.NOT_FOUND; import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static io.trino.spi.connector.SortOrder.ASC_NULLS_FIRST; import static io.trino.spi.type.DateType.DATE; import static io.trino.spi.type.IntegerType.INTEGER; @@ -449,7 +451,7 @@ private Distribution getOrCreateDistribution(String name, List columnTypes public void createTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, boolean ignoreExisting) { Optional layout = getNewTableLayout(session, tableMetadata); - finishCreateTable(session, beginCreateTable(session, tableMetadata, layout), ImmutableList.of(), ImmutableList.of()); + finishCreateTable(session, beginCreateTable(session, tableMetadata, layout, NO_RETRIES), ImmutableList.of(), ImmutableList.of()); } @Override @@ -543,8 +545,12 @@ public void dropColumn(ConnectorSession session, ConnectorTableHandle tableHandl } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + if (viewExists(session, tableMetadata.getTable())) { throw new TrinoException(ALREADY_EXISTS, "View already exists: " + tableMetadata.getTable()); } @@ -705,8 +711,12 @@ public Optional finishCreateTable(ConnectorSession sess } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + RaptorTableHandle handle = (RaptorTableHandle) tableHandle; long tableId = handle.getTableId(); @@ -784,8 +794,12 @@ public ColumnHandle getDeleteRowIdColumnHandle(ConnectorSession session, Connect } @Override - public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } + RaptorTableHandle handle = (RaptorTableHandle) tableHandle; beginDeleteForTableId.accept(handle.getTableId()); diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java index 1039141bcee3..144ae22997b0 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java @@ -61,6 +61,7 @@ import static io.trino.plugin.raptor.legacy.metadata.SchemaDaoUtil.createTablesWithRetry; import static io.trino.plugin.raptor.legacy.metadata.TestDatabaseShardManager.createShardManager; import static io.trino.plugin.raptor.legacy.storage.TestRaptorStorageManager.createRaptorStorageManager; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static io.trino.spi.transaction.IsolationLevel.READ_COMMITTED; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.DateType.DATE; @@ -132,7 +133,7 @@ public void testMaintenanceBlocked() // begin delete for table1 ConnectorTransactionHandle txn1 = beginTransaction(); ConnectorTableHandle handle1 = getTableHandle(connector.getMetadata(SESSION, txn1), "test1"); - connector.getMetadata(SESSION, txn1).beginDelete(SESSION, handle1); + connector.getMetadata(SESSION, txn1).beginDelete(SESSION, handle1, NO_RETRIES); assertTrue(metadataDao.isMaintenanceBlockedLocked(tableId1)); assertFalse(metadataDao.isMaintenanceBlockedLocked(tableId2)); @@ -140,7 +141,7 @@ public void testMaintenanceBlocked() // begin delete for table2 ConnectorTransactionHandle txn2 = beginTransaction(); ConnectorTableHandle handle2 = getTableHandle(connector.getMetadata(SESSION, txn2), "test2"); - connector.getMetadata(SESSION, txn2).beginDelete(SESSION, handle2); + connector.getMetadata(SESSION, txn2).beginDelete(SESSION, handle2, NO_RETRIES); assertTrue(metadataDao.isMaintenanceBlockedLocked(tableId1)); assertTrue(metadataDao.isMaintenanceBlockedLocked(tableId2)); @@ -148,7 +149,7 @@ public void testMaintenanceBlocked() // begin another delete for table1 ConnectorTransactionHandle txn3 = beginTransaction(); ConnectorTableHandle handle3 = getTableHandle(connector.getMetadata(SESSION, txn3), "test1"); - connector.getMetadata(SESSION, txn3).beginDelete(SESSION, handle3); + connector.getMetadata(SESSION, txn3).beginDelete(SESSION, handle3, NO_RETRIES); assertTrue(metadataDao.isMaintenanceBlockedLocked(tableId1)); assertTrue(metadataDao.isMaintenanceBlockedLocked(tableId2)); @@ -222,7 +223,7 @@ private void assertSplitShard(Type temporalType, String min, String max, int exp ConnectorTransactionHandle txn1 = beginTransaction(); ConnectorTableHandle handle1 = getTableHandle(connector.getMetadata(SESSION, txn1), "test"); - ConnectorInsertTableHandle insertTableHandle = connector.getMetadata(SESSION, txn1).beginInsert(session, handle1); + ConnectorInsertTableHandle insertTableHandle = connector.getMetadata(SESSION, txn1).beginInsert(session, handle1, ImmutableList.of(), NO_RETRIES); ConnectorPageSink raptorPageSink = connector.getPageSinkProvider().createPageSink(txn1, session, insertTableHandle); Object timestamp1 = null; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java index 437351480a2e..3fbb0be89051 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java @@ -66,6 +66,7 @@ import static io.trino.plugin.raptor.legacy.metadata.SchemaDaoUtil.createTablesWithRetry; import static io.trino.plugin.raptor.legacy.metadata.TestDatabaseShardManager.createShardManager; import static io.trino.spi.StandardErrorCode.TRANSACTION_CONFLICT; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static io.trino.spi.type.BigintType.BIGINT; import static io.trino.spi.type.DateType.DATE; import static io.trino.spi.type.DoubleType.DOUBLE; @@ -386,7 +387,7 @@ public void testCreateBucketedTableAsSelect() RaptorPartitioningHandle partitioning = (RaptorPartitioningHandle) layout.getPartitioning().get(); assertEquals(partitioning.getDistributionId(), 1); - ConnectorOutputTableHandle outputHandle = metadata.beginCreateTable(SESSION, ordersTable, Optional.of(layout)); + ConnectorOutputTableHandle outputHandle = metadata.beginCreateTable(SESSION, ordersTable, Optional.of(layout), NO_RETRIES); metadata.finishCreateTable(SESSION, outputHandle, ImmutableList.of(), ImmutableList.of()); ConnectorTableHandle tableHandle = metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS); @@ -664,7 +665,7 @@ public void testTransactionTableWrite() { // start table creation long transactionId = 1; - ConnectorOutputTableHandle outputHandle = metadata.beginCreateTable(SESSION, getOrdersTable(), Optional.empty()); + ConnectorOutputTableHandle outputHandle = metadata.beginCreateTable(SESSION, getOrdersTable(), Optional.empty(), NO_RETRIES); // transaction is in progress assertTrue(transactionExists(transactionId)); @@ -687,7 +688,7 @@ public void testTransactionInsert() // start insert transactionId++; ConnectorTableHandle tableHandle = metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS); - ConnectorInsertTableHandle insertHandle = metadata.beginInsert(SESSION, tableHandle); + ConnectorInsertTableHandle insertHandle = metadata.beginInsert(SESSION, tableHandle, ImmutableList.of(), NO_RETRIES); // transaction is in progress assertTrue(transactionExists(transactionId)); @@ -710,7 +711,7 @@ public void testTransactionDelete() // start delete transactionId++; ConnectorTableHandle tableHandle = metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS); - tableHandle = metadata.beginDelete(SESSION, tableHandle); + tableHandle = metadata.beginDelete(SESSION, tableHandle, NO_RETRIES); // verify transaction is assigned for deletion handle assertInstanceOf(tableHandle, RaptorTableHandle.class); @@ -729,7 +730,7 @@ public void testTransactionDelete() // start another delete transactionId++; - tableHandle = metadata.beginDelete(SESSION, tableHandle); + tableHandle = metadata.beginDelete(SESSION, tableHandle, NO_RETRIES); // transaction is in progress assertTrue(transactionExists(transactionId)); @@ -746,7 +747,7 @@ public void testTransactionAbort() { // start table creation long transactionId = 1; - ConnectorOutputTableHandle outputHandle = metadata.beginCreateTable(SESSION, getOrdersTable(), Optional.empty()); + ConnectorOutputTableHandle outputHandle = metadata.beginCreateTable(SESSION, getOrdersTable(), Optional.empty(), NO_RETRIES); // transaction is in progress assertTrue(transactionExists(transactionId)); From b9465de4cc4d7856eed46e12cd39873b72bf10fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:41:23 +0200 Subject: [PATCH 09/13] Migrate TestingMetadata to non-deprecated methods --- .../src/main/java/io/trino/testing/TestingMetadata.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/testing/TestingMetadata.java b/core/trino-main/src/main/java/io/trino/testing/TestingMetadata.java index e9394a5af9bc..1290eb3aa7b7 100644 --- a/core/trino-main/src/main/java/io/trino/testing/TestingMetadata.java +++ b/core/trino-main/src/main/java/io/trino/testing/TestingMetadata.java @@ -35,6 +35,7 @@ import io.trino.spi.connector.ConnectorViewDefinition; import io.trino.spi.connector.MaterializedViewFreshness; import io.trino.spi.connector.MaterializedViewNotFoundException; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.connector.ViewNotFoundException; @@ -276,7 +277,7 @@ public void markMaterializedViewIsFresh(SchemaTableName name) } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { createTable(session, tableMetadata, false); return TestingHandle.INSTANCE; @@ -289,7 +290,7 @@ public Optional finishCreateTable(ConnectorSession sess } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { return TestingHandle.INSTANCE; } From 189750ef728993e21bff66b63ed86fcd37ba2f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:42:27 +0200 Subject: [PATCH 10/13] Migrate KafkaMetadata to non-deprecated methods --- .../main/java/io/trino/plugin/kafka/KafkaMetadata.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java b/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java index 05b046faf574..ac5506f1e4cd 100644 --- a/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java +++ b/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java @@ -18,6 +18,7 @@ import io.airlift.slice.Slice; import io.trino.decoder.dummy.DummyRowDecoder; import io.trino.plugin.kafka.schema.TableDescriptionSupplier; +import io.trino.spi.TrinoException; import io.trino.spi.connector.ColumnHandle; import io.trino.spi.connector.ColumnMetadata; import io.trino.spi.connector.ConnectorInsertTableHandle; @@ -29,6 +30,7 @@ import io.trino.spi.connector.ConnectorTableProperties; import io.trino.spi.connector.Constraint; import io.trino.spi.connector.ConstraintApplicationResult; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.connector.TableNotFoundException; @@ -45,6 +47,8 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.ImmutableList.toImmutableList; +import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED; +import static io.trino.spi.connector.RetryMode.NO_RETRIES; import static java.util.Objects.requireNonNull; /** @@ -264,8 +268,11 @@ private Optional getTopicDescription(ConnectorSession ses } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { + if (retryMode != NO_RETRIES) { + throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); + } // TODO: support transactional inserts https://github.com/trinodb/trino/issues/4303 KafkaTableHandle table = (KafkaTableHandle) tableHandle; List actualColumns = table.getColumns().stream() From ad50cdf4bd57231b0d71fac2ff3b09dbf3e6c55d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:44:40 +0200 Subject: [PATCH 11/13] Migrate MockConnector metadata to non-deprecated methods --- .../test/java/io/trino/connector/MockConnector.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/trino-main/src/test/java/io/trino/connector/MockConnector.java b/core/trino-main/src/test/java/io/trino/connector/MockConnector.java index 6794e961c6a8..3a7f2047e9f8 100644 --- a/core/trino-main/src/test/java/io/trino/connector/MockConnector.java +++ b/core/trino-main/src/test/java/io/trino/connector/MockConnector.java @@ -64,6 +64,7 @@ import io.trino.spi.connector.MaterializedViewFreshness; import io.trino.spi.connector.ProjectionApplicationResult; import io.trino.spi.connector.RecordPageSource; +import io.trino.spi.connector.RetryMode; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.connector.SchemaTablePrefix; import io.trino.spi.connector.SortItem; @@ -516,7 +517,7 @@ public CompletableFuture refreshMaterializedView(ConnectorSession session, Sc } @Override - public ConnectorInsertTableHandle beginRefreshMaterializedView(ConnectorSession session, ConnectorTableHandle tableHandle, List sourceTableHandles) + public ConnectorInsertTableHandle beginRefreshMaterializedView(ConnectorSession session, ConnectorTableHandle tableHandle, List sourceTableHandles, RetryMode retryMode) { return new MockConnectorInsertTableHandle(((MockConnectorTableHandle) tableHandle).getTableName()); } @@ -552,7 +553,7 @@ public Optional getView(ConnectorSession session, Schem } @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) + public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { return new MockConnectorInsertTableHandle(((MockConnectorTableHandle) tableHandle).getTableName()); } @@ -577,7 +578,7 @@ public Optional getInsertLayout(ConnectorSession session, } @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) + public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { return new MockConnectorOutputTableHandle(tableMetadata.getTable()); } @@ -595,7 +596,7 @@ public Optional getNewTableLayout(ConnectorSession session } @Override - public ConnectorTableHandle beginUpdate(ConnectorSession session, ConnectorTableHandle tableHandle, List updatedColumns) + public ConnectorTableHandle beginUpdate(ConnectorSession session, ConnectorTableHandle tableHandle, List updatedColumns, RetryMode retryMode) { return tableHandle; } @@ -610,7 +611,7 @@ public ColumnHandle getUpdateRowIdColumnHandle(ConnectorSession session, Connect } @Override - public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) + public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { return tableHandle; } From 9a7ecf4ef709272db1aa969840e08680180a5e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Wed, 11 May 2022 22:54:38 +0200 Subject: [PATCH 12/13] Remove deprecated methods without RetryMode tfrom ConnectorMetadata --- .../spi/connector/ConnectorMetadata.java | 119 +----------------- .../ClassLoaderSafeConnectorMetadata.java | 56 --------- ...veFaultTolerantExecutionConnectorTest.java | 14 --- 3 files changed, 6 insertions(+), 183 deletions(-) diff --git a/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java b/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java index a0030b64ae84..1a6c28993314 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java +++ b/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java @@ -92,22 +92,6 @@ default ConnectorTableHandle getTableHandleForStatisticsCollection(ConnectorSess throw new TrinoException(NOT_SUPPORTED, "This connector does not support analyze"); } - /** - * Create initial handle for execution of table procedure. The handle will be used through planning process. It will be converted to final - * handle used for execution via @{link {@link ConnectorMetadata#beginTableExecute} - * - * @deprecated Use {@link #getTableHandleForExecute(ConnectorSession, ConnectorTableHandle, String, Map, RetryMode)} instead. - */ - @Deprecated - default Optional getTableHandleForExecute( - ConnectorSession session, - ConnectorTableHandle tableHandle, - String procedureName, - Map executeProperties) - { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support table procedures"); - } - /** * Create initial handle for execution of table procedure. The handle will be used through planning process. It will be converted to final * handle used for execution via @{link {@link ConnectorMetadata#beginTableExecute} @@ -119,10 +103,7 @@ default Optional getTableHandleForExecute( Map executeProperties, RetryMode retryMode) { - if (retryMode != RetryMode.NO_RETRIES) { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); - } - return getTableHandleForExecute(session, tableHandle, procedureName, executeProperties); + throw new TrinoException(NOT_SUPPORTED, "This connector does not support table procedures"); } default Optional getLayoutForTableExecute(ConnectorSession session, ConnectorTableExecuteHandle tableExecuteHandle) @@ -481,26 +462,12 @@ default void finishStatisticsCollection(ConnectorSession session, ConnectorTable throw new TrinoException(GENERIC_INTERNAL_ERROR, "ConnectorMetadata beginStatisticsCollection() is implemented without finishStatisticsCollection()"); } - /** - * Begin the atomic creation of a table with data. - * - * @deprecated Use {@link #beginCreateTable(ConnectorSession, ConnectorTableMetadata, Optional, RetryMode)} - */ - @Deprecated - default ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) - { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support creating tables with data"); - } - /** * Begin the atomic creation of a table with data. */ default ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { - if (retryMode != RetryMode.NO_RETRIES) { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); - } - return beginCreateTable(session, tableMetadata, layout); + throw new TrinoException(NOT_SUPPORTED, "This connector does not support creating tables with data"); } /** @@ -522,37 +489,12 @@ default void beginQuery(ConnectorSession session) {} */ default void cleanupQuery(ConnectorSession session) {} - /** - * Begin insert query. - * - * @deprecated Use {@link #beginInsert(ConnectorSession, ConnectorTableHandle, List, RetryMode)} instead. - */ - @Deprecated - default ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) - { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support inserts"); - } - - /** - * Begin insert query. - * - * @deprecated Use {@link #beginInsert(ConnectorSession, ConnectorTableHandle, List, RetryMode)} instead. - */ - @Deprecated - default ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) - { - return beginInsert(session, tableHandle); - } - /** * Begin insert query. */ default ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { - if (retryMode != RetryMode.NO_RETRIES) { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); - } - return beginInsert(session, tableHandle, columns); + throw new TrinoException(NOT_SUPPORTED, "This connector does not support inserts"); } /** @@ -587,26 +529,12 @@ default CompletableFuture refreshMaterializedView(ConnectorSession session, S throw new TrinoException(NOT_SUPPORTED, "This connector does not support materialized views"); } - /** - * Begin materialized view query. - * - * @deprecated Use {@link #beginRefreshMaterializedView(ConnectorSession, ConnectorTableHandle, List, RetryMode)} instead. - */ - @Deprecated - default ConnectorInsertTableHandle beginRefreshMaterializedView(ConnectorSession session, ConnectorTableHandle tableHandle, List sourceTableHandles) - { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support materialized views"); - } - /** * Begin materialized view query. */ default ConnectorInsertTableHandle beginRefreshMaterializedView(ConnectorSession session, ConnectorTableHandle tableHandle, List sourceTableHandles, RetryMode retryMode) { - if (retryMode != RetryMode.NO_RETRIES) { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); - } - return beginRefreshMaterializedView(session, tableHandle, sourceTableHandles); + throw new TrinoException(NOT_SUPPORTED, "This connector does not support materialized views"); } /** @@ -643,26 +571,12 @@ default ColumnHandle getUpdateRowIdColumnHandle(ConnectorSession session, Connec throw new TrinoException(NOT_SUPPORTED, "This connector does not support updates"); } - /** - * Begin delete query. - * - * @deprecated Use {@link #beginDelete(ConnectorSession, ConnectorTableHandle, RetryMode)} - */ - @Deprecated - default ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) - { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support deletes"); - } - /** * Begin delete query. */ default ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { - if (retryMode != RetryMode.NO_RETRIES) { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); - } - return beginDelete(session, tableHandle); + throw new TrinoException(NOT_SUPPORTED, "This connector does not support deletes"); } /** @@ -675,24 +589,6 @@ default void finishDelete(ConnectorSession session, ConnectorTableHandle tableHa throw new TrinoException(NOT_SUPPORTED, "This connector does not support deletes"); } - /** - * Do whatever is necessary to start an UPDATE query, returning the {@link ConnectorTableHandle} - * instance that will be passed to split generation, and to the {@link #finishUpdate} method. - * - * @param session The session in which to start the update operation. - * @param tableHandle A ConnectorTableHandle for the table to be updated. - * @param updatedColumns A list of the ColumnHandles of columns that will be updated by this UPDATE - * operation, in table column order. - * @return a ConnectorTableHandle that will be passed to split generation, and to the - * {@link #finishUpdate} method. - * @deprecated Use {@link #beginUpdate(ConnectorSession, ConnectorTableHandle, List, RetryMode)} instead. - */ - @Deprecated - default ConnectorTableHandle beginUpdate(ConnectorSession session, ConnectorTableHandle tableHandle, List updatedColumns) - { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support updates"); - } - /** * Do whatever is necessary to start an UPDATE query, returning the {@link ConnectorTableHandle} * instance that will be passed to split generation, and to the {@link #finishUpdate} method. @@ -706,10 +602,7 @@ default ConnectorTableHandle beginUpdate(ConnectorSession session, ConnectorTabl */ default ConnectorTableHandle beginUpdate(ConnectorSession session, ConnectorTableHandle tableHandle, List updatedColumns, RetryMode retryMode) { - if (retryMode != RetryMode.NO_RETRIES) { - throw new TrinoException(NOT_SUPPORTED, "This connector does not support query retries"); - } - return beginUpdate(session, tableHandle, updatedColumns); + throw new TrinoException(NOT_SUPPORTED, "This connector does not support updates"); } /** diff --git a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/classloader/ClassLoaderSafeConnectorMetadata.java b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/classloader/ClassLoaderSafeConnectorMetadata.java index 8e20fa03f4df..09c249f4a0ef 100644 --- a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/classloader/ClassLoaderSafeConnectorMetadata.java +++ b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/classloader/ClassLoaderSafeConnectorMetadata.java @@ -193,14 +193,6 @@ public ConnectorTableHandle getTableHandleForStatisticsCollection(ConnectorSessi } } - @Override - public Optional getTableHandleForExecute(ConnectorSession session, ConnectorTableHandle tableHandle, String procedureName, Map executeProperties) - { - try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { - return delegate.getTableHandleForExecute(session, tableHandle, procedureName, executeProperties); - } - } - @Override public Optional getTableHandleForExecute(ConnectorSession session, ConnectorTableHandle tableHandle, String procedureName, Map executeProperties, RetryMode retryMode) { @@ -457,14 +449,6 @@ public void setColumnComment(ConnectorSession session, ConnectorTableHandle tabl } } - @Override - public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout) - { - try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { - return delegate.beginCreateTable(session, tableMetadata, layout); - } - } - @Override public ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { @@ -497,22 +481,6 @@ public void cleanupQuery(ConnectorSession session) } } - @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle) - { - try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { - return delegate.beginInsert(session, tableHandle); - } - } - - @Override - public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns) - { - try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { - return delegate.beginInsert(session, tableHandle, columns); - } - } - @Override public ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { @@ -553,14 +521,6 @@ public CompletableFuture refreshMaterializedView(ConnectorSession session, Sc } } - @Override - public ConnectorInsertTableHandle beginRefreshMaterializedView(ConnectorSession session, ConnectorTableHandle tableHandle, List sourceTableHandles) - { - try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { - return delegate.beginRefreshMaterializedView(session, tableHandle, sourceTableHandles); - } - } - @Override public ConnectorInsertTableHandle beginRefreshMaterializedView(ConnectorSession session, ConnectorTableHandle tableHandle, List sourceTableHandles, RetryMode retryMode) { @@ -671,14 +631,6 @@ public ColumnHandle getUpdateRowIdColumnHandle(ConnectorSession session, Connect } } - @Override - public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) - { - try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { - return delegate.beginDelete(session, tableHandle); - } - } - @Override public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { @@ -1025,14 +977,6 @@ public Optional applyTableScanRedirect(Conne } } - @Override - public ConnectorTableHandle beginUpdate(ConnectorSession session, ConnectorTableHandle tableHandle, List updatedColumns) - { - try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { - return delegate.beginUpdate(session, tableHandle, updatedColumns); - } - } - @Override public ConnectorTableHandle beginUpdate(ConnectorSession session, ConnectorTableHandle tableHandle, List updatedColumns, RetryMode retryMode) { diff --git a/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveFaultTolerantExecutionConnectorTest.java b/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveFaultTolerantExecutionConnectorTest.java index c0da4f3ec5e7..b8d4702bed04 100644 --- a/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveFaultTolerantExecutionConnectorTest.java +++ b/plugin/trino-hive/src/test/java/io/trino/plugin/hive/TestHiveFaultTolerantExecutionConnectorTest.java @@ -92,20 +92,6 @@ public void testOptimizeWithBucketing() .hasMessageContaining("OPTIMIZE procedure is not supported with query retries enabled"); } - @Override - public void testOptimizeHiveInformationSchema() - { - assertThatThrownBy(super::testOptimizeHiveInformationSchema) - .hasMessageContaining("This connector does not support query retries"); - } - - @Override - public void testOptimizeHiveSystemTable() - { - assertThatThrownBy(super::testOptimizeHiveSystemTable) - .hasMessageContaining("This connector does not support query retries"); - } - @Test public void testMaxOutputPartitionCountCheck() { From 3739fad6e0a62c015521b535b63ae6003fad5258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Osipiuk?= Date: Fri, 13 May 2022 14:17:03 +0200 Subject: [PATCH 13/13] Clarify the meaning of retryMode in ConnectorMetadata JavaDoc --- .../spi/connector/ConnectorMetadata.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java b/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java index 1a6c28993314..832a8b6e3fbc 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java +++ b/core/trino-spi/src/main/java/io/trino/spi/connector/ConnectorMetadata.java @@ -95,6 +95,13 @@ default ConnectorTableHandle getTableHandleForStatisticsCollection(ConnectorSess /** * Create initial handle for execution of table procedure. The handle will be used through planning process. It will be converted to final * handle used for execution via @{link {@link ConnectorMetadata#beginTableExecute} + * + *

+ * If connector does not support execution with retries, the method should throw: + *

+     *     new TrinoException(NOT_SUPPORTED, "This connector does not support query retries")
+     * 
+ * unless {@code retryMode} is set to {@code NO_RETRIES}. */ default Optional getTableHandleForExecute( ConnectorSession session, @@ -464,6 +471,13 @@ default void finishStatisticsCollection(ConnectorSession session, ConnectorTable /** * Begin the atomic creation of a table with data. + * + *

+ * If connector does not support execution with retries, the method should throw: + *

+     *     new TrinoException(NOT_SUPPORTED, "This connector does not support query retries")
+     * 
+ * unless {@code retryMode} is set to {@code NO_RETRIES}. */ default ConnectorOutputTableHandle beginCreateTable(ConnectorSession session, ConnectorTableMetadata tableMetadata, Optional layout, RetryMode retryMode) { @@ -491,6 +505,13 @@ default void cleanupQuery(ConnectorSession session) {} /** * Begin insert query. + * + *

+ * If connector does not support execution with retries, the method should throw: + *

+     *     new TrinoException(NOT_SUPPORTED, "This connector does not support query retries")
+     * 
+ * unless {@code retryMode} is set to {@code NO_RETRIES}. */ default ConnectorInsertTableHandle beginInsert(ConnectorSession session, ConnectorTableHandle tableHandle, List columns, RetryMode retryMode) { @@ -531,6 +552,13 @@ default CompletableFuture refreshMaterializedView(ConnectorSession session, S /** * Begin materialized view query. + * + *

+ * If connector does not support execution with retries, the method should throw: + *

+     *     new TrinoException(NOT_SUPPORTED, "This connector does not support query retries")
+     * 
+ * unless {@code retryMode} is set to {@code NO_RETRIES}. */ default ConnectorInsertTableHandle beginRefreshMaterializedView(ConnectorSession session, ConnectorTableHandle tableHandle, List sourceTableHandles, RetryMode retryMode) { @@ -573,6 +601,13 @@ default ColumnHandle getUpdateRowIdColumnHandle(ConnectorSession session, Connec /** * Begin delete query. + * + *

+ * If connector does not support execution with retries, the method should throw: + *

+     *     new TrinoException(NOT_SUPPORTED, "This connector does not support query retries")
+     * 
+ * unless {@code retryMode} is set to {@code NO_RETRIES}. */ default ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle, RetryMode retryMode) { @@ -593,6 +628,13 @@ default void finishDelete(ConnectorSession session, ConnectorTableHandle tableHa * Do whatever is necessary to start an UPDATE query, returning the {@link ConnectorTableHandle} * instance that will be passed to split generation, and to the {@link #finishUpdate} method. * + *

+ * If connector does not support execution with retries, the method should throw: + *

+     *     new TrinoException(NOT_SUPPORTED, "This connector does not support query retries")
+     * 
+ * unless {@code retryMode} is set to {@code NO_RETRIES}. + * * @param session The session in which to start the update operation. * @param tableHandle A ConnectorTableHandle for the table to be updated. * @param updatedColumns A list of the ColumnHandles of columns that will be updated by this UPDATE