Skip to content

Commit

Permalink
modernizer and dependency-scope for presto-base-jdbc
Browse files Browse the repository at this point in the history
  • Loading branch information
ZacBlanco authored and auden-woolfson committed Nov 12, 2024
1 parent 920fa37 commit f89629f
Show file tree
Hide file tree
Showing 32 changed files with 99 additions and 93 deletions.
6 changes: 6 additions & 0 deletions presto-base-jdbc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,12 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-analyzer</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.airlift.tpch</groupId>
<artifactId>tpch</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,20 +73,20 @@
import static com.facebook.presto.plugin.jdbc.StandardReadMappings.jdbcTypeToPrestoType;
import static com.facebook.presto.spi.StandardErrorCode.NOT_FOUND;
import static com.facebook.presto.spi.StandardErrorCode.NOT_SUPPORTED;
import static com.google.common.base.MoreObjects.firstNonNull;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.emptyToNull;
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.base.Verify.verify;
import static com.google.common.collect.ImmutableMap.toImmutableMap;
import static com.google.common.collect.ImmutableSet.toImmutableSet;
import static com.google.common.collect.Iterables.getOnlyElement;
import static com.google.common.collect.MoreCollectors.onlyElement;
import static java.lang.String.format;
import static java.lang.String.join;
import static java.sql.ResultSetMetaData.columnNullable;
import static java.util.Collections.nCopies;
import static java.util.Locale.ENGLISH;
import static java.util.Objects.requireNonNull;
import static java.util.Objects.requireNonNullElse;
import static java.util.concurrent.TimeUnit.MILLISECONDS;

public class BaseJdbcClient
Expand Down Expand Up @@ -219,7 +219,7 @@ public JdbcTableHandle getTableHandle(ConnectorSession session, JdbcIdentity ide
if (tableHandles.size() > 1) {
throw new PrestoException(NOT_SUPPORTED, "Multiple tables matched: " + schemaTableName);
}
return getOnlyElement(tableHandles);
return tableHandles.stream().collect(onlyElement());
}
}
catch (SQLException e) {
Expand Down Expand Up @@ -247,7 +247,7 @@ public List<JdbcColumnHandle> getColumns(ConnectorSession session, JdbcTableHand
String columnName = resultSet.getString("COLUMN_NAME");
boolean nullable = columnNullable == resultSet.getInt("NULLABLE");
Optional<String> comment = Optional.ofNullable(emptyToNull(resultSet.getString("REMARKS")));
columns.add(new JdbcColumnHandle(connectorId, columnName, typeHandle, columnMapping.get().getType(), nullable, comment));
columns.add(new JdbcColumnHandle(connectorId, columnName, typeHandle, columnMapping.orElseThrow().getType(), nullable, comment));
}
}
if (columns.isEmpty()) {
Expand Down Expand Up @@ -645,7 +645,7 @@ protected String toRemoteSchemaName(JdbcIdentity identity, Connection connection
}
}
catch (RuntimeException e) {
throw new PrestoException(JDBC_ERROR, "Failed to find remote schema name: " + firstNonNull(e.getMessage(), e), e);
throw new PrestoException(JDBC_ERROR, "Failed to find remote schema name: " + requireNonNullElse(e.getMessage(), e), e);
}
}

Expand Down Expand Up @@ -691,7 +691,7 @@ protected String toRemoteTableName(JdbcIdentity identity, Connection connection,
}
}
catch (RuntimeException e) {
throw new PrestoException(JDBC_ERROR, "Failed to find remote table name: " + firstNonNull(e.getMessage(), e), e);
throw new PrestoException(JDBC_ERROR, "Failed to find remote table name: " + requireNonNullElse(e.getMessage(), e), e);
}
}

Expand Down Expand Up @@ -787,7 +787,7 @@ protected static Optional<String> escapeNamePattern(Optional<String> name, Optio
if (!name.isPresent() || !escape.isPresent()) {
return name;
}
return Optional.of(escapeNamePattern(name.get(), escape.get()));
return Optional.of(escapeNamePattern(name.orElseThrow(), escape.orElseThrow()));
}

private static String escapeNamePattern(String name, String escape)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
import com.google.common.collect.ImmutableList;
import com.google.inject.Module;

import static com.google.common.base.MoreObjects.firstNonNull;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.isNullOrEmpty;
import static java.util.Objects.requireNonNull;
import static java.util.Objects.requireNonNullElse;

public class JdbcPlugin
implements Plugin
Expand All @@ -44,6 +44,6 @@ public Iterable<ConnectorFactory> getConnectorFactories()

