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
6 changes: 1 addition & 5 deletions java-bigquery-jdbc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -323,11 +323,7 @@
</dependency>

<!-- Test Dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.google.truth</groupId>
<artifactId>truth</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ public class BigQueryConnection extends BigQueryNoOpsConnection {
String partnerToken;
DatabaseMetaData databaseMetaData;
Boolean reqGoogleDriveScope;
private final Properties clientInfo = new Properties();
private boolean isReadOnlyTokenUsed = false;

BigQueryConnection(String url) throws IOException {
Expand Down Expand Up @@ -762,27 +763,40 @@ public void abort(Executor executor) throws SQLException {

@Override
public void setClientInfo(String name, String value) {
// no-op
if (value == null) {
this.clientInfo.remove(name);
} else {
this.clientInfo.setProperty(name, value);
}
}

@Override
public String getClientInfo(String name) {
return null;
return this.clientInfo.getProperty(name);
}

@Override
public String getCatalog() {
return this.catalog;
}

@Override
public String nativeSQL(String sql) throws SQLException {
checkClosed();
return sql;
}

@Override
public Properties getClientInfo() {
return null;
return this.clientInfo;
}

@Override
public void setClientInfo(Properties properties) {
// no-op
this.clientInfo.clear();
if (properties != null) {
this.clientInfo.putAll(properties);
}
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,13 @@ public void setTime(int parameterIndex, Time x) throws SQLException {
@Override
public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException {
checkClosed();
this.parameterHandler.setParameter(parameterIndex, x.toString(), String.class);
if (x == null) {
this.parameterHandler.setParameter(parameterIndex, null, String.class);
return;
}
Timestamp copy = new Timestamp(x.getTime());
copy.setNanos((x.getNanos() / 1000) * 1000);
this.parameterHandler.setParameter(parameterIndex, copy.toString(), String.class);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
import java.util.Properties;
import java.util.Random;
import java.util.function.BiFunction;
import org.junit.Assert;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
Expand Down Expand Up @@ -121,28 +120,27 @@ public void testValidAllDataTypesSerializationFromSelectQueryArrowDataset() thro
Connection connection = DriverManager.getConnection(connection_uri);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(selectQuery);
Assert.assertNotNull(resultSet);
assertNotNull(resultSet);

ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
resultSet.next();
Assert.assertEquals(15, resultSetMetaData.getColumnCount());
Assert.assertTrue(resultSet.getBoolean(1));
Assert.assertEquals(33, resultSet.getInt(2));
Assert.assertEquals(50.05f, resultSet.getFloat(3), 0.0);
Assert.assertEquals(123.456, resultSet.getDouble(4), 0.0);
Assert.assertEquals(123.456789, resultSet.getDouble(5), 0.0);
Assert.assertEquals("testString", resultSet.getString(6));
Assert.assertEquals("Test String", new String(resultSet.getBytes(7), StandardCharsets.UTF_8));
Assert.assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getObject(10));
Assert.assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getTimestamp(10));
Assert.assertEquals(Date.valueOf("2019-1-12"), resultSet.getObject(11));
Assert.assertEquals(Date.valueOf("2019-1-12"), resultSet.getDate(11));
Assert.assertEquals(Time.valueOf("14:00:00"), resultSet.getObject(12));
Assert.assertEquals(Time.valueOf("14:00:00"), resultSet.getTime(12));
Assert.assertEquals(Timestamp.valueOf("2022-01-22 22:22:12.142265"), resultSet.getObject(13));
Assert.assertEquals("POINT(1 2)", resultSet.getString(14));
Assert.assertEquals(
"{\"class\":{\"students\":[{\"name\":\"Jane\"}]}}", resultSet.getString(15));
assertEquals(15, resultSetMetaData.getColumnCount());
assertTrue(resultSet.getBoolean(1));
assertEquals(33, resultSet.getInt(2));
assertEquals(50.05f, resultSet.getFloat(3), 0.0);
assertEquals(123.456, resultSet.getDouble(4), 0.0);
assertEquals(123.456789, resultSet.getDouble(5), 0.0);
assertEquals("testString", resultSet.getString(6));
assertEquals("Test String", new String(resultSet.getBytes(7), StandardCharsets.UTF_8));
assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getObject(10));
assertEquals(Timestamp.valueOf("2020-04-27 18:07:25.356"), resultSet.getTimestamp(10));
assertEquals(Date.valueOf("2019-1-12"), resultSet.getObject(11));
assertEquals(Date.valueOf("2019-1-12"), resultSet.getDate(11));
assertEquals(Time.valueOf("14:00:00"), resultSet.getObject(12));
assertEquals(Time.valueOf("14:00:00"), resultSet.getTime(12));
assertEquals(Timestamp.valueOf("2022-01-22 22:22:12.142265"), resultSet.getObject(13));
assertEquals("POINT(1 2)", resultSet.getString(14));
assertEquals("{\"class\":{\"students\":[{\"name\":\"Jane\"}]}}", resultSet.getString(15));
connection.close();
connection.close();
Comment thread
logachev marked this conversation as resolved.
Outdated
}
Expand All @@ -162,7 +160,7 @@ public void testFastQueryPathEmpty() throws SQLException {
DriverManager.getConnection(String.format(connectionUrl, DEFAULT_CATALOG));
Statement bigQueryStatement = connection.createStatement();
ResultSet jsonResultSet = bigQueryStatement.executeQuery(query);
Assert.assertEquals(0, resultSetRowCount(jsonResultSet));
assertEquals(0, resultSetRowCount(jsonResultSet));
connection.close();
}

Expand Down Expand Up @@ -214,10 +212,10 @@ public void testIterateOrderArrowMultiThread() throws SQLException {
while (rs.next()) {
double tripDis = rs.getDouble("trip_distance");
++cnt;
Assert.assertTrue(oldTriDis <= tripDis);
assertTrue(oldTriDis <= tripDis);
oldTriDis = tripDis;
}
Assert.assertEquals(expectedCnt, cnt); // all the records were retrieved
assertEquals(expectedCnt, cnt); // all the records were retrieved
connection.close();
}

Expand All @@ -235,7 +233,7 @@ public void testReadAPIPathLarge() throws SQLException {
int expectedCnt = 5000;
String longQuery = String.format(BASE_QUERY, expectedCnt);
ResultSet arrowResultSet = statement.executeQuery(longQuery);
Assert.assertEquals(expectedCnt, resultSetRowCount(arrowResultSet));
assertEquals(expectedCnt, resultSetRowCount(arrowResultSet));
arrowResultSet.close();
connection.close();
}
Expand All @@ -252,7 +250,7 @@ public void testReadAPIPathLargeWithThresholdParameters() throws SQLException {
int expectedCnt = 1000;
String longQuery = String.format(BASE_QUERY, expectedCnt);
ResultSet arrowResultSet = statement.executeQuery(longQuery);
Assert.assertEquals(expectedCnt, resultSetRowCount(arrowResultSet));
assertEquals(expectedCnt, resultSetRowCount(arrowResultSet));
arrowResultSet.close();
connection.close();
}
Expand All @@ -269,7 +267,7 @@ public void testReadAPIPathLargeWithThresholdNotMet() throws SQLException {
int expectedCnt = 5000;
String longQuery = String.format(BASE_QUERY, expectedCnt);
ResultSet arrowResultSet = statement.executeQuery(longQuery);
Assert.assertEquals(expectedCnt, resultSetRowCount(arrowResultSet));
assertEquals(expectedCnt, resultSetRowCount(arrowResultSet));
arrowResultSet.close();
connection.close();
}
Expand All @@ -285,12 +283,12 @@ public void testStatelessQueryPathSmall() throws SQLException {

String query = "SELECT DISTINCT word FROM `bigquery-public-data.samples.shakespeare` LIMIT 850";
ResultSet jsonResultSet = statement.executeQuery(query);
Assert.assertEquals(850, resultSetRowCount(jsonResultSet));
assertEquals(850, resultSetRowCount(jsonResultSet));

String queryEmpty =
"SELECT DISTINCT word FROM `bigquery-public-data.samples.shakespeare` LIMIT 0";
ResultSet jsonResultSetEmpty = statement.executeQuery(queryEmpty);
Assert.assertEquals(0, resultSetRowCount(jsonResultSetEmpty));
assertEquals(0, resultSetRowCount(jsonResultSetEmpty));
connectionUseStateless.close();
}

Expand Down Expand Up @@ -583,16 +581,16 @@ public void testRollbackOnConnectionClosed() throws SQLException {
Statement statement = connection.createStatement();

boolean status = statement.execute(insertQuery);
Assert.assertFalse(status);
assertFalse(status);
int rows = statement.executeUpdate(updateQuery);
Assert.assertEquals(1, rows);
assertEquals(1, rows);
status = statement.execute(selectQuery);
Assert.assertTrue(status);
assertTrue(status);
connection.close();

// Separate query to check if transaction rollback worked
ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery);
Assert.assertFalse(resultSet.next());
assertFalse(resultSet.next());

bigQueryStatement.execute(
String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE));
Expand Down Expand Up @@ -652,16 +650,16 @@ public void testMultiStatementTransactionRollbackByUser() throws SQLException {
Statement statement = connection.createStatement();

boolean status = statement.execute(insertQuery);
Assert.assertFalse(status);
assertFalse(status);
int rows = statement.executeUpdate(updateQuery);
Assert.assertEquals(1, rows);
assertEquals(1, rows);
status = statement.execute(selectQuery);
Assert.assertTrue(status);
assertTrue(status);
connection.rollback();

// Separate query to check if transaction rollback worked
ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery);
Assert.assertFalse(resultSet.next());
assertFalse(resultSet.next());

bigQueryStatement.execute(
String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE));
Expand Down Expand Up @@ -711,10 +709,10 @@ public void testSingleStatementTransaction() throws SQLException {
while (hasMoreResult || statement.getUpdateCount() != -1) {
if (statement.getUpdateCount() == -1) {
ResultSet result = statement.getResultSet();
Assert.assertTrue(result.next());
Assert.assertEquals(-1, statement.getUpdateCount());
assertTrue(result.next());
assertEquals(-1, statement.getUpdateCount());
} else {
Assert.assertTrue(statement.getUpdateCount() > -1);
assertTrue(statement.getUpdateCount() > -1);
}
hasMoreResult = statement.getMoreResults();
resultsCount++;
Expand All @@ -725,9 +723,9 @@ public void testSingleStatementTransaction() throws SQLException {
int rowCount = 0;
while (resultSet.next()) {
rowCount++;
Assert.assertEquals(14, resultSet.getInt(3));
assertEquals(14, resultSet.getInt(3));
}
Assert.assertEquals(2, rowCount);
assertEquals(2, rowCount);

bigQueryStatement.execute(
String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE));
Expand Down Expand Up @@ -801,15 +799,15 @@ public void testMultiStatementTransactionDoesNotCommitWithoutCommit() throws SQL
Statement statement = connection.createStatement();

boolean status = statement.execute(insertQuery);
Assert.assertFalse(status);
assertFalse(status);
int rows = statement.executeUpdate(updateQuery);
Assert.assertEquals(1, rows);
assertEquals(1, rows);
status = statement.execute(selectQuery);
Assert.assertTrue(status);
assertTrue(status);

// Separate query to check nothing committed
ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery);
Assert.assertFalse(resultSet.next());
assertFalse(resultSet.next());

bigQueryStatement.execute(
String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE));
Expand Down Expand Up @@ -843,17 +841,17 @@ public void testValidMultiStatementTransactionCommits() throws SQLException {
Statement statement = connection.createStatement();

boolean status = statement.execute(insertQuery);
Assert.assertFalse(status);
assertFalse(status);
status = statement.execute(updateQuery);
Assert.assertFalse(status);
assertFalse(status);
status = statement.execute(selectQuery);
Assert.assertTrue(status);
assertTrue(status);
connection.commit();

// Separate query to check inserted and updated data committed
ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery);
Assert.assertTrue(resultSet.next());
Assert.assertEquals(14, resultSet.getInt(3));
assertTrue(resultSet.next());
assertEquals(14, resultSet.getInt(3));

