Skip to content

Commit

Permalink
Merge branch 'awslabs:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
atipapp authored Nov 11, 2024
2 parents 17da3a9 + f6d3620 commit 61480c7
Show file tree
Hide file tree
Showing 15 changed files with 82 additions and 27 deletions.
2 changes: 1 addition & 1 deletion athena-clickhouse/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<dependency>
<groupId>com.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.6.5</version>
<version>0.7.1-patch1</version>
<classifier>all</classifier>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@
import com.amazonaws.athena.connector.lambda.domain.Split;
import com.amazonaws.athena.connectors.jdbc.manager.FederationExpressionParser;
import com.amazonaws.athena.connectors.jdbc.manager.JdbcSplitQueryBuilder;
import com.amazonaws.athena.connectors.jdbc.manager.TypeAndValue;
import com.google.common.base.Strings;
import org.apache.arrow.vector.types.Types;
import org.apache.arrow.vector.types.pojo.ArrowType;

import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -56,4 +59,21 @@ protected List<String> getPartitionWhereClauses(Split split)
}
return Collections.emptyList();
}

protected String toPredicate(String columnName, String operator, Object value, ArrowType type,
List<TypeAndValue> accumulator)
{
Types.MinorType minorType = Types.getMinorTypeForArrowType(type);
if (minorType.equals(Types.MinorType.DATEMILLI) && isOperatorEquals(operator)) {
accumulator.add(new TypeAndValue(type, value));
return quote(columnName) + " " + operator + " cast(? as timestamp)";
}
// Default to parent's behavior
return super.toPredicate(columnName, operator, value, type, accumulator);
}

private boolean isOperatorEquals(String operator)
{
return operator.equals("=");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.concurrent.TimeUnit;

Expand Down Expand Up @@ -136,4 +140,37 @@ public void buildSplitSql()
Mockito.verify(preparedStatement, Mockito.times(1))
.setDate(1, expectedDate);
}

