DRILL-981: Display content of map object in the same order of original JSON object.
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/bc0bb4d5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/bc0bb4d5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/bc0bb4d5 Branch: refs/heads/master Commit: bc0bb4d5012a9d51cdcfa0002a7b8b8753f01775 Parents: c789f1c Author: Jinfeng Ni <[email protected]> Authored: Fri Jun 13 09:01:27 2014 -0700 Committer: Jacques Nadeau <[email protected]> Committed: Mon Jun 16 07:58:16 2014 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/drill/exec/util/JsonStringHashMap.java | 4 +++- .../java/org/apache/drill/exec/vector/complex/MapVector.java | 2 +- .../org/apache/drill/exec/vector/complex/RepeatedMapVector.java | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/bc0bb4d5/exec/java-exec/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java b/exec/java-exec/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java index 4b264bf..507cb28 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java @@ -20,15 +20,17 @@ package org.apache.drill.exec.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; + import org.apache.hadoop.io.Text; import java.util.HashMap; +import java.util.LinkedHashMap; /* * Simple class that extends the regular java.util.HashMap but overrides the * toString() method of the HashMap class to produce a JSON string instead */ -public class JsonStringHashMap<K, V> extends HashMap<K, V> { +public class JsonStringHashMap<K, V> extends LinkedHashMap<K, V> { private static ObjectMapper mapper; http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/bc0bb4d5/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java index 8ea2796..ed2ad8a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/MapVector.java @@ -53,7 +53,7 @@ public class MapVector extends AbstractContainerVector { public final static MajorType TYPE = MajorType.newBuilder().setMinorType(MinorType.MAP).setMode(DataMode.REQUIRED).build(); - final HashMap<String, ValueVector> vectors = Maps.newHashMap(); + final HashMap<String, ValueVector> vectors = Maps.newLinkedHashMap(); private final Map<String, VectorWithOrdinal> vectorIds = Maps.newHashMap(); private final IntObjectOpenHashMap<ValueVector> vectorsById = new IntObjectOpenHashMap<>(); private final SingleMapReaderImpl reader = new SingleMapReaderImpl(MapVector.this); http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/bc0bb4d5/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java index f41cfda..f05ab1b 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/RepeatedMapVector.java @@ -55,7 +55,7 @@ public class RepeatedMapVector extends AbstractContainerVector implements Repeat public final static MajorType TYPE = MajorType.newBuilder().setMinorType(MinorType.MAP).setMode(DataMode.REPEATED).build(); private final UInt4Vector offsets; // offsets to start of each record - private final Map<String, ValueVector> vectors = Maps.newHashMap(); + private final Map<String, ValueVector> vectors = Maps.newLinkedHashMap(); private final Map<String, VectorWithOrdinal> vectorIds = Maps.newHashMap(); private final RepeatedMapReaderImpl reader = new RepeatedMapReaderImpl(RepeatedMapVector.this); private final IntObjectOpenHashMap<ValueVector> vectorsById = new IntObjectOpenHashMap<>(); @@ -356,7 +356,7 @@ public class RepeatedMapVector extends AbstractContainerVector implements Repeat List<Object> l = new JsonStringArrayList(); int end = offsets.getAccessor().get(index+1); for(int i = offsets.getAccessor().get(index); i < end; i++){ - Map<String, Object> vv = Maps.newHashMap(); + Map<String, Object> vv = Maps.newLinkedHashMap(); for(Map.Entry<String, ValueVector> e : vectors.entrySet()){ ValueVector v = e.getValue(); String k = e.getKey();
