public Builder mergeFrom(org.apache.calcite.avatica.proto.Common.ColumnValue other) { if (other == org.apache.calcite.avatica.proto.Common.ColumnValue.getDefaultInstance()) return this; if (valueBuilder_ == null) { if (!other.value_.isEmpty()) { if (other.getHasArrayValue() != false) { setHasArrayValue(other.getHasArrayValue()); if (other.hasScalarValue()) { mergeScalarValue(other.getScalarValue());
/** * Parses the value for a ColumnValue using the separated array and scalar attributes. * * @param column The protobuf ColumnValue object * @return The parse value for this column */ static Object parseColumn(Common.ColumnValue column) { // Verify that we have one or the other (scalar or array) validateColumnValue(column); if (!column.hasField(SCALAR_VALUE_DESCRIPTOR)) { // The column in this row is an Array (has multiple values) List<Object> array = new ArrayList<>(column.getArrayValueCount()); for (Common.TypedValue arrayValue : column.getArrayValueList()) { // Duplicative because of the ColumnValue/TypedValue difference. if (Common.Rep.ARRAY == arrayValue.getType()) { // Each element in this Array is an Array. array.add(parseArray(arrayValue)); } else { // The array element is a scalar. array.add(deserializeScalarValue(arrayValue)); } } return array; } else { // Scalar return deserializeScalarValue(column.getScalarValue()); } }
@java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); if (getValueCount() > 0) { hash = (37 * hash) + VALUE_FIELD_NUMBER; hash = (53 * hash) + getValueList().hashCode(); } if (getArrayValueCount() > 0) { hash = (37 * hash) + ARRAY_VALUE_FIELD_NUMBER; hash = (53 * hash) + getArrayValueList().hashCode(); } hash = (37 * hash) + HAS_ARRAY_VALUE_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( getHasArrayValue()); if (hasScalarValue()) { hash = (37 * hash) + SCALAR_VALUE_FIELD_NUMBER; hash = (53 * hash) + getScalarValue().hashCode(); } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; }
Common.ColumnValue column = iter.next(); assertTrue("The Column should have contained a scalar: " + column, column.hasField(ColumnValue.getDescriptor() .findFieldByNumber(ColumnValue.SCALAR_VALUE_FIELD_NUMBER))); Common.TypedValue value = column.getScalarValue(); assertEquals(Common.Rep.BOOLEAN, value.getType()); assertEquals(true, value.getBoolValue()); column = iter.next(); assertTrue("The Column should have contained a scalar: " + column, column.hasField(ColumnValue.getDescriptor() .findFieldByNumber(ColumnValue.SCALAR_VALUE_FIELD_NUMBER))); value = column.getScalarValue(); assertEquals(Common.Rep.STRING, value.getType()); assertEquals("my_string", value.getStringValue());
public Builder mergeFrom(org.apache.calcite.avatica.proto.Common.ColumnValue other) { if (other == org.apache.calcite.avatica.proto.Common.ColumnValue.getDefaultInstance()) return this; if (valueBuilder_ == null) { if (!other.value_.isEmpty()) { if (other.getHasArrayValue() != false) { setHasArrayValue(other.getHasArrayValue()); if (other.hasScalarValue()) { mergeScalarValue(other.getScalarValue());
Common.ColumnValue column = iter.next(); assertTrue("The Column should have contained a scalar: " + column, column.hasField(ColumnValue.getDescriptor() .findFieldByNumber(ColumnValue.SCALAR_VALUE_FIELD_NUMBER))); Common.TypedValue value = column.getScalarValue(); assertEquals(Common.Rep.BOOLEAN, value.getType()); assertEquals(true, value.getBoolValue()); column = iter.next(); assertTrue("The Column should have contained a scalar: " + column, column.hasField(ColumnValue.getDescriptor() .findFieldByNumber(ColumnValue.SCALAR_VALUE_FIELD_NUMBER))); value = column.getScalarValue(); assertEquals(Common.Rep.STRING, value.getType()); assertEquals("my_string", value.getStringValue());
public Builder mergeFrom(org.apache.calcite.avatica.proto.Common.ColumnValue other) { if (other == org.apache.calcite.avatica.proto.Common.ColumnValue.getDefaultInstance()) return this; if (valueBuilder_ == null) { if (!other.value_.isEmpty()) { if (other.getHasArrayValue() != false) { setHasArrayValue(other.getHasArrayValue()); if (other.hasScalarValue()) { mergeScalarValue(other.getScalarValue());
Common.ColumnValue column = iter.next(); assertTrue("The Column should have contained a scalar: " + column, ProtobufService.hasField(column, column.getDescriptorForType(), ColumnValue.SCALAR_VALUE_FIELD_NUMBER)); Common.TypedValue value = column.getScalarValue(); assertEquals(Common.Rep.BOOLEAN, value.getType()); assertEquals(true, value.getBoolValue()); column = iter.next(); assertTrue("The Column should have contained a scalar: " + column, ProtobufService.hasField(column, column.getDescriptorForType(), ColumnValue.SCALAR_VALUE_FIELD_NUMBER)); value = column.getScalarValue(); assertEquals(Common.Rep.STRING, value.getType()); assertEquals("my_string", value.getStringValue());
final Common.ColumnValue.Builder columnBuilder = Common.ColumnValue.newBuilder();
@java.lang.Override public org.apache.calcite.avatica.proto.Common.ColumnValue buildPartial() { org.apache.calcite.avatica.proto.Common.ColumnValue result = new org.apache.calcite.avatica.proto.Common.ColumnValue(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0;
public org.apache.calcite.avatica.proto.Common.ColumnValue buildPartial() { org.apache.calcite.avatica.proto.Common.ColumnValue result = new org.apache.calcite.avatica.proto.Common.ColumnValue(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0;
@java.lang.Override public org.apache.calcite.avatica.proto.Common.ColumnValue buildPartial() { org.apache.calcite.avatica.proto.Common.ColumnValue result = new org.apache.calcite.avatica.proto.Common.ColumnValue(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0;
/** * Parses the value for a ColumnValue using the separated array and scalar attributes. * * @param column The protobuf ColumnValue object * @return The parse value for this column */ static Object parseColumn(Common.ColumnValue column) { // Verify that we have one or the other (scalar or array) validateColumnValue(column); if (!column.hasField(SCALAR_VALUE_DESCRIPTOR)) { // The column in this row is an Array (has multiple values) List<Object> array = new ArrayList<>(column.getArrayValueCount()); for (Common.TypedValue arrayValue : column.getArrayValueList()) { // Duplicative because of the ColumnValue/TypedValue difference. if (Common.Rep.ARRAY == arrayValue.getType()) { // Each element in this Array is an Array. array.add(parseArray(arrayValue)); } else { // The array element is a scalar. array.add(deserializeScalarValue(arrayValue)); } } return array; } else { // Scalar return deserializeScalarValue(column.getScalarValue()); } }
@Test public void testNestedArraySerialization() { List<Object> rows = new ArrayList<>(); // [ "pk", [[1,2], [3,4]] ] rows.add(Arrays.asList("pk", Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4)))); Frame frame = new Frame(0, true, rows); // Parse back the list in serialized form Common.Frame protoFrame = frame.toProto(); Common.Row protoRow = protoFrame.getRows(0); Common.ColumnValue protoColumn = protoRow.getValue(1); assertTrue(protoColumn.getHasArrayValue()); int value = 1; for (Common.TypedValue arrayElement : protoColumn.getArrayValueList()) { assertEquals(Common.Rep.ARRAY, arrayElement.getType()); for (Common.TypedValue nestedArrayElement : arrayElement.getArrayValueList()) { assertEquals(Common.Rep.INTEGER, nestedArrayElement.getType()); assertEquals(value++, nestedArrayElement.getNumberValue()); } } Frame newFrame = Frame.fromProto(protoFrame); @SuppressWarnings("unchecked") List<Object> newRow = (List<Object>) newFrame.rows.iterator().next(); @SuppressWarnings("unchecked") List<Object> expectedRow = (List<Object>) rows.get(0); assertEquals(expectedRow.get(0), newRow.get(0)); assertEquals(expectedRow.get(1), newRow.get(1)); } }
@java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; for (int i = 0; i < value_.size(); i++) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, value_.get(i)); } for (int i = 0; i < arrayValue_.size(); i++) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, arrayValue_.get(i)); } if (hasArrayValue_ != false) { size += com.google.protobuf.CodedOutputStream .computeBoolSize(3, hasArrayValue_); } if (scalarValue_ != null) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(4, getScalarValue()); } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; }
@Test public void testNestedArraySerialization() { List<Object> rows = new ArrayList<>(); // [ "pk", [[1,2], [3,4]] ] rows.add(Arrays.asList("pk", Arrays.asList(Arrays.asList(1, 2), Arrays.asList(3, 4)))); Frame frame = new Frame(0, true, rows); // Parse back the list in serialized form Common.Frame protoFrame = frame.toProto(); Common.Row protoRow = protoFrame.getRows(0); Common.ColumnValue protoColumn = protoRow.getValue(1); assertTrue(protoColumn.getHasArrayValue()); int value = 1; for (Common.TypedValue arrayElement : protoColumn.getArrayValueList()) { assertEquals(Common.Rep.ARRAY, arrayElement.getType()); for (Common.TypedValue nestedArrayElement : arrayElement.getArrayValueList()) { assertEquals(Common.Rep.INTEGER, nestedArrayElement.getType()); assertEquals(value++, nestedArrayElement.getNumberValue()); } } Frame newFrame = Frame.fromProto(protoFrame); @SuppressWarnings("unchecked") List<Object> newRow = (List<Object>) newFrame.rows.iterator().next(); @SuppressWarnings("unchecked") List<Object> expectedRow = (List<Object>) rows.get(0); assertEquals(expectedRow.get(0), newRow.get(0)); assertEquals(expectedRow.get(1), newRow.get(1)); } }
@Test public void testDeprecatedValueAttributeForArrays() { // Create a row with schema: [VARCHAR, ARRAY] List<Object> rows = Collections.<Object>singletonList(new Object[] {"string", Arrays.asList(1, 2, 3)}); Meta.Frame frame = Meta.Frame.create(0, true, rows); // Convert it to a protobuf Common.Frame protoFrame = frame.toProto(); assertEquals(1, protoFrame.getRowsCount()); // Get that row we created Common.Row protoRow = protoFrame.getRows(0); // One row has many columns List<Common.ColumnValue> protoColumns = protoRow.getValueList(); // We should have two columns assertEquals(2, protoColumns.size()); // Fetch the ARRAY column Common.ColumnValue protoColumn = protoColumns.get(1); // We should have the 3 ARRAY elements in the array_values attribute as well as the deprecated // values attribute. List<Common.TypedValue> deprecatedValues = protoColumn.getValueList(); assertEquals(3, deprecatedValues.size()); assertTrue("Column 2 should have an array_value", protoColumns.get(1).getHasArrayValue()); List<Common.TypedValue> arrayValues = protoColumns.get(1).getArrayValueList(); assertEquals(arrayValues, deprecatedValues); }
static void parseColumn(Common.Row.Builder rowBuilder, Object column) { final Common.ColumnValue.Builder columnBuilder = Common.ColumnValue.newBuilder(); if (column instanceof List) { columnBuilder.setHasArrayValue(true); List<?> list = (List<?>) column; // Add each element in the list/array to the column's value for (Object listItem : list) { final Common.TypedValue scalarListItem = serializeScalar(listItem); columnBuilder.addArrayValue(scalarListItem); // Add the deprecated 'value' repeated attribute for backwards compat columnBuilder.addValue(scalarListItem); } } else { // The default value, but still explicit. columnBuilder.setHasArrayValue(false); // Only one value for this column, a scalar. final Common.TypedValue scalarVal = serializeScalar(column); columnBuilder.setScalarValue(scalarVal); // Add the deprecated 'value' repeated attribute for backwards compat columnBuilder.addValue(scalarVal); } // Add value to row rowBuilder.addValue(columnBuilder.build()); }
@java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof org.apache.calcite.avatica.proto.Common.ColumnValue)) { return super.equals(obj); } org.apache.calcite.avatica.proto.Common.ColumnValue other = (org.apache.calcite.avatica.proto.Common.ColumnValue) obj; boolean result = true; result = result && getValueList() .equals(other.getValueList()); result = result && getArrayValueList() .equals(other.getArrayValueList()); result = result && (getHasArrayValue() == other.getHasArrayValue()); result = result && (hasScalarValue() == other.hasScalarValue()); if (hasScalarValue()) { result = result && getScalarValue() .equals(other.getScalarValue()); } result = result && unknownFields.equals(other.unknownFields); return result; }
static void parseColumn(Common.Row.Builder rowBuilder, Object column) { final Common.ColumnValue.Builder columnBuilder = Common.ColumnValue.newBuilder(); if (column instanceof List) { columnBuilder.setHasArrayValue(true); List<?> list = (List<?>) column; // Add each element in the list/array to the column's value for (Object listItem : list) { final Common.TypedValue scalarListItem = serializeScalar(listItem); columnBuilder.addArrayValue(scalarListItem); // Add the deprecated 'value' repeated attribute for backwards compat columnBuilder.addValue(scalarListItem); } } else { // The default value, but still explicit. columnBuilder.setHasArrayValue(false); // Only one value for this column, a scalar. final Common.TypedValue scalarVal = serializeScalar(column); columnBuilder.setScalarValue(scalarVal); // Add the deprecated 'value' repeated attribute for backwards compat columnBuilder.addValue(scalarVal); } // Add value to row rowBuilder.addValue(columnBuilder.build()); }