Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/incubator-phoenix/pull/8#discussion_r9882690
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/expression/ArrayConstructorExpression.java
---
@@ -39,18 +32,30 @@
private PDataType baseType;
private int position = -1;
private Object[] elements;
-
-
+ private TrustedByteArrayOutputStream byteStream = null;
+ private DataOutputStream oStream = null;
+ private int estimatedSize = 0;
+ private byte[] offsetArr;
+
public ArrayConstructorExpression(List<Expression> children, PDataType
baseType) {
super(children);
init(baseType);
+ estimatedSize = PArrayDataType.estimateSize(this.children.size(),
this.baseType);
+ if (!this.baseType.isFixedWidth() ||
baseType.isCoercibleTo(PDataType.VARCHAR)) {
+ offsetArr = new byte[estimatedSize];
--- End diff --
Why is the offsetArr size based on the estimated size? Can't we size it
like this: Bytes.SIZEOF_INT * this.children.size()? The offsets might be
smaller, but they won't be larger.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. To do so, please top-post your response.
If your project does not have this feature enabled and wishes so, or if the
feature is enabled but not working, please contact infrastructure at
[email protected] or file a JIRA ticket with INFRA.
---