This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git
The following commit(s) were added to refs/heads/master by this push:
new e713d72be [core] Fix ArrayIndexOutOfBoundsException when sequenceGroup
repeat defined with no field (#2010)
e713d72be is described below
commit e713d72be2945648336bb03b580793834fcd29a0
Author: pongandnoon <[email protected]>
AuthorDate: Tue Sep 19 10:17:28 2023 +0800
[core] Fix ArrayIndexOutOfBoundsException when sequenceGroup repeat defined
with no field (#2010)
---
.../mergetree/compact/PartialUpdateMergeFunction.java | 12 +++++++++++-
.../compact/PartialUpdateMergeFunctionTest.java | 18 ++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git
a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
index bf21e5d40..1bc9d36f9 100644
---
a/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
+++
b/paimon-core/src/main/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunction.java
@@ -205,7 +205,17 @@ public class PartialUpdateMergeFunction implements
MergeFunction<KeyValue> {
SequenceGenerator sequenceGen =
new SequenceGenerator(sequenceFieldName, rowType);
Arrays.stream(v.split(","))
- .map(fieldNames::indexOf)
+ .map(
+ fieldName -> {
+ int field =
fieldNames.indexOf(fieldName);
+ if (field == -1) {
+ throw new IllegalArgumentException(
+ String.format(
+ "Field %s can not
be found in table schema",
+ fieldName));
+ }
+ return field;
+ })
.forEach(
field -> {
if (fieldSequences.containsKey(field))
{
diff --git
a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunctionTest.java
b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunctionTest.java
index 113aaac10..bfac6f629 100644
---
a/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunctionTest.java
+++
b/paimon-core/src/test/java/org/apache/paimon/mergetree/compact/PartialUpdateMergeFunctionTest.java
@@ -90,6 +90,24 @@ public class PartialUpdateMergeFunctionTest {
validate(func, 1, null, null, 6, null, null, 6);
}
+ @Test
+ public void testSequenceGroupDefinedNoField() {
+ Options options = new Options();
+ options.set("fields.f3.sequence-group", "f1,f2,f7");
+ options.set("fields.f6.sequence-group", "f4,f5");
+ RowType rowType =
+ RowType.of(
+ DataTypes.INT(),
+ DataTypes.INT(),
+ DataTypes.INT(),
+ DataTypes.INT(),
+ DataTypes.INT(),
+ DataTypes.INT(),
+ DataTypes.INT());
+ assertThatThrownBy(() -> PartialUpdateMergeFunction.factory(options,
rowType))
+ .hasMessageContaining("can not be found in table schema");
+ }
+
@Test
public void testSequenceGroupRepeatDefine() {
Options options = new Options();