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)

Reply via email to