} else { Node c = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); node.reset(BytesUtil.subarray(node.part, 0, i), true); node.children.add(c); Node c1 = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); Node c2 = new Node(BytesUtil.subarray(value, j, nn), true); node.reset(BytesUtil.subarray(node.part, 0, i), false); if (comp < 0) { node.children.add(c1); } else { Node c = new Node(BytesUtil.subarray(value, j, nn), true); node.children.add(comp <= 0 ? mid : mid + 1, c);
private AppendDictNode addNodeMaybeOverflow(byte[] value, int start, int end) { AppendDictNode head = null; AppendDictNode current = null; for (; start + 255 < end; start += 255) { AppendDictNode c = new AppendDictNode(BytesUtil.subarray(value, start, start + 255), false); if (head == null) { head = c; current = c; } else { current.addChild(c); current = c; } } AppendDictNode last = new AppendDictNode(BytesUtil.subarray(value, start, end), true); last.id = createNextId(); if (head == null) { head = last; } else { current.addChild(last); } return head; }
@Override public void serialize(List<ByteArray> values, ByteBuffer out) { if (values == null) { BytesUtil.writeVInt(0, out); } else { BytesUtil.writeVInt(values.size(), out); for (ByteArray array : values) { if (!out.hasRemaining() || out.remaining() < array.length()) { throw new RuntimeException("BufferOverflow! Please use one higher cardinality column for dimension column when build RAW cube!"); } BytesUtil.writeByteArray(BytesUtil.subarray(array.array(), array.offset(), array.offset() + array.length()), out); } } }
AppendDictNode c = new AppendDictNode(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); c.id = node.id; node.reset(BytesUtil.subarray(node.part, 0, i), true); node.addChild(c); node.id = createNextId(); AppendDictNode c1 = new AppendDictNode(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); c1.id = node.id; AppendDictNode c2 = addNodeMaybeOverflow(value, j, nn); node.reset(BytesUtil.subarray(node.part, 0, i), false); if (comp < 0) { node.addChild(c1);
Node c = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); node.reset(BytesUtil.subarray(node.part, 0, i), true); node.children.add(c); Node c1 = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); Node c2 = new Node(BytesUtil.subarray(value, j, nn), true); node.reset(BytesUtil.subarray(node.part, 0, i), false); if (comp < 0) { node.children.add(c1); Node c = new Node(BytesUtil.subarray(value, j, nn), true); node.children.add(comp <= 0 ? mid : mid + 1, c);
} else { Node c = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); node.reset(BytesUtil.subarray(node.part, 0, i), true); node.children.add(c); Node c1 = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); Node c2 = new Node(BytesUtil.subarray(value, j, nn), true); node.reset(BytesUtil.subarray(node.part, 0, i), false); if (comp < 0) { node.children.add(c1); } else { Node c = new Node(BytesUtil.subarray(value, j, nn), true); node.children.add(comp <= 0 ? mid : mid + 1, c);
Node c = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); node.reset(BytesUtil.subarray(node.part, 0, i), true); node.children.add(c); Node c1 = new Node(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); Node c2 = new Node(BytesUtil.subarray(value, j, nn), true); node.reset(BytesUtil.subarray(node.part, 0, i), false); if (comp < 0) { node.children.add(c1); Node c = new Node(BytesUtil.subarray(value, j, nn), true); node.children.add(comp <= 0 ? mid : mid + 1, c);
private AppendDictNode addNodeMaybeOverflow(byte[] value, int start, int end) { AppendDictNode head = null; AppendDictNode current = null; for (; start + 255 < end; start += 255) { AppendDictNode c = new AppendDictNode(BytesUtil.subarray(value, start, start + 255), false); if (head == null) { head = c; current = c; } else { current.addChild(c); current = c; } } AppendDictNode last = new AppendDictNode(BytesUtil.subarray(value, start, end), true); last.id = createNextId(); if (head == null) { head = last; } else { current.addChild(last); } return head; }
@Override public void serialize(List<ByteArray> values, ByteBuffer out) { if (values == null) { BytesUtil.writeVInt(0, out); } else { BytesUtil.writeVInt(values.size(), out); for (ByteArray array : values) { if (!out.hasRemaining() || out.remaining() < array.length()) { throw new RuntimeException("BufferOverflow! Please use one higher cardinality column for dimension column when build RAW cube!"); } BytesUtil.writeByteArray(BytesUtil.subarray(array.array(), array.offset(), array.offset() + array.length()), out); } } }
AppendDictNode c = new AppendDictNode(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); c.id = node.id; node.reset(BytesUtil.subarray(node.part, 0, i), true); node.addChild(c); node.id = createNextId(); AppendDictNode c1 = new AppendDictNode(BytesUtil.subarray(node.part, i, n), node.isEndOfValue, node.children); c1.id = node.id; AppendDictNode c2 = addNodeMaybeOverflow(value, j, nn); node.reset(BytesUtil.subarray(node.part, 0, i), false); if (comp < 0) { node.addChild(c1);