googleapis / googleapis/google-cloud-java

[java-bigquery] Schema not propagated when querying for array of structs

Open
#12,155 6 comments 0 reactions 0 assignees View on GitHub
api: bigquery priority: p3
Dominant language
Java
Stars
2.1k
Forks
1.2k
Avg merge
1d 23h
Merged PRs (30d)
154

Description

#### Environment details

1. Specify the API at the beginning of the title. For example, "BigQuery: ...").
```kotlin
implementation("com.google.cloud:google-cloud-bigquery:2.41.0")
```
2. OS type and version: MacOS
3. Java version: 21

#### Steps to reproduce

1. Create a table with a repeated struct schema.
2. Query the same table, try to access the nested record fields by name. This fails because no schema is attached.

#### Code example

Reproduced here: https://github.com/FredrikMeyer/bigquery-bug/blob/main/src/test/java/no/fredrikmeyer/MainTest.java

```java
var query = "select * from my_dataset.my_table";

QueryJobConfiguration queryJobConfiguration = QueryJobConfiguration.newBuilder(query).setUseLegacySql(false).build();

var res2 = bigQuery.query(queryJobConfiguration);

res2.iterateAll().forEach(r -> {
// Prints true
System.out.println(r.hasSchema());
// Prints false, even though the schema is defined above
System.out.println(r.get("arr").getRepeatedValue().getFirst().getRecordValue().hasSchema());
});
```

#### Any additional information below

When having an array of structs, the schema does not seem to be propagated to the fields. Thanks!

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.