@Test
public void buildSplitSqlTimestamp()
throws SQLException
{
TableName tableName = new TableName("testSchema", "testTable");

SchemaBuilder schemaBuilder = SchemaBuilder.newBuilder();
schemaBuilder.addField(FieldBuilder.newBuilder("testCol1", Types.MinorType.DATEMILLI.getType()).build());
schemaBuilder.addField(FieldBuilder.newBuilder("partition", Types.MinorType.VARCHAR.getType()).build());
Schema schema = schemaBuilder.build();

Split split = Mockito.mock(Split.class);
Mockito.when(split.getProperties()).thenReturn(Collections.singletonMap("partition", "p0"));
Mockito.when(split.getProperty(Mockito.eq("partition"))).thenReturn("p0");

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime timestamp = LocalDateTime.parse("2024-10-03 12:34:56", formatter);
ValueSet valueSet2 = getSingleValueSet(timestamp);
Constraints constraints = Mockito.mock(Constraints.class);
Mockito.when(constraints.getSummary()).thenReturn(new ImmutableMap.Builder<String, ValueSet>()
.put("testCol1", valueSet2)
.build());
PreparedStatement expectedPreparedStatement = Mockito.mock(PreparedStatement.class);
Mockito.when(this.connection.prepareStatement(nullable(String.class))).thenReturn(expectedPreparedStatement);
PreparedStatement preparedStatement = this.hiveRecordHandler.buildSplitSql(this.connection, "testCatalogName", tableName, schema, constraints, split);
Assert.assertEquals(expectedPreparedStatement, preparedStatement);
LocalDateTime timestampExp = LocalDateTime.parse("2024-10-03 12:34:56", formatter);
Timestamp expectedTimestamp = new Timestamp(timestamp.toInstant(ZoneOffset.UTC).toEpochMilli());
Assert.assertEquals(expectedPreparedStatement, preparedStatement);
Mockito.verify(preparedStatement, Mockito.times(1))
.setTimestamp(1, expectedTimestamp);
}
}
2 changes: 1 addition & 1 deletion athena-cloudwatch/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>cloudwatchlogs</artifactId>
<version>2.29.1</version>
<version>2.29.9</version>
<exclusions>
<!-- replaced with jcl-over-slf4j -->
<exclusion>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ private static FieldType toFieldType(Map<String, Object> mapping)
case "byte":
minorType = Types.MinorType.TINYINT;
break;
case "float":
case "half_float":
case "double":
minorType = Types.MinorType.FLOAT8;
break;
Expand All @@ -170,10 +172,6 @@ private static FieldType toFieldType(Map<String, Object> mapping)
minorType = Types.MinorType.BIGINT;
metadata.put("scaling_factor", mapping.get("scaling_factor").toString());
break;
case "float":
case "half_float":
minorType = Types.MinorType.FLOAT4;
break;
case "date":
case "date_nanos":
minorType = Types.MinorType.DATEMILLI;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,8 +283,8 @@ public void doGetTable()
.addField(new Field("myscaled",
new FieldType(true, Types.MinorType.BIGINT.getType(), null,
ImmutableMap.of("scaling_factor", "10.0")), null))
.addField("myfloat", Types.MinorType.FLOAT4.getType())
.addField("myhalf", Types.MinorType.FLOAT4.getType())
.addField("myfloat", Types.MinorType.FLOAT8.getType())
.addField("myhalf", Types.MinorType.FLOAT8.getType())
.addField("mydatemilli", Types.MinorType.DATEMILLI.getType())
.addField("mydatenano", Types.MinorType.DATEMILLI.getType())
.addField("myboolean", Types.MinorType.BIT.getType())
Expand Down Expand Up @@ -328,10 +328,10 @@ public void doGetTable()
" \"type\" : \"double\"\n" + // type: double (FLOAT8)
" },\n" +
" \"myfloat\" : {\n" + // myfloat:
" \"type\" : \"float\"\n" + // type: float (FLOAT4)
" \"type\" : \"float\"\n" + // type: float (FLOAT8)
" },\n" +
" \"myhalf\" : {\n" + // myhalf:
" \"type\" : \"half_float\"\n" + // type: half_float (FLOAT4)
" \"type\" : \"half_float\"\n" + // type: half_float (FLOAT8)
" },\n" +
" \"myinteger\" : {\n" + // myinteger:
" \"type\" : \"integer\"\n" + // type: integer (INT)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ public void setUp()
.addField(new Field("myscaled",
new FieldType(true, Types.MinorType.BIGINT.getType(), null,
ImmutableMap.of("scaling_factor", "10.0")), null))
.addField("myfloat", Types.MinorType.FLOAT4.getType())
.addField("myhalf", Types.MinorType.FLOAT4.getType())
.addField("myfloat", Types.MinorType.FLOAT8.getType())
.addField("myhalf", Types.MinorType.FLOAT8.getType())
.addField("mydatemilli", Types.MinorType.DATEMILLI.getType())
.addField("mydatenano", Types.MinorType.DATEMILLI.getType())
.addField("myboolean", Types.MinorType.BIT.getType())
Expand Down Expand Up @@ -111,10 +111,10 @@ public void setUp()
" \"type\" : \"double\"\n" + // type: double (FLOAT8)
" },\n" +
" \"myfloat\" : {\n" + // myfloat:
" \"type\" : \"float\"\n" + // type: float (FLOAT4)
" \"type\" : \"float\"\n" + // type: float (FLOAT8)
" },\n" +
" \"myhalf\" : {\n" + // myhalf:
" \"type\" : \"half_float\"\n" + // type: half_float (FLOAT4)
" \"type\" : \"half_float\"\n" + // type: half_float (FLOAT8)
" },\n" +
" \"myinteger\" : {\n" + // myinteger:
" \"type\" : \"integer\"\n" + // type: integer (INT)
Expand Down
2 changes: 1 addition & 1 deletion athena-google-bigquery/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
<dependency>
<groupId>nl.jqno.equalsverifier</groupId>
<artifactId>equalsverifier</artifactId>
<version>3.17.1</version>
<version>3.17.3</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -336,8 +336,8 @@ else if (singleValues.size() > 1) {
return "(" + Joiner.on(" OR ").join(disjuncts) + ")";
}