bigQueryStatement.execute(
String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE));
Expand Down Expand Up @@ -898,7 +896,7 @@ public void testTransactionRollbackOnError() throws SQLException {

// do a check to see if no vals inserted
ResultSet resultSet = bigQueryStatement.executeQuery(selectQuery);
Assert.assertFalse(resultSet.next());
assertFalse(resultSet.next());

bigQueryStatement.execute(
String.format("DROP TABLE IF EXISTS %S.%s", DATASET, TRANSACTION_TABLE));
Expand Down Expand Up @@ -1746,7 +1744,7 @@ public void testNonEnabledUseLegacySQLThrowsSyntaxError() throws SQLException {
Statement statement = connection.createStatement();

// act & assertion
Assert.assertThrows(SQLException.class, () -> statement.execute(selectLegacyQuery));
assertThrows(SQLException.class, () -> statement.execute(selectLegacyQuery));
connection.close();
}

Expand All @@ -1768,7 +1766,7 @@ public void testUseLegacySQLWithLargeResultsNotAllowedQueries() throws SQLExcept
ResultSet resultSet = statement.executeQuery(selectLegacyQuery);

// assertion
Assert.assertNotNull(resultSet);
assertNotNull(resultSet);
connection.close();
}

Expand Down Expand Up @@ -1856,7 +1854,7 @@ public void testUseLegacySQLWithLargeResultsAllowedWithNoDestinationTableDefault
ResultSet resultSet = statement.executeQuery(selectLegacyQuery);

// assertion
Assert.assertNotNull(resultSet);
assertNotNull(resultSet);
connection.close();
}

Expand Down
Loading
Loading