Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ buildNumber.properties
.mvn/wrapper/maven-wrapper.jar
.project
.classpath
src/main/resources/config/config.properties
jdbc-driver/src/main/resources/config/config.properties
.flattened-pom.xml

*.iml
pom.xml.bak
Expand Down
221 changes: 221 additions & 0 deletions jdbc-driver/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.salesforce.datacloud</groupId>
<artifactId>jdbc-parent</artifactId>
<version>${revision}</version>
</parent>

<!-- TODO: should we name this jdbc-driver, and have another package that includes jdbc, jdbc-grpc, etc. for ease of use? -->
<artifactId>jdbc-driver</artifactId>

<properties>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>net.jodah</groupId>
<artifactId>failsafe</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-vector</artifactId>
<version>${arrow.version}</version>
</dependency>
<dependency>
<groupId>org.apache.calcite.avatica</groupId>
<artifactId>avatica</artifactId>
<version>${avatica.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>com.salesforce.datacloud</groupId>
<artifactId>jdbc-grpc</artifactId>
<version>${project.version}</version>
<!-- TODO: make sure 'provided' doesn't break dbeaver, it allows you to pull in "optional" dependencies, but I don't know if this also means adding provided dependencies at runtime: https://dbeaver.com/docs/dbeaver/How-to-add-additional-artifacts-to-the-driver/#dependency-declaration -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-memory-netty</artifactId>
<version>${arrow.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>${okhttp.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assertj.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.grpcmock</groupId>
<artifactId>grpcmock-junit5</artifactId>
<version>${grpcmock-junit5.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit-bom.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit-bom.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit-bom.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>${mockito-bom.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito-bom.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
<resource>
<filtering>true</filtering>
<directory>src/test/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<goals>
<goal>resources</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>version.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.20.0</version>
<executions>
<execution>
<id>delombok</id>
<goals>
<goal>delombok</goal>
</goals>
<configuration>
<addOutputDirectory>false</addOutputDirectory>
<sourceDirectory>jdbc-driver/src/main/java</sourceDirectory>
<outputDirectory>${project.build.directory}/delombok</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
1 change: 1 addition & 0 deletions jdbc-driver/src/main/resources/version.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
version=${revision}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import static com.salesforce.datacloud.jdbc.core.DataCloudConnectionString.CONNECTION_PROTOCOL;
import static com.salesforce.datacloud.jdbc.core.StreamingResultSetTest.query;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;

import com.google.common.collect.ImmutableSet;
Expand Down Expand Up @@ -49,7 +48,7 @@
import lombok.Value;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import lombok.var;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIf;
Expand Down Expand Up @@ -166,7 +165,7 @@ public void exerciseQueryMode(
assertThat(rs.isReady()).isTrue();
assertThat(rs).isInstanceOf(StreamingResultSet.class);

var expected = 0;
int expected = 0;
while (rs.next()) {
expected++;
}
Expand Down Expand Up @@ -315,12 +314,12 @@ void testArrowFieldConversion() {
queries.put(Types.INTEGER, "SELECT 82 as \"Integer_column\"");
try (val connection = getConnection();
val statement = connection.createStatement()) {
for (var entry : queries.entrySet()) {
val resultSet = statement.executeQuery(entry.getValue().toString());
for (val entry : queries.entrySet()) {
val resultSet = statement.executeQuery(entry.getValue());
val metadata = resultSet.getMetaData();
log.info("columntypename: {}", metadata.getColumnTypeName(1));
log.info("columntype: {}", Integer.toString(metadata.getColumnType(1)));
assertEquals(
log.info("columntype: {}", metadata.getColumnType(1));
Assertions.assertEquals(
Integer.toString(metadata.getColumnType(1)),
entry.getKey().toString());
}
Expand Down Expand Up @@ -355,7 +354,7 @@ void testMainQuery() {
ResultSet resultSet = statement.executeAdaptiveQuery(query);
log.info("Query executed in {}ms", System.currentTimeMillis() - startTime);

var expected = 0;
int expected = 0;
while (resultSet.next()) {
expected++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Time;
import java.sql.Timestamp;
import java.time.LocalDate;
Expand All @@ -31,7 +32,6 @@
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import lombok.var;
import org.junit.jupiter.api.Test;

@Slf4j
Expand All @@ -48,7 +48,7 @@ public void testPreparedStatementDateRange() {
val sqlDate = Date.valueOf(date);
preparedStatement.setDate(1, sqlDate);

try (var resultSet = preparedStatement.executeQuery()) {
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
assertThat(resultSet.getDate("a"))
.isEqualTo(sqlDate)
Expand Down Expand Up @@ -86,7 +86,7 @@ public void testPreparedStatementDateWithCalendarRange() {
val expected =
Date.valueOf(convertedDateTime.toLocalDateTime().toLocalDate());

try (var resultSet = preparedStatement.executeQuery()) {
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
val actual = resultSet.getDate("a");
assertThat(actual)
Expand Down Expand Up @@ -178,7 +178,7 @@ public void testPreparedStatementTimestampRange() {
val sqlTimestamp = Timestamp.valueOf(dateTime);
preparedStatement.setTimestamp(1, sqlTimestamp);

try (var resultSet = preparedStatement.executeQuery()) {
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
val actual = resultSet.getTimestamp("a", utcCalendar);
assertThat(actual)
Expand Down Expand Up @@ -218,7 +218,7 @@ public void testPreparedStatementTimestampWithCalendarRange() {
val convertedDateTime = zonedDateTime.withZoneSameInstant(utcTimeZone.toZoneId());
val expected = Timestamp.valueOf(convertedDateTime.toLocalDateTime());

try (var resultSet = preparedStatement.executeQuery()) {
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
val actual = resultSet.getTimestamp("a", utcCalendar);
assertThat(actual)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
import java.util.Map;
import java.util.stream.Stream;
import lombok.val;
import lombok.var;
import org.apache.arrow.vector.types.DateUnit;
import org.apache.arrow.vector.types.FloatingPointPrecision;
import org.apache.arrow.vector.types.IntervalUnit;
Expand Down Expand Up @@ -128,7 +127,7 @@ void testConvertArrowFieldsToColumnMetaDataTypes() {
JDBCType.valueOf(Types.ARRAY).getName(),
ImmutableList.of(new Field("", FieldType.nullable(new ArrowType.List()), null)));

for (var entry : testCases.entrySet()) {
for (val entry : testCases.entrySet()) {
List<ColumnMetaData> actual = ArrowUtils.toColumnMetaData(entry.getValue());
softly.assertThat(actual.get(0).type.name).isEqualTo(entry.getKey());
}
Expand Down
Loading
Loading