diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachine.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachine.java index 68cd7605ac..a4cdae3bec 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachine.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/sql/ProtoRowsMergingStateMachine.java @@ -230,6 +230,12 @@ static void validateValueAndType(SqlType type, Value value) { checkExpectedKind(value, Value.KindCase.ARRAY_VALUE, type); List fieldValues = value.getArrayValue().getValuesList(); SqlType.Struct structType = (SqlType.Struct) type; + if (fieldValues.size() != structType.getFields().size()) { + throw new IllegalStateException( + String.format( + "Unexpected malformed struct data. Expected %s fields, received: %s", + structType.getFields().size(), fieldValues.size())); + } for (int i = 0; i < fieldValues.size(); i++) { validateValueAndType(structType.getType(i), fieldValues.get(i)); }