Repository: incubator-hawq Updated Branches: refs/heads/master b0cc5556c -> a3da49167
HAWQ-1042. PXF throws NPE on quering HBase table. Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/a3da4916 Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/a3da4916 Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/a3da4916 Branch: refs/heads/master Commit: a3da49167b9d1dc3385446c71923ba96877c8ca9 Parents: b0cc555 Author: Oleksandr Diachenko <[email protected]> Authored: Thu Sep 8 11:18:53 2016 -0700 Committer: Oleksandr Diachenko <[email protected]> Committed: Thu Sep 8 11:18:53 2016 -0700 ---------------------------------------------------------------------- .../pxf/api/utilities/ColumnDescriptor.java | 10 ++-- .../pxf/api/utilities/ColumnDescriptorTest.java | 50 ++++++++++++++++++++ 2 files changed, 57 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/a3da4916/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptor.java ---------------------------------------------------------------------- diff --git a/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptor.java b/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptor.java index a2bc8fe..7ae15e4 100644 --- a/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptor.java +++ b/pxf/pxf-api/src/main/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptor.java @@ -65,9 +65,13 @@ public class ColumnDescriptor { this.dbColumnName = copy.dbColumnName; this.dbColumnIndex = copy.dbColumnIndex; this.dbColumnTypeName = copy.dbColumnTypeName; - System.arraycopy(this.dbColumnTypeModifiers, 0, - copy.dbColumnTypeModifiers, 0, - this.dbColumnTypeModifiers.length); + if (copy.dbColumnTypeModifiers != null + && copy.dbColumnTypeModifiers.length > 0) { + this.dbColumnTypeModifiers = new Integer[copy.dbColumnTypeModifiers.length]; + System.arraycopy(copy.dbColumnTypeModifiers, 0, + this.dbColumnTypeModifiers, 0, + copy.dbColumnTypeModifiers.length); + } } public String columnName() { http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/a3da4916/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptorTest.java ---------------------------------------------------------------------- diff --git a/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptorTest.java b/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptorTest.java new file mode 100644 index 0000000..25b907e --- /dev/null +++ b/pxf/pxf-api/src/test/java/org/apache/hawq/pxf/api/utilities/ColumnDescriptorTest.java @@ -0,0 +1,50 @@ +package org.apache.hawq.pxf.api.utilities; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.hawq.pxf.api.utilities.ColumnDescriptor; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import org.junit.Test; + +public class ColumnDescriptorTest { + + + @Test + public void testConstructor() { + + ColumnDescriptor cd = new ColumnDescriptor("c1", 42, 0, "someDataType", new Integer[]{42, 46}); + + ColumnDescriptor clonned = new ColumnDescriptor(cd); + + assertEquals(clonned.columnName(), cd.columnName()); + assertEquals(clonned.columnTypeCode(), cd.columnTypeCode()); + assertEquals(clonned.columnIndex(), cd.columnIndex()); + assertEquals(clonned.columnTypeName(), cd.columnTypeName()); + assertEquals(clonned.columnTypeModifiers(), cd.columnTypeModifiers()); + assertEquals(clonned.isKeyColumn(), cd.isKeyColumn()); + + //Cloned instance should have reference to different array + assertFalse(clonned.columnTypeModifiers() == cd.columnTypeModifiers()); + + cd = new ColumnDescriptor(null, 0, 0, null, null); + } + +}
