From bc43085cfc3493ec9728a905ccd08c8eaf34d9e3 Mon Sep 17 00:00:00 2001 From: Moritz Mack Date: Wed, 22 Jun 2022 12:34:40 +0200 Subject: [PATCH 1/2] [#21634] Add comments on FieldValueGetter. --- .../main/java/org/apache/beam/sdk/schemas/FieldValueGetter.java | 1 + .../java/core/src/main/java/org/apache/beam/sdk/values/Row.java | 2 +- .../main/java/org/apache/beam/sdk/values/RowWithGetters.java | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) 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..e33b0173ffdd 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,7 @@ 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 data values. */ 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..901bb470a824 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 @@ -88,6 +88,7 @@ public int getFieldCount() { return getters.size(); } + /** Return the list of raw data values. */ @Override public List getValues() { List rawValues = new ArrayList<>(getters.size()); From ab736e6753242f5c90c1e04ee48b39b977d56884 Mon Sep 17 00:00:00 2001 From: Moritz Mack Date: Mon, 27 Jun 2022 11:08:29 +0200 Subject: [PATCH 2/2] Extend comment, add internal annotation --- .../core/src/main/java/org/apache/beam/sdk/values/Row.java | 3 ++- .../main/java/org/apache/beam/sdk/values/RowWithGetters.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) 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 e33b0173ffdd..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 raw 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 901bb470a824..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,7 +89,8 @@ public int getFieldCount() { return getters.size(); } - /** Return the list of raw data values. */ + /** Return the list of raw unmodified data values to enable 0-copy code. */ + @Internal @Override public List getValues() { List rawValues = new ArrayList<>(getters.size());