Skip to content

Commit d25fc36

Browse files
authored
Merge branch 'master' into feature/docdb-managed-connector-rebased
2 parents 3d53fc7 + 7f24379 commit d25fc36

File tree

105 files changed

+11225
-4945
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+11225
-4945
lines changed

.github/workflows/run_release_tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
echo PATH=$PATH >> $GITHUB_ENV
4242
4343
- name: Setup AWS Cred
44-
uses: aws-actions/configure-aws-credentials@v4
44+
uses: aws-actions/configure-aws-credentials@v5
4545
with:
4646
aws-region: us-west-2
4747
role-duration-seconds: 18000

athena-clickhouse/pom.xml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<dependency>
2323
<groupId>com.clickhouse</groupId>
2424
<artifactId>clickhouse-jdbc</artifactId>
25-
<version>0.9.5</version>
25+
<version>0.9.6</version>
2626
<classifier>all</classifier>
2727
</dependency>
2828
<dependency>
@@ -70,6 +70,22 @@
7070
<goals>
7171
<goal>shade</goal>
7272
</goals>
73+
<configuration>
74+
<filters>
75+
<filter>
76+
<artifact>*:*</artifact>
77+
<excludes>
78+
<exclude>META-INF/*.SF</exclude>
79+
<exclude>META-INF/*.DSA</exclude>
80+
<exclude>META-INF/*.RSA</exclude>
81+
<!-- Fix for CVE-2025-48924 and CVE-2020-15250: Exclude all Maven metadata files -->
82+
<!-- This excludes all pom.xml and pom.properties files that may declare vulnerable dependency versions -->
83+
<exclude>META-INF/maven/**/pom.xml</exclude>
84+
<exclude>META-INF/maven/**/pom.properties</exclude>
85+
</excludes>
86+
</filter>
87+
</filters>
88+
</configuration>
7389
</execution>
7490
</executions>
7591
</plugin>

athena-clickhouse/src/main/java/com/amazonaws/athena/connectors/clickhouse/ClickHouseConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public final class ClickHouseConstants
3939
// 9000; // Native-TCP
4040
// 9004; // MySQL
4141
static final Map<String, String> JDBC_PROPERTIES = Collections.singletonMap("databaseTerm", "SCHEMA");
42+
static final int FETCH_SIZE = 1000;
4243

4344
private ClickHouseConstants() {}
4445
}

athena-clickhouse/src/main/java/com/amazonaws/athena/connectors/clickhouse/ClickHouseMetadataHandler.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,14 @@
2727
import com.amazonaws.athena.connector.lambda.domain.Split;
2828
import com.amazonaws.athena.connector.lambda.domain.TableName;
2929
import com.amazonaws.athena.connector.lambda.domain.spill.SpillLocation;
30+
import com.amazonaws.athena.connector.lambda.metadata.GetDataSourceCapabilitiesRequest;
31+
import com.amazonaws.athena.connector.lambda.metadata.GetDataSourceCapabilitiesResponse;
3032
import com.amazonaws.athena.connector.lambda.metadata.GetSplitsRequest;
3133
import com.amazonaws.athena.connector.lambda.metadata.GetSplitsResponse;
3234
import com.amazonaws.athena.connector.lambda.metadata.GetTableLayoutRequest;
3335
import com.amazonaws.athena.connector.lambda.metadata.ListTablesRequest;
3436
import com.amazonaws.athena.connector.lambda.metadata.ListTablesResponse;
37+
import com.amazonaws.athena.connector.lambda.metadata.optimizations.OptimizationSubType;
3538
import com.amazonaws.athena.connectors.clickhouse.resolver.ClickhouseJDBCCaseResolver;
3639
import com.amazonaws.athena.connectors.jdbc.connection.DatabaseConnectionConfig;
3740
import com.amazonaws.athena.connectors.jdbc.connection.DatabaseConnectionInfo;
@@ -40,6 +43,7 @@
4043
import com.amazonaws.athena.connectors.jdbc.manager.JDBCUtil;
4144
import com.amazonaws.athena.connectors.mysql.MySqlMetadataHandler;
4245
import com.google.common.annotations.VisibleForTesting;
46+
import com.google.common.collect.ImmutableMap;
4347
import com.google.common.collect.ImmutableSet;
4448
import org.apache.arrow.vector.complex.reader.FieldReader;
4549
import org.apache.arrow.vector.types.Types;
@@ -108,6 +112,15 @@ protected ClickHouseMetadataHandler(
108112
super(databaseConnectionConfig, secretsManager, athena, jdbcConnectionFactory, configOptions);
109113
}
110114

115+
@Override
116+
public GetDataSourceCapabilitiesResponse doGetDataSourceCapabilities(BlockAllocator allocator, GetDataSourceCapabilitiesRequest request)
117+
{
118+
ImmutableMap.Builder<String, List<OptimizationSubType>> capabilities = ImmutableMap.builder();
119+
120+
jdbcQueryPassthrough.addQueryPassthroughCapabilityIfEnabled(capabilities, configOptions);
121+
return new GetDataSourceCapabilitiesResponse(request.getCatalogName(), capabilities.build());
122+
}
123+
111124
@Override
112125
public Schema getPartitionSchema(final String catalogName)
113126
{
@@ -135,6 +148,11 @@ public GetSplitsResponse doGetSplits(
135148
final BlockAllocator blockAllocator, final GetSplitsRequest getSplitsRequest)
136149
{
137150
LOGGER.debug("{}: Catalog {}, table {}", getSplitsRequest.getQueryId(), getSplitsRequest.getTableName().getSchemaName(), getSplitsRequest.getTableName().getTableName());
151+
if (getSplitsRequest.getConstraints().isQueryPassThrough()) {
152+
LOGGER.info("QPT Split Requested");
153+
return setupQueryPassthroughSplit(getSplitsRequest);
154+
}
155+
138156
int partitionContd = decodeContinuationToken(getSplitsRequest);
139157
Set<Split> splits = new HashSet<>();
140158
Block partitions = getSplitsRequest.getPartitions();

athena-clickhouse/src/main/java/com/amazonaws/athena/connectors/clickhouse/ClickHouseRecordHandler.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,16 @@ public ClickHouseRecordHandler(DatabaseConnectionConfig databaseConnectionConfig
9191
public PreparedStatement buildSplitSql(Connection jdbcConnection, String catalogName, TableName tableName, Schema schema, Constraints constraints, Split split)
9292
throws SQLException
9393
{
94-
PreparedStatement preparedStatement = jdbcSplitQueryBuilder.buildSql(jdbcConnection, null, tableName.getSchemaName(), tableName.getTableName(), schema, constraints, split);
94+
PreparedStatement preparedStatement;
9595

96-
// Disable fetching all rows.
97-
preparedStatement.setFetchSize(Integer.MIN_VALUE);
96+
if (constraints.isQueryPassThrough()) {
97+
preparedStatement = buildQueryPassthroughSql(jdbcConnection, constraints);
98+
}
99+
else {
100+
preparedStatement = jdbcSplitQueryBuilder.buildSql(jdbcConnection, null, tableName.getSchemaName(), tableName.getTableName(), schema, constraints, split);
101+
}
102+
// Set fetch size to a reasonable value for ClickHouse JDBC driver.
103+
preparedStatement.setFetchSize(ClickHouseConstants.FETCH_SIZE);
98104

99105
return preparedStatement;
100106
}

0 commit comments

Comments
 (0)