Wail Y. Alkowaileet created ASTERIXDB-3149:
----------------------------------------------
Summary: Columnar datasets with secondary indexes fail on upsert
Key: ASTERIXDB-3149
URL: https://issues.apache.org/jira/browse/ASTERIXDB-3149
Project: Apache AsterixDB
Issue Type: Bug
Components: COMP - Compiler
Affects Versions: 0.9.9
Reporter: Wail Y. Alkowaileet
Assignee: Wail Y. Alkowaileet
Fix For: 0.9.9
Columnar datasets with secondary indexes currently fail on upsert:
{code:java}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]{code}
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.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)