private static ClassLoader getClassLoader()
{
return firstNonNull(Thread.currentThread().getContextClassLoader(), JdbcPlugin.class.getClassLoader());
return requireNonNullElse(Thread.currentThread().getContextClassLoader(), JdbcPlugin.class.getClassLoader());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.collect.Iterables.getOnlyElement;
import static com.google.common.collect.MoreCollectors.onlyElement;
import static java.lang.Float.intBitsToFloat;
import static java.util.Collections.nCopies;
import static java.util.Objects.requireNonNull;
Expand Down Expand Up @@ -136,9 +136,9 @@ public PreparedStatement buildSql(
if (additionalPredicate.isPresent()) {
clauses = ImmutableList.<String>builder()
.addAll(clauses)
.add(additionalPredicate.get().getExpression())
.add(additionalPredicate.orElseThrow().getExpression())
.build();
accumulator.addAll(additionalPredicate.get().getBoundConstantValues().stream()
accumulator.addAll(additionalPredicate.orElseThrow().getBoundConstantValues().stream()
.map(constantExpression -> new TypeAndValue(constantExpression.getType(), constantExpression.getValue()))
.collect(ImmutableList.toImmutableList()));
}
Expand Down Expand Up @@ -227,7 +227,7 @@ private List<String> toConjuncts(List<JdbcColumnHandle> columns, TupleDomain<Col
for (JdbcColumnHandle column : columns) {
Type type = column.getColumnType();
if (isAcceptedType(type)) {
Domain domain = tupleDomain.getDomains().get().get(column);
Domain domain = tupleDomain.getDomains().orElseThrow().get(column);
if (domain != null) {
builder.add(toPredicate(column.getColumnName(), domain, type, accumulator));
}
Expand Down Expand Up @@ -271,7 +271,7 @@ private String toPredicate(String columnName, Domain domain, Type type, List<Typ

// Add back all of the possible single values either as an equality or an IN predicate
if (singleValues.size() == 1) {
disjuncts.add(toPredicate(columnName, "=", getOnlyElement(singleValues), type, accumulator));
disjuncts.add(toPredicate(columnName, "=", singleValues.stream().collect(onlyElement()), type, accumulator));
}
else if (singleValues.size() > 1) {
for (Object value : singleValues) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public PlanNode visitFilter(FilterNode node, RewriteContext<Void> context)
return node;
}

JdbcTableLayoutHandle oldTableLayoutHandle = (JdbcTableLayoutHandle) oldTableHandle.getLayout().get();
JdbcTableLayoutHandle oldTableLayoutHandle = (JdbcTableLayoutHandle) oldTableHandle.getLayout().orElseThrow();
JdbcTableLayoutHandle newTableLayoutHandle = new JdbcTableLayoutHandle(
session.getSqlFunctionProperties(),
oldConnectorTable,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
import static com.facebook.presto.common.type.VarcharType.createVarcharType;
import static com.facebook.presto.spi.connector.NotPartitionedPartitionHandle.NOT_PARTITIONED;
import static com.facebook.presto.testing.TestingConnectorSession.SESSION;
import static com.google.common.collect.Iterables.getOnlyElement;
import static com.google.common.collect.MoreCollectors.onlyElement;
import static io.airlift.slice.Slices.utf8Slice;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
Expand Down Expand Up @@ -183,7 +183,7 @@ private RecordCursor getCursor(JdbcTableHandle jdbcTableHandle, List<JdbcColumnH
{
JdbcTableLayoutHandle layoutHandle = new JdbcTableLayoutHandle(SESSION.getSqlFunctionProperties(), jdbcTableHandle, domain, Optional.empty());
ConnectorSplitSource splits = jdbcClient.getSplits(SESSION, IDENTITY, layoutHandle);
JdbcSplit split = (JdbcSplit) getOnlyElement(getFutureValue(splits.getNextBatch(NOT_PARTITIONED, 1000)).getSplits());
JdbcSplit split = (JdbcSplit) getFutureValue(splits.getNextBatch(NOT_PARTITIONED, 1000)).getSplits().stream().collect(onlyElement());

ConnectorTransactionHandle transaction = new JdbcTransactionHandle();
JdbcRecordSetProvider recordSetProvider = new JdbcRecordSetProvider(jdbcClient);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import static com.facebook.presto.spi.connector.NotPartitionedPartitionHandle.NOT_PARTITIONED;
import static com.facebook.presto.testing.TestingSession.testSessionBuilder;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.collect.Iterables.getOnlyElement;
import static com.google.common.collect.MoreCollectors.onlyElement;
import static java.util.concurrent.TimeUnit.SECONDS;

final class TestingDatabase
Expand Down Expand Up @@ -106,7 +106,7 @@ public JdbcSplit getSplit(String schemaName, String tableName)
JdbcTableHandle jdbcTableHandle = jdbcClient.getTableHandle(session, identity, new SchemaTableName(schemaName, tableName));
JdbcTableLayoutHandle jdbcLayoutHandle = new JdbcTableLayoutHandle(session.getSqlFunctionProperties(), jdbcTableHandle, TupleDomain.all(), Optional.empty());
ConnectorSplitSource splits = jdbcClient.getSplits(session, identity, jdbcLayoutHandle);
return (JdbcSplit) getOnlyElement(getFutureValue(splits.getNextBatch(NOT_PARTITIONED, 1000)).getSplits());
return (JdbcSplit) getFutureValue(splits.getNextBatch(NOT_PARTITIONED, 1000)).getSplits().stream().collect(onlyElement());
}

public Map<String, JdbcColumnHandle> getColumnHandles(String schemaName, String tableName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -337,11 +337,11 @@ public MatchResult detailMatches(PlanNode node, StatsProvider stats, Session ses
checkState(shapeMatches(node), "Plan testing framework error: shapeMatches returned false in detailMatches in %s", this.getClass().getName());

TableScanNode tableScanNode = (TableScanNode) node;
JdbcTableLayoutHandle layoutHandle = (JdbcTableLayoutHandle) tableScanNode.getTable().getLayout().get();
JdbcTableLayoutHandle layoutHandle = (JdbcTableLayoutHandle) tableScanNode.getTable().getLayout().orElseThrow();
if (jdbcTableLayoutHandle.getTable().equals(layoutHandle.getTable())
&& jdbcTableLayoutHandle.getTupleDomain().equals(layoutHandle.getTupleDomain())
&& ((!jdbcTableLayoutHandle.getAdditionalPredicate().isPresent() && !layoutHandle.getAdditionalPredicate().isPresent())
|| jdbcTableLayoutHandle.getAdditionalPredicate().get().getExpression().equals(layoutHandle.getAdditionalPredicate().get().getExpression()))) {
|| jdbcTableLayoutHandle.getAdditionalPredicate().orElseThrow().getExpression().equals(layoutHandle.getAdditionalPredicate().orElseThrow().getExpression()))) {
return MatchResult.match(
SymbolAliases.builder().putAll(
columns.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public static ColumnReader createReader(RichColumnDescriptor descriptor, boolean
case BINARY:
Optional<ColumnReader> decimalBatchColumnReader = createDecimalBatchColumnReader(descriptor);
if (decimalBatchColumnReader.isPresent()) {
return decimalBatchColumnReader.get();
return decimalBatchColumnReader.orElseThrow();
}

return isNested ? new BinaryNestedBatchReader(descriptor) : new BinaryFlatBatchReader(descriptor);
Expand All @@ -105,7 +105,7 @@ public static ColumnReader createReader(RichColumnDescriptor descriptor, boolean

decimalBatchColumnReader = createDecimalBatchColumnReader(descriptor);
if (decimalBatchColumnReader.isPresent()) {
return decimalBatchColumnReader.get();
return decimalBatchColumnReader.orElseThrow();
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

import static com.facebook.presto.common.type.Decimals.MAX_SHORT_PRECISION;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.collect.Iterables.getOnlyElement;
import static com.google.common.collect.MoreCollectors.onlyElement;
import static java.util.stream.Collectors.joining;
import static org.apache.parquet.schema.LogicalTypeAnnotation.uuidType;
import static org.apache.parquet.schema.OriginalType.DECIMAL;
Expand Down Expand Up @@ -297,7 +297,7 @@ public static Optional<org.apache.parquet.schema.Type> getSubfieldType(GroupType
return Optional.empty();
}
else if (typeChain.size() == 1) {
return Optional.of(getOnlyElement(typeChain));
return Optional.of(typeChain.stream().collect(onlyElement()));
}
else {
org.apache.parquet.schema.Type messageType = typeChain.get(typeChain.size() - 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import io.airlift.slice.UnsafeSlice;

import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkPositionIndexes;
import static java.util.Objects.checkFromToIndex;
import static java.util.Objects.requireNonNull;

/**
Expand Down Expand Up @@ -113,7 +113,7 @@ public int getByteArrayOffset()

public void ensureBytesAvailable(int bytes)
{
checkPositionIndexes(offset, offset + bytes, slice.length());
checkFromToIndex(offset, offset + bytes, slice.length());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,9 @@ private static ParquetFileMetadata readParquetMetadata(BasicSliceInput input, in

if (encryptedFooterMode) {
FileCryptoMetaData fileCryptoMetaData = readFileCryptoMetaData(input);
fileDecryptor.get().setFileCryptoMetaData(fileCryptoMetaData.getEncryption_algorithm(), true, fileCryptoMetaData.getKey_metadata());
footerDecryptor = fileDecryptor.get().fetchFooterDecryptor();
additionalAuthenticationData = AesCipher.createFooterAAD(fileDecryptor.get().getFileAAD());
fileDecryptor.orElseThrow().setFileCryptoMetaData(fileCryptoMetaData.getEncryption_algorithm(), true, fileCryptoMetaData.getKey_metadata());
footerDecryptor = fileDecryptor.orElseThrow().fetchFooterDecryptor();
additionalAuthenticationData = AesCipher.createFooterAAD(fileDecryptor.orElseThrow().getFileAAD());
}

FileMetaData fileMetaData = readFileMetaData(input, footerDecryptor, additionalAuthenticationData);
Expand All @@ -170,18 +170,18 @@ private static ParquetFileMetadata convertToParquetMetadata(BasicSliceInput inpu
// Reader attached fileDecryptor. The file could be encrypted with plaintext footer or the whole file is plaintext.
if (!encryptedFooter && fileDecryptor.isPresent()) {
if (!fileMetaData.isSetEncryption_algorithm()) { // Plaintext file
fileDecryptor.get().setPlaintextFile();
fileDecryptor.orElseThrow().setPlaintextFile();
// Detect that the file is not encrypted by mistake
if (!fileDecryptor.get().plaintextFilesAllowed()) {
if (!fileDecryptor.orElseThrow().plaintextFilesAllowed()) {
throw new ParquetCryptoRuntimeException("Applying decryptor on plaintext file");
}
}
else { // Encrypted file with plaintext footer
// if no fileDecryptor, can still read plaintext columns
fileDecryptor.get().setFileCryptoMetaData(fileMetaData.getEncryption_algorithm(), false,
fileDecryptor.orElseThrow().setFileCryptoMetaData(fileMetaData.getEncryption_algorithm(), false,
fileMetaData.getFooter_signing_key_metadata());
if (fileDecryptor.get().checkFooterIntegrity()) {
verifyFooterIntegrity(input, fileDecryptor.get(), metadataLength);
if (fileDecryptor.orElseThrow().checkFooterIntegrity()) {
verifyFooterIntegrity(input, fileDecryptor.orElseThrow(), metadataLength);
}
}
}
Expand Down Expand Up @@ -213,9 +213,9 @@ private static ParquetFileMetadata convertToParquetMetadata(BasicSliceInput inpu

if (null == cryptoMetaData) { // Plaintext column
columnPath = getPath(metaData);
if (fileDecryptor.isPresent() && !fileDecryptor.get().plaintextFile()) {
if (fileDecryptor.isPresent() && !fileDecryptor.orElseThrow().plaintextFile()) {
// mark this column as plaintext in encrypted file decryptor
fileDecryptor.get().setColumnCryptoMetadata(columnPath, false, false, (byte[]) null, columnOrdinal);
fileDecryptor.orElseThrow().setColumnCryptoMetadata(columnPath, false, false, (byte[]) null, columnOrdinal);
}
}
else { // Encrypted column
Expand All @@ -230,7 +230,7 @@ private static ParquetFileMetadata convertToParquetMetadata(BasicSliceInput inpu
throw new ParquetCryptoRuntimeException("Column encrypted with footer key: No keys available");
}
columnPath = getPath(metaData);
fileDecryptor.get().setColumnCryptoMetadata(columnPath, true, true, (byte[]) null, columnOrdinal);
fileDecryptor.orElseThrow().setColumnCryptoMetadata(columnPath, true, true, (byte[]) null, columnOrdinal);
}
else { // Column encrypted with column key
try {
Expand All @@ -240,7 +240,7 @@ private static ParquetFileMetadata convertToParquetMetadata(BasicSliceInput inpu
List<String> pathList = columnKeyStruct.getPath_in_schema();
byte[] columnKeyMetadata = columnKeyStruct.getKey_metadata();
columnPath = ColumnPath.get(pathList.toArray(new String[pathList.size()]));
metaData = decryptMetadata(rowGroup, columnKeyMetadata, columnChunk, fileDecryptor.get(), columnOrdinal, columnPath);
metaData = decryptMetadata(rowGroup, columnKeyMetadata, columnChunk, fileDecryptor.orElseThrow(), columnOrdinal, columnPath);
}
catch (KeyAccessDeniedException e) {
if (readMaskedValue) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ private static Optional<DictionaryPage> readDictionaryPage(byte[] data, Compress
private static boolean isColumnPredicate(ColumnDescriptor columnDescriptor, TupleDomain<ColumnDescriptor> parquetTupleDomain)
{
verify(parquetTupleDomain.getDomains().isPresent(), "parquetTupleDomain is empty");
return parquetTupleDomain.getDomains().get().containsKey(columnDescriptor);
return parquetTupleDomain.getDomains().orElseThrow().containsKey(columnDescriptor);
}

@VisibleForTesting
Expand Down
Loading

0 comments on commit f89629f

Please sign in to comment.