Details
-
Bug
-
Resolution: Fixed
-
Major
-
Morpheus
-
Untriaged
-
0
-
Unknown
-
Analytics Sprint 15, Analytics Sprint 16
Description
Columnar collections with secondary indexes currently fail on upsert:
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at org.apache.asterix.column.tuple.AbstractAsterixColumnTupleReference.getFieldData(AbstractAsterixColumnTupleReference.java:103) ~[asterix-column-8.0.0-1271.jar:8.0.0-1271] at org.apache.asterix.runtime.operators.LSMPrimaryUpsertOperatorNodePushable.appendPrevRecord(LSMPrimaryUpsertOperatorNodePushable.java:375) ~[asterix-runtime-8.0.0-1271.jar:8.0.0-1271] at org.apache.asterix.runtime.operators.LSMPrimaryUpsertOperatorNodePushable$1.process(LSMPrimaryUpsertOperatorNodePushable.java:180) ~[asterix-runtime-8.0.0-1271.jar:8.0.0-1271] |
Two bugs were found:
- lowKey predicate can be greater than a BTree frame (or page zero) highest key. However, the columnar cursor still produces tuples from the same frame (i.e., hasNext() returns true)
- The returned tuple from the search is a merge tuple (in other words, the tuple is not assembled). Hence, the exception above is thrown.
For (2), the returned tuple should only contain the required fields (or columns) to maintain the index. For instance, if there is an index on "salary", the returned tuple should only contain the primary key(s) + a record with salary information.
Attachments
Issue Links
- links to