[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14963163#comment-14963163 ] ASF GitHub Bot commented on PHOENIX-2304: - Github user navis commented on the pull request: https://github.com/apache/phoenix/pull/121#issuecomment-149186165 Made two version of patches (a69735b and a20e123). > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe > Attachments: PHOENIX-2402.patch > > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | > +--+ > 2 rows selected (0.189 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST2) */ "testCharArray" > FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14963645#comment-14963645 ] James Taylor commented on PHOENIX-2304: --- Thanks for the patch, [~navis]. Looks like we're getting a number of integration test failures with it, though (when running mvn verify). For example: {code} Running org.apache.phoenix.end2end.CastAndCoerceIT Tests run: 49, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 68.184 sec <<< FAILURE! - in org.apache.phoenix.end2end.CastAndCoerceIT testCastOperatorInSelect[CREATE INDEX ATABLE_IDX ON aTable (a_integer DESC) INCLUDE (A_STRING, B_STRING, A_DATE)](org.apache.phoenix.end2end.CastAndCoerceIT) Time elapsed: 5.572 sec <<< FAILURE! java.lang.AssertionError: null at org.junit.Assert.fail(Assert.java:86) at org.junit.Assert.assertTrue(Assert.java:41) at org.junit.Assert.assertTrue(Assert.java:52) at org.apache.phoenix.end2end.CastAndCoerceIT.testCastOperatorInSelect(CastAndCoerceIT.java:67) Running org.apache.phoenix.end2end.ColumnProjectionOptimizationIT Tests run: 42, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 72.497 sec <<< FAILURE! - in org.apache.phoenix.end2end.AggregateQueryIT testGroupByPlusOne[CREATE INDEX ATABLE_IDX ON aTable (a_integer DESC) INCLUDE ( A_STRING, B_STRING, A_DATE)](org.apache.phoenix.end2end.AggregateQueryIT) Time elapsed: 5.513 sec <<< FAILURE! java.lang.AssertionError: null at org.junit.Assert.fail(Assert.java:86) at org.junit.Assert.assertTrue(Assert.java:41) at org.junit.Assert.assertTrue(Assert.java:52) at org.apache.phoenix.end2end.AggregateQueryIT.testGroupByPlusOne(AggregateQueryIT.java:108) testSumOverNullIntegerColumn[CREATE INDEX ATABLE_IDX ON aTable (a_integer DESC) INCLUDE (A_STRING, B_STRING, A_DATE)](org.apache.phoenix.end2end.AggregateQueryIT) Time elapsed: 1.079 sec <<< FAILURE! java.lang.AssertionError: expected:<42> but was:<-972> at org.junit.Assert.fail(Assert.java:88) at org.junit.Assert.failNotEquals(Assert.java:834) at org.junit.Assert.assertEquals(Assert.java:645) at org.junit.Assert.assertEquals(Assert.java:631) at org.apache.phoenix.end2end.AggregateQueryIT.testSumOverNullIntegerColumn(AggregateQueryIT.java:74) {code} > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe > Attachments: PHOENIX-2402.patch > > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14964119#comment-14964119 ] Hudson commented on PHOENIX-2304: - SUCCESS: Integrated in Phoenix-master #933 (See [https://builds.apache.org/job/Phoenix-master/933/]) PHOENIX-2304 NullPointerException when using an index and a char array (jtaylor: rev 28007f804dd3d132d39169f532be050717c3526d) * phoenix-core/src/test/java/org/apache/phoenix/parse/QueryParserTest.java * phoenix-core/src/test/java/org/apache/phoenix/compile/QueryOptimizerTest.java * phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java * phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe >Assignee: Navis > Fix For: 4.6.0 > > Attachments: PHOENIX-2304_v1.patch, PHOENIX-2304_v2.patch, > PHOENIX-2402.patch > > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14964295#comment-14964295 ] ASF GitHub Bot commented on PHOENIX-2304: - Github user navis closed the pull request at: https://github.com/apache/phoenix/pull/121 > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe >Assignee: Navis > Fix For: 4.6.0 > > Attachments: PHOENIX-2304_v1.patch, PHOENIX-2304_v2.patch, > PHOENIX-2402.patch > > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | > +--+ > 2 rows selected (0.189 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST2) */ "testCharArray" > FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14962717#comment-14962717 ] Navis commented on PHOENIX-2304: Wow, didn't expected so many comments. I'm new to phoenix and seemed to need more time to accustomed to (investigate details on types, making test, etc). I'll gladly do that but if it's urgent to be included 4.6.0 release, I'm ok whoever take the job. Thanks. > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe > Attachments: PHOENIX-2402.patch > > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | > +--+ > 2 rows selected (0.189 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST2) */ "testCharArray" > FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14961012#comment-14961012 ] Julian Jaffe commented on PHOENIX-2304: --- BINARY type does require the same fix, but that's all this bug needs. > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | > +--+ > 2 rows selected (0.189 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST2) */ "testCharArray" > FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14961052#comment-14961052 ] James Taylor commented on PHOENIX-2304: --- Thanks, [~jja...@marinsoftware.com]. So just three things are needed: - Change the check to if (this.dataType.isFixedWidth()) be more general so it covers CHAR, BINARY, or any future fixed width type. - Modify the error messages so that they aren't specific to a particular type, but more general about a fixed width types. - Add a couple of simple unit tests. If you can get to this today, then it might make it into our 4.6.0 release. > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | > +--+ > 2 rows selected (0.189 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST2) */ "testCharArray" > FROM TEST.TEST; > +--+ > | testCharArray | >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14960984#comment-14960984 ] ASF GitHub Bot commented on PHOENIX-2304: - Github user JamesRTaylor commented on the pull request: https://github.com/apache/phoenix/pull/121#issuecomment-148763881 Thanks for the pull request, @navis. Would you mind including a unit test as well? > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | > +--+ > 2 rows selected (0.189 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST2) */ "testCharArray" > FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at >
[jira] [Commented] (PHOENIX-2304) NullPointerException when using an index and a char array
[ https://issues.apache.org/jira/browse/PHOENIX-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14960988#comment-14960988 ] ASF GitHub Bot commented on PHOENIX-2304: - Github user JamesRTaylor commented on a diff in the pull request: https://github.com/apache/phoenix/pull/121#discussion_r42262797 --- Diff: phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnDef.java --- @@ -78,7 +79,7 @@ } this.isNull = isNull; - if (this.dataType == PChar.INSTANCE) { + if (this.dataType == PChar.INSTANCE || this.dataType == PCharArray.INSTANCE) { --- End diff -- I'd be curious if BINARY type would require the same fix. A more general check would be: if (this.dataType.isFixedWidth()) { along with generalizing the error messages. > NullPointerException when using an index and a char array > - > > Key: PHOENIX-2304 > URL: https://issues.apache.org/jira/browse/PHOENIX-2304 > Project: Phoenix > Issue Type: Bug >Affects Versions: 4.5.2 >Reporter: Julian Jaffe > > An NPE occurs when Phoenix attempts to retrieve a char array from an index. > Retrieving other columns in the table is unaffected. Example below: > {code:sql} > 0: jdbc:phoenix:xx> CREATE TABLE IF NOT EXISTS TEST.TEST("testInt" > INTEGER, "testCharArray" CHAR(3)[], CONSTRAINT "test_pk" PRIMARY > KEY("testInt")) DEFAULT_COLUMN_FAMILY='T'; > No rows affected (2.223 seconds) > 0: jdbc:phoenix:xx> UPSERT INTO TEST.TEST VALUES (5, ARRAY['aaa', 'bbb']); > 1 row affected (0.165 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.183 seconds) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST_INDEX ON TEST.TEST > ("testInt") INCLUDE ("testCharArray"); > 1 row affected (10.331 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST | > +--+ > 1 row selected (0.173 seconds) > 0: jdbc:phoenix:xx> SELECT "testCharArray" FROM TEST.TEST; > +---+ > | testCharArray | > +---+ > | ['aaa', 'bbb'] | > +---+ > 1 row selected (0.475 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST_INDEX | > +--+ > 1 row selected (0.186 seconds) > 0: jdbc:phoenix:xx> SELECT /*+ INDEX(TEST.TEST TEST_INDEX)*/ > "testCharArray" FROM TEST.TEST; > +--+ > | testCharArray | > +--+ > java.lang.NullPointerException > at > org.apache.phoenix.schema.types.PArrayDataType.createPhoenixArray(PArrayDataType.java:1123) > at > org.apache.phoenix.schema.types.PArrayDataType.toObject(PArrayDataType.java:338) > at > org.apache.phoenix.schema.types.PCharArray.toObject(PCharArray.java:64) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:984) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:75) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getString(PhoenixResultSet.java:603) > at sqlline.Rows$Row.(Rows.java:183) > at sqlline.IncrementalRows.hasNext(IncrementalRows.java:63) > at sqlline.TableOutputFormat.print(TableOutputFormat.java:33) > at sqlline.SqlLine.print(SqlLine.java:1653) > at sqlline.Commands.execute(Commands.java:833) > at sqlline.Commands.sql(Commands.java:732) > at sqlline.SqlLine.dispatch(SqlLine.java:808) > at sqlline.SqlLine.begin(SqlLine.java:681) > at sqlline.SqlLine.start(SqlLine.java:398) > at sqlline.SqlLine.main(SqlLine.java:292) > 0: jdbc:phoenix:xx> CREATE INDEX IF NOT EXISTS TEST2 ON TEST.TEST > ("testInt", "testCharArray"); > 1 row affected (2.098 seconds) > 0: jdbc:phoenix:xx> EXPLAIN SELECT /*+ INDEX(TEST.TEST TEST2) */ > "testCharArray" FROM TEST.TEST; > +--+ > | PLAN | > +--+ > | CLIENT 1-CHUNK PARALLEL 1-WAY FULL SCAN OVER TEST.TEST2 | > | SERVER FILTER BY FIRST KEY ONLY | >