You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by fh...@apache.org on 2018/08/16 20:47:55 UTC

[flink] branch release-1.6 updated: [FLINK-10116] [types] Fix getTotalFields() implementation of some TypeInfos.

This is an automated email from the ASF dual-hosted git repository.

fhueske pushed a commit to branch release-1.6
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.6 by this push:
     new 3f3736f  [FLINK-10116] [types] Fix getTotalFields() implementation of some TypeInfos.
3f3736f is described below

commit 3f3736f0901ec10a998eb573b1da2bd7d743c0b7
Author: Fabian Hueske <fh...@apache.org>
AuthorDate: Fri Aug 10 15:53:42 2018 +0200

    [FLINK-10116] [types] Fix getTotalFields() implementation of some TypeInfos.
    
    This closes #6569.
---
 .../org/apache/flink/api/common/typeinfo/NothingTypeInfo.java  |  2 +-
 .../org/apache/flink/api/common/typeinfo/TypeInformation.java  |  1 +
 .../flink/api/common/typeutils/TypeInformationTestBase.java    | 10 ++++++++++
 .../apache/flink/api/java/typeutils/MissingTypeInfoTest.java   |  5 +++++
 .../apache/flink/api/java/typeutils/TypeInfoFactoryTest.java   |  2 +-
 .../flink/queryablestate/client/VoidNamespaceTypeInfo.java     |  2 +-
 .../org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java  |  2 +-
 .../flink/api/scala/typeutils/ScalaNothingTypeInfo.scala       |  2 +-
 .../org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala    |  2 +-
 9 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java
index 73b916f..307dfa0 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/NothingTypeInfo.java
@@ -53,7 +53,7 @@ public class NothingTypeInfo extends TypeInformation<Nothing> {
 	@Override
 	@PublicEvolving
 	public int getTotalFields() {
-		return 0;
+		return 1;
 	}
 
 	@Override
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
index c5c077f..e04a494 100644
--- a/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
+++ b/flink-core/src/main/java/org/apache/flink/api/common/typeinfo/TypeInformation.java
@@ -111,6 +111,7 @@ public abstract class TypeInformation<T> implements Serializable {
 	 * fields, in the case of composite types. In the example below, the OuterType type has three
 	 * fields in total.
 	 *
+	 * <p>The total number of fields must be at least 1.
 	 *
 	 * @return The number of fields in this type, including its sub-fields (for composite types)
 	 */
diff --git a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java
index bd35070..164fc95 100644
--- a/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java
+++ b/flink-core/src/test/java/org/apache/flink/api/common/typeutils/TypeInformationTestBase.java
@@ -95,6 +95,16 @@ public abstract class TypeInformationTestBase<T extends TypeInformation<?>> exte
 		}
 	}
 
+	@Test
+	public void testGetTotalFields() {
+		final T[] testData = getTestData();
+		for (T typeInfo : testData) {
+			assertTrue(
+				"Number of total fields must be at least 1",
+				typeInfo.getTotalFields() > 0);
+		}
+	}
+
 	private static class UnrelatedTypeInfo extends TypeInformation<Object> {
 
 		@Override
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/MissingTypeInfoTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/MissingTypeInfoTest.java
index cccc14d..93ae552 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/MissingTypeInfoTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/MissingTypeInfoTest.java
@@ -41,4 +41,9 @@ public class MissingTypeInfoTest extends TypeInformationTestBase<MissingTypeInfo
 	public void testSerialization() {
 		// this class is not intended to be serialized
 	}
+
+	@Override
+	public void testGetTotalFields() {
+		// getTotalFields is not meant to be called
+	}
 }
diff --git a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java
index f055879..bae4d6c 100644
--- a/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java
+++ b/flink-core/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoFactoryTest.java
@@ -387,7 +387,7 @@ public class TypeInfoFactoryTest {
 
 		@Override
 		public int getTotalFields() {
-			return 0;
+			return 1;
 		}
 
 		@Override
diff --git a/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java b/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java
index 2efb87b..f5a5c01 100644
--- a/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java
+++ b/flink-queryable-state/flink-queryable-state-client-java/src/main/java/org/apache/flink/queryablestate/client/VoidNamespaceTypeInfo.java
@@ -52,7 +52,7 @@ public class VoidNamespaceTypeInfo extends TypeInformation<VoidNamespace> {
 
 	@Override
 	public int getTotalFields() {
-		return 0;
+		return 1;
 	}
 
 	@Override
diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java b/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java
index 9917410..4bae5e4 100644
--- a/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java
+++ b/flink-runtime/src/main/java/org/apache/flink/runtime/state/VoidNamespaceTypeInfo.java
@@ -55,7 +55,7 @@ public class VoidNamespaceTypeInfo extends TypeInformation<VoidNamespace> {
 	@Override
 	@PublicEvolving
 	public int getTotalFields() {
-		return 0;
+		return 1;
 	}
 
 	@Override
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala
index bc2aabf..bc5a4eb 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/ScalaNothingTypeInfo.scala
@@ -32,7 +32,7 @@ class ScalaNothingTypeInfo extends TypeInformation[Nothing] {
   @PublicEvolving
   override def getArity: Int = 0
   @PublicEvolving
-  override def getTotalFields: Int = 0
+  override def getTotalFields: Int = 1
   @PublicEvolving
   override def getTypeClass: Class[Nothing] = classOf[Nothing]
   @PublicEvolving
diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala
index 5d4a443..1e56794 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/UnitTypeInfo.scala
@@ -31,7 +31,7 @@ class UnitTypeInfo extends TypeInformation[Unit] {
   @PublicEvolving
   override def getArity(): Int = 0
   @PublicEvolving
-  override def getTotalFields(): Int = 0
+  override def getTotalFields(): Int = 1
   @PublicEvolving
   override def getTypeClass(): Class[Unit] = classOf[Unit]
   @PublicEvolving