Skip to content

Commit 58e4e04

Browse files
authored
Merge branch 'main' into remove_bigtable_deps_bom
2 parents deaef27 + ce9c504 commit 58e4e04

26 files changed

Lines changed: 611 additions & 395 deletions

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryArrowArray.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,23 @@
2828
* An implementation of {@link BigQueryBaseArray} used to represent Array values from Arrow data.
2929
*/
3030
class BigQueryArrowArray extends BigQueryBaseArray {
31-
private static final BigQueryJdbcResultSetLogger LOG =
32-
BigQueryJdbcResultSetLogger.getLogger(BigQueryArrowArray.class);
3331
private static final BigQueryTypeCoercer BIGQUERY_TYPE_COERCER =
3432
BigQueryTypeCoercionUtility.INSTANCE;
3533
private JsonStringArrayList<?> values;
3634

3735
public BigQueryArrowArray(Field schema, JsonStringArrayList<?> values) {
38-
super(schema);
36+
this(schema, values, BigQueryJdbcResultSetLogger.getLogger(BigQueryArrowArray.class));
37+
}
38+
39+
public BigQueryArrowArray(
40+
Field schema, JsonStringArrayList<?> values, BigQueryJdbcResultSetLogger log) {
41+
super(schema, log);
3942
this.values = values;
4043
}
4144

4245
@Override
4346
public Object getArray() {
44-
LOG.finestTrace("getArray", "++enter++");
47+
LOG.finestTrace("getArray");
4548
ensureValid();
4649
if (values == null) {
4750
return null;
@@ -51,7 +54,7 @@ public Object getArray() {
5154

5255
@Override
5356
public Object getArray(long index, int count) {
54-
LOG.finestTrace("getArray", "++enter++");
57+
LOG.finestTrace("getArray");
5558
ensureValid();
5659
if (values == null) {
5760
return null;
@@ -62,7 +65,7 @@ public Object getArray(long index, int count) {
6265

6366
@Override
6467
public ResultSet getResultSet() throws SQLException {
65-
LOG.finestTrace("getResultSet", "++enter++");
68+
LOG.finestTrace("getResultSet");
6669
ensureValid();
6770
if (values == null) {
6871
return new BigQueryArrowResultSet();
@@ -75,7 +78,7 @@ public ResultSet getResultSet() throws SQLException {
7578

7679
@Override
7780
public ResultSet getResultSet(long index, int count) throws SQLException {
78-
LOG.finestTrace("getResultSet", "++enter++");
81+
LOG.finestTrace("getResultSet");
7982
ensureValid();
8083
if (values == null) {
8184
return new BigQueryArrowResultSet();
@@ -89,17 +92,18 @@ public ResultSet getResultSet(long index, int count) throws SQLException {
8992

9093
@Override
9194
public void free() {
92-
LOG.finestTrace("free", "++enter++");
95+
LOG.finestTrace("free");
9396
this.values = null;
9497
markInvalid();
9598
}
9699

97100
@Override
98101
Object getCoercedValue(int index) {
99-
LOG.finestTrace("getCoercedValue", "++enter++");
102+
LOG.finestTrace("getCoercedValue");
100103
Object value = this.values.get(index);
101104
return this.arrayOfStruct
102-
? new BigQueryArrowStruct(schema.getSubFields(), (JsonStringHashMap<?, ?>) value)
103-
: BIGQUERY_TYPE_COERCER.coerceTo(getTargetClass(), value);
105+
? new BigQueryArrowStruct(
106+
schema.getSubFields(), (JsonStringHashMap<?, ?>) value, this.LOG.getArrowStructLogger())
107+
: BIGQUERY_TYPE_COERCER.coerceTo(getTargetClass(), value, this.LOG);
104108
}
105109
}

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryArrowBatchWrapper.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121

2222
/** This class acts as a facade layer and wraps Arrow's VectorSchemaRoot & JsonStringArrayList */
2323
class BigQueryArrowBatchWrapper {
24-
private static final BigQueryJdbcCustomLogger LOG =
25-
new BigQueryJdbcCustomLogger(BigQueryArrowBatchWrapper.class.getName());
2624
// Reference to the current arrowBatch
2725
private final ArrowRecordBatch currentArrowBatch;
2826
// Reference to the nested Records, set as null otherwise (Arrays)
@@ -45,35 +43,29 @@ private BigQueryArrowBatchWrapper(
4543
}
4644

4745
static BigQueryArrowBatchWrapper of(ArrowRecordBatch currentArrowBatch, boolean... isLast) {
48-
LOG.finest("++enter++");
4946
boolean isLastFlag = isLast != null && isLast.length == 1 && isLast[0];
5047
return new BigQueryArrowBatchWrapper(currentArrowBatch, null, isLastFlag, null);
5148
}
5249

5350
static BigQueryArrowBatchWrapper getNestedFieldValueListWrapper(
5451
JsonStringArrayList nestedRecords, boolean... isLast) {
55-
LOG.finest("++enter++");
5652
boolean isLastFlag = isLast != null && isLast.length == 1 && isLast[0];
5753
return new BigQueryArrowBatchWrapper(null, nestedRecords, isLastFlag, null);
5854
}
5955

6056
static BigQueryArrowBatchWrapper ofError(Exception exception) {
61-
LOG.finest("++enter++");
6257
return new BigQueryArrowBatchWrapper(null, null, true, exception);
6358
}
6459

6560
ArrowRecordBatch getCurrentArrowBatch() {
66-
LOG.finest("++enter++");
6761
return this.currentArrowBatch;
6862
}
6963

7064
JsonStringArrayList getNestedRecords() {
71-
LOG.finest("++enter++");
7265
return this.nestedRecords;
7366
}
7467

7568
boolean isLast() {
76-
LOG.finest("++enter++");
7769
return this.isLast;
7870
}
7971

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryArrowResultSet.java

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ private BigQueryArrowResultSet(
9696
BigQuery bigQuery)
9797
throws SQLException {
9898
super(bigQuery, statement, schema, isNested);
99-
LOG.finestTrace("<init>", "++enter++");
99+
LOG.finestTrace("<init>");
100100
this.totalRows = totalRows;
101101
this.buffer = buffer;
102102
this.currentNestedBatch = currentNestedBatch;
@@ -181,7 +181,7 @@ private ArrowDeserializer(ArrowSchema arrowSchema) throws IOException {
181181
}
182182

183183
private void deserializeArrowBatch(ArrowRecordBatch batch) throws SQLException {
184-
LOG.finestTrace("deserializeArrowBatch", "++enter++");
184+
LOG.finestTrace("deserializeArrowBatch");
185185
try {
186186
if (vectorSchemaRoot != null) {
187187
// Clear vectorSchemaRoot before populating a new batch
@@ -276,7 +276,7 @@ else if (this.currentBatchRowIndex < this.vectorSchemaRoot.getRowCount()) {
276276
}
277277

278278
private Object getObjectInternal(int columnIndex) throws SQLException {
279-
LOG.finestTrace("getObjectInternal", "++enter++");
279+
LOG.finestTrace("getObjectInternal");
280280
checkClosed();
281281
Object value;
282282
if (this.isNested) {
@@ -318,26 +318,29 @@ private Object getObjectInternal(int columnIndex) throws SQLException {
318318
public Object getObject(int columnIndex) throws SQLException {
319319

320320
// columnIndex is SQL index starting at 1
321-
LOG.finestTrace("getObject", "++enter++");
321+
LOG.finestTrace("getObject");
322322
checkClosed();
323323
Object value = getObjectInternal(columnIndex);
324324
if (value == null) {
325325
return null;
326326
}
327327

328328
if (this.isNested && columnIndex == 1) {
329-
return this.bigQueryTypeCoercer.coerceTo(Integer.class, value);
329+
return this.bigQueryTypeCoercer.coerceTo(Integer.class, value, this.LOG);
330330
}
331331

332332
if (this.isNested && columnIndex == 2) {
333333
Field arrayField = this.schema.getFields().get(0);
334334
if (isStruct(arrayField)) {
335-
return new BigQueryArrowStruct(arrayField.getSubFields(), (JsonStringHashMap<?, ?>) value);
335+
return new BigQueryArrowStruct(
336+
arrayField.getSubFields(),
337+
(JsonStringHashMap<?, ?>) value,
338+
this.LOG.getArrowStructLogger());
336339
}
337340
Class<?> targetClass =
338341
BigQueryJdbcTypeMappings.standardSQLToJavaTypeMapping.get(
339342
arrayField.getType().getStandardType());
340-
return this.bigQueryTypeCoercer.coerceTo(targetClass, value);
343+
return this.bigQueryTypeCoercer.coerceTo(targetClass, value, this.LOG);
341344
}
342345

343346
int fieldIndex = this.isNested ? 0 : columnIndex - 1;
@@ -355,7 +358,7 @@ public Object getObject(int columnIndex) throws SQLException {
355358
newList.add(null);
356359
}
357360
}
358-
return new BigQueryArrowArray(fieldSchema, newList);
361+
return new BigQueryArrowArray(fieldSchema, newList, this.LOG.getArrowArrayLogger());
359362
} else if (elementTypeName == StandardSQLTypeName.RANGE) {
360363
JsonStringArrayList<String> newList = new JsonStringArrayList<>();
361364
for (Object item : originalList) {
@@ -375,11 +378,14 @@ public Object getObject(int columnIndex) throws SQLException {
375378
newList.add(null);
376379
}
377380
}
378-
return new BigQueryArrowArray(fieldSchema, newList);
381+
return new BigQueryArrowArray(fieldSchema, newList, this.LOG.getArrowArrayLogger());
379382
}
380-
return new BigQueryArrowArray(fieldSchema, originalList);
383+
return new BigQueryArrowArray(fieldSchema, originalList, this.LOG.getArrowArrayLogger());
381384
} else if (isStruct(fieldSchema)) {
382-
return new BigQueryArrowStruct(fieldSchema.getSubFields(), (JsonStringHashMap<?, ?>) value);
385+
return new BigQueryArrowStruct(
386+
fieldSchema.getSubFields(),
387+
(JsonStringHashMap<?, ?>) value,
388+
this.LOG.getArrowStructLogger());
383389
} else if (fieldSchema.getType().getStandardType() == StandardSQLTypeName.RANGE) {
384390
JsonStringHashMap<?, ?> rangeMap = (JsonStringHashMap<?, ?>) value;
385391
Object start = rangeMap.get("start");
@@ -403,7 +409,7 @@ public Object getObject(int columnIndex) throws SQLException {
403409
Class<?> targetClass =
404410
BigQueryJdbcTypeMappings.standardSQLToJavaTypeMapping.get(
405411
fieldSchema.getType().getStandardType());
406-
return this.bigQueryTypeCoercer.coerceTo(targetClass, value);
412+
return this.bigQueryTypeCoercer.coerceTo(targetClass, value, this.LOG);
407413
}
408414
}
409415

@@ -430,17 +436,17 @@ private String formatRangeElement(Object element, StandardSQLTypeName elementTyp
430436
switch (elementType) {
431437
case DATE:
432438
// Arrow gives DATE as an Integer (days since epoch)
433-
Date date = this.bigQueryTypeCoercer.coerceTo(Date.class, (Integer) element);
439+
Date date = this.bigQueryTypeCoercer.coerceTo(Date.class, (Integer) element, this.LOG);
434440
return date.toString();
435441
case DATETIME:
436442
// Arrow gives DATETIME as a LocalDateTime
437443
Timestamp dtTs =
438-
this.bigQueryTypeCoercer.coerceTo(Timestamp.class, (LocalDateTime) element);
439-
return this.bigQueryTypeCoercer.coerceTo(String.class, dtTs);
444+
this.bigQueryTypeCoercer.coerceTo(Timestamp.class, (LocalDateTime) element, this.LOG);
445+
return this.bigQueryTypeCoercer.coerceTo(String.class, dtTs, this.LOG);
440446
case TIMESTAMP:
441447
// Arrow gives TIMESTAMP as a Long (microseconds since epoch)
442-
Timestamp ts = this.bigQueryTypeCoercer.coerceTo(Timestamp.class, (Long) element);
443-
return this.bigQueryTypeCoercer.coerceTo(String.class, ts);
448+
Timestamp ts = this.bigQueryTypeCoercer.coerceTo(Timestamp.class, (Long) element, this.LOG);
449+
return this.bigQueryTypeCoercer.coerceTo(String.class, ts, this.LOG);
444450
default:
445451
// Fallback for any other unexpected type
446452
return element.toString();
@@ -460,7 +466,7 @@ public void close() {
460466

461467
@Override
462468
public boolean isBeforeFirst() throws SQLException {
463-
LOG.finestTrace("isBeforeFirst", "++enter++");
469+
LOG.finestTrace("isBeforeFirst");
464470
checkClosed();
465471
if (this.isNested) {
466472
return this.nestedRowIndex < this.fromIndex;
@@ -471,14 +477,14 @@ public boolean isBeforeFirst() throws SQLException {
471477

472478
@Override
473479
public boolean isAfterLast() throws SQLException {
474-
LOG.finestTrace("isAfterLast", "++enter++");
480+
LOG.finestTrace("isAfterLast");
475481
checkClosed();
476482
return this.afterLast;
477483
}
478484

479485
@Override
480486
public boolean isFirst() throws SQLException {
481-
LOG.finestTrace("isFirst", "++enter++");
487+
LOG.finestTrace("isFirst");
482488
checkClosed();
483489
if (this.isNested) {
484490
return this.nestedRowIndex == this.fromIndex;
@@ -489,7 +495,7 @@ public boolean isFirst() throws SQLException {
489495

490496
@Override
491497
public boolean isLast() throws SQLException {
492-
LOG.finestTrace("isLast", "++enter++");
498+
LOG.finestTrace("isLast");
493499
checkClosed();
494500
if (this.isNested) {
495501
return this.nestedRowIndex == this.toIndexExclusive - 1;

java-bigquery/google-cloud-bigquery-jdbc/src/main/java/com/google/cloud/bigquery/jdbc/BigQueryArrowStruct.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@
3030
* An implementation of {@link BigQueryBaseStruct} used to represent Struct values from Arrow data.
3131
*/
3232
class BigQueryArrowStruct extends BigQueryBaseStruct {
33-
private static final BigQueryJdbcResultSetLogger LOG =
34-
BigQueryJdbcResultSetLogger.getLogger(BigQueryArrowStruct.class);
35-
3633
private static final BigQueryTypeCoercer BIGQUERY_TYPE_COERCER =
3734
BigQueryTypeCoercionUtility.INSTANCE;
3835

@@ -41,6 +38,12 @@ class BigQueryArrowStruct extends BigQueryBaseStruct {
4138
private final JsonStringHashMap<?, ?> values;
4239

4340
BigQueryArrowStruct(FieldList schema, JsonStringHashMap<?, ?> values) {
41+
this(schema, values, BigQueryJdbcResultSetLogger.getLogger(BigQueryArrowStruct.class));
42+
}
43+
44+
BigQueryArrowStruct(
45+
FieldList schema, JsonStringHashMap<?, ?> values, BigQueryJdbcResultSetLogger log) {
46+
super(log);
4447
this.schema = schema;
4548
this.values = values;
4649
}
@@ -52,7 +55,7 @@ FieldList getSchema() {
5255

5356
@Override
5457
public Object[] getAttributes() {
55-
LOG.finestTrace("getAttributes", "++enter++");
58+
LOG.finestTrace("getAttributes");
5659
int size = this.schema.size();
5760
Object[] attributes = (Object[]) Array.newInstance(Object.class, size);
5861

@@ -71,17 +74,20 @@ public Object[] getAttributes() {
7174
}
7275

7376
private Object getValue(Field currentSchema, Object currentValue) {
74-
LOG.finestTrace("getValue", "++enter++");
77+
LOG.finestTrace("getValue");
7578
if (isArray(currentSchema)) {
76-
return new BigQueryArrowArray(currentSchema, (JsonStringArrayList<?>) currentValue);
79+
return new BigQueryArrowArray(
80+
currentSchema, (JsonStringArrayList<?>) currentValue, this.LOG.getArrowArrayLogger());
7781
} else if (isStruct(currentSchema)) {
7882
return new BigQueryArrowStruct(
79-
currentSchema.getSubFields(), (JsonStringHashMap<?, ?>) currentValue);
83+
currentSchema.getSubFields(),
84+
(JsonStringHashMap<?, ?>) currentValue,
85+
this.LOG.getArrowStructLogger());
8086
} else {
8187
Class<?> targetClass =
8288
BigQueryJdbcTypeMappings.standardSQLToJavaTypeMapping.get(
8389
currentSchema.getType().getStandardType());
84-
return BIGQUERY_TYPE_COERCER.coerceTo(targetClass, currentValue);
90+
return BIGQUERY_TYPE_COERCER.coerceTo(targetClass, currentValue, this.LOG);
8591
}
8692
}
8793
}

0 commit comments

Comments
 (0)