This is an automated email from the ASF dual-hosted git repository. caogaofei pushed a commit to branch new-table-model-debug in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit b999dc2cc67713f42e1e408ac2aeb01bed0a1a5d Author: Beyyes <[email protected]> AuthorDate: Wed May 22 20:15:35 2024 +0800 perfect serialize method of Cast, GenericDataTYpe, QualifiedName --- .../apache/iotdb/db/relational/sql/tree/Cast.java | 4 +- .../db/relational/sql/tree/GenericDataType.java | 8 +-- .../db/relational/sql/tree/QualifiedName.java | 78 +++++++++++++--------- 3 files changed, 52 insertions(+), 38 deletions(-) diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Cast.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Cast.java index b671f5928f0..8a28001bc01 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Cast.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/Cast.java @@ -145,7 +145,7 @@ public final class Cast extends Expression { @Override public void serialize(DataOutputStream stream) throws IOException { Expression.serialize(this.expression, stream); - // ReadWriteIOUtils.write(this.type, stream); + Expression.serialize(this.type, stream); ReadWriteIOUtils.write(this.safe, stream); ReadWriteIOUtils.write(this.typeOnly, stream); } @@ -153,7 +153,7 @@ public final class Cast extends Expression { public Cast(ByteBuffer byteBuffer) { super(null); this.expression = Expression.deserialize(byteBuffer); - this.type = null; + this.type = (DataType) Expression.deserialize(byteBuffer); this.safe = ReadWriteIOUtils.readBool(byteBuffer); this.typeOnly = ReadWriteIOUtils.readBool(byteBuffer); } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericDataType.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericDataType.java index 5dfbcb8f568..5e4c419b576 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericDataType.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/GenericDataType.java @@ -19,8 +19,6 @@ package org.apache.iotdb.db.relational.sql.tree; -import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; - import com.google.common.collect.ImmutableList; import javax.annotation.Nonnull; @@ -28,6 +26,7 @@ import javax.annotation.Nonnull; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -100,12 +99,13 @@ public final class GenericDataType extends DataType { @Override public void serialize(DataOutputStream stream) throws IOException { Expression.serialize(name, stream); - ReadWriteIOUtils.write(arguments.size(), stream); + // ReadWriteIOUtils.write(arguments.size(), stream); } public GenericDataType(ByteBuffer byteBuffer) { super(null); this.name = (Identifier) Expression.deserialize(byteBuffer); - this.arguments = null; + // arguments are always empty now + this.arguments = Collections.emptyList(); } } diff --git a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/QualifiedName.java b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/QualifiedName.java index c154f82343e..71971e0c4e5 100644 --- a/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/QualifiedName.java +++ b/iotdb-core/relational-parser/src/main/java/org/apache/iotdb/db/relational/sql/tree/QualifiedName.java @@ -68,6 +68,19 @@ public class QualifiedName { return new QualifiedName(ImmutableList.copyOf(originalParts)); } + public QualifiedName( + List<Identifier> originalParts, + List<String> parts, + String name, + @Nullable QualifiedName prefix, + String suffix) { + this.originalParts = ImmutableList.copyOf(originalParts); + this.parts = ImmutableList.copyOf(parts); + this.name = requireNonNull(name, "name is null"); + this.prefix = prefix; + this.suffix = suffix; + } + private QualifiedName(List<Identifier> originalParts) { this.originalParts = originalParts; // Iteration instead of stream for performance reasons @@ -149,45 +162,46 @@ public class QualifiedName { Expression.serialize(identifier, stream); } - // ReadWriteIOUtils.write(parts.size(), stream); - // for (String part : parts) { - // ReadWriteIOUtils.write(part, stream); - // } - // - // ReadWriteIOUtils.write(name, stream); - // - // if (prefix != null) { - // ReadWriteIOUtils.write((byte)1, stream); - // prefix.serialize(stream); - // } else { - // ReadWriteIOUtils.write((byte)0, stream); - // } - // - // ReadWriteIOUtils.write(suffix, stream); + ReadWriteIOUtils.write(parts.size(), stream); + for (String part : parts) { + ReadWriteIOUtils.write(part, stream); + } + + ReadWriteIOUtils.write(name, stream); + + if (prefix != null) { + ReadWriteIOUtils.write((byte) 1, stream); + prefix.serialize(stream); + } else { + ReadWriteIOUtils.write((byte) 0, stream); + } + + ReadWriteIOUtils.write(suffix, stream); } public static QualifiedName deserialize(ByteBuffer byteBuffer) { - int size = ReadWriteIOUtils.read(byteBuffer); + int size = ReadWriteIOUtils.readInt(byteBuffer); List<Identifier> originalParts = new ArrayList<>(size); while (size-- > 0) { originalParts.add((Identifier) Expression.deserialize(byteBuffer)); } - // String name = ReadWriteIOUtils.readString(byteBuffer); - // - // size = ReadWriteIOUtils.read(byteBuffer); - // List<String> parts = new ArrayList<>(size); - // while (size -- > 0) { - // parts.add(ReadWriteIOUtils.readString(byteBuffer)); - // } - // - // byte hasPrefixByte = ReadWriteIOUtils.readByte(byteBuffer); - // if (hasPrefixByte == 1) { - // QualifiedName prefix = QualifiedName.deserialize(byteBuffer); - // } - // - // String suffix = ReadWriteIOUtils.readString(byteBuffer); - - return new QualifiedName(originalParts); + size = ReadWriteIOUtils.readInt(byteBuffer); + List<String> parts = new ArrayList<>(size); + while (size-- > 0) { + parts.add(ReadWriteIOUtils.readString(byteBuffer)); + } + + String name = ReadWriteIOUtils.readString(byteBuffer); + + byte hasPrefixByte = ReadWriteIOUtils.readByte(byteBuffer); + QualifiedName prefix = null; + if (hasPrefixByte == 1) { + prefix = QualifiedName.deserialize(byteBuffer); + } + + String suffix = ReadWriteIOUtils.readString(byteBuffer); + + return new QualifiedName(originalParts, parts, name, prefix, suffix); } }