private String toPredicate(String columnName, String operator, Object value, ArrowType type,
List<TypeAndValue> accumulator)
protected String toPredicate(String columnName, String operator, Object value, ArrowType type,
List<TypeAndValue> accumulator)
{
accumulator.add(new TypeAndValue(type, value));
return quote(columnName) + " " + operator + " ?";
Expand Down
4 changes: 2 additions & 2 deletions athena-neptune/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<version>2022.47.1</version>
<properties>
<!-- make sure gremlin driver version stays within the Neptune supported range -->
<gremlinDriverVersion>3.7.2</gremlinDriverVersion>
<gremlinDriverVersion>3.7.3</gremlinDriverVersion>
<neptune.sigv4.signer.version>2.4.0</neptune.sigv4.signer.version>
</properties>
<dependencies>
Expand Down Expand Up @@ -124,7 +124,7 @@
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
<artifactId>rdf4j-repository-sparql</artifactId>
<version>5.0.2</version>
<version>5.0.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
Expand Down
2 changes: 1 addition & 1 deletion athena-oracle/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>23.5.0.24.07</version>
<version>23.6.0.24.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/rds -->
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion athena-redis/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.4.0.RELEASE</version>
<version>6.5.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ else if (singleValues.size() > 1) {
return "(" + Joiner.on(" OR ").join(disjuncts) + ")";
}

private String toPredicate(String columnName, String operator, Object value, ArrowType type,
protected String toPredicate(String columnName, String operator, Object value, ArrowType type,
List<TypeAndValue> accumulator)
{
accumulator.add(new TypeAndValue(type, value));
Expand Down
2 changes: 1 addition & 1 deletion athena-snowflake/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<dependency>
<groupId>net.snowflake</groupId>
<artifactId>snowflake-jdbc</artifactId>
<version>3.19.1</version>
<version>3.20.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/rds -->
<dependency>
Expand Down
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<maven.compiler.release>11</maven.compiler.release>
<maven.compiler.plugin.version>3.13.0</maven.compiler.plugin.version>
<!--- to meet engine version 1.12.533-->
<aws-sdk-v2.version>2.29.1</aws-sdk-v2.version>
<aws-sdk-v2.version>2.29.9</aws-sdk-v2.version>
<aws.lambda-java-core.version>1.2.2</aws.lambda-java-core.version>
<aws.lambda-java-log4j2.version>1.6.0</aws.lambda-java-log4j2.version>
<aws-cdk.version>1.204.0</aws-cdk.version>
Expand All @@ -27,8 +27,8 @@
<assertj.version>3.26.3</assertj.version>
<testng.version>7.10.2</testng.version>
<!--- to meet engine version 2.12.6 -->
<fasterxml.jackson.version>2.18.0</fasterxml.jackson.version>
<surefire.failsafe.version>3.5.1</surefire.failsafe.version>
<fasterxml.jackson.version>2.18.1</fasterxml.jackson.version>
<surefire.failsafe.version>3.5.2</surefire.failsafe.version>
<log4j2Version>2.24.1</log4j2Version>
<apache.arrow.version>13.0.0</apache.arrow.version>
<guava.version>33.3.1-jre</guava.version>
Expand All @@ -44,7 +44,7 @@
<mvn.checkstyle.version>3.6.0</mvn.checkstyle.version>
<mvn.shade.plugin.version>3.6.0</mvn.shade.plugin.version>
<mvn.source.plugin.version>3.3.1</mvn.source.plugin.version>
<mvn.javadoc.plugin.version>3.10.1</mvn.javadoc.plugin.version>
<mvn.javadoc.plugin.version>3.11.1</mvn.javadoc.plugin.version>
<mvn.jar.plugin.version>3.4.2</mvn.jar.plugin.version>
<doclint>none</doclint>
</properties>
Expand Down

0 comments on commit 61480c7

Please sign in to comment.