diff --git a/java/common/src/main/java/org/apache/tsfile/utils/Constants.java b/java/common/src/main/java/org/apache/tsfile/utils/Constants.java index cbdb26af1..fd89d14a9 100644 --- a/java/common/src/main/java/org/apache/tsfile/utils/Constants.java +++ b/java/common/src/main/java/org/apache/tsfile/utils/Constants.java @@ -102,4 +102,12 @@ private Constants() {} // can't construct JVM_MAJOR_VERSION > 1 || (JVM_MAJOR_VERSION == 1 && JVM_MINOR_VERSION >= 9); public static final boolean JRE_IS_MINIMUM_JAVA11 = JVM_MAJOR_VERSION > 1 || (JVM_MAJOR_VERSION == 1 && JVM_MINOR_VERSION >= 11); + + public static class None { + private None() { + // Singleton + } + } + + public static final None NONE = new None(); } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java b/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java index e6b72e40d..c7c7a54fa 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/utils/ReadWriteIOUtils.java @@ -48,6 +48,7 @@ import static org.apache.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.FLOAT; import static org.apache.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.INTEGER; import static org.apache.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.LONG; +import static org.apache.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.NONE; import static org.apache.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.NULL; import static org.apache.tsfile.utils.ReadWriteIOUtils.ClassSerializeId.STRING; @@ -1168,7 +1169,8 @@ public enum ClassSerializeId { BOOLEAN, STRING, TAG, - NULL + NULL, + NONE, } public static void writeObject(Object value, DataOutputStream outputStream) { @@ -1195,6 +1197,8 @@ public static void writeObject(Object value, DataOutputStream outputStream) { outputStream.write(Boolean.TRUE.equals(value) ? 1 : 0); } else if (value == null) { outputStream.write(NULL.ordinal()); + } else if (value == Constants.NONE) { + outputStream.write(NONE.ordinal()); } else { outputStream.write(STRING.ordinal()); byte[] bytes = value.toString().getBytes(); @@ -1229,6 +1233,8 @@ public static void writeObject(Object value, ByteBuffer byteBuffer) { byteBuffer.put(Boolean.TRUE.equals(value) ? (byte) 1 : (byte) 0); } else if (value == null) { byteBuffer.putInt(NULL.ordinal()); + } else if (value == Constants.NONE) { + byteBuffer.putInt(NONE.ordinal()); } else { byteBuffer.putInt(STRING.ordinal()); byte[] bytes = value.toString().getBytes(); @@ -1257,6 +1263,8 @@ public static Object readObject(ByteBuffer buffer) { return new Binary(bytes); case NULL: return null; + case NONE: + return Constants.NONE; case STRING: default: length = buffer.getInt();