com.google.spanner.v1.Type toProto() { com.google.spanner.v1.Type.Builder proto = com.google.spanner.v1.Type.newBuilder(); proto.setCode(code.protoCode()); if (code == Code.ARRAY) { proto.setArrayElementType(arrayElementType.toProto()); } else if (code == Code.STRUCT) { com.google.spanner.v1.StructType.Builder fields = proto.getStructTypeBuilder(); for (StructField field : structFields) { fields.addFieldsBuilder().setName(field.getName()).setType(field.getType().toProto()); } } return proto.build(); }
ExecuteSqlRequest.Builder getExecuteSqlRequestBuilder( Statement statement, QueryMode queryMode) { ExecuteSqlRequest.Builder builder = ExecuteSqlRequest.newBuilder() .setSql(statement.getSql()) .setQueryMode(queryMode) .setSession(session.name); Map<String, Value> stmtParameters = statement.getParameters(); if (!stmtParameters.isEmpty()) { com.google.protobuf.Struct.Builder paramsBuilder = builder.getParamsBuilder(); for (Map.Entry<String, Value> param : stmtParameters.entrySet()) { paramsBuilder.putFields(param.getKey(), param.getValue().toProto()); builder.putParamTypes(param.getKey(), param.getValue().getType().toProto()); } } TransactionSelector selector = getTransactionSelector(); if (selector != null) { builder.setTransaction(selector); } builder.setSeqno(getSeqNo()); return builder; }
for (Map.Entry<String, Value> param : stmtParameters.entrySet()) { paramsBuilder.putFields(param.getKey(), param.getValue().toProto()); builder.putParamTypes(param.getKey(), param.getValue().getType().toProto());
for (Map.Entry<String, Value> param : stmtParameters.entrySet()) { paramsBuilder.putFields(param.getKey(), param.getValue().toProto()); builder.putParamTypes(param.getKey(), param.getValue().getType().toProto());
@Test public void emptyStruct() { Type t = Type.struct(); assertThat(t.getCode()).isEqualTo(Type.Code.STRUCT); assertThat(t.getStructFields()).isEmpty(); assertThat(t.toString()).isEqualTo("STRUCT<>"); assertProtoEquals(t.toProto(), "code: STRUCT struct_type {}"); }
private static ResultSetMetadata makeMetadata(Type rowType) { com.google.spanner.v1.Type typeProto = rowType.toProto(); return ResultSetMetadata.newBuilder().setRowType(typeProto.getStructType()).build(); }
private static ResultSetMetadata newMetadata(Type type) { return ResultSetMetadata.newBuilder().setRowType(type.toProto().getStructType()).build(); }
void test() { Type t = newType(); assertThat(t.getCode()).isEqualTo(expectedCode); assertThat(newType()).isSameAs(t); // Interned. // String form is deliberately the same as the corresponding type enum in the public API. assertThat(t.toString()).isEqualTo(expectedProtoCode.toString()); com.google.spanner.v1.Type proto = t.toProto(); assertThat(proto.getCode()).isEqualTo(expectedProtoCode); assertThat(proto.hasArrayElementType()).isFalse(); assertThat(proto.hasStructType()).isFalse(); // Round trip. Type fromProto = Type.fromProto(proto); assertThat(fromProto).isEqualTo(t); assertThat(fromProto).isSameAs(t); reserializeAndAssert(t); } }
void test() { Type elementType = newElementType(); Type t = Type.array(elementType); assertThat(t.getCode()).isEqualTo(Type.Code.ARRAY); assertThat(t.getArrayElementType()).isEqualTo(elementType); if (expectInterned) { assertThat(Type.array(newElementType())).isSameAs(t); } assertThat(t.toString()).isEqualTo("ARRAY<" + elementType.toString() + ">"); com.google.spanner.v1.Type proto = t.toProto(); assertThat(proto.getCode()).isEqualTo(TypeCode.ARRAY); assertThat(proto.getArrayElementType()).isEqualTo(elementType.toProto()); assertThat(proto.hasStructType()).isFalse(); Type fromProto = Type.fromProto(proto); assertThat(fromProto).isEqualTo(t); if (expectInterned) { assertThat(fromProto).isSameAs(t); } reserializeAndAssert(t); } }
@Test public void struct() { Type t = Type.struct(StructField.of("f1", Type.int64()), StructField.of("f2", Type.string())); assertThat(t.getCode()).isEqualTo(Type.Code.STRUCT); // Exercise StructField equality. assertThat(t.getStructFields()) .containsExactly(StructField.of("f1", Type.int64()), StructField.of("f2", Type.string())) .inOrder(); // Exercise StructField getters. assertThat(t.getStructFields().get(0).getName()).isEqualTo("f1"); assertThat(t.getStructFields().get(0).getType()).isEqualTo(Type.int64()); assertThat(t.getStructFields().get(1).getName()).isEqualTo("f2"); assertThat(t.getStructFields().get(1).getType()).isEqualTo(Type.string()); assertThat(t.toString()).isEqualTo("STRUCT<f1 INT64, f2 STRING>"); assertThat(t.getFieldIndex("f1")).isEqualTo(0); assertThat(t.getFieldIndex("f2")).isEqualTo(1); assertProtoEquals( t.toProto(), "code: STRUCT struct_type { fields { name: 'f1' type { code: INT64 } }" + " fields { name: 'f2' type { code: STRING } } }"); }
@Test public void metadata() { Type rowType = Type.struct(Type.StructField.of("f", Type.string())); ResultSetMetadata.Builder metadataBuilder = ResultSetMetadata.newBuilder(); metadataBuilder .setRowType(rowType.toProto().getStructType()) .getTransactionBuilder() .setId(ByteString.copyFromUtf8("t1")); PartialResultSet partialResultSet = PartialResultSet.newBuilder().setMetadata(metadataBuilder.build()).build(); consumer.onPartialResultSet(partialResultSet); consumer.onCompleted(); assertThat(resultSet.next()).isFalse(); assertThat(resultSet.getType()).isEqualTo(rowType); }
com.google.spanner.v1.Type toProto() { com.google.spanner.v1.Type.Builder proto = com.google.spanner.v1.Type.newBuilder(); proto.setCode(code.protoCode()); if (code == Code.ARRAY) { proto.setArrayElementType(arrayElementType.toProto()); } else if (code == Code.STRUCT) { com.google.spanner.v1.StructType.Builder fields = proto.getStructTypeBuilder(); for (StructField field : structFields) { fields.addFieldsBuilder().setName(field.getName()).setType(field.getType().toProto()); } } return proto.build(); }
ExecuteSqlRequest.Builder getExecuteSqlRequestBuilder( Statement statement, QueryMode queryMode) { ExecuteSqlRequest.Builder builder = ExecuteSqlRequest.newBuilder() .setSql(statement.getSql()) .setQueryMode(queryMode) .setSession(session.name); Map<String, Value> stmtParameters = statement.getParameters(); if (!stmtParameters.isEmpty()) { com.google.protobuf.Struct.Builder paramsBuilder = builder.getParamsBuilder(); for (Map.Entry<String, Value> param : stmtParameters.entrySet()) { paramsBuilder.putFields(param.getKey(), param.getValue().toProto()); builder.putParamTypes(param.getKey(), param.getValue().getType().toProto()); } } TransactionSelector selector = getTransactionSelector(); if (selector != null) { builder.setTransaction(selector); } builder.setSeqno(getSeqNo()); return builder; }
for (Map.Entry<String, Value> param : stmtParameters.entrySet()) { paramsBuilder.putFields(param.getKey(), param.getValue().toProto()); builder.putParamTypes(param.getKey(), param.getValue().getType().toProto());
for (Map.Entry<String, Value> param : stmtParameters.entrySet()) { paramsBuilder.putFields(param.getKey(), param.getValue().toProto()); builder.putParamTypes(param.getKey(), param.getValue().getType().toProto());