diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/FieldValueGetter.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/FieldValueGetter.java index dd2279d65ecc..fb98db8e8343 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/FieldValueGetter.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/FieldValueGetter.java @@ -33,6 +33,7 @@ public interface FieldValueGetter extends Serializable { @Nullable ValueT get(ObjectT object); + /** Returns the raw value of the getter before any further transformations. */ default @Nullable Object getRaw(ObjectT object) { return get(object); } diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/Row.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/Row.java index 2b27c2d71712..51eb98972aa4 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/Row.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/Row.java @@ -106,7 +106,8 @@ public abstract class Row implements Serializable { /** Return the size of data fields. */ public abstract int getFieldCount(); - /** Return the list of data values. */ + /** Return the list of raw unmodified data values to enable 0-copy code. */ + @Internal public abstract List getValues(); /** Return a list of data values. Any LogicalType values are returned as base values. * */ diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/RowWithGetters.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/RowWithGetters.java index 56bd5e9ff9f5..b7be1658a8c4 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/RowWithGetters.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/RowWithGetters.java @@ -24,6 +24,7 @@ import java.util.TreeMap; import org.apache.beam.sdk.annotations.Experimental; import org.apache.beam.sdk.annotations.Experimental.Kind; +import org.apache.beam.sdk.annotations.Internal; import org.apache.beam.sdk.schemas.Factory; import org.apache.beam.sdk.schemas.FieldValueGetter; import org.apache.beam.sdk.schemas.Schema; @@ -88,6 +89,8 @@ public int getFieldCount() { return getters.size(); } + /** Return the list of raw unmodified data values to enable 0-copy code. */ + @Internal @Override public List getValues() { List rawValues = new ArrayList<>(getters.size());