use of com.google.cloud.bigquery.Connection in project java-bigquery by googleapis.
the class ITBigQueryTest method testConnectionImplDryRun.
@Test
public void testConnectionImplDryRun() throws SQLException {
String query = String.format("select StringField, BigNumericField, BooleanField, BytesField, IntegerField, TimestampField, FloatField, NumericField, TimeField, DateField, DateTimeField , GeographyField, RecordField.BytesField, RecordField.BooleanField, IntegerArrayField from %s where StringField = ? order by TimestampField", TABLE_ID_FASTQUERY_BQ_RESULTSET.getTable());
ConnectionSettings connectionSettings = ConnectionSettings.newBuilder().setDefaultDataset(DatasetId.of(DATASET)).setCreateSession(true).build();
Connection connection = bigquery.createConnection(connectionSettings);
BigQueryDryRunResult bigQueryDryRunResultSet = connection.dryRun(query);
assertNotNull(bigQueryDryRunResultSet.getSchema());
assertEquals(BQ_RESULTSET_EXPECTED_SCHEMA, // match the schema
bigQueryDryRunResultSet.getSchema());
List<Parameter> queryParameters = bigQueryDryRunResultSet.getQueryParameters();
assertEquals(StandardSQLTypeName.STRING, queryParameters.get(0).getValue().getType());
QueryStatistics queryStatistics = bigQueryDryRunResultSet.getStatistics().getQueryStatistics();
assertNotNull(queryStatistics);
SessionInfo sessionInfo = bigQueryDryRunResultSet.getStatistics().getSessionInfo();
assertNotNull(sessionInfo.getSessionId());
assertEquals(StatementType.SELECT, queryStatistics.getStatementType());
}
use of com.google.cloud.bigquery.Connection in project java-bigquery by googleapis.
the class ITNightlyBigQueryTest method testInvalidQuery.
@Test
public void testInvalidQuery() throws BigQuerySQLException {
Connection connection = getConnection();
try {
BigQueryResult bigQueryResult = connection.executeSelect(INVALID_QUERY);
fail("BigQuerySQLException was expected");
} catch (BigQuerySQLException ex) {
assertNotNull(ex.getMessage());
assertTrue(ex.getMessage().toLowerCase().contains("unexpected keyword into"));
} finally {
connection.close();
}
}
use of com.google.cloud.bigquery.Connection in project java-bigquery by googleapis.
the class ITBigQueryTest method testReadAPIConnectionMultiClose.
@Test
public void testReadAPIConnectionMultiClose() throws SQLException {
// use read API to read 300K records, then closes the connection. This test
// repeats it multiple times and assets if the connection was closed
String query = "SELECT date, county, state_name, confirmed_cases, deaths FROM " + TABLE_ID_LARGE.getTable() + " where date is not null and county is not null and state_name is not null order by confirmed_cases asc limit 300000";
ConnectionSettings connectionSettings = ConnectionSettings.newBuilder().setDefaultDataset(DatasetId.of(DATASET)).setPriority(QueryJobConfiguration.Priority.INTERACTIVE).build();
int closeCnt = 0, runCnt = 3;
for (int run = 0; run < runCnt; run++) {
Connection connection = bigquery.createConnection(connectionSettings);
BigQueryResult bigQueryResult = connection.executeSelect(query);
ResultSet rs = bigQueryResult.getResultSet();
int cnt = 0;
while (rs.next()) {
// pagination starts after approx 120,000 records
assertNotNull(rs.getDate(0));
++cnt;
}
// total 300000 rows should be read
assertEquals(300000, cnt);
// check if connection closed
assertTrue(connection.close());
closeCnt++;
}
assertEquals(closeCnt, // check if the connection closed for the required number of times
runCnt);
}
use of com.google.cloud.bigquery.Connection in project java-bigquery by googleapis.
the class ITBigQueryTest method testExecuteSelectStruct.
@Test
public void testExecuteSelectStruct() throws SQLException {
String query = "select (STRUCT(\"Vancouver\" as city, 5 as years)) as address";
ConnectionSettings connectionSettings = ConnectionSettings.newBuilder().setDefaultDataset(DatasetId.of(DATASET)).build();
Connection connection = bigquery.createConnection(connectionSettings);
BigQueryResult bigQueryResult = connection.executeSelect(query);
assertEquals(1, bigQueryResult.getTotalRows());
Schema schema = bigQueryResult.getSchema();
assertEquals("address", schema.getFields().get(0).getName());
assertEquals(Field.Mode.NULLABLE, schema.getFields().get(0).getMode());
// Backend is currently returning LegacySQLTypeName. Tracking bug: b/202977620
assertEquals(LegacySQLTypeName.RECORD, schema.getFields().get(0).getType());
assertEquals("city", schema.getFields().get(0).getSubFields().get(0).getName());
assertEquals(LegacySQLTypeName.STRING, schema.getFields().get(0).getSubFields().get(0).getType());
assertEquals(Field.Mode.NULLABLE, schema.getFields().get(0).getSubFields().get(0).getMode());
assertEquals("years", schema.getFields().get(0).getSubFields().get(1).getName());
assertEquals(LegacySQLTypeName.INTEGER, schema.getFields().get(0).getSubFields().get(1).getType());
assertEquals(Field.Mode.NULLABLE, schema.getFields().get(0).getSubFields().get(1).getMode());
ResultSet rs = bigQueryResult.getResultSet();
assertTrue(rs.next());
FieldValueList addressFieldValue = (com.google.cloud.bigquery.FieldValueList) rs.getObject("address");
assertEquals(rs.getObject("address"), rs.getObject(0));
assertEquals("Vancouver", addressFieldValue.get(0).getStringValue());
assertEquals(5, addressFieldValue.get(1).getLongValue());
// only 1 row of data
assertFalse(rs.next());
}
use of com.google.cloud.bigquery.Connection in project java-bigquery by googleapis.
the class ITBigQueryTest method testExecuteSelectWithNamedQueryParameters.
@Test
public void testExecuteSelectWithNamedQueryParameters() throws BigQuerySQLException {
String query = "SELECT TimestampField, StringField, BooleanField FROM " + TABLE_ID.getTable() + " WHERE StringField = @stringParam" + " AND IntegerField IN UNNEST(@integerList)";
QueryParameterValue stringParameter = QueryParameterValue.string("stringValue");
QueryParameterValue intArrayParameter = QueryParameterValue.array(new Integer[] { 3, 4 }, Integer.class);
Parameter stringParam = Parameter.newBuilder().setName("stringParam").setValue(stringParameter).build();
Parameter intArrayParam = Parameter.newBuilder().setName("integerList").setValue(intArrayParameter).build();
ConnectionSettings connectionSettings = ConnectionSettings.newBuilder().setDefaultDataset(DatasetId.of(DATASET)).build();
Connection connection = bigquery.createConnection(connectionSettings);
List<Parameter> parameters = ImmutableList.of(stringParam, intArrayParam);
BigQueryResult rs = connection.executeSelect(query, parameters);
assertEquals(2, rs.getTotalRows());
}
Aggregations