You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by im...@apache.org on 2023/03/24 16:37:30 UTC

[asterixdb] 03/03: Multiple fixes for columnar datasets

This is an automated email from the ASF dual-hosted git repository.

imaxon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit ea67b5143d56b792d6a2ab7c0bd9ca460d1d323c
Author: Wail Alkowaileet <wa...@gmail.com>
AuthorDate: Thu Mar 23 14:03:56 2023 -0700

    Multiple fixes for columnar datasets
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    This patch fixes multiple issues for columnar datasets, namely:
      - ASTERIXDB-3149: upsert failure due to projecting
        unassembled records.
      - ASTERIXDB-3150: rebalance failure also due to projecting
        unassembled records.
      - ASTERIXDB-3151: ColumnManagerFactory fails to instatiate
        when composite PKs are declared.
    
    Change-Id: I48195086802efe931b1ebb79f59a072807118cbc
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17441
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Wail Alkowaileet <wa...@gmail.com>
    Reviewed-by: Murtadha Hubail <mh...@apache.org>
---
 .../org/apache/asterix/utils/RebalanceUtil.java    |  38 +-
 .../asterix/app/bootstrap/TestNodeController.java  |  11 +-
 .../column/rebalance/rebalance.01.ddl.sqlpp        |  68 +++
 .../rebalance.02.update.sqlpp}                     |  10 +-
 .../rebalance.03.query.sqlpp}                      |  24 +-
 .../rebalance.04.post.http}                        |   4 +-
 .../rebalance.05.get.http}                         |   4 +-
 .../rebalance.06.get.http}                         |   4 +-
 .../rebalance.07.query.sqlpp}                      |  24 +-
 .../rebalance.08.query.sqlpp}                      |   9 +-
 .../rebalance.09.query.sqlpp}                      |   9 +-
 .../rebalance.10.post.http}                        |   5 +-
 .../rebalance.11.get.http}                         |   4 +-
 .../rebalance.12.get.http}                         |   4 +-
 .../rebalance.13.query.sqlpp}                      |  24 +-
 .../rebalance.14.query.sqlpp}                      |   9 +-
 .../rebalance.15.query.sqlpp}                      |   9 +-
 .../rebalance.16.query.sqlpp}                      |   9 +-
 .../use-case-1/use-case-1.01.ddl.sqlpp}            |  26 +-
 .../use-case-1/use-case-1.02.update.sqlpp          | 272 +++++++++++
 .../use-case-1/use-case-1.03.query.sqlpp}          |  10 +-
 .../array-index/use-case-1/use-case-1.04.get.http} |   2 +-
 .../use-case-1/use-case-1.05.query.sqlpp}          |  10 +-
 .../use-case-1/use-case-1.06.update.sqlpp}         |   5 +-
 .../use-case-1/use-case-1.07.query.sqlpp}          |  10 +-
 .../array-index/use-case-1/use-case-1.08.get.http} |   2 +-
 .../use-case-1/use-case-1.09.query.sqlpp}          |  10 +-
 .../use-case-1/use-case-1.10.update.sqlpp          | 276 ++++++++++++
 .../use-case-1/use-case-1.11.query.sqlpp}          |  10 +-
 .../array-index/use-case-1/use-case-1.12.get.http} |   2 +-
 .../use-case-1/use-case-1.13.query.sqlpp}          |  10 +-
 .../use-case-2/use-case-2.01.ddl.sqlpp}            |  27 +-
 .../use-case-2/use-case-2.02.update.sqlpp          | 497 +++++++++++++++++++++
 .../use-case-2/use-case-2.03.query.sqlpp}          |  10 +-
 .../array-index/use-case-2/use-case-2.04.get.http} |   2 +-
 .../use-case-2/use-case-2.05.query.sqlpp}          |  10 +-
 .../use-case-2/use-case-2.06.update.sqlpp}         |   5 +-
 .../use-case-2/use-case-2.07.query.sqlpp}          |  10 +-
 .../array-index/use-case-2/use-case-2.08.get.http} |   2 +-
 .../use-case-2/use-case-2.09.query.sqlpp}          |  10 +-
 .../use-case-2/use-case-2.10.update.sqlpp          | 497 +++++++++++++++++++++
 .../use-case-2/use-case-2.11.query.sqlpp}          |  10 +-
 .../array-index/use-case-2/use-case-2.12.get.http} |   2 +-
 .../use-case-2/use-case-2.13.query.sqlpp}          |  10 +-
 .../use-case-3/use-case-3.01.ddl.sqlpp}            |  27 +-
 .../use-case-3/use-case-3.02.update.sqlpp          | 276 ++++++++++++
 .../use-case-3/use-case-3.03.query.sqlpp}          |  10 +-
 .../array-index/use-case-3/use-case-3.04.get.http} |   2 +-
 .../use-case-3/use-case-3.05.query.sqlpp}          |  10 +-
 .../use-case-3/use-case-3.06.update.sqlpp}         |   5 +-
 .../use-case-3/use-case-3.07.query.sqlpp}          |  10 +-
 .../array-index/use-case-3/use-case-3.08.get.http} |   2 +-
 .../use-case-3/use-case-3.09.query.sqlpp}          |  10 +-
 .../use-case-3/use-case-3.10.update.sqlpp          | 276 ++++++++++++
 .../use-case-3/use-case-3.11.query.sqlpp}          |  10 +-
 .../array-index/use-case-3/use-case-3.12.get.http} |   2 +-
 .../use-case-3/use-case-3.13.query.sqlpp}          |  10 +-
 .../use-case-4/use-case-4.01.ddl.sqlpp}            |  27 +-
 .../use-case-4/use-case-4.02.update.sqlpp          | 425 ++++++++++++++++++
 .../use-case-4/use-case-4.03.query.sqlpp}          |  10 +-
 .../array-index/use-case-4/use-case-4.04.get.http} |   2 +-
 .../use-case-4/use-case-4.05.query.sqlpp}          |  10 +-
 .../use-case-4/use-case-4.06.update.sqlpp}         |   5 +-
 .../use-case-4/use-case-4.07.query.sqlpp}          |  10 +-
 .../array-index/use-case-4/use-case-4.08.get.http} |   2 +-
 .../use-case-4/use-case-4.09.query.sqlpp}          |  10 +-
 .../use-case-4/use-case-4.10.update.sqlpp          | 425 ++++++++++++++++++
 .../use-case-4/use-case-4.11.query.sqlpp}          |  10 +-
 .../array-index/use-case-4/use-case-4.12.get.http} |   2 +-
 .../use-case-4/use-case-4.13.query.sqlpp}          |  10 +-
 .../with-additional-atomic-index.01.ddl.sqlpp      |  40 ++
 .../with-additional-atomic-index.02.update.sqlpp   | 302 +++++++++++++
 .../with-additional-atomic-index.03.query.sqlpp}   |  10 +-
 .../with-additional-atomic-index.04.get.http}      |   2 +-
 .../with-additional-atomic-index.05.query.sqlpp}   |  10 +-
 .../with-additional-atomic-index.06.update.sqlpp}  |   5 +-
 .../with-additional-atomic-index.07.query.sqlpp}   |  10 +-
 .../with-additional-atomic-index.08.get.http}      |   2 +-
 .../with-additional-atomic-index.09.query.sqlpp}   |  10 +-
 .../with-additional-atomic-index.10.update.sqlpp   | 306 +++++++++++++
 .../with-additional-atomic-index.11.query.sqlpp}   |  10 +-
 .../with-additional-atomic-index.12.get.http}      |   2 +-
 .../with-additional-atomic-index.13.query.sqlpp}   |  10 +-
 .../with-composite-sk.01.ddl.sqlpp}                |  28 +-
 .../with-composite-sk.02.update.sqlpp              | 306 +++++++++++++
 .../with-composite-sk.03.query.sqlpp}              |  12 +-
 .../with-composite-sk.04.get.http}                 |   2 +-
 .../with-composite-sk.05.query.sqlpp}              |  12 +-
 .../with-composite-sk.06.update.sqlpp}             |   5 +-
 .../with-composite-sk.07.query.sqlpp}              |  12 +-
 .../with-composite-sk.08.get.http}                 |   2 +-
 .../with-composite-sk.09.query.sqlpp}              |  12 +-
 .../with-composite-sk.10.update.sqlpp              | 306 +++++++++++++
 .../with-composite-sk.11.query.sqlpp}              |  12 +-
 .../with-composite-sk.12.get.http}                 |   2 +-
 .../with-composite-sk.13.query.sqlpp}              |  12 +-
 .../after-bulkload/after-bulkload.001.ddl.sqlpp}   |  16 +-
 .../after-bulkload.002.update.sqlpp}               |   9 +-
 .../after-bulkload/after-bulkload.003.query.sqlpp} |  11 +-
 .../after-bulkload/after-bulkload.004.query.sqlpp} |  10 +-
 .../after-bulkload/after-bulkload.005.ddl.sqlpp}   |   8 +-
 .../after-bulkload/after-bulkload.006.query.sqlpp} |  11 +-
 .../after-bulkload/after-bulkload.007.query.sqlpp} |  10 +-
 .../after-insert/after-insert.001.ddl.sqlpp}       |  15 +-
 .../after-insert/after-insert.002.update.sqlpp     | 272 +++++++++++
 .../after-insert/after-insert.003.query.sqlpp}     |  11 +-
 .../after-insert/after-insert.004.query.sqlpp}     |  10 +-
 .../after-insert/after-insert.005.ddl.sqlpp}       |   8 +-
 .../after-insert/after-insert.006.query.sqlpp}     |  11 +-
 .../after-insert/after-insert.007.query.sqlpp}     |  10 +-
 .../after-insert-with-meta.001.ddl.sqlpp           |  69 +++
 .../after-upsert-with-meta.002.update.sqlpp}       |   7 +-
 .../after-upsert-with-meta.003.get.http}           |   5 +-
 .../after-upsert-with-meta.004.ddl.sqlpp}          |   3 +-
 .../after-upsert-with-meta.005.query.sqlpp}        |   8 +-
 .../after-upsert-with-meta.006.query.sqlpp}        |   8 +-
 .../after-upsert-with-meta.007.update.sqlpp}       |   7 +-
 .../after-upsert-with-meta.008.get.http}           |   5 +-
 .../after-upsert-with-meta.009.query.sqlpp}        |   8 +-
 .../after-upsert-with-meta.010.query.sqlpp}        |   8 +-
 .../after-upsert-with-meta.011.update.sqlpp}       |   2 +-
 .../after-upsert-with-meta.012.get.http}           |   5 +-
 .../after-upsert-with-meta.013.query.sqlpp}        |   8 +-
 .../after-upsert-with-meta.014.query.sqlpp}        |   8 +-
 .../index-with-meta/index-with-meta.001.ddl.sqlpp  |  72 +++
 .../index-with-meta.002.update.sqlpp}              |   7 +-
 .../index-with-meta.003.query.sqlpp}               |   8 +-
 .../index-with-meta.004.query.sqlpp}               |   5 +-
 .../index-with-meta.005.query.sqlpp}               |   5 +-
 .../index-with-meta.006.query.sqlpp}               |   5 +-
 .../index-with-meta.007.query.sqlpp}               |   5 +-
 .../index-with-meta.008.query.sqlpp}               |   8 +-
 .../index-with-meta.009.query.sqlpp}               |   9 +-
 .../index-with-meta.010.query.sqlpp}               |   9 +-
 .../index-with-meta/index-with-meta.011.get.http}  |   5 +-
 .../index-with-meta.012.query.sqlpp}               |   8 +-
 .../index-with-meta.013.query.sqlpp}               |   5 +-
 .../index-with-meta.014.query.sqlpp}               |   5 +-
 .../index-with-meta.015.query.sqlpp}               |   5 +-
 .../index-with-meta.016.query.sqlpp}               |   5 +-
 .../index-with-meta.017.query.sqlpp}               |   8 +-
 .../index-with-meta.018.query.sqlpp}               |   9 +-
 .../index-with-meta.019.query.sqlpp}               |   9 +-
 .../index-with-meta.020.update.sqlpp}              |   7 +-
 .../index-with-meta.021.query.sqlpp}               |   5 +-
 .../index-with-meta.022.query.sqlpp}               |   8 +-
 .../index-with-meta/index-with-meta.023.get.http}  |   5 +-
 .../index-with-meta.024.query.sqlpp}               |   5 +-
 .../index-with-meta.025.query.sqlpp}               |   8 +-
 .../001.001.ddl.sqlpp}                             |   0
 .../001.002.update.sqlpp}                          |   0
 .../001.003.query.sqlpp}                           |   0
 .../{upsert.004.get.http => 001/001.004.get.http}  |   0
 .../001.005.query.sqlpp}                           |   0
 .../001.006.update.sqlpp}                          |   0
 .../001.007.query.sqlpp}                           |   0
 .../{upsert.008.get.http => 001/001.008.get.http}  |   0
 .../001.009.query.sqlpp}                           |   0
 .../001.010.update.sqlpp}                          |   0
 .../001.011.query.sqlpp}                           |   0
 .../{upsert.012.get.http => 001/001.012.get.http}  |   0
 .../001.013.query.sqlpp}                           |   0
 .../001.014.update.sqlpp}                          |   0
 .../{upsert.015.get.http => 001/001.015.get.http}  |   0
 .../001.016.query.sqlpp}                           |   0
 .../002.001.ddl.sqlpp}                             |   0
 .../002.002.update.sqlpp}                          |   8 +-
 .../002.003.query.sqlpp}                           |   0
 .../{upsert.004.get.http => 002/002.004.get.http}  |   0
 .../002.005.query.sqlpp}                           |   0
 .../002.006.update.sqlpp}                          |   4 +-
 .../002.007.query.sqlpp}                           |   2 +-
 .../{upsert.004.get.http => 002/002.008.get.http}  |   0
 .../002.009.query.sqlpp}                           |   2 +-
 .../002.010.update.sqlpp}                          |   0
 .../002.011.query.sqlpp}                           |   0
 .../results/column/rebalance/rebalance.03.adm      |   5 +
 .../results/column/rebalance/rebalance.04.adm      |   1 +
 .../results/column/rebalance/rebalance.05.adm      |   1 +
 .../results/column/rebalance/rebalance.06.adm      |   1 +
 .../results/column/rebalance/rebalance.07.adm      |   5 +
 .../results/column/rebalance/rebalance.08.adm      |   1 +
 .../results/column/rebalance/rebalance.09.adm      |   1 +
 .../results/column/rebalance/rebalance.10.adm      |   1 +
 .../results/column/rebalance/rebalance.11.adm      |   1 +
 .../results/column/rebalance/rebalance.12.adm      |   1 +
 .../results/column/rebalance/rebalance.13.adm      |   5 +
 .../results/column/rebalance/rebalance.14.adm      |   1 +
 .../results/column/rebalance/rebalance.15.adm      |   1 +
 .../results/column/rebalance/rebalance.16.adm      |   1 +
 .../array-index/use-case-1/use-case-1.03.adm       |   1 +
 .../array-index/use-case-1/use-case-1.04.adm       |   1 +
 .../array-index/use-case-1/use-case-1.05.adm       |   1 +
 .../array-index/use-case-1/use-case-1.07.adm       |   1 +
 .../array-index/use-case-1/use-case-1.08.adm       |   1 +
 .../array-index/use-case-1/use-case-1.09.adm       |   1 +
 .../array-index/use-case-1/use-case-1.11.adm       |   1 +
 .../array-index/use-case-1/use-case-1.12.adm       |   1 +
 .../array-index/use-case-1/use-case-1.13.adm       |   1 +
 .../array-index/use-case-2/use-case-2.03.adm       |   1 +
 .../array-index/use-case-2/use-case-2.04.adm       |   1 +
 .../array-index/use-case-2/use-case-2.05.adm       |   1 +
 .../array-index/use-case-2/use-case-2.07.adm       |   1 +
 .../array-index/use-case-2/use-case-2.08.adm       |   1 +
 .../array-index/use-case-2/use-case-2.09.adm       |   1 +
 .../array-index/use-case-2/use-case-2.11.adm       |   1 +
 .../array-index/use-case-2/use-case-2.12.adm       |   1 +
 .../array-index/use-case-2/use-case-2.13.adm       |   1 +
 .../array-index/use-case-3/use-case-3.03.adm       |   1 +
 .../array-index/use-case-3/use-case-3.04.adm       |   1 +
 .../array-index/use-case-3/use-case-3.05.adm       |   1 +
 .../array-index/use-case-3/use-case-3.07.adm       |   1 +
 .../array-index/use-case-3/use-case-3.08.adm       |   1 +
 .../array-index/use-case-3/use-case-3.09.adm       |   1 +
 .../array-index/use-case-3/use-case-3.11.adm       |   1 +
 .../array-index/use-case-3/use-case-3.12.adm       |   1 +
 .../array-index/use-case-3/use-case-3.13.adm       |   1 +
 .../array-index/use-case-4/use-case-4.03.adm       |   1 +
 .../array-index/use-case-4/use-case-4.04.adm       |   1 +
 .../array-index/use-case-4/use-case-4.05.adm       |   1 +
 .../array-index/use-case-4/use-case-4.07.adm       |   1 +
 .../array-index/use-case-4/use-case-4.08.adm       |   1 +
 .../array-index/use-case-4/use-case-4.09.adm       |   1 +
 .../array-index/use-case-4/use-case-4.11.adm       |   1 +
 .../array-index/use-case-4/use-case-4.12.adm       |   1 +
 .../array-index/use-case-4/use-case-4.13.adm       |   1 +
 .../with-additional-atomic-index.03.adm            |   1 +
 .../with-additional-atomic-index.04.adm            |   1 +
 .../with-additional-atomic-index.05.adm            |   1 +
 .../with-additional-atomic-index.07.adm            |   1 +
 .../with-additional-atomic-index.08.adm            |   1 +
 .../with-additional-atomic-index.09.adm            |   1 +
 .../with-additional-atomic-index.11.adm            |   1 +
 .../with-additional-atomic-index.12.adm            |   1 +
 .../with-additional-atomic-index.13.adm            |   1 +
 .../with-composite-sk/with-composite-sk.03.adm     |   1 +
 .../with-composite-sk/with-composite-sk.04.adm     |   1 +
 .../with-composite-sk/with-composite-sk.05.adm     |   1 +
 .../with-composite-sk/with-composite-sk.07.adm     |   1 +
 .../with-composite-sk/with-composite-sk.08.adm     |   1 +
 .../with-composite-sk/with-composite-sk.09.adm     |   1 +
 .../with-composite-sk/with-composite-sk.11.adm     |   1 +
 .../with-composite-sk/with-composite-sk.12.adm     |   1 +
 .../with-composite-sk/with-composite-sk.13.adm     |   1 +
 .../after-bulkload/after-bulkload.003.adm          |   1 +
 .../after-bulkload/after-bulkload.004.adm          |   1 +
 .../after-bulkload/after-bulkload.006.adm          |   1 +
 .../after-bulkload/after-bulkload.007.adm          |   1 +
 .../create-index/after-insert/after-insert.003.adm |   1 +
 .../create-index/after-insert/after-insert.004.adm |   1 +
 .../create-index/after-insert/after-insert.006.adm |   1 +
 .../create-index/after-insert/after-insert.007.adm |   1 +
 .../after-upsert-with-meta.003.adm                 |   1 +
 .../after-upsert-with-meta.005.adm                 |   4 +
 .../after-upsert-with-meta.006.adm                 |   1 +
 .../after-upsert-with-meta.008.adm                 |   1 +
 .../after-upsert-with-meta.009.adm                 |   5 +
 .../after-upsert-with-meta.010.adm                 |   2 +
 .../after-upsert-with-meta.012.adm                 |   1 +
 .../after-upsert-with-meta.013.adm                 |   5 +
 .../after-upsert-with-meta.014.adm                 |   2 +
 .../index-with-meta/index-with-meta.003.adm        |   4 +
 .../index-with-meta/index-with-meta.004.adm        |   6 +
 .../index-with-meta/index-with-meta.005.adm        |   7 +
 .../index-with-meta/index-with-meta.006.adm        |   2 +
 .../index-with-meta/index-with-meta.007.adm        |   3 +
 .../index-with-meta/index-with-meta.008.adm        |   2 +
 .../index-with-meta/index-with-meta.009.adm        |   1 +
 .../index-with-meta/index-with-meta.010.adm        |   1 +
 .../index-with-meta/index-with-meta.011.adm        |   1 +
 .../index-with-meta/index-with-meta.012.adm        |   4 +
 .../index-with-meta/index-with-meta.013.adm        |   6 +
 .../index-with-meta/index-with-meta.014.adm        |   7 +
 .../index-with-meta/index-with-meta.015.adm        |   2 +
 .../index-with-meta/index-with-meta.016.adm        |   3 +
 .../index-with-meta/index-with-meta.017.adm        |   2 +
 .../index-with-meta/index-with-meta.018.adm        |   1 +
 .../index-with-meta/index-with-meta.019.adm        |   1 +
 .../index-with-meta/index-with-meta.021.adm        |   2 +
 .../index-with-meta/index-with-meta.022.adm        |   2 +
 .../index-with-meta/index-with-meta.023.adm        |   1 +
 .../index-with-meta/index-with-meta.024.adm        |   2 +
 .../index-with-meta/index-with-meta.025.adm        |   2 +
 .../results/column/upsert/{ => 001}/upsert.003.adm |   0
 .../results/column/upsert/{ => 001}/upsert.004.adm |   0
 .../results/column/upsert/{ => 001}/upsert.005.adm |   0
 .../results/column/upsert/{ => 001}/upsert.007.adm |   0
 .../results/column/upsert/{ => 001}/upsert.008.adm |   0
 .../results/column/upsert/{ => 001}/upsert.009.adm |   0
 .../results/column/upsert/{ => 001}/upsert.011.adm |   0
 .../results/column/upsert/{ => 001}/upsert.012.adm |   0
 .../results/column/upsert/{ => 001}/upsert.013.adm |   0
 .../results/column/upsert/{ => 001}/upsert.015.adm |   0
 .../results/column/upsert/{ => 001}/upsert.016.adm |   0
 .../results/column/upsert/002/upsert.003.adm       |   5 +
 .../results/column/upsert/{ => 002}/upsert.004.adm |   0
 .../results/column/upsert/002/upsert.005.adm       |   5 +
 .../results/column/upsert/002/upsert.007.adm       |   5 +
 .../results/column/upsert/{ => 002}/upsert.008.adm |   0
 .../results/column/upsert/002/upsert.009.adm       |   5 +
 .../results/column/upsert/002/upsert.011.adm       |   5 +
 .../test/resources/runtimets/testsuite_sqlpp.xml   |  64 ++-
 .../asterix/column/ColumnManagerFactory.java       |  18 +-
 .../create/PrimaryScanColumnTupleProjector.java    |  54 +++
 .../PrimaryScanColumnTupleProjectorFactory.java    |  50 +++
 .../PrimaryScanColumnTupleWithMetaProjector.java   |  55 +++
 .../upsert/UpsertPreviousColumnTupleProjector.java |  57 +++
 .../UpsertPreviousColumnTupleProjectorFactory.java |  50 +++
 ...UpsertPreviousColumnTupleWithMetaProjector.java |  59 +++
 .../operation/query/QueryColumnMetadata.java       |   3 +-
 .../operation/query/QueryColumnTupleProjector.java |   4 +-
 .../query/QueryColumnWithMetaTupleProjector.java   |   4 +-
 .../util/ColumnSecondaryIndexSchemaUtil.java       | 118 +++++
 .../RepeatedPrimitiveColumnValuesReader.java       |  12 +
 .../apache/asterix/metadata/entities/Index.java    |  20 +-
 .../apache/asterix/metadata/utils/DatasetUtil.java | 124 +++--
 .../apache/asterix/metadata/utils/IndexUtil.java   |  25 ++
 .../SecondaryArrayIndexBTreeOperationsHelper.java  |   8 +-
 .../utils/SecondaryBTreeOperationsHelper.java      |  38 +-
 .../utils/SecondaryIndexOperationsHelper.java      |  16 +-
 .../typecomputer/impl/RecordMergeTypeComputer.java |  27 +-
 .../LSMPrimaryUpsertOperatorDescriptor.java        |  11 +-
 .../LSMPrimaryUpsertOperatorNodePushable.java      |  17 +-
 .../am/common/impls/NoOpTupleProjector.java        |  27 +-
 .../am/common/impls/NoOpTupleProjectorFactory.java |  26 +-
 .../impls/btree/ColumnBTreeRangeSearchCursor.java  |  23 +-
 326 files changed, 6301 insertions(+), 661 deletions(-)

diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
index ba6c602fa6..da72d2cf0a 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
@@ -47,8 +47,10 @@ import org.apache.asterix.metadata.entities.Dataset;
 import org.apache.asterix.metadata.entities.Index;
 import org.apache.asterix.metadata.utils.DatasetUtil;
 import org.apache.asterix.metadata.utils.IndexUtil;
+import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.rebalance.IDatasetRebalanceCallback;
 import org.apache.asterix.runtime.job.listener.JobEventListenerFactory;
+import org.apache.asterix.runtime.projection.DataProjectionFiltrationInfo;
 import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
 import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraintHelper;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -63,6 +65,7 @@ import org.apache.hyracks.api.job.JobSpecification;
 import org.apache.hyracks.dataflow.common.data.partition.FieldHashPartitionComputerFactory;
 import org.apache.hyracks.dataflow.std.connectors.MToNPartitioningConnectorDescriptor;
 import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
+import org.apache.hyracks.storage.common.projection.ITupleProjectorFactory;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -80,16 +83,11 @@ public class RebalanceUtil {
     /**
      * Rebalances an existing dataset to a list of target nodes.
      *
-     * @param dataverseName,
-     *            the dataverse name.
-     * @param datasetName,
-     *            the dataset name.
-     * @param targetNcNames,
-     *            the list of target nodes.
-     * @param metadataProvider,
-     *            the metadata provider.
-     * @param hcc,
-     *            the reusable hyracks connection.
+     * @param dataverseName,    the dataverse name.
+     * @param datasetName,      the dataset name.
+     * @param targetNcNames,    the list of target nodes.
+     * @param metadataProvider, the metadata provider.
+     * @param hcc,              the reusable hyracks connection.
      * @throws Exception
      */
     public static void rebalance(DataverseName dataverseName, String datasetName, Set<String> targetNcNames,
@@ -301,8 +299,12 @@ public class RebalanceUtil {
         // The pipeline starter.
         IOperatorDescriptor starter = DatasetUtil.createDummyKeyProviderOp(spec, source, metadataProvider);
 
+        // Tuple projector
+        // TODO is there a way to avoid assembling the records for columnar datasets?
+        ITupleProjectorFactory projectorFactory = createTupleProjectorFactory(source, metadataProvider);
         // Creates primary index scan op.
-        IOperatorDescriptor primaryScanOp = DatasetUtil.createPrimaryIndexScanOp(spec, metadataProvider, source);
+        IOperatorDescriptor primaryScanOp =
+                DatasetUtil.createPrimaryIndexScanOp(spec, metadataProvider, source, projectorFactory);
 
         // Creates secondary BTree upsert op.
         IOperatorDescriptor upsertOp = createPrimaryIndexUpsertOp(spec, metadataProvider, source, target);
@@ -327,6 +329,20 @@ public class RebalanceUtil {
         JobUtils.runJob(hcc, spec, true);
     }
 
+    private static ITupleProjectorFactory createTupleProjectorFactory(Dataset source, MetadataProvider metadataProvider)
+            throws AlgebricksException {
+        ARecordType itemType =
+                (ARecordType) metadataProvider.findType(source.getItemTypeDataverseName(), source.getItemTypeName());
+        ARecordType metaType = DatasetUtil.getMetaType(metadataProvider, source);
+        int numberOfPrimaryKeys = source.getPrimaryKeys().size();
+
+        // This could be expensive if record structure is "complex"
+        ARecordType requestedType = DataProjectionFiltrationInfo.ALL_FIELDS_TYPE;
+
+        return IndexUtil.createPrimaryIndexScanTupleProjectorFactory(source.getDatasetFormatInfo(), requestedType,
+                itemType, metaType, numberOfPrimaryKeys);
+    }
+
     // Creates the primary index upsert operator for populating the target dataset.
     private static IOperatorDescriptor createPrimaryIndexUpsertOp(JobSpecification spec,
             MetadataProvider metadataProvider, Dataset source, Dataset target) throws AlgebricksException {
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java
index 34696b1592..f6caf5d46e 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/bootstrap/TestNodeController.java
@@ -104,6 +104,7 @@ import org.apache.hyracks.storage.am.common.build.IndexBuilderFactory;
 import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
 import org.apache.hyracks.storage.am.common.dataflow.IndexDataflowHelperFactory;
 import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory;
+import org.apache.hyracks.storage.am.common.impls.NoOpTupleProjectorFactory;
 import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation;
 import org.apache.hyracks.storage.am.lsm.common.api.IFrameOperationCallbackFactory;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicyFactory;
@@ -718,7 +719,7 @@ public class TestNodeController {
                 Integer indicator = primaryKeyIndicators.get(i);
                 String[] fieldNames =
                         indicator == Index.RECORD_INDICATOR ? recordType.getFieldNames() : metaType.getFieldNames();
-                keyFieldNames.add(Arrays.asList(fieldNames[primaryKeyIndexes[i]]));
+                keyFieldNames.add(Collections.singletonList(fieldNames[primaryKeyIndexes[i]]));
             }
             index = Index.createPrimaryIndex(dataset.getDataverseName(), dataset.getDatasetName(), keyFieldNames,
                     primaryKeyIndicators, keyFieldTypes, MetadataUtil.PENDING_NO_OP);
@@ -809,10 +810,10 @@ public class TestNodeController {
                 new LSMPrimaryUpsertOperatorNodePushable(ctx, ctx.getTaskAttemptId().getTaskId().getPartition(),
                         indexHelperFactory, primaryIndexInfo.primaryIndexInsertFieldsPermutations,
                         recordDescProvider.getInputRecordDescriptor(new ActivityId(new OperatorDescriptorId(0), 0), 0),
-                        modificationCallbackFactory, searchCallbackFactory, keyIndexes.length,
-                        0, recordType, -1, frameOpCallbackFactory == null
-                                ? dataset.getFrameOpCallbackFactory(mdProvider) : frameOpCallbackFactory,
-                        MissingWriterFactory.INSTANCE, hasSecondaries);
+                        modificationCallbackFactory, searchCallbackFactory, keyIndexes.length, 0, recordType, -1,
+                        frameOpCallbackFactory == null ? dataset.getFrameOpCallbackFactory(mdProvider)
+                                : frameOpCallbackFactory,
+                        MissingWriterFactory.INSTANCE, hasSecondaries, NoOpTupleProjectorFactory.INSTANCE);
         RecordDescriptor upsertOutRecDesc = getUpsertOutRecDesc(primaryIndexInfo.rDesc, dataset,
                 filterFields == null ? 0 : filterFields.length, recordType, metaType);
         // fix pk fields
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.01.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.01.ddl.sqlpp
new file mode 100644
index 0000000000..490f48f10d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.01.ddl.sqlpp
@@ -0,0 +1,68 @@
+/*
+ * 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.
+ */
+
+DROP DATAVERSE tpch1 IF EXISTS;
+CREATE DATAVERSE tpch1;
+
+DROP DATAVERSE tpch2 IF EXISTS;
+CREATE DATAVERSE tpch2;
+
+
+CREATE TYPE tpch1.LineItemType AS
+ CLOSED {
+  l_orderkey : bigint,
+  l_partkey : bigint,
+  l_suppkey : bigint,
+  l_linenumber : bigint,
+  l_quantity : double,
+  l_extendedprice : double,
+  l_discount : double,
+  l_tax : double,
+  l_returnflag : string,
+  l_linestatus : string,
+  l_shipdate : string,
+  l_commitdate : string,
+  l_receiptdate : string,
+  l_shipinstruct : string,
+  l_shipmode : string,
+  l_comment : string
+};
+
+CREATE TYPE tpch2.OrderType AS
+ CLOSED {
+  o_orderkey : bigint,
+  o_custkey : bigint,
+  o_orderstatus : string,
+  o_totalprice : double,
+  o_orderdate : string,
+  o_orderpriority : string,
+  o_clerk : string,
+  o_shippriority : bigint,
+  o_comment : string
+};
+
+CREATE DATASET tpch1.LineItem(LineItemType)
+PRIMARY KEY l_orderkey,l_linenumber WITH {
+    "storage-format" : {"format" : "column"}
+};
+
+CREATE DATASET tpch2.Orders(OrderType)
+PRIMARY key o_orderkey WITH {
+    "storage-format" : {"format" : "column"}
+};
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.02.update.sqlpp
similarity index 72%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.02.update.sqlpp
index a078d7fe70..e3f9c31041 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.02.update.sqlpp
@@ -17,10 +17,8 @@
  * under the License.
  */
 
-USE test;
+LOAD DATASET tpch1.LineItem USING localfs ((`path`=`asterix_nc1://data/tpch0.001/lineitem.tbl`),
+      (`format`=`delimited-text`), (`delimiter`=`|`));
 
-INSERT INTO ColumnDataset (
-    {"id": 1, "val": "1", "array": [10, 20, 30]},
-    {"id": 2, "val": "2", "array": [40, 50, 60]},
-    {"id": 3, "val": "3", "array": [70, 80, 90]}
-);
\ No newline at end of file
+LOAD DATASET tpch2.Orders USING localfs ((`path`=`asterix_nc1://data/tpch0.001/orders.tbl`),
+      (`format`=`delimited-text`), (`delimiter`=`|`));
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.03.query.sqlpp
similarity index 69%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.03.query.sqlpp
index a271778586..a30c37441e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.03.query.sqlpp
@@ -17,15 +17,19 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
 
-CREATE TYPE ColumnType AS {
-    id: int
-};
+WITH tmp AS
+(
+    SELECT DISTINCT l_orderkey
+    FROM  tpch1.LineItem
+    WHERE l_commitdate < l_receiptdate
+)
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+SELECT o.o_orderpriority AS order_priority, count(*) AS count
+FROM tpch2.Orders o
+JOIN tmp t
+ON t.l_orderkey = o.o_orderkey
+WHERE o.o_orderdate >= '1993-07-01' AND o.o_orderdate < '1993-10-01'
+GROUP BY o.o_orderpriority
+ORDER BY o.o_orderpriority
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.04.post.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.04.post.http
index 075d204e2d..81c5e88ee0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.04.post.http
@@ -17,6 +17,6 @@
  * under the License.
  */
 
-USE test;
+# param targetNode=asterix_nc1
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/admin/rebalance
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.05.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.05.get.http
index 075d204e2d..e5fe87301e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.05.get.http
@@ -17,6 +17,4 @@
  * under the License.
  */
 
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=tpch1&datasetName=LineItem
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.06.get.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.06.get.http
index 075d204e2d..6e444efdf4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.06.get.http
@@ -17,6 +17,4 @@
  * under the License.
  */
 
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=tpch2&datasetName=Orders
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.07.query.sqlpp
similarity index 69%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.07.query.sqlpp
index a271778586..a30c37441e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.07.query.sqlpp
@@ -17,15 +17,19 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
 
-CREATE TYPE ColumnType AS {
-    id: int
-};
+WITH tmp AS
+(
+    SELECT DISTINCT l_orderkey
+    FROM  tpch1.LineItem
+    WHERE l_commitdate < l_receiptdate
+)
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+SELECT o.o_orderpriority AS order_priority, count(*) AS count
+FROM tpch2.Orders o
+JOIN tmp t
+ON t.l_orderkey = o.o_orderkey
+WHERE o.o_orderdate >= '1993-07-01' AND o.o_orderdate < '1993-10-01'
+GROUP BY o.o_orderpriority
+ORDER BY o.o_orderpriority
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.08.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.08.query.sqlpp
index 30d21cfd6c..257c273023 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.08.query.sqlpp
@@ -17,9 +17,6 @@
  * under the License.
  */
 
-USE test;
-
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT DatasetName, GroupName, rebalanceCount
+FROM Metadata.`Dataset`
+WHERE DatasetName = "LineItem";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.09.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.09.query.sqlpp
index 30d21cfd6c..af2085e0bd 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.09.query.sqlpp
@@ -17,9 +17,6 @@
  * under the License.
  */
 
-USE test;
-
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT DatasetName, GroupName, rebalanceCount
+FROM Metadata.`Dataset`
+WHERE DatasetName = "Orders";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.10.post.http
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.10.post.http
index 075d204e2d..1606124423 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.10.post.http
@@ -17,6 +17,7 @@
  * under the License.
  */
 
-USE test;
+# param targetNode=asterix_nc1
+# param targetNode=asterix_nc2
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/admin/rebalance
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.11.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.11.get.http
index 075d204e2d..e5fe87301e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.11.get.http
@@ -17,6 +17,4 @@
  * under the License.
  */
 
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=tpch1&datasetName=LineItem
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.12.get.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.12.get.http
index 075d204e2d..6e444efdf4 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.12.get.http
@@ -17,6 +17,4 @@
  * under the License.
  */
 
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=tpch2&datasetName=Orders
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.13.query.sqlpp
similarity index 69%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.13.query.sqlpp
index a271778586..a30c37441e 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.13.query.sqlpp
@@ -17,15 +17,19 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
 
-CREATE TYPE ColumnType AS {
-    id: int
-};
+WITH tmp AS
+(
+    SELECT DISTINCT l_orderkey
+    FROM  tpch1.LineItem
+    WHERE l_commitdate < l_receiptdate
+)
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+SELECT o.o_orderpriority AS order_priority, count(*) AS count
+FROM tpch2.Orders o
+JOIN tmp t
+ON t.l_orderkey = o.o_orderkey
+WHERE o.o_orderdate >= '1993-07-01' AND o.o_orderdate < '1993-10-01'
+GROUP BY o.o_orderpriority
+ORDER BY o.o_orderpriority
+;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.14.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.14.query.sqlpp
index 30d21cfd6c..257c273023 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.14.query.sqlpp
@@ -17,9 +17,6 @@
  * under the License.
  */
 
-USE test;
-
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT DatasetName, GroupName, rebalanceCount
+FROM Metadata.`Dataset`
+WHERE DatasetName = "LineItem";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.15.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.15.query.sqlpp
index 30d21cfd6c..0505471887 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.15.query.sqlpp
@@ -17,9 +17,6 @@
  * under the License.
  */
 
-USE test;
-
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+select DatasetName, GroupName, rebalanceCount
+from Metadata.`Dataset`
+where DatasetName = "Orders";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.16.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.16.query.sqlpp
index 30d21cfd6c..2f3cc43331 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/rebalance/rebalance.16.query.sqlpp
@@ -17,9 +17,6 @@
  * under the License.
  */
 
-USE test;
-
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT DatasetName, GroupName, rebalanceCount
+FROM Metadata.`Dataset`
+WHERE DatasetName = "Dataset";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.01.ddl.sqlpp
similarity index 52%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.01.ddl.sqlpp
index a271778586..25e8290ab7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.01.ddl.sqlpp
@@ -17,15 +17,23 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
+/*
+ * Description: Verify the following DML actions for an array->atomic index:
+ *     1) Insert into an empty index (non bulk-load operation), additionally with two records that have no array-index qualifying entries.
+ *     2) Delete all-but-one entry from the index.
+ *     3) Upsert all *original* (all records have qualifying array-index entries now) entries into the index.
+ */
+
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
+
+CREATE TYPE CheckinType AS {
+    business_id: string
+};
 
-CREATE TYPE ColumnType AS {
-    id: int
+CREATE DATASET YelpCheckin(CheckinType) PRIMARY KEY business_id WITH {
+    "storage-format" : {"format" : "column"}
 };
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+CREATE INDEX IdxYelpCheckinDates ON YelpCheckin (UNNEST dates : string ) EXCLUDE UNKNOWN KEY;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.02.update.sqlpp
new file mode 100644
index 0000000000..ba9a31bd4d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.02.update.sqlpp
@@ -0,0 +1,272 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+INSERT INTO YelpCheckin (
+    [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "dates": [
+                "2016-04-26 19:49:16",
+                "2016-08-30 18:36:57",
+                "2016-10-15 02:45:18",
+                "2016-11-18 01:54:50",
+                "2017-04-20 18:39:06",
+                "2017-05-03 17:58:02",
+                "2019-03-19 22:04:48"
+            ]
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "dates": [
+                "2018-05-25 19:52:07",
+                "2018-09-18 16:09:44",
+                "2019-10-18 21:29:09"
+            ]
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "dates": [
+                "2019-06-07 17:54:58"
+            ]
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "dates": [
+                "2011-05-03 20:54:05",
+                "2011-08-23 20:49:45",
+                "2014-12-04 06:13:01",
+                "2016-11-16 19:25:55"
+            ]
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "dates": [
+                "2016-06-18 21:35:45",
+                "2016-10-15 18:17:51"
+            ]
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "dates": [
+                "2015-04-02 21:45:17"
+            ]
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "dates": [
+                "2014-08-27 17:49:18",
+                "2015-12-19 21:30:31",
+                "2018-11-27 15:53:50"
+            ]
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "dates": [
+                "2014-01-28 20:56:04",
+                "2014-11-16 16:11:58",
+                "2015-11-15 19:21:53",
+                "2015-11-15 19:33:39"
+            ]
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "dates": [
+                "2019-04-11 18:30:12"
+            ]
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "dates": [
+                "2015-06-06 20:01:06",
+                "2019-03-14 22:01:52"
+            ]
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "dates": [
+                "2018-09-29 18:55:17",
+                "2018-10-20 16:48:05",
+                "2018-10-20 22:20:24"
+            ]
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "dates": [
+                "2011-04-23 21:11:22",
+                "2014-05-04 19:42:48",
+                "2014-05-11 19:16:08",
+                "2014-06-04 19:14:18",
+                "2015-12-05 19:22:42",
+                "2017-05-15 23:19:00"
+            ]
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "dates": [
+                "2012-07-13 21:43:57",
+                "2016-12-24 02:27:31",
+                "2017-08-31 00:35:26"
+            ]
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "dates": [
+                "2013-04-13 12:35:33",
+                "2013-08-19 23:35:49",
+                "2013-10-04 19:14:56"
+            ]
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "dates": [
+                "2016-09-10 19:26:19",
+                "2018-09-08 14:15:37",
+                "2019-09-13 22:47:25"
+            ]
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "dates": [
+                "2017-05-19 14:30:16",
+                "2017-05-19 14:30:25",
+                "2017-08-28 15:49:37",
+                "2017-09-20 20:19:51",
+                "2017-10-01 16:31:05",
+                "2017-10-01 16:56:27",
+                "2017-12-27 23:33:20"
+            ]
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "dates": [
+                "2019-06-05 18:22:49"
+            ]
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "dates": [
+                "2011-09-24 21:37:32",
+                "2014-03-10 20:20:07",
+                "2015-05-27 00:40:24",
+                "2015-08-29 17:58:15",
+                "2018-03-16 15:03:26"
+            ]
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "dates": [
+                "2015-03-16 23:51:16",
+                "2015-12-21 04:48:01",
+                "2016-10-28 20:22:42",
+                "2016-10-28 20:23:00"
+            ]
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "dates": [
+                "2013-10-22 16:49:21",
+                "2014-11-21 17:39:24"
+            ]
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "dates": [
+                "2014-08-07 18:30:48",
+                "2014-09-16 20:41:45",
+                "2014-10-12 23:22:27",
+                "2015-07-21 20:43:56",
+                "2015-07-21 20:45:07"
+            ]
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "dates": [
+                "2015-05-02 19:49:05",
+                "2015-05-06 03:52:18",
+                "2015-09-26 01:13:19"
+            ]
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "dates": [
+                "2015-04-11 13:14:14",
+                "2015-11-21 16:05:56",
+                "2016-05-06 14:10:04",
+                "2017-08-09 15:15:10",
+                "2017-10-21 15:12:56"
+            ]
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "dates": [
+                "2015-12-03 18:44:00",
+                "2016-03-17 18:19:21",
+                "2016-11-02 15:58:38"
+            ]
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "dates": []
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "dates": []
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "dates": [
+                "2011-12-21 19:02:51",
+                "2012-04-15 04:21:39",
+                "2012-04-15 14:23:56",
+                "2013-06-30 22:39:51",
+                "2013-10-04 20:34:13",
+                "2014-07-16 02:28:40"
+            ]
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "dates": [
+                "2018-06-13 20:16:07"
+            ]
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "dates": [
+                "2015-05-29 16:46:17",
+                "2015-06-01 15:03:53"
+            ]
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "dates": [
+                "2011-10-08 12:02:23",
+                "2014-08-18 02:11:11",
+                "2016-01-07 05:27:51",
+                "2016-10-21 20:15:55",
+                "2016-12-01 03:57:10",
+                "2016-12-29 01:54:42",
+                "2018-07-22 19:55:31",
+                "2018-09-07 01:42:54",
+                "2019-03-08 03:41:06"
+            ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.03.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.03.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.03.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.04.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.04.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.04.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.05.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.05.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.05.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.06.update.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.06.update.sqlpp
index 075d204e2d..ea1dba3af8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.06.update.sqlpp
@@ -17,6 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+DELETE FROM YelpCheckin C
+WHERE C.business_id != "--1UhMGODdWsrMastO9DZw";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.07.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.07.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.07.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.08.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.08.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.08.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.09.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.09.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.09.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.10.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.10.update.sqlpp
new file mode 100644
index 0000000000..055fe8cf32
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.10.update.sqlpp
@@ -0,0 +1,276 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+UPSERT INTO YelpCheckin (
+    [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "dates": [
+                "2016-04-26 19:49:16",
+                "2016-08-30 18:36:57",
+                "2016-10-15 02:45:18",
+                "2016-11-18 01:54:50",
+                "2017-04-20 18:39:06",
+                "2017-05-03 17:58:02",
+                "2019-03-19 22:04:48"
+            ]
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "dates": [
+                "2018-05-25 19:52:07",
+                "2018-09-18 16:09:44",
+                "2019-10-18 21:29:09"
+            ]
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "dates": [
+                "2019-06-07 17:54:58"
+            ]
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "dates": [
+                "2011-05-03 20:54:05",
+                "2011-08-23 20:49:45",
+                "2014-12-04 06:13:01",
+                "2016-11-16 19:25:55"
+            ]
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "dates": [
+                "2016-06-18 21:35:45",
+                "2016-10-15 18:17:51"
+            ]
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "dates": [
+                "2015-04-02 21:45:17"
+            ]
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "dates": [
+                "2014-08-27 17:49:18",
+                "2015-12-19 21:30:31",
+                "2018-11-27 15:53:50"
+            ]
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "dates": [
+                "2014-01-28 20:56:04",
+                "2014-11-16 16:11:58",
+                "2015-11-15 19:21:53",
+                "2015-11-15 19:33:39"
+            ]
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "dates": [
+                "2019-04-11 18:30:12"
+            ]
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "dates": [
+                "2015-06-06 20:01:06",
+                "2019-03-14 22:01:52"
+            ]
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "dates": [
+                "2018-09-29 18:55:17",
+                "2018-10-20 16:48:05",
+                "2018-10-20 22:20:24"
+            ]
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "dates": [
+                "2011-04-23 21:11:22",
+                "2014-05-04 19:42:48",
+                "2014-05-11 19:16:08",
+                "2014-06-04 19:14:18",
+                "2015-12-05 19:22:42",
+                "2017-05-15 23:19:00"
+            ]
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "dates": [
+                "2012-07-13 21:43:57",
+                "2016-12-24 02:27:31",
+                "2017-08-31 00:35:26"
+            ]
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "dates": [
+                "2013-04-13 12:35:33",
+                "2013-08-19 23:35:49",
+                "2013-10-04 19:14:56"
+            ]
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "dates": [
+                "2016-09-10 19:26:19",
+                "2018-09-08 14:15:37",
+                "2019-09-13 22:47:25"
+            ]
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "dates": [
+                "2017-05-19 14:30:16",
+                "2017-05-19 14:30:25",
+                "2017-08-28 15:49:37",
+                "2017-09-20 20:19:51",
+                "2017-10-01 16:31:05",
+                "2017-10-01 16:56:27",
+                "2017-12-27 23:33:20"
+            ]
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "dates": [
+                "2019-06-05 18:22:49"
+            ]
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "dates": [
+                "2011-09-24 21:37:32",
+                "2014-03-10 20:20:07",
+                "2015-05-27 00:40:24",
+                "2015-08-29 17:58:15",
+                "2018-03-16 15:03:26"
+            ]
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "dates": [
+                "2015-03-16 23:51:16",
+                "2015-12-21 04:48:01",
+                "2016-10-28 20:22:42",
+                "2016-10-28 20:23:00"
+            ]
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "dates": [
+                "2013-10-22 16:49:21",
+                "2014-11-21 17:39:24"
+            ]
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "dates": [
+                "2014-08-07 18:30:48",
+                "2014-09-16 20:41:45",
+                "2014-10-12 23:22:27",
+                "2015-07-21 20:43:56",
+                "2015-07-21 20:45:07"
+            ]
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "dates": [
+                "2015-05-02 19:49:05",
+                "2015-05-06 03:52:18",
+                "2015-09-26 01:13:19"
+            ]
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "dates": [
+                "2015-04-11 13:14:14",
+                "2015-11-21 16:05:56",
+                "2016-05-06 14:10:04",
+                "2017-08-09 15:15:10",
+                "2017-10-21 15:12:56"
+            ]
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "dates": [
+                "2015-12-03 18:44:00",
+                "2016-03-17 18:19:21",
+                "2016-11-02 15:58:38"
+            ]
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "dates": [
+                "2019-04-04 22:02:37"
+            ]
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "dates": [
+                "2019-02-27 14:03:08"
+            ]
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "dates": [
+                "2011-12-21 19:02:51",
+                "2012-04-15 04:21:39",
+                "2012-04-15 14:23:56",
+                "2013-06-30 22:39:51",
+                "2013-10-04 20:34:13",
+                "2014-07-16 02:28:40"
+            ]
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "dates": [
+                "2018-06-13 20:16:07"
+            ]
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "dates": [
+                "2015-05-29 16:46:17",
+                "2015-06-01 15:03:53"
+            ]
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "dates": [
+                "2011-10-08 12:02:23",
+                "2014-08-18 02:11:11",
+                "2016-01-07 05:27:51",
+                "2016-10-21 20:15:55",
+                "2016-12-01 03:57:10",
+                "2016-12-29 01:54:42",
+                "2018-07-22 19:55:31",
+                "2018-09-07 01:42:54",
+                "2019-03-08 03:41:06"
+            ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.11.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.11.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.11.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.12.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.12.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.12.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.13.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.13.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-1/use-case-1.13.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.01.ddl.sqlpp
similarity index 53%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.01.ddl.sqlpp
index a271778586..46715fb612 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.01.ddl.sqlpp
@@ -17,15 +17,24 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
+/*
+ * Description: Verify the following DML actions for an array->atomic index:
+ *     1) Insert into an empty index (non bulk-load operation).
+ *     2) Delete all-but-one entry from the index.
+ *     3) Upsert all entries into the index.
+ */
+
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
+
+CREATE TYPE CheckinType AS {
+    business_id: string
+};
 
-CREATE TYPE ColumnType AS {
-    id: int
+CREATE DATASET YelpCheckin(CheckinType) PRIMARY KEY business_id WITH {
+    "storage-format" : {"format" : "column"}
 };
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+CREATE INDEX IdxYelpCheckinDates ON YelpCheckin (UNNEST checkin_times.dates : string ) EXCLUDE UNKNOWN KEY;
+CREATE INDEX IdxYelpCheckinTimes ON YelpCheckin (UNNEST checkin_times.times : string ) EXCLUDE UNKNOWN KEY;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.02.update.sqlpp
new file mode 100644
index 0000000000..2549e8f3a4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.02.update.sqlpp
@@ -0,0 +1,497 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+INSERT INTO YelpCheckin (
+    [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": {
+                "dates": [
+                    "2016-04-26",
+                    "2016-08-30",
+                    "2016-10-15",
+                    "2016-11-18",
+                    "2017-04-20",
+                    "2017-05-03",
+                    "2019-03-19"
+                ],
+                "times": [
+                    "19:49:16",
+                    "18:36:57",
+                    "02:45:18",
+                    "01:54:50",
+                    "18:39:06",
+                    "17:58:02",
+                    "22:04:48"
+                ]
+            }
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": {
+                "dates": [
+                    "2018-05-25",
+                    "2018-09-18",
+                    "2019-10-18"
+                ],
+                "times": [
+                    "19:52:07",
+                    "16:09:44",
+                    "21:29:09"
+                ]
+            }
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": {
+                "dates": [
+                    "2019-06-07"
+                ],
+                "times": [
+                    "17:54:58"
+                ]
+            }
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": {
+                "dates": [
+                    "2011-05-03",
+                    "2011-08-23",
+                    "2014-12-04",
+                    "2016-11-16"
+                ],
+                "times": [
+                    "20:54:05",
+                    "20:49:45",
+                    "06:13:01",
+                    "19:25:55"
+                ]
+            }
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": {
+                "dates": [
+                    "2016-06-18",
+                    "2016-10-15"
+                ],
+                "times": [
+                    "21:35:45",
+                    "18:17:51"
+                ]
+            }
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-04-02"
+                ],
+                "times": [
+                    "21:45:17"
+                ]
+            }
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": {
+                "dates": [
+                    "2014-08-27",
+                    "2015-12-19",
+                    "2018-11-27"
+                ],
+                "times": [
+                    "17:49:18",
+                    "21:30:31",
+                    "15:53:50"
+                ]
+            }
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": {
+                "dates": [
+                    "2014-01-28",
+                    "2014-11-16",
+                    "2015-11-15",
+                    "2015-11-15"
+                ],
+                "times": [
+                    "20:56:04",
+                    "16:11:58",
+                    "19:21:53",
+                    "19:33:39"
+                ]
+            }
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": {
+                "dates": [
+                    "2019-04-11"
+                ],
+                "times": [
+                    "18:30:12"
+                ]
+            }
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-06-06",
+                    "2019-03-14"
+                ],
+                "times": [
+                    "20:01:06",
+                    "22:01:52"
+                ]
+            }
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": {
+                "dates": [
+                    "2018-09-29",
+                    "2018-10-20",
+                    "2018-10-20"
+                ],
+                "times": [
+                    "18:55:17",
+                    "16:48:05",
+                    "22:20:24"
+                ]
+            }
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": {
+                "dates": [
+                    "2011-04-23",
+                    "2014-05-04",
+                    "2014-05-11",
+                    "2014-06-04",
+                    "2015-12-05",
+                    "2017-05-15"
+                ],
+                "times": [
+                    "21:11:22",
+                    "19:42:48",
+                    "19:16:08",
+                    "19:14:18",
+                    "19:22:42",
+                    "23:19:00"
+                ]
+            }
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": {
+                "dates": [
+                    "2012-07-13",
+                    "2016-12-24",
+                    "2017-08-31"
+                ],
+                "times": [
+                    "21:43:57",
+                    "02:27:31",
+                    "00:35:26"
+                ]
+            }
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": {
+                "dates": [
+                    "2013-04-13",
+                    "2013-08-19",
+                    "2013-10-04"
+                ],
+                "times": [
+                    "12:35:33",
+                    "23:35:49",
+                    "19:14:56"
+                ]
+            }
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": {
+                "dates": [
+                    "2016-09-10",
+                    "2018-09-08",
+                    "2019-09-13"
+                ],
+                "times": [
+                    "19:26:19",
+                    "14:15:37",
+                    "22:47:25"
+                ]
+            }
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": {
+                "dates": [
+                    "2017-05-19",
+                    "2017-05-19",
+                    "2017-08-28",
+                    "2017-09-20",
+                    "2017-10-01",
+                    "2017-10-01",
+                    "2017-12-27"
+                ],
+                "times": [
+                    "14:30:16",
+                    "14:30:25",
+                    "15:49:37",
+                    "20:19:51",
+                    "16:31:05",
+                    "16:56:27",
+                    "23:33:20"
+                ]
+            }
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": {
+                "dates": [
+                    "2019-06-05"
+                ],
+                "times": [
+                    "18:22:49"
+                ]
+            }
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": {
+                "dates": [
+                    "2011-09-24",
+                    "2014-03-10",
+                    "2015-05-27",
+                    "2015-08-29",
+                    "2018-03-16"
+                ],
+                "times": [
+                    "21:37:32",
+                    "20:20:07",
+                    "00:40:24",
+                    "17:58:15",
+                    "15:03:26"
+                ]
+            }
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": {
+                "dates": [
+                    "2015-03-16",
+                    "2015-12-21",
+                    "2016-10-28",
+                    "2016-10-28"
+                ],
+                "times": [
+                    "23:51:16",
+                    "04:48:01",
+                    "20:22:42",
+                    "20:23:00"
+                ]
+            }
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": {
+                "dates": [
+                    "2013-10-22",
+                    "2014-11-21"
+                ],
+                "times": [
+                    "16:49:21",
+                    "17:39:24"
+                ]
+            }
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": {
+                "dates": [
+                    "2014-08-07",
+                    "2014-09-16",
+                    "2014-10-12",
+                    "2015-07-21",
+                    "2015-07-21"
+                ],
+                "times": [
+                    "18:30:48",
+                    "20:41:45",
+                    "23:22:27",
+                    "20:43:56",
+                    "20:45:07"
+                ]
+            }
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": {
+                "dates": [
+                    "2015-05-02",
+                    "2015-05-06",
+                    "2015-09-26"
+                ],
+                "times": [
+                    "19:49:05",
+                    "03:52:18",
+                    "01:13:19"
+                ]
+            }
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-04-11",
+                    "2015-11-21",
+                    "2016-05-06",
+                    "2017-08-09",
+                    "2017-10-21"
+                ],
+                "times": [
+                    "13:14:14",
+                    "16:05:56",
+                    "14:10:04",
+                    "15:15:10",
+                    "15:12:56"
+                ]
+            }
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": {
+                "dates": [
+                    "2015-12-03",
+                    "2016-03-17",
+                    "2016-11-02"
+                ],
+                "times": [
+                    "18:44:00",
+                    "18:19:21",
+                    "15:58:38"
+                ]
+            }
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": {
+                "dates": [
+                    "2019-04-04"
+                ],
+                "times": [
+                    "22:02:37"
+                ]
+            }
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": {
+                "dates": [
+                    "2019-02-27"
+                ],
+                "times": [
+                    "14:03:08"
+                ]
+            }
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": {
+                "dates": [
+                    "2011-12-21",
+                    "2012-04-15",
+                    "2012-04-15",
+                    "2013-06-30",
+                    "2013-10-04",
+                    "2014-07-16"
+                ],
+                "times": [
+                    "19:02:51",
+                    "04:21:39",
+                    "14:23:56",
+                    "22:39:51",
+                    "20:34:13",
+                    "02:28:40"
+                ]
+            }
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": {
+                "dates": [
+                    "2018-06-13"
+                ],
+                "times": [
+                    "20:16:07"
+                ]
+            }
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-05-29",
+                    "2015-06-01"
+                ],
+                "times": [
+                    "16:46:17",
+                    "15:03:53"
+                ]
+            }
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": {
+                "dates": [
+                    "2011-10-08",
+                    "2014-08-18",
+                    "2016-01-07",
+                    "2016-10-21",
+                    "2016-12-01",
+                    "2016-12-29",
+                    "2018-07-22",
+                    "2018-09-07",
+                    "2019-03-08"
+                ],
+                "times": [
+                    "12:02:23",
+                    "02:11:11",
+                    "05:27:51",
+                    "20:15:55",
+                    "03:57:10",
+                    "01:54:42",
+                    "19:55:31",
+                    "01:42:54",
+                    "03:41:06"
+                ]
+            }
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.03.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.03.query.sqlpp
index 30d21cfd6c..a44055090c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.03.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.04.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.04.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.04.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.05.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.05.query.sqlpp
index 30d21cfd6c..a44055090c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.05.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.06.update.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.06.update.sqlpp
index 075d204e2d..ea1dba3af8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.06.update.sqlpp
@@ -17,6 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+DELETE FROM YelpCheckin C
+WHERE C.business_id != "--1UhMGODdWsrMastO9DZw";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.07.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.07.query.sqlpp
index 30d21cfd6c..a44055090c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.07.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.08.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.08.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.08.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.09.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.09.query.sqlpp
index 30d21cfd6c..a44055090c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.09.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.10.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.10.update.sqlpp
new file mode 100644
index 0000000000..9467e0d000
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.10.update.sqlpp
@@ -0,0 +1,497 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+UPSERT INTO YelpCheckin (
+    [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": {
+                "dates": [
+                    "2016-04-26",
+                    "2016-08-30",
+                    "2016-10-15",
+                    "2016-11-18",
+                    "2017-04-20",
+                    "2017-05-03",
+                    "2019-03-19"
+                ],
+                "times": [
+                    "19:49:16",
+                    "18:36:57",
+                    "02:45:18",
+                    "01:54:50",
+                    "18:39:06",
+                    "17:58:02",
+                    "22:04:48"
+                ]
+            }
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": {
+                "dates": [
+                    "2018-05-25",
+                    "2018-09-18",
+                    "2019-10-18"
+                ],
+                "times": [
+                    "19:52:07",
+                    "16:09:44",
+                    "21:29:09"
+                ]
+            }
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": {
+                "dates": [
+                    "2019-06-07"
+                ],
+                "times": [
+                    "17:54:58"
+                ]
+            }
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": {
+                "dates": [
+                    "2011-05-03",
+                    "2011-08-23",
+                    "2014-12-04",
+                    "2016-11-16"
+                ],
+                "times": [
+                    "20:54:05",
+                    "20:49:45",
+                    "06:13:01",
+                    "19:25:55"
+                ]
+            }
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": {
+                "dates": [
+                    "2016-06-18",
+                    "2016-10-15"
+                ],
+                "times": [
+                    "21:35:45",
+                    "18:17:51"
+                ]
+            }
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-04-02"
+                ],
+                "times": [
+                    "21:45:17"
+                ]
+            }
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": {
+                "dates": [
+                    "2014-08-27",
+                    "2015-12-19",
+                    "2018-11-27"
+                ],
+                "times": [
+                    "17:49:18",
+                    "21:30:31",
+                    "15:53:50"
+                ]
+            }
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": {
+                "dates": [
+                    "2014-01-28",
+                    "2014-11-16",
+                    "2015-11-15",
+                    "2015-11-15"
+                ],
+                "times": [
+                    "20:56:04",
+                    "16:11:58",
+                    "19:21:53",
+                    "19:33:39"
+                ]
+            }
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": {
+                "dates": [
+                    "2019-04-11"
+                ],
+                "times": [
+                    "18:30:12"
+                ]
+            }
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-06-06",
+                    "2019-03-14"
+                ],
+                "times": [
+                    "20:01:06",
+                    "22:01:52"
+                ]
+            }
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": {
+                "dates": [
+                    "2018-09-29",
+                    "2018-10-20",
+                    "2018-10-20"
+                ],
+                "times": [
+                    "18:55:17",
+                    "16:48:05",
+                    "22:20:24"
+                ]
+            }
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": {
+                "dates": [
+                    "2011-04-23",
+                    "2014-05-04",
+                    "2014-05-11",
+                    "2014-06-04",
+                    "2015-12-05",
+                    "2017-05-15"
+                ],
+                "times": [
+                    "21:11:22",
+                    "19:42:48",
+                    "19:16:08",
+                    "19:14:18",
+                    "19:22:42",
+                    "23:19:00"
+                ]
+            }
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": {
+                "dates": [
+                    "2012-07-13",
+                    "2016-12-24",
+                    "2017-08-31"
+                ],
+                "times": [
+                    "21:43:57",
+                    "02:27:31",
+                    "00:35:26"
+                ]
+            }
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": {
+                "dates": [
+                    "2013-04-13",
+                    "2013-08-19",
+                    "2013-10-04"
+                ],
+                "times": [
+                    "12:35:33",
+                    "23:35:49",
+                    "19:14:56"
+                ]
+            }
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": {
+                "dates": [
+                    "2016-09-10",
+                    "2018-09-08",
+                    "2019-09-13"
+                ],
+                "times": [
+                    "19:26:19",
+                    "14:15:37",
+                    "22:47:25"
+                ]
+            }
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": {
+                "dates": [
+                    "2017-05-19",
+                    "2017-05-19",
+                    "2017-08-28",
+                    "2017-09-20",
+                    "2017-10-01",
+                    "2017-10-01",
+                    "2017-12-27"
+                ],
+                "times": [
+                    "14:30:16",
+                    "14:30:25",
+                    "15:49:37",
+                    "20:19:51",
+                    "16:31:05",
+                    "16:56:27",
+                    "23:33:20"
+                ]
+            }
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": {
+                "dates": [
+                    "2019-06-05"
+                ],
+                "times": [
+                    "18:22:49"
+                ]
+            }
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": {
+                "dates": [
+                    "2011-09-24",
+                    "2014-03-10",
+                    "2015-05-27",
+                    "2015-08-29",
+                    "2018-03-16"
+                ],
+                "times": [
+                    "21:37:32",
+                    "20:20:07",
+                    "00:40:24",
+                    "17:58:15",
+                    "15:03:26"
+                ]
+            }
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": {
+                "dates": [
+                    "2015-03-16",
+                    "2015-12-21",
+                    "2016-10-28",
+                    "2016-10-28"
+                ],
+                "times": [
+                    "23:51:16",
+                    "04:48:01",
+                    "20:22:42",
+                    "20:23:00"
+                ]
+            }
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": {
+                "dates": [
+                    "2013-10-22",
+                    "2014-11-21"
+                ],
+                "times": [
+                    "16:49:21",
+                    "17:39:24"
+                ]
+            }
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": {
+                "dates": [
+                    "2014-08-07",
+                    "2014-09-16",
+                    "2014-10-12",
+                    "2015-07-21",
+                    "2015-07-21"
+                ],
+                "times": [
+                    "18:30:48",
+                    "20:41:45",
+                    "23:22:27",
+                    "20:43:56",
+                    "20:45:07"
+                ]
+            }
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": {
+                "dates": [
+                    "2015-05-02",
+                    "2015-05-06",
+                    "2015-09-26"
+                ],
+                "times": [
+                    "19:49:05",
+                    "03:52:18",
+                    "01:13:19"
+                ]
+            }
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-04-11",
+                    "2015-11-21",
+                    "2016-05-06",
+                    "2017-08-09",
+                    "2017-10-21"
+                ],
+                "times": [
+                    "13:14:14",
+                    "16:05:56",
+                    "14:10:04",
+                    "15:15:10",
+                    "15:12:56"
+                ]
+            }
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": {
+                "dates": [
+                    "2015-12-03",
+                    "2016-03-17",
+                    "2016-11-02"
+                ],
+                "times": [
+                    "18:44:00",
+                    "18:19:21",
+                    "15:58:38"
+                ]
+            }
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": {
+                "dates": [
+                    "2019-04-04"
+                ],
+                "times": [
+                    "22:02:37"
+                ]
+            }
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": {
+                "dates": [
+                    "2019-02-27"
+                ],
+                "times": [
+                    "14:03:08"
+                ]
+            }
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": {
+                "dates": [
+                    "2011-12-21",
+                    "2012-04-15",
+                    "2012-04-15",
+                    "2013-06-30",
+                    "2013-10-04",
+                    "2014-07-16"
+                ],
+                "times": [
+                    "19:02:51",
+                    "04:21:39",
+                    "14:23:56",
+                    "22:39:51",
+                    "20:34:13",
+                    "02:28:40"
+                ]
+            }
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": {
+                "dates": [
+                    "2018-06-13"
+                ],
+                "times": [
+                    "20:16:07"
+                ]
+            }
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": {
+                "dates": [
+                    "2015-05-29",
+                    "2015-06-01"
+                ],
+                "times": [
+                    "16:46:17",
+                    "15:03:53"
+                ]
+            }
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": {
+                "dates": [
+                    "2011-10-08",
+                    "2014-08-18",
+                    "2016-01-07",
+                    "2016-10-21",
+                    "2016-12-01",
+                    "2016-12-29",
+                    "2018-07-22",
+                    "2018-09-07",
+                    "2019-03-08"
+                ],
+                "times": [
+                    "12:02:23",
+                    "02:11:11",
+                    "05:27:51",
+                    "20:15:55",
+                    "03:57:10",
+                    "01:54:42",
+                    "19:55:31",
+                    "01:42:54",
+                    "03:41:06"
+                ]
+            }
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.11.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.11.query.sqlpp
index 30d21cfd6c..a44055090c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.11.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.12.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.12.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.12.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.13.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.13.query.sqlpp
index 30d21cfd6c..a44055090c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-2/use-case-2.13.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.01.ddl.sqlpp
similarity index 52%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.01.ddl.sqlpp
index a271778586..559c09142f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.01.ddl.sqlpp
@@ -17,15 +17,24 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
+/*
+ * Description: Verify the following DML actions for an array->record->atomic index:
+ *     1) Insert into an empty index (non bulk-load operation).
+ *     2) Delete all-but-one entry from the index.
+ *     3) Upsert all entries into the index.
+ */
+
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
+
+CREATE TYPE CheckinType AS {
+    business_id: string
+};
 
-CREATE TYPE ColumnType AS {
-    id: int
+CREATE DATASET YelpCheckin(CheckinType) PRIMARY KEY business_id WITH {
+    "storage-format" : {"format" : "column"}
 };
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+CREATE INDEX IdxYelpCheckinDates ON YelpCheckin (UNNEST checkin_times SELECT date : string ) EXCLUDE UNKNOWN KEY;
+CREATE INDEX IdxYelpCheckinTimes ON YelpCheckin (UNNEST checkin_times SELECT time : string ) EXCLUDE UNKNOWN KEY;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.02.update.sqlpp
new file mode 100644
index 0000000000..4fd7c64d6a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.02.update.sqlpp
@@ -0,0 +1,276 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+INSERT INTO YelpCheckin (
+    [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": [
+                {"date": "2016-04-26", "time": "19:49:16"},
+                {"date": "2016-08-30", "time": "18:36:57"},
+                {"date": "2016-10-15", "time": "02:45:18"},
+                {"date": "2016-11-18", "time": "01:54:50"},
+                {"date": "2017-04-20", "time": "18:39:06"},
+                {"date": "2017-05-03", "time": "17:58:02"},
+                {"date": "2019-03-19", "time": "22:04:48"}
+             ]
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": [
+                {"date": "2018-05-25", "time": "19:52:07"},
+                {"date": "2018-09-18", "time": "16:09:44"},
+                {"date": "2019-10-18", "time": "21:29:09"}
+             ]
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": [
+                {"date": "2019-06-07", "time": "17:54:58"}
+             ]
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": [
+                {"date": "2011-05-03", "time": "20:54:05"},
+                {"date": "2011-08-23", "time": "20:49:45"},
+                {"date": "2014-12-04", "time": "06:13:01"},
+                {"date": "2016-11-16", "time": "19:25:55"}
+             ]
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": [
+                {"date": "2016-06-18", "time": "21:35:45"},
+                {"date": "2016-10-15", "time": "18:17:51"}
+             ]
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": [
+                {"date": "2015-04-02", "time": "21:45:17"}
+             ]
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": [
+                {"date": "2014-08-27", "time": "17:49:18"},
+                {"date": "2015-12-19", "time": "21:30:31"},
+                {"date": "2018-11-27", "time": "15:53:50"}
+             ]
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": [
+                {"date": "2014-01-28", "time": "20:56:04"},
+                {"date": "2014-11-16", "time": "16:11:58"},
+                {"date": "2015-11-15", "time": "19:21:53"},
+                {"date": "2015-11-15", "time": "19:33:39"}
+             ]
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": [
+                {"date": "2019-04-11", "time": "18:30:12"}
+             ]
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": [
+                {"date": "2015-06-06", "time": "20:01:06"},
+                {"date": "2019-03-14", "time": "22:01:52"}
+             ]
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": [
+                {"date": "2018-09-29", "time": "18:55:17"},
+                {"date": "2018-10-20", "time": "16:48:05"},
+                {"date": "2018-10-20", "time": "22:20:24"}
+             ]
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": [
+                {"date": "2011-04-23", "time": "21:11:22"},
+                {"date": "2014-05-04", "time": "19:42:48"},
+                {"date": "2014-05-11", "time": "19:16:08"},
+                {"date": "2014-06-04", "time": "19:14:18"},
+                {"date": "2015-12-05", "time": "19:22:42"},
+                {"date": "2017-05-15", "time": "23:19:00"}
+             ]
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": [
+                {"date": "2012-07-13", "time": "21:43:57"},
+                {"date": "2016-12-24", "time": "02:27:31"},
+                {"date": "2017-08-31", "time": "00:35:26"}
+             ]
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": [
+                {"date": "2013-04-13", "time": "12:35:33"},
+                {"date": "2013-08-19", "time": "23:35:49"},
+                {"date": "2013-10-04", "time": "19:14:56"}
+             ]
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": [
+                {"date": "2016-09-10", "time": "19:26:19"},
+                {"date": "2018-09-08", "time": "14:15:37"},
+                {"date": "2019-09-13", "time": "22:47:25"}
+             ]
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": [
+                {"date": "2017-05-19", "time": "14:30:16"},
+                {"date": "2017-05-19", "time": "14:30:25"},
+                {"date": "2017-08-28", "time": "15:49:37"},
+                {"date": "2017-09-20", "time": "20:19:51"},
+                {"date": "2017-10-01", "time": "16:31:05"},
+                {"date": "2017-10-01", "time": "16:56:27"},
+                {"date": "2017-12-27", "time": "23:33:20"}
+             ]
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": [
+                {"date": "2019-06-05", "time": "18:22:49"}
+             ]
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": [
+                {"date": "2011-09-24", "time": "21:37:32"},
+                {"date": "2014-03-10", "time": "20:20:07"},
+                {"date": "2015-05-27", "time": "00:40:24"},
+                {"date": "2015-08-29", "time": "17:58:15"},
+                {"date": "2018-03-16", "time": "15:03:26"}
+             ]
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": [
+                {"date": "2015-03-16", "time": "23:51:16"},
+                {"date": "2015-12-21", "time": "04:48:01"},
+                {"date": "2016-10-28", "time": "20:22:42"},
+                {"date": "2016-10-28", "time": "20:23:00"}
+             ]
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": [
+                {"date": "2013-10-22", "time": "16:49:21"},
+                {"date": "2014-11-21", "time": "17:39:24"}
+             ]
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": [
+                {"date": "2014-08-07", "time": "18:30:48"},
+                {"date": "2014-09-16", "time": "20:41:45"},
+                {"date": "2014-10-12", "time": "23:22:27"},
+                {"date": "2015-07-21", "time": "20:43:56"},
+                {"date": "2015-07-21", "time": "20:45:07"}
+             ]
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": [
+                {"date": "2015-05-02", "time": "19:49:05"},
+                {"date": "2015-05-06", "time": "03:52:18"},
+                {"date": "2015-09-26", "time": "01:13:19"}
+             ]
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": [
+                {"date": "2015-04-11", "time": "13:14:14"},
+                {"date": "2015-11-21", "time": "16:05:56"},
+                {"date": "2016-05-06", "time": "14:10:04"},
+                {"date": "2017-08-09", "time": "15:15:10"},
+                {"date": "2017-10-21", "time": "15:12:56"}
+             ]
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": [
+                {"date": "2015-12-03", "time": "18:44:00"},
+                {"date": "2016-03-17", "time": "18:19:21"},
+                {"date": "2016-11-02", "time": "15:58:38"}
+             ]
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": [
+                {"date": "2019-04-04", "time": "22:02:37"}
+             ]
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": [
+                {"date": "2019-02-27", "time": "14:03:08"}
+             ]
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": [
+                {"date": "2011-12-21", "time": "19:02:51"},
+                {"date": "2012-04-15", "time": "04:21:39"},
+                {"date": "2012-04-15", "time": "14:23:56"},
+                {"date": "2013-06-30", "time": "22:39:51"},
+                {"date": "2013-10-04", "time": "20:34:13"},
+                {"date": "2014-07-16", "time": "02:28:40"}
+             ]
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": [
+                {"date": "2018-06-13", "time": "20:16:07"}
+             ]
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": [
+                {"date": "2015-05-29", "time": "16:46:17"},
+                {"date": "2015-06-01", "time": "15:03:53"}
+             ]
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": [
+                {"date": "2011-10-08", "time": "12:02:23"},
+                {"date": "2014-08-18", "time": "02:11:11"},
+                {"date": "2016-01-07", "time": "05:27:51"},
+                {"date": "2016-10-21", "time": "20:15:55"},
+                {"date": "2016-12-01", "time": "03:57:10"},
+                {"date": "2016-12-29", "time": "01:54:42"},
+                {"date": "2018-07-22", "time": "19:55:31"},
+                {"date": "2018-09-07", "time": "01:42:54"},
+                {"date": "2019-03-08", "time": "03:41:06"}
+             ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.03.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.03.query.sqlpp
index 30d21cfd6c..2757b02bc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.03.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.04.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.04.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.04.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.05.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.05.query.sqlpp
index 30d21cfd6c..2757b02bc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.05.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.06.update.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.06.update.sqlpp
index 075d204e2d..ea1dba3af8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.06.update.sqlpp
@@ -17,6 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+DELETE FROM YelpCheckin C
+WHERE C.business_id != "--1UhMGODdWsrMastO9DZw";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.07.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.07.query.sqlpp
index 30d21cfd6c..2757b02bc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.07.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.08.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.08.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.08.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.09.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.09.query.sqlpp
index 30d21cfd6c..2757b02bc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.09.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.10.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.10.update.sqlpp
new file mode 100644
index 0000000000..b3f84663df
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.10.update.sqlpp
@@ -0,0 +1,276 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+UPSERT INTO YelpCheckin (
+    [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": [
+                {"date": "2016-04-26", "time": "19:49:16"},
+                {"date": "2016-08-30", "time": "18:36:57"},
+                {"date": "2016-10-15", "time": "02:45:18"},
+                {"date": "2016-11-18", "time": "01:54:50"},
+                {"date": "2017-04-20", "time": "18:39:06"},
+                {"date": "2017-05-03", "time": "17:58:02"},
+                {"date": "2019-03-19", "time": "22:04:48"}
+             ]
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": [
+                {"date": "2018-05-25", "time": "19:52:07"},
+                {"date": "2018-09-18", "time": "16:09:44"},
+                {"date": "2019-10-18", "time": "21:29:09"}
+             ]
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": [
+                {"date": "2019-06-07", "time": "17:54:58"}
+             ]
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": [
+                {"date": "2011-05-03", "time": "20:54:05"},
+                {"date": "2011-08-23", "time": "20:49:45"},
+                {"date": "2014-12-04", "time": "06:13:01"},
+                {"date": "2016-11-16", "time": "19:25:55"}
+             ]
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": [
+                {"date": "2016-06-18", "time": "21:35:45"},
+                {"date": "2016-10-15", "time": "18:17:51"}
+             ]
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": [
+                {"date": "2015-04-02", "time": "21:45:17"}
+             ]
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": [
+                {"date": "2014-08-27", "time": "17:49:18"},
+                {"date": "2015-12-19", "time": "21:30:31"},
+                {"date": "2018-11-27", "time": "15:53:50"}
+             ]
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": [
+                {"date": "2014-01-28", "time": "20:56:04"},
+                {"date": "2014-11-16", "time": "16:11:58"},
+                {"date": "2015-11-15", "time": "19:21:53"},
+                {"date": "2015-11-15", "time": "19:33:39"}
+             ]
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": [
+                {"date": "2019-04-11", "time": "18:30:12"}
+             ]
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": [
+                {"date": "2015-06-06", "time": "20:01:06"},
+                {"date": "2019-03-14", "time": "22:01:52"}
+             ]
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": [
+                {"date": "2018-09-29", "time": "18:55:17"},
+                {"date": "2018-10-20", "time": "16:48:05"},
+                {"date": "2018-10-20", "time": "22:20:24"}
+             ]
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": [
+                {"date": "2011-04-23", "time": "21:11:22"},
+                {"date": "2014-05-04", "time": "19:42:48"},
+                {"date": "2014-05-11", "time": "19:16:08"},
+                {"date": "2014-06-04", "time": "19:14:18"},
+                {"date": "2015-12-05", "time": "19:22:42"},
+                {"date": "2017-05-15", "time": "23:19:00"}
+             ]
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": [
+                {"date": "2012-07-13", "time": "21:43:57"},
+                {"date": "2016-12-24", "time": "02:27:31"},
+                {"date": "2017-08-31", "time": "00:35:26"}
+             ]
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": [
+                {"date": "2013-04-13", "time": "12:35:33"},
+                {"date": "2013-08-19", "time": "23:35:49"},
+                {"date": "2013-10-04", "time": "19:14:56"}
+             ]
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": [
+                {"date": "2016-09-10", "time": "19:26:19"},
+                {"date": "2018-09-08", "time": "14:15:37"},
+                {"date": "2019-09-13", "time": "22:47:25"}
+             ]
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": [
+                {"date": "2017-05-19", "time": "14:30:16"},
+                {"date": "2017-05-19", "time": "14:30:25"},
+                {"date": "2017-08-28", "time": "15:49:37"},
+                {"date": "2017-09-20", "time": "20:19:51"},
+                {"date": "2017-10-01", "time": "16:31:05"},
+                {"date": "2017-10-01", "time": "16:56:27"},
+                {"date": "2017-12-27", "time": "23:33:20"}
+             ]
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": [
+                {"date": "2019-06-05", "time": "18:22:49"}
+             ]
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": [
+                {"date": "2011-09-24", "time": "21:37:32"},
+                {"date": "2014-03-10", "time": "20:20:07"},
+                {"date": "2015-05-27", "time": "00:40:24"},
+                {"date": "2015-08-29", "time": "17:58:15"},
+                {"date": "2018-03-16", "time": "15:03:26"}
+             ]
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": [
+                {"date": "2015-03-16", "time": "23:51:16"},
+                {"date": "2015-12-21", "time": "04:48:01"},
+                {"date": "2016-10-28", "time": "20:22:42"},
+                {"date": "2016-10-28", "time": "20:23:00"}
+             ]
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": [
+                {"date": "2013-10-22", "time": "16:49:21"},
+                {"date": "2014-11-21", "time": "17:39:24"}
+             ]
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": [
+                {"date": "2014-08-07", "time": "18:30:48"},
+                {"date": "2014-09-16", "time": "20:41:45"},
+                {"date": "2014-10-12", "time": "23:22:27"},
+                {"date": "2015-07-21", "time": "20:43:56"},
+                {"date": "2015-07-21", "time": "20:45:07"}
+             ]
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": [
+                {"date": "2015-05-02", "time": "19:49:05"},
+                {"date": "2015-05-06", "time": "03:52:18"},
+                {"date": "2015-09-26", "time": "01:13:19"}
+             ]
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": [
+                {"date": "2015-04-11", "time": "13:14:14"},
+                {"date": "2015-11-21", "time": "16:05:56"},
+                {"date": "2016-05-06", "time": "14:10:04"},
+                {"date": "2017-08-09", "time": "15:15:10"},
+                {"date": "2017-10-21", "time": "15:12:56"}
+             ]
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": [
+                {"date": "2015-12-03", "time": "18:44:00"},
+                {"date": "2016-03-17", "time": "18:19:21"},
+                {"date": "2016-11-02", "time": "15:58:38"}
+             ]
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": [
+                {"date": "2019-04-04", "time": "22:02:37"}
+             ]
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": [
+                {"date": "2019-02-27", "time": "14:03:08"}
+             ]
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": [
+                {"date": "2011-12-21", "time": "19:02:51"},
+                {"date": "2012-04-15", "time": "04:21:39"},
+                {"date": "2012-04-15", "time": "14:23:56"},
+                {"date": "2013-06-30", "time": "22:39:51"},
+                {"date": "2013-10-04", "time": "20:34:13"},
+                {"date": "2014-07-16", "time": "02:28:40"}
+             ]
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": [
+                {"date": "2018-06-13", "time": "20:16:07"}
+             ]
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": [
+                {"date": "2015-05-29", "time": "16:46:17"},
+                {"date": "2015-06-01", "time": "15:03:53"}
+             ]
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": [
+                {"date": "2011-10-08", "time": "12:02:23"},
+                {"date": "2014-08-18", "time": "02:11:11"},
+                {"date": "2016-01-07", "time": "05:27:51"},
+                {"date": "2016-10-21", "time": "20:15:55"},
+                {"date": "2016-12-01", "time": "03:57:10"},
+                {"date": "2016-12-29", "time": "01:54:42"},
+                {"date": "2018-07-22", "time": "19:55:31"},
+                {"date": "2018-09-07", "time": "01:42:54"},
+                {"date": "2019-03-08", "time": "03:41:06"}
+             ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.11.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.11.query.sqlpp
index 30d21cfd6c..2757b02bc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.11.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.12.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.12.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.12.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.13.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.13.query.sqlpp
index 30d21cfd6c..2757b02bc3 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-3/use-case-3.13.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.01.ddl.sqlpp
similarity index 52%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.01.ddl.sqlpp
index a271778586..410225afe9 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.01.ddl.sqlpp
@@ -17,15 +17,24 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
+/*
+ * Description: Verify the following DML actions for an array->record->array->atomic index:
+ *     1) Insert into an empty index (non bulk-load operation).
+ *     2) Delete all-but-one entry from the index.
+ *     3) Upsert all entries into the index.
+ */
+
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
+
+CREATE TYPE CheckinType AS {
+    business_id: string
+};
 
-CREATE TYPE ColumnType AS {
-    id: int
+CREATE DATASET YelpCheckin(CheckinType) PRIMARY KEY business_id WITH {
+    "storage-format" : {"format" : "column"}
 };
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+CREATE INDEX IdxYelpCheckinDates ON YelpCheckin (UNNEST checkin_times UNNEST dates : string ) EXCLUDE UNKNOWN KEY;
+CREATE INDEX IdxYelpCheckinTimes ON YelpCheckin (UNNEST checkin_times UNNEST times : string ) EXCLUDE UNKNOWN KEY;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.02.update.sqlpp
new file mode 100644
index 0000000000..0360912c15
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.02.update.sqlpp
@@ -0,0 +1,425 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+INSERT INTO YelpCheckin (
+      [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": [
+                {
+                    "dates": ["2016-04-26", "2016-08-30", "2016-10-15", "2016-11-18"],
+                    "times": ["19:49:16", "18:36:57", "02:45:18", "01:54:50"]
+                },
+                {
+                    "dates": ["2017-04-20", "2017-05-03"],
+                    "times": ["18:39:06", "17:58:02"]
+                },
+                {
+                    "dates": ["2019-03-19"],
+                    "times": ["22:04:48"]
+                }
+             ]
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": [
+                {
+                    "dates": ["2018-05-25", "2018-09-18"],
+                    "times": ["19:52:07", "16:09:44"]
+                },
+                {
+                    "dates": ["2019-10-18"],
+                    "times": ["21:29:09"]
+                }
+             ]
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": [
+                {
+                    "dates": ["2019-06-07"],
+                    "times": ["17:54:58"]
+                }
+             ]
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": [
+                {
+                    "dates": ["2011-05-03", "2011-08-23"],
+                    "times": ["20:54:05", "20:49:45"]
+                },
+                {
+                    "dates": ["2014-12-04"],
+                    "times": ["06:13:01"]
+                },
+                {
+                    "dates": ["2016-11-16"],
+                    "times": ["19:25:55"]
+                }
+             ]
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": [
+               {
+                    "dates": ["2016-06-18", "2016-10-15"],
+                    "times": ["21:35:45", "18:17:51"]
+                }
+             ]
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-04-02"],
+                    "times": ["21:45:17"]
+                }
+             ]
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": [
+                {
+                    "dates": ["2014-08-27"],
+                    "times": ["17:49:18"]
+                },
+                {
+                    "dates": ["2015-12-19"],
+                    "times": ["21:30:31"]
+                },
+                {
+                    "dates": ["2018-11-27"],
+                    "times": ["15:53:50"]
+                }
+             ]
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": [
+                {
+                    "dates": ["2014-01-28", "2014-11-16"],
+                    "times": ["20:56:04", "16:11:58"]
+                },
+                {
+                    "dates": ["2015-11-15", "2015-11-15"],
+                    "times": ["19:21:53", "19:33:39"]
+                }
+             ]
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": [
+                {
+                    "dates": ["2019-04-11"],
+                    "times": ["18:30:12"]
+                }
+             ]
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-06-06"],
+                    "times": ["20:01:06"]
+                },
+                {
+                    "dates": ["2019-03-14"],
+                    "times": ["22:01:52"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": [
+                {
+                    "dates": ["2018-09-29", "2018-10-20", "2018-10-20"],
+                    "times": ["18:55:17", "16:48:05", "22:20:24"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": [
+                {
+                    "dates": ["2011-04-23"],
+                    "times": ["21:11:22"]
+                },
+                {
+                    "dates": ["2014-05-04", "2014-05-11", "2014-06-04"],
+                    "times": ["19:42:48", "19:16:08", "19:14:18"]
+                },
+                {
+                    "dates": ["2015-12-05"],
+                    "times": ["19:22:42"]
+                },
+                {
+                    "dates": ["2017-05-15"],
+                    "times": ["23:19:00"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": [
+                {
+                    "dates": ["2012-07-13"],
+                    "times": ["21:43:57"]
+                },
+                {
+                    "dates": ["2016-12-24"],
+                    "times": ["02:27:31"]
+                },
+                {
+                    "dates": ["2017-08-31"],
+                    "times": ["00:35:26"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": [
+                {
+                    "dates": ["2013-04-13", "2013-08-19", "2013-10-04"],
+                    "times": ["12:35:33", "23:35:49", "19:14:56"]
+                }
+
+             ]
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": [
+                {
+                    "dates": ["2016-09-10"],
+                    "times": ["19:26:19"]
+                },
+                {
+                    "dates": ["2018-09-08"],
+                    "times": ["14:15:37"]
+                },
+                {
+                    "dates": ["2019-09-13"],
+                    "times": ["22:47:25"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": [
+                 {
+                    "dates": ["2017-05-19", "2017-05-19", "2017-08-28", "2017-09-20", "2017-10-01", "2017-10-01", "2017-12-27"],
+                    "times": ["14:30:16", "14:30:25", "15:49:37", "20:19:51", "16:31:05", "16:56:27", "23:33:20"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": [
+                {
+                    "dates": ["2019-06-05"],
+                    "times": ["18:22:49"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": [
+                {
+                    "dates": ["2011-09-24"],
+                    "times": ["21:37:32"]
+                },
+                {
+                    "dates": ["2014-03-10"],
+                    "times": ["20:20:07"]
+                },
+                {
+                    "dates": ["2015-05-27", "2015-08-29"],
+                    "times": ["00:40:24", "17:58:15"]
+                },
+                {
+                    "dates": ["2018-03-16"],
+                    "times": ["15:03:26"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": [
+                {
+                    "dates": ["2015-03-16", "2015-12-21"],
+                    "times": ["23:51:16", "04:48:01"]
+                },
+                {
+                    "dates": ["2016-10-28", "2016-10-28"],
+                    "times": ["20:22:42", "20:23:00"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": [
+                {
+                    "dates": ["2013-10-22"],
+                    "times": ["16:49:21"]
+                },
+                {
+                    "dates": ["2014-11-21"],
+                    "times": ["17:39:24"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": [
+                {
+                    "dates": ["2014-08-07", "2014-09-16", "2014-10-12"],
+                    "times": ["18:30:48", "20:41:45", "23:22:27"]
+                },
+                {
+                    "dates": ["2015-07-21", "2015-07-21"],
+                    "times": ["20:43:56", "20:45:07"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": [
+                {
+                    "dates": ["2015-05-02", "2015-05-06", "2015-09-26"],
+                    "times": ["19:49:05", "03:52:18", "01:13:19"]
+                }
+
+             ]
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-04-11", "2015-11-21"],
+                    "times": ["13:14:14", "16:05:56"]
+                },
+                {
+                    "dates": ["2016-05-06"],
+                    "times": ["14:10:04"]
+                },
+                {
+                    "dates": ["2017-08-09", "2017-10-21"],
+                    "times": ["15:15:10", "15:12:56"]
+                }
+             ]
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": [
+                {
+                    "dates": ["2015-12-03"],
+                    "times": ["18:44:00"]
+                },
+                {
+                    "dates": ["2016-03-17", "2016-11-02"],
+                    "times": ["18:19:21", "15:58:38"]
+                }
+             ]
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": [
+                {
+                    "dates": ["2019-04-04"],
+                    "times": ["22:02:37"]
+                }
+             ]
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": [
+                {
+                    "dates": ["2019-02-27"],
+                    "times": ["14:03:08"]
+                }
+             ]
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": [
+                {
+                    "dates": ["2011-12-21"],
+                    "times": ["19:02:51"]
+                },
+                {
+                    "dates": ["2012-04-15", "2012-04-15"],
+                    "times": ["04:21:39", "14:23:56"]
+                },
+                {
+                    "dates": ["2013-06-30", "2013-10-04"],
+                    "times": ["22:39:51", "20:34:13"]
+                },
+                {
+                    "dates": ["2014-07-16"],
+                    "times": ["02:28:40"]
+                }
+             ]
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": [
+                {
+                    "dates": ["2018-06-13"],
+                    "times": ["20:16:07"]
+                }
+             ]
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-05-29", "2015-06-01"],
+                    "times": ["16:46:17", "15:03:53"]
+                }
+             ]
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": [
+                {
+                    "dates": ["2011-10-08"],
+                    "times": ["12:02:23"]
+                },
+                {
+                    "dates": ["2014-08-18"],
+                    "times": ["02:11:11"]
+                },
+                {
+                    "dates": ["2016-01-07", "2016-10-21", "2016-12-01", "2016-12-29"],
+                    "times": ["05:27:51", "20:15:55", "03:57:10", "01:54:42"]
+                },
+                {
+                    "dates": ["2018-07-22", "2018-09-07"],
+                    "times": ["19:55:31", "01:42:54"]
+                },
+                {
+                    "dates": ["2019-03-08"],
+                    "times": ["03:41:06"]
+                }
+             ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.03.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.03.query.sqlpp
index 30d21cfd6c..3406a35df0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.03.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times CT, CT.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.04.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.04.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.04.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.05.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.05.query.sqlpp
index 30d21cfd6c..3406a35df0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.05.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times CT, CT.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.06.update.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.06.update.sqlpp
index 075d204e2d..ea1dba3af8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.06.update.sqlpp
@@ -17,6 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+DELETE FROM YelpCheckin C
+WHERE C.business_id != "--1UhMGODdWsrMastO9DZw";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.07.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.07.query.sqlpp
index 30d21cfd6c..3406a35df0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.07.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times CT, CT.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.08.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.08.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.08.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.09.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.09.query.sqlpp
index 30d21cfd6c..3406a35df0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.09.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times CT, CT.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.10.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.10.update.sqlpp
new file mode 100644
index 0000000000..b5b6c72d7f
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.10.update.sqlpp
@@ -0,0 +1,425 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+UPSERT INTO YelpCheckin (
+      [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": [
+                {
+                    "dates": ["2016-04-26", "2016-08-30", "2016-10-15", "2016-11-18"],
+                    "times": ["19:49:16", "18:36:57", "02:45:18", "01:54:50"]
+                },
+                {
+                    "dates": ["2017-04-20", "2017-05-03"],
+                    "times": ["18:39:06", "17:58:02"]
+                },
+                {
+                    "dates": ["2019-03-19"],
+                    "times": ["22:04:48"]
+                }
+             ]
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": [
+                {
+                    "dates": ["2018-05-25", "2018-09-18"],
+                    "times": ["19:52:07", "16:09:44"]
+                },
+                {
+                    "dates": ["2019-10-18"],
+                    "times": ["21:29:09"]
+                }
+             ]
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": [
+                {
+                    "dates": ["2019-06-07"],
+                    "times": ["17:54:58"]
+                }
+             ]
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": [
+                {
+                    "dates": ["2011-05-03", "2011-08-23"],
+                    "times": ["20:54:05", "20:49:45"]
+                },
+                {
+                    "dates": ["2014-12-04"],
+                    "times": ["06:13:01"]
+                },
+                {
+                    "dates": ["2016-11-16"],
+                    "times": ["19:25:55"]
+                }
+             ]
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": [
+               {
+                    "dates": ["2016-06-18", "2016-10-15"],
+                    "times": ["21:35:45", "18:17:51"]
+                }
+             ]
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-04-02"],
+                    "times": ["21:45:17"]
+                }
+             ]
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": [
+                {
+                    "dates": ["2014-08-27"],
+                    "times": ["17:49:18"]
+                },
+                {
+                    "dates": ["2015-12-19"],
+                    "times": ["21:30:31"]
+                },
+                {
+                    "dates": ["2018-11-27"],
+                    "times": ["15:53:50"]
+                }
+             ]
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": [
+                {
+                    "dates": ["2014-01-28", "2014-11-16"],
+                    "times": ["20:56:04", "16:11:58"]
+                },
+                {
+                    "dates": ["2015-11-15", "2015-11-15"],
+                    "times": ["19:21:53", "19:33:39"]
+                }
+             ]
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": [
+                {
+                    "dates": ["2019-04-11"],
+                    "times": ["18:30:12"]
+                }
+             ]
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-06-06"],
+                    "times": ["20:01:06"]
+                },
+                {
+                    "dates": ["2019-03-14"],
+                    "times": ["22:01:52"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": [
+                {
+                    "dates": ["2018-09-29", "2018-10-20", "2018-10-20"],
+                    "times": ["18:55:17", "16:48:05", "22:20:24"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": [
+                {
+                    "dates": ["2011-04-23"],
+                    "times": ["21:11:22"]
+                },
+                {
+                    "dates": ["2014-05-04", "2014-05-11", "2014-06-04"],
+                    "times": ["19:42:48", "19:16:08", "19:14:18"]
+                },
+                {
+                    "dates": ["2015-12-05"],
+                    "times": ["19:22:42"]
+                },
+                {
+                    "dates": ["2017-05-15"],
+                    "times": ["23:19:00"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": [
+                {
+                    "dates": ["2012-07-13"],
+                    "times": ["21:43:57"]
+                },
+                {
+                    "dates": ["2016-12-24"],
+                    "times": ["02:27:31"]
+                },
+                {
+                    "dates": ["2017-08-31"],
+                    "times": ["00:35:26"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": [
+                {
+                    "dates": ["2013-04-13", "2013-08-19", "2013-10-04"],
+                    "times": ["12:35:33", "23:35:49", "19:14:56"]
+                }
+
+             ]
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": [
+                {
+                    "dates": ["2016-09-10"],
+                    "times": ["19:26:19"]
+                },
+                {
+                    "dates": ["2018-09-08"],
+                    "times": ["14:15:37"]
+                },
+                {
+                    "dates": ["2019-09-13"],
+                    "times": ["22:47:25"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": [
+                 {
+                    "dates": ["2017-05-19", "2017-05-19", "2017-08-28", "2017-09-20", "2017-10-01", "2017-10-01", "2017-12-27"],
+                    "times": ["14:30:16", "14:30:25", "15:49:37", "20:19:51", "16:31:05", "16:56:27", "23:33:20"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": [
+                {
+                    "dates": ["2019-06-05"],
+                    "times": ["18:22:49"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": [
+                {
+                    "dates": ["2011-09-24"],
+                    "times": ["21:37:32"]
+                },
+                {
+                    "dates": ["2014-03-10"],
+                    "times": ["20:20:07"]
+                },
+                {
+                    "dates": ["2015-05-27", "2015-08-29"],
+                    "times": ["00:40:24", "17:58:15"]
+                },
+                {
+                    "dates": ["2018-03-16"],
+                    "times": ["15:03:26"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": [
+                {
+                    "dates": ["2015-03-16", "2015-12-21"],
+                    "times": ["23:51:16", "04:48:01"]
+                },
+                {
+                    "dates": ["2016-10-28", "2016-10-28"],
+                    "times": ["20:22:42", "20:23:00"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": [
+                {
+                    "dates": ["2013-10-22"],
+                    "times": ["16:49:21"]
+                },
+                {
+                    "dates": ["2014-11-21"],
+                    "times": ["17:39:24"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": [
+                {
+                    "dates": ["2014-08-07", "2014-09-16", "2014-10-12"],
+                    "times": ["18:30:48", "20:41:45", "23:22:27"]
+                },
+                {
+                    "dates": ["2015-07-21", "2015-07-21"],
+                    "times": ["20:43:56", "20:45:07"]
+                }
+             ]
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": [
+                {
+                    "dates": ["2015-05-02", "2015-05-06", "2015-09-26"],
+                    "times": ["19:49:05", "03:52:18", "01:13:19"]
+                }
+
+             ]
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-04-11", "2015-11-21"],
+                    "times": ["13:14:14", "16:05:56"]
+                },
+                {
+                    "dates": ["2016-05-06"],
+                    "times": ["14:10:04"]
+                },
+                {
+                    "dates": ["2017-08-09", "2017-10-21"],
+                    "times": ["15:15:10", "15:12:56"]
+                }
+             ]
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": [
+                {
+                    "dates": ["2015-12-03"],
+                    "times": ["18:44:00"]
+                },
+                {
+                    "dates": ["2016-03-17", "2016-11-02"],
+                    "times": ["18:19:21", "15:58:38"]
+                }
+             ]
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": [
+                {
+                    "dates": ["2019-04-04"],
+                    "times": ["22:02:37"]
+                }
+             ]
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": [
+                {
+                    "dates": ["2019-02-27"],
+                    "times": ["14:03:08"]
+                }
+             ]
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": [
+                {
+                    "dates": ["2011-12-21"],
+                    "times": ["19:02:51"]
+                },
+                {
+                    "dates": ["2012-04-15", "2012-04-15"],
+                    "times": ["04:21:39", "14:23:56"]
+                },
+                {
+                    "dates": ["2013-06-30", "2013-10-04"],
+                    "times": ["22:39:51", "20:34:13"]
+                },
+                {
+                    "dates": ["2014-07-16"],
+                    "times": ["02:28:40"]
+                }
+             ]
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": [
+                {
+                    "dates": ["2018-06-13"],
+                    "times": ["20:16:07"]
+                }
+             ]
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": [
+                {
+                    "dates": ["2015-05-29", "2015-06-01"],
+                    "times": ["16:46:17", "15:03:53"]
+                }
+             ]
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": [
+                {
+                    "dates": ["2011-10-08"],
+                    "times": ["12:02:23"]
+                },
+                {
+                    "dates": ["2014-08-18"],
+                    "times": ["02:11:11"]
+                },
+                {
+                    "dates": ["2016-01-07", "2016-10-21", "2016-12-01", "2016-12-29"],
+                    "times": ["05:27:51", "20:15:55", "03:57:10", "01:54:42"]
+                },
+                {
+                    "dates": ["2018-07-22", "2018-09-07"],
+                    "times": ["19:55:31", "01:42:54"]
+                },
+                {
+                    "dates": ["2019-03-08"],
+                    "times": ["03:41:06"]
+                }
+             ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.11.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.11.query.sqlpp
index 30d21cfd6c..3406a35df0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.11.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times CT, CT.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.12.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.12.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.12.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.13.query.sqlpp
similarity index 86%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.13.query.sqlpp
index 30d21cfd6c..3406a35df0 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/use-case-4/use-case-4.13.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times CT, CT.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.01.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.01.ddl.sqlpp
new file mode 100644
index 0000000000..6a0d41da06
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.01.ddl.sqlpp
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+/*
+ * Description: Verify the following DML actions for an array->atomic index, with an additional atomic index:
+ *     1) Insert into an empty index (non bulk-load operation), additionally with two records that have no array-index qualifying entries.
+ *     2) Delete all-but-one entry from the index.
+ *     3) Upsert all *original* (all records have qualifying array-index entries now) entries into the index.
+ */
+
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
+
+CREATE TYPE CheckinType AS {
+    checkin_id: int
+};
+
+CREATE DATASET YelpCheckin(CheckinType) PRIMARY KEY checkin_id WITH {
+    "storage-format" : {"format" : "column"}
+};
+
+CREATE INDEX IdxYelpCheckinDates ON YelpCheckin (UNNEST dates : string ) EXCLUDE UNKNOWN KEY;
+CREATE INDEX IdxYelpCheckinBusinessID ON YelpCheckin (business_id : string ?);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.02.update.sqlpp
new file mode 100644
index 0000000000..8ee1570145
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.02.update.sqlpp
@@ -0,0 +1,302 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+INSERT INTO YelpCheckin (
+    [
+        {
+            "checkin_id": 1,
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "dates": [
+                "2016-04-26 19:49:16",
+                "2016-08-30 18:36:57",
+                "2016-10-15 02:45:18",
+                "2016-11-18 01:54:50",
+                "2017-04-20 18:39:06",
+                "2017-05-03 17:58:02",
+                "2019-03-19 22:04:48"
+            ]
+        },
+        {
+            "checkin_id": 2,
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "dates": [
+                "2018-05-25 19:52:07",
+                "2018-09-18 16:09:44",
+                "2019-10-18 21:29:09"
+            ]
+        },
+        {
+            "checkin_id": 3,
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "dates": [
+                "2019-06-07 17:54:58"
+            ]
+        },
+        {
+            "checkin_id": 4,
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "dates": [
+                "2011-05-03 20:54:05",
+                "2011-08-23 20:49:45",
+                "2014-12-04 06:13:01",
+                "2016-11-16 19:25:55"
+            ]
+        },
+        {
+            "checkin_id": 5,
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "dates": [
+                "2016-06-18 21:35:45",
+                "2016-10-15 18:17:51"
+            ]
+        },
+        {
+            "checkin_id": 6,
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "dates": [
+                "2015-04-02 21:45:17"
+            ]
+        },
+        {
+            "checkin_id": 7,
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "dates": [
+                "2014-08-27 17:49:18",
+                "2015-12-19 21:30:31",
+                "2018-11-27 15:53:50"
+            ]
+        },
+        {
+            "checkin_id": 8,
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "dates": [
+                "2014-01-28 20:56:04",
+                "2014-11-16 16:11:58",
+                "2015-11-15 19:21:53",
+                "2015-11-15 19:33:39"
+            ]
+        },
+        {
+            "checkin_id": 9,
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "dates": [
+                "2019-04-11 18:30:12"
+            ]
+        },
+        {
+            "checkin_id": 10,
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "dates": [
+                "2015-06-06 20:01:06",
+                "2019-03-14 22:01:52"
+            ]
+        },
+        {
+            "checkin_id": 11,
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "dates": [
+                "2018-09-29 18:55:17",
+                "2018-10-20 16:48:05",
+                "2018-10-20 22:20:24"
+            ]
+        },
+        {
+            "checkin_id": 12,
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "dates": [
+                "2011-04-23 21:11:22",
+                "2014-05-04 19:42:48",
+                "2014-05-11 19:16:08",
+                "2014-06-04 19:14:18",
+                "2015-12-05 19:22:42",
+                "2017-05-15 23:19:00"
+            ]
+        },
+        {
+            "checkin_id": 13,
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "dates": [
+                "2012-07-13 21:43:57",
+                "2016-12-24 02:27:31",
+                "2017-08-31 00:35:26"
+            ]
+        },
+        {
+            "checkin_id": 14,
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "dates": [
+                "2013-04-13 12:35:33",
+                "2013-08-19 23:35:49",
+                "2013-10-04 19:14:56"
+            ]
+        },
+        {
+            "checkin_id": 15,
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "dates": [
+                "2016-09-10 19:26:19",
+                "2018-09-08 14:15:37",
+                "2019-09-13 22:47:25"
+            ]
+        },
+        {
+            "checkin_id": 16,
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "dates": [
+                "2017-05-19 14:30:16",
+                "2017-05-19 14:30:25",
+                "2017-08-28 15:49:37",
+                "2017-09-20 20:19:51",
+                "2017-10-01 16:31:05",
+                "2017-10-01 16:56:27",
+                "2017-12-27 23:33:20"
+            ]
+        },
+        {
+            "checkin_id": 17,
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "dates": [
+                "2019-06-05 18:22:49"
+            ]
+        },
+        {
+            "checkin_id": 18,
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "dates": [
+                "2011-09-24 21:37:32",
+                "2014-03-10 20:20:07",
+                "2015-05-27 00:40:24",
+                "2015-08-29 17:58:15",
+                "2018-03-16 15:03:26"
+            ]
+        },
+        {
+            "checkin_id": 19,
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "dates": [
+                "2015-03-16 23:51:16",
+                "2015-12-21 04:48:01",
+                "2016-10-28 20:22:42",
+                "2016-10-28 20:23:00"
+            ]
+        },
+        {
+            "checkin_id": 20,
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "dates": [
+                "2013-10-22 16:49:21",
+                "2014-11-21 17:39:24"
+            ]
+        },
+        {
+            "checkin_id": 21,
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "dates": [
+                "2014-08-07 18:30:48",
+                "2014-09-16 20:41:45",
+                "2014-10-12 23:22:27",
+                "2015-07-21 20:43:56",
+                "2015-07-21 20:45:07"
+            ]
+        },
+        {
+            "checkin_id": 22,
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "dates": [
+                "2015-05-02 19:49:05",
+                "2015-05-06 03:52:18",
+                "2015-09-26 01:13:19"
+            ]
+        },
+        {
+            "checkin_id": 23,
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "dates": [
+                "2015-04-11 13:14:14",
+                "2015-11-21 16:05:56",
+                "2016-05-06 14:10:04",
+                "2017-08-09 15:15:10",
+                "2017-10-21 15:12:56"
+            ]
+        },
+        {
+            "checkin_id": 24,
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "dates": [
+                "2015-12-03 18:44:00",
+                "2016-03-17 18:19:21",
+                "2016-11-02 15:58:38"
+            ]
+        },
+        {
+            "checkin_id": 25,
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "dates": []
+        },
+        {
+            "checkin_id": 26,
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "dates": []
+        },
+        {
+            "checkin_id": 27,
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "dates": [
+                "2011-12-21 19:02:51",
+                "2012-04-15 04:21:39",
+                "2012-04-15 14:23:56",
+                "2013-06-30 22:39:51",
+                "2013-10-04 20:34:13",
+                "2014-07-16 02:28:40"
+            ]
+        },
+        {
+            "checkin_id": 28,
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "dates": [
+                "2018-06-13 20:16:07"
+            ]
+        },
+        {
+            "checkin_id": 29,
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "dates": [
+                "2015-05-29 16:46:17",
+                "2015-06-01 15:03:53"
+            ]
+        },
+        {
+            "checkin_id": 30,
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "dates": [
+                "2011-10-08 12:02:23",
+                "2014-08-18 02:11:11",
+                "2016-01-07 05:27:51",
+                "2016-10-21 20:15:55",
+                "2016-12-01 03:57:10",
+                "2016-12-29 01:54:42",
+                "2018-07-22 19:55:31",
+                "2018-09-07 01:42:54",
+                "2019-03-08 03:41:06"
+            ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.03.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.03.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.03.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.04.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.04.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.04.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.05.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.05.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.05.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.06.update.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.06.update.sqlpp
index 075d204e2d..ea1dba3af8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.06.update.sqlpp
@@ -17,6 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+DELETE FROM YelpCheckin C
+WHERE C.business_id != "--1UhMGODdWsrMastO9DZw";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.07.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.07.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.07.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.08.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.08.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.08.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.09.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.09.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.09.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.10.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.10.update.sqlpp
new file mode 100644
index 0000000000..965ccc821c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.10.update.sqlpp
@@ -0,0 +1,306 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+UPSERT INTO YelpCheckin (
+    [
+        {
+            "checkin_id": 1,
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "dates": [
+                "2016-04-26 19:49:16",
+                "2016-08-30 18:36:57",
+                "2016-10-15 02:45:18",
+                "2016-11-18 01:54:50",
+                "2017-04-20 18:39:06",
+                "2017-05-03 17:58:02",
+                "2019-03-19 22:04:48"
+            ]
+        },
+        {
+            "checkin_id": 2,
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "dates": [
+                "2018-05-25 19:52:07",
+                "2018-09-18 16:09:44",
+                "2019-10-18 21:29:09"
+            ]
+        },
+        {
+            "checkin_id": 3,
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "dates": [
+                "2019-06-07 17:54:58"
+            ]
+        },
+        {
+            "checkin_id": 4,
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "dates": [
+                "2011-05-03 20:54:05",
+                "2011-08-23 20:49:45",
+                "2014-12-04 06:13:01",
+                "2016-11-16 19:25:55"
+            ]
+        },
+        {
+            "checkin_id": 5,
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "dates": [
+                "2016-06-18 21:35:45",
+                "2016-10-15 18:17:51"
+            ]
+        },
+        {
+            "checkin_id": 6,
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "dates": [
+                "2015-04-02 21:45:17"
+            ]
+        },
+        {
+            "checkin_id": 7,
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "dates": [
+                "2014-08-27 17:49:18",
+                "2015-12-19 21:30:31",
+                "2018-11-27 15:53:50"
+            ]
+        },
+        {
+            "checkin_id": 8,
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "dates": [
+                "2014-01-28 20:56:04",
+                "2014-11-16 16:11:58",
+                "2015-11-15 19:21:53",
+                "2015-11-15 19:33:39"
+            ]
+        },
+        {
+            "checkin_id": 9,
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "dates": [
+                "2019-04-11 18:30:12"
+            ]
+        },
+        {
+            "checkin_id": 10,
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "dates": [
+                "2015-06-06 20:01:06",
+                "2019-03-14 22:01:52"
+            ]
+        },
+        {
+            "checkin_id": 11,
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "dates": [
+                "2018-09-29 18:55:17",
+                "2018-10-20 16:48:05",
+                "2018-10-20 22:20:24"
+            ]
+        },
+        {
+            "checkin_id": 12,
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "dates": [
+                "2011-04-23 21:11:22",
+                "2014-05-04 19:42:48",
+                "2014-05-11 19:16:08",
+                "2014-06-04 19:14:18",
+                "2015-12-05 19:22:42",
+                "2017-05-15 23:19:00"
+            ]
+        },
+        {
+            "checkin_id": 13,
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "dates": [
+                "2012-07-13 21:43:57",
+                "2016-12-24 02:27:31",
+                "2017-08-31 00:35:26"
+            ]
+        },
+        {
+            "checkin_id": 14,
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "dates": [
+                "2013-04-13 12:35:33",
+                "2013-08-19 23:35:49",
+                "2013-10-04 19:14:56"
+            ]
+        },
+        {
+            "checkin_id": 15,
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "dates": [
+                "2016-09-10 19:26:19",
+                "2018-09-08 14:15:37",
+                "2019-09-13 22:47:25"
+            ]
+        },
+        {
+            "checkin_id": 16,
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "dates": [
+                "2017-05-19 14:30:16",
+                "2017-05-19 14:30:25",
+                "2017-08-28 15:49:37",
+                "2017-09-20 20:19:51",
+                "2017-10-01 16:31:05",
+                "2017-10-01 16:56:27",
+                "2017-12-27 23:33:20"
+            ]
+        },
+        {
+            "checkin_id": 17,
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "dates": [
+                "2019-06-05 18:22:49"
+            ]
+        },
+        {
+            "checkin_id": 18,
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "dates": [
+                "2011-09-24 21:37:32",
+                "2014-03-10 20:20:07",
+                "2015-05-27 00:40:24",
+                "2015-08-29 17:58:15",
+                "2018-03-16 15:03:26"
+            ]
+        },
+        {
+            "checkin_id": 19,
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "dates": [
+                "2015-03-16 23:51:16",
+                "2015-12-21 04:48:01",
+                "2016-10-28 20:22:42",
+                "2016-10-28 20:23:00"
+            ]
+        },
+        {
+            "checkin_id": 20,
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "dates": [
+                "2013-10-22 16:49:21",
+                "2014-11-21 17:39:24"
+            ]
+        },
+        {
+            "checkin_id": 21,
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "dates": [
+                "2014-08-07 18:30:48",
+                "2014-09-16 20:41:45",
+                "2014-10-12 23:22:27",
+                "2015-07-21 20:43:56",
+                "2015-07-21 20:45:07"
+            ]
+        },
+        {
+            "checkin_id": 22,
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "dates": [
+                "2015-05-02 19:49:05",
+                "2015-05-06 03:52:18",
+                "2015-09-26 01:13:19"
+            ]
+        },
+        {
+            "checkin_id": 23,
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "dates": [
+                "2015-04-11 13:14:14",
+                "2015-11-21 16:05:56",
+                "2016-05-06 14:10:04",
+                "2017-08-09 15:15:10",
+                "2017-10-21 15:12:56"
+            ]
+        },
+        {
+            "checkin_id": 24,
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "dates": [
+                "2015-12-03 18:44:00",
+                "2016-03-17 18:19:21",
+                "2016-11-02 15:58:38"
+            ]
+        },
+        {
+            "checkin_id": 25,
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "dates": [
+                "2019-04-04 22:02:37"
+            ]
+        },
+        {
+            "checkin_id": 26,
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "dates": [
+                "2019-02-27 14:03:08"
+            ]
+        },
+        {
+            "checkin_id": 27,
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "dates": [
+                "2011-12-21 19:02:51",
+                "2012-04-15 04:21:39",
+                "2012-04-15 14:23:56",
+                "2013-06-30 22:39:51",
+                "2013-10-04 20:34:13",
+                "2014-07-16 02:28:40"
+            ]
+        },
+        {
+            "checkin_id": 28,
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "dates": [
+                "2018-06-13 20:16:07"
+            ]
+        },
+        {
+            "checkin_id": 29,
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "dates": [
+                "2015-05-29 16:46:17",
+                "2015-06-01 15:03:53"
+            ]
+        },
+        {
+            "checkin_id": 30,
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "dates": [
+                "2011-10-08 12:02:23",
+                "2014-08-18 02:11:11",
+                "2016-01-07 05:27:51",
+                "2016-10-21 20:15:55",
+                "2016-12-01 03:57:10",
+                "2016-12-29 01:54:42",
+                "2018-07-22 19:55:31",
+                "2018-09-07 01:42:54",
+                "2019-03-08 03:41:06"
+            ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.11.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.11.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.11.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.12.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.12.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.12.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.13.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.13.query.sqlpp
index 30d21cfd6c..69fe7cc0d2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.13.query.sqlpp
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.dates D
+WHERE D > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.01.ddl.sqlpp
similarity index 55%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.01.ddl.sqlpp
index a271778586..d0ae055859 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.01.ddl.sqlpp
@@ -17,15 +17,25 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
+/*
+ * Description: Verify the following DML actions for a composite array->atomic index:
+ *     1) Insert into an empty index (non bulk-load operation).
+ *     2) Delete all-but-one entry from the index.
+ *     3) Upsert all entries into the index.
+ */
+
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
+
+CREATE TYPE CheckinType AS {
+    checkin_id: int
+};
 
-CREATE TYPE ColumnType AS {
-    id: int
+CREATE DATASET YelpCheckin(CheckinType) PRIMARY KEY checkin_id WITH {
+    "storage-format" : {"format" : "column"}
 };
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
-};
\ No newline at end of file
+CREATE INDEX  IdxYelpCheckinDates
+ON            YelpCheckin (UNNEST checkin_times SELECT date : string , time : string )
+EXCLUDE UNKNOWN KEY;
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.02.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.02.update.sqlpp
new file mode 100644
index 0000000000..2f7a9fdca7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.02.update.sqlpp
@@ -0,0 +1,306 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+INSERT INTO YelpCheckin (
+    [
+        {
+            "checkin_id": 1,
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": [ 
+                {"date": "2016-04-26", "time": "19:49:16"},
+                {"date": "2016-08-30", "time": "18:36:57"},
+                {"date": "2016-10-15", "time": "02:45:18"},
+                {"date": "2016-11-18", "time": "01:54:50"},
+                {"date": "2017-04-20", "time": "18:39:06"},
+                {"date": "2017-05-03", "time": "17:58:02"},
+                {"date": "2019-03-19", "time": "22:04:48"}
+             ]
+        },
+        {
+            "checkin_id": 2,
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": [ 
+                {"date": "2018-05-25", "time": "19:52:07"},
+                {"date": "2018-09-18", "time": "16:09:44"},
+                {"date": "2019-10-18", "time": "21:29:09"}
+             ]
+        },
+        {
+            "checkin_id": 3,
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": [ 
+                {"date": "2019-06-07", "time": "17:54:58"}
+             ]
+        },
+        {
+            "checkin_id": 4,
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": [ 
+                {"date": "2011-05-03", "time": "20:54:05"},
+                {"date": "2011-08-23", "time": "20:49:45"},
+                {"date": "2014-12-04", "time": "06:13:01"},
+                {"date": "2016-11-16", "time": "19:25:55"}
+             ]
+        },
+        {
+            "checkin_id": 5,
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": [ 
+                {"date": "2016-06-18", "time": "21:35:45"},
+                {"date": "2016-10-15", "time": "18:17:51"}
+             ]
+        },
+        {
+            "checkin_id": 6,
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": [ 
+                {"date": "2015-04-02", "time": "21:45:17"}
+             ]
+        },
+        {
+            "checkin_id": 7,
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": [ 
+                {"date": "2014-08-27", "time": "17:49:18"},
+                {"date": "2015-12-19", "time": "21:30:31"},
+                {"date": "2018-11-27", "time": "15:53:50"}
+             ]
+        },
+        {
+            "checkin_id": 8,
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": [ 
+                {"date": "2014-01-28", "time": "20:56:04"},
+                {"date": "2014-11-16", "time": "16:11:58"},
+                {"date": "2015-11-15", "time": "19:21:53"},
+                {"date": "2015-11-15", "time": "19:33:39"}
+             ]
+        },
+        {
+            "checkin_id": 9,
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": [ 
+                {"date": "2019-04-11", "time": "18:30:12"}
+             ]
+        },
+        {
+            "checkin_id": 10,
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": [ 
+                {"date": "2015-06-06", "time": "20:01:06"},
+                {"date": "2019-03-14", "time": "22:01:52"}
+             ]
+        },
+        {
+            "checkin_id": 11,
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": [ 
+                {"date": "2018-09-29", "time": "18:55:17"},
+                {"date": "2018-10-20", "time": "16:48:05"},
+                {"date": "2018-10-20", "time": "22:20:24"}
+             ]
+        },
+        {
+            "checkin_id": 12,
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": [ 
+                {"date": "2011-04-23", "time": "21:11:22"},
+                {"date": "2014-05-04", "time": "19:42:48"},
+                {"date": "2014-05-11", "time": "19:16:08"},
+                {"date": "2014-06-04", "time": "19:14:18"},
+                {"date": "2015-12-05", "time": "19:22:42"},
+                {"date": "2017-05-15", "time": "23:19:00"}
+             ]
+        },
+        {
+            "checkin_id": 13,
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": [ 
+                {"date": "2012-07-13", "time": "21:43:57"},
+                {"date": "2016-12-24", "time": "02:27:31"},
+                {"date": "2017-08-31", "time": "00:35:26"}
+             ]
+        },
+        {
+            "checkin_id": 14,
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": [ 
+                {"date": "2013-04-13", "time": "12:35:33"},
+                {"date": "2013-08-19", "time": "23:35:49"},
+                {"date": "2013-10-04", "time": "19:14:56"}
+             ]
+        },
+        {
+            "checkin_id": 15,
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": [ 
+                {"date": "2016-09-10", "time": "19:26:19"},
+                {"date": "2018-09-08", "time": "14:15:37"},
+                {"date": "2019-09-13", "time": "22:47:25"}
+             ]
+        },
+        {
+            "checkin_id": 16,
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": [ 
+                {"date": "2017-05-19", "time": "14:30:16"},
+                {"date": "2017-05-19", "time": "14:30:25"},
+                {"date": "2017-08-28", "time": "15:49:37"},
+                {"date": "2017-09-20", "time": "20:19:51"},
+                {"date": "2017-10-01", "time": "16:31:05"},
+                {"date": "2017-10-01", "time": "16:56:27"},
+                {"date": "2017-12-27", "time": "23:33:20"}
+             ]
+        },
+        {
+            "checkin_id": 17,
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": [ 
+                {"date": "2019-06-05", "time": "18:22:49"}
+             ]
+        },
+        {
+            "checkin_id": 18,
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": [ 
+                {"date": "2011-09-24", "time": "21:37:32"},
+                {"date": "2014-03-10", "time": "20:20:07"},
+                {"date": "2015-05-27", "time": "00:40:24"},
+                {"date": "2015-08-29", "time": "17:58:15"},
+                {"date": "2018-03-16", "time": "15:03:26"}
+             ]
+        },
+        {
+            "checkin_id": 19,
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": [ 
+                {"date": "2015-03-16", "time": "23:51:16"},
+                {"date": "2015-12-21", "time": "04:48:01"},
+                {"date": "2016-10-28", "time": "20:22:42"},
+                {"date": "2016-10-28", "time": "20:23:00"}
+             ]
+        },
+        {
+            "checkin_id": 20,
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": [ 
+                {"date": "2013-10-22", "time": "16:49:21"},
+                {"date": "2014-11-21", "time": "17:39:24"}
+             ]
+        },
+        {
+            "checkin_id": 21,
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": [ 
+                {"date": "2014-08-07", "time": "18:30:48"},
+                {"date": "2014-09-16", "time": "20:41:45"},
+                {"date": "2014-10-12", "time": "23:22:27"},
+                {"date": "2015-07-21", "time": "20:43:56"},
+                {"date": "2015-07-21", "time": "20:45:07"}
+             ]
+        },
+        {
+            "checkin_id": 22,
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": [ 
+                {"date": "2015-05-02", "time": "19:49:05"},
+                {"date": "2015-05-06", "time": "03:52:18"},
+                {"date": "2015-09-26", "time": "01:13:19"}
+             ]
+        },
+        {
+            "checkin_id": 23,
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": [ 
+                {"date": "2015-04-11", "time": "13:14:14"},
+                {"date": "2015-11-21", "time": "16:05:56"},
+                {"date": "2016-05-06", "time": "14:10:04"},
+                {"date": "2017-08-09", "time": "15:15:10"},
+                {"date": "2017-10-21", "time": "15:12:56"}
+             ]
+        },
+        {
+            "checkin_id": 24,
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": [ 
+                {"date": "2015-12-03", "time": "18:44:00"},
+                {"date": "2016-03-17", "time": "18:19:21"},
+                {"date": "2016-11-02", "time": "15:58:38"}
+             ]
+        },
+        {
+            "checkin_id": 25,
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": [ 
+                {"date": "2019-04-04", "time": "22:02:37"}
+             ]
+        },
+        {
+            "checkin_id": 26,
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": [ 
+                {"date": "2019-02-27", "time": "14:03:08"}
+             ]
+        },
+        {
+            "checkin_id": 27,
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": [ 
+                {"date": "2011-12-21", "time": "19:02:51"},
+                {"date": "2012-04-15", "time": "04:21:39"},
+                {"date": "2012-04-15", "time": "14:23:56"},
+                {"date": "2013-06-30", "time": "22:39:51"},
+                {"date": "2013-10-04", "time": "20:34:13"},
+                {"date": "2014-07-16", "time": "02:28:40"}
+             ]
+        },
+        {
+            "checkin_id": 28,
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": [ 
+                {"date": "2018-06-13", "time": "20:16:07"}
+             ]
+        },
+        {
+            "checkin_id": 29,
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": [ 
+                {"date": "2015-05-29", "time": "16:46:17"},
+                {"date": "2015-06-01", "time": "15:03:53"}
+             ]
+        },
+        {
+            "checkin_id": 30,
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": [ 
+                {"date": "2011-10-08", "time": "12:02:23"},
+                {"date": "2014-08-18", "time": "02:11:11"},
+                {"date": "2016-01-07", "time": "05:27:51"},
+                {"date": "2016-10-21", "time": "20:15:55"},
+                {"date": "2016-12-01", "time": "03:57:10"},
+                {"date": "2016-12-29", "time": "01:54:42"},
+                {"date": "2018-07-22", "time": "19:55:31"},
+                {"date": "2018-09-07", "time": "01:42:54"},
+                {"date": "2019-03-08", "time": "03:41:06"}
+             ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.03.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.03.query.sqlpp
index 30d21cfd6c..baf548c748 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.03.query.sqlpp
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " " AND 
+      D.time > " " AND 
+      C.business_id > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.04.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.04.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.04.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.05.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.05.query.sqlpp
index 30d21cfd6c..baf548c748 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.05.query.sqlpp
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " " AND 
+      D.time > " " AND 
+      C.business_id > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.06.update.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.06.update.sqlpp
index 075d204e2d..ea1dba3af8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.06.update.sqlpp
@@ -17,6 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+DELETE FROM YelpCheckin C
+WHERE C.business_id != "--1UhMGODdWsrMastO9DZw";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.07.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.07.query.sqlpp
index 30d21cfd6c..baf548c748 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.07.query.sqlpp
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " " AND 
+      D.time > " " AND 
+      C.business_id > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.08.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.08.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.08.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.09.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.09.query.sqlpp
index 30d21cfd6c..baf548c748 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.09.query.sqlpp
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " " AND 
+      D.time > " " AND 
+      C.business_id > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.10.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.10.update.sqlpp
new file mode 100644
index 0000000000..5ec78798dc
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.10.update.sqlpp
@@ -0,0 +1,306 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+UPSERT INTO YelpCheckin (
+    [
+        {
+            "checkin_id": 1,
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "checkin_times": [ 
+                {"date": "2016-04-26", "time": "19:49:16"},
+                {"date": "2016-08-30", "time": "18:36:57"},
+                {"date": "2016-10-15", "time": "02:45:18"},
+                {"date": "2016-11-18", "time": "01:54:50"},
+                {"date": "2017-04-20", "time": "18:39:06"},
+                {"date": "2017-05-03", "time": "17:58:02"},
+                {"date": "2019-03-19", "time": "22:04:48"}
+             ]
+        },
+        {
+            "checkin_id": 2,
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "checkin_times": [ 
+                {"date": "2018-05-25", "time": "19:52:07"},
+                {"date": "2018-09-18", "time": "16:09:44"},
+                {"date": "2019-10-18", "time": "21:29:09"}
+             ]
+        },
+        {
+            "checkin_id": 3,
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "checkin_times": [ 
+                {"date": "2019-06-07", "time": "17:54:58"}
+             ]
+        },
+        {
+            "checkin_id": 4,
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "checkin_times": [ 
+                {"date": "2011-05-03", "time": "20:54:05"},
+                {"date": "2011-08-23", "time": "20:49:45"},
+                {"date": "2014-12-04", "time": "06:13:01"},
+                {"date": "2016-11-16", "time": "19:25:55"}
+             ]
+        },
+        {
+            "checkin_id": 5,
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "checkin_times": [ 
+                {"date": "2016-06-18", "time": "21:35:45"},
+                {"date": "2016-10-15", "time": "18:17:51"}
+             ]
+        },
+        {
+            "checkin_id": 6,
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "checkin_times": [ 
+                {"date": "2015-04-02", "time": "21:45:17"}
+             ]
+        },
+        {
+            "checkin_id": 7,
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "checkin_times": [ 
+                {"date": "2014-08-27", "time": "17:49:18"},
+                {"date": "2015-12-19", "time": "21:30:31"},
+                {"date": "2018-11-27", "time": "15:53:50"}
+             ]
+        },
+        {
+            "checkin_id": 8,
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "checkin_times": [ 
+                {"date": "2014-01-28", "time": "20:56:04"},
+                {"date": "2014-11-16", "time": "16:11:58"},
+                {"date": "2015-11-15", "time": "19:21:53"},
+                {"date": "2015-11-15", "time": "19:33:39"}
+             ]
+        },
+        {
+            "checkin_id": 9,
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "checkin_times": [ 
+                {"date": "2019-04-11", "time": "18:30:12"}
+             ]
+        },
+        {
+            "checkin_id": 10,
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "checkin_times": [ 
+                {"date": "2015-06-06", "time": "20:01:06"},
+                {"date": "2019-03-14", "time": "22:01:52"}
+             ]
+        },
+        {
+            "checkin_id": 11,
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "checkin_times": [ 
+                {"date": "2018-09-29", "time": "18:55:17"},
+                {"date": "2018-10-20", "time": "16:48:05"},
+                {"date": "2018-10-20", "time": "22:20:24"}
+             ]
+        },
+        {
+            "checkin_id": 12,
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "checkin_times": [ 
+                {"date": "2011-04-23", "time": "21:11:22"},
+                {"date": "2014-05-04", "time": "19:42:48"},
+                {"date": "2014-05-11", "time": "19:16:08"},
+                {"date": "2014-06-04", "time": "19:14:18"},
+                {"date": "2015-12-05", "time": "19:22:42"},
+                {"date": "2017-05-15", "time": "23:19:00"}
+             ]
+        },
+        {
+            "checkin_id": 13,
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "checkin_times": [ 
+                {"date": "2012-07-13", "time": "21:43:57"},
+                {"date": "2016-12-24", "time": "02:27:31"},
+                {"date": "2017-08-31", "time": "00:35:26"}
+             ]
+        },
+        {
+            "checkin_id": 14,
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "checkin_times": [ 
+                {"date": "2013-04-13", "time": "12:35:33"},
+                {"date": "2013-08-19", "time": "23:35:49"},
+                {"date": "2013-10-04", "time": "19:14:56"}
+             ]
+        },
+        {
+            "checkin_id": 15,
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "checkin_times": [ 
+                {"date": "2016-09-10", "time": "19:26:19"},
+                {"date": "2018-09-08", "time": "14:15:37"},
+                {"date": "2019-09-13", "time": "22:47:25"}
+             ]
+        },
+        {
+            "checkin_id": 16,
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "checkin_times": [ 
+                {"date": "2017-05-19", "time": "14:30:16"},
+                {"date": "2017-05-19", "time": "14:30:25"},
+                {"date": "2017-08-28", "time": "15:49:37"},
+                {"date": "2017-09-20", "time": "20:19:51"},
+                {"date": "2017-10-01", "time": "16:31:05"},
+                {"date": "2017-10-01", "time": "16:56:27"},
+                {"date": "2017-12-27", "time": "23:33:20"}
+             ]
+        },
+        {
+            "checkin_id": 17,
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "checkin_times": [ 
+                {"date": "2019-06-05", "time": "18:22:49"}
+             ]
+        },
+        {
+            "checkin_id": 18,
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "checkin_times": [ 
+                {"date": "2011-09-24", "time": "21:37:32"},
+                {"date": "2014-03-10", "time": "20:20:07"},
+                {"date": "2015-05-27", "time": "00:40:24"},
+                {"date": "2015-08-29", "time": "17:58:15"},
+                {"date": "2018-03-16", "time": "15:03:26"}
+             ]
+        },
+        {
+            "checkin_id": 19,
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "checkin_times": [ 
+                {"date": "2015-03-16", "time": "23:51:16"},
+                {"date": "2015-12-21", "time": "04:48:01"},
+                {"date": "2016-10-28", "time": "20:22:42"},
+                {"date": "2016-10-28", "time": "20:23:00"}
+             ]
+        },
+        {
+            "checkin_id": 20,
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "checkin_times": [ 
+                {"date": "2013-10-22", "time": "16:49:21"},
+                {"date": "2014-11-21", "time": "17:39:24"}
+             ]
+        },
+        {
+            "checkin_id": 21,
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "checkin_times": [ 
+                {"date": "2014-08-07", "time": "18:30:48"},
+                {"date": "2014-09-16", "time": "20:41:45"},
+                {"date": "2014-10-12", "time": "23:22:27"},
+                {"date": "2015-07-21", "time": "20:43:56"},
+                {"date": "2015-07-21", "time": "20:45:07"}
+             ]
+        },
+        {
+            "checkin_id": 22,
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "checkin_times": [ 
+                {"date": "2015-05-02", "time": "19:49:05"},
+                {"date": "2015-05-06", "time": "03:52:18"},
+                {"date": "2015-09-26", "time": "01:13:19"}
+             ]
+        },
+        {
+            "checkin_id": 23,
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "checkin_times": [ 
+                {"date": "2015-04-11", "time": "13:14:14"},
+                {"date": "2015-11-21", "time": "16:05:56"},
+                {"date": "2016-05-06", "time": "14:10:04"},
+                {"date": "2017-08-09", "time": "15:15:10"},
+                {"date": "2017-10-21", "time": "15:12:56"}
+             ]
+        },
+        {
+            "checkin_id": 24,
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "checkin_times": [ 
+                {"date": "2015-12-03", "time": "18:44:00"},
+                {"date": "2016-03-17", "time": "18:19:21"},
+                {"date": "2016-11-02", "time": "15:58:38"}
+             ]
+        },
+        {
+            "checkin_id": 25,
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "checkin_times": [ 
+                {"date": "2019-04-04", "time": "22:02:37"}
+             ]
+        },
+        {
+            "checkin_id": 26,
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "checkin_times": [ 
+                {"date": "2019-02-27", "time": "14:03:08"}
+             ]
+        },
+        {
+            "checkin_id": 27,
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "checkin_times": [ 
+                {"date": "2011-12-21", "time": "19:02:51"},
+                {"date": "2012-04-15", "time": "04:21:39"},
+                {"date": "2012-04-15", "time": "14:23:56"},
+                {"date": "2013-06-30", "time": "22:39:51"},
+                {"date": "2013-10-04", "time": "20:34:13"},
+                {"date": "2014-07-16", "time": "02:28:40"}
+             ]
+        },
+        {
+            "checkin_id": 28,
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "checkin_times": [ 
+                {"date": "2018-06-13", "time": "20:16:07"}
+             ]
+        },
+        {
+            "checkin_id": 29,
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "checkin_times": [ 
+                {"date": "2015-05-29", "time": "16:46:17"},
+                {"date": "2015-06-01", "time": "15:03:53"}
+             ]
+        },
+        {
+            "checkin_id": 30,
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "checkin_times": [ 
+                {"date": "2011-10-08", "time": "12:02:23"},
+                {"date": "2014-08-18", "time": "02:11:11"},
+                {"date": "2016-01-07", "time": "05:27:51"},
+                {"date": "2016-10-21", "time": "20:15:55"},
+                {"date": "2016-12-01", "time": "03:57:10"},
+                {"date": "2016-12-29", "time": "01:54:42"},
+                {"date": "2018-07-22", "time": "19:55:31"},
+                {"date": "2018-09-07", "time": "01:42:54"},
+                {"date": "2019-03-08", "time": "03:41:06"}
+             ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.11.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.11.query.sqlpp
index 30d21cfd6c..baf548c748 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.11.query.sqlpp
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " " AND 
+      D.time > " " AND 
+      C.business_id > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.12.get.http
similarity index 93%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.12.get.http
index 57d830aed0..a55ce93039 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.12.get.http
@@ -16,4 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/connector?dataverseName=test&datasetName=ColumnDataset
\ No newline at end of file
+/connector?dataverseName=TestYelp&datasetName=YelpCheckin
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.13.query.sqlpp
similarity index 82%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.13.query.sqlpp
index 30d21cfd6c..baf548c748 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/array-index/with-composite-sk/with-composite-sk.13.query.sqlpp
@@ -16,10 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+SET `compiler.arrayindex` "true";
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT COUNT(*)
+FROM YelpCheckin C, C.checkin_times D
+WHERE D.date > " " AND 
+      D.time > " " AND 
+      C.business_id > " ";
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.001.ddl.sqlpp
similarity index 76%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.001.ddl.sqlpp
index a271778586..c25e7c2a4b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.001.ddl.sqlpp
@@ -17,15 +17,15 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
 
-CREATE TYPE ColumnType AS {
-    id: int
+CREATE TYPE CheckinType AS {
+    checkin_id: uuid
 };
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
+CREATE DATASET YelpCheckin(CheckinType)
+PRIMARY KEY checkin_id AUTOGENERATED WITH {
+    "storage-format" : {"format" : "column"}
 };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.002.update.sqlpp
similarity index 84%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.002.update.sqlpp
index 30d21cfd6c..88a354ac3a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.002.update.sqlpp
@@ -17,9 +17,8 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+LOAD DATASET YelpCheckin
+USING localfs (("path"="asterix_nc1://data/yelp-checkin/use-case-1.json"),
+                ("format"="json"));
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.003.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.003.query.sqlpp
index 30d21cfd6c..5560372db5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.003.query.sqlpp
@@ -17,9 +17,10 @@
  * under the License.
  */
 
-USE test;
+SET `compiler.arrayindex` "true";
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT C.business_id
+FROM YelpCheckin C, C.dates D
+WHERE "2016-04-26 19:49:16" = D;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.004.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.004.query.sqlpp
index 30d21cfd6c..bc53b2aa52 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.004.query.sqlpp
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT VALUE C.dates
+FROM YelpCheckin C
+WHERE "-0y3MZU2oYP8r1ruDP1bfQ" = C.business_id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.005.ddl.sqlpp
similarity index 81%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.005.ddl.sqlpp
index 30d21cfd6c..0ef51a172f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.005.ddl.sqlpp
@@ -17,9 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+CREATE INDEX IdxYelpCheckinDates ON YelpCheckin (UNNEST dates:string) EXCLUDE UNKNOWN KEY;
+CREATE INDEX IdxYelpCheckinBusinessId ON YelpCheckin (business_id:string);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.006.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.006.query.sqlpp
index 30d21cfd6c..5560372db5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.006.query.sqlpp
@@ -17,9 +17,10 @@
  * under the License.
  */
 
-USE test;
+SET `compiler.arrayindex` "true";
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT C.business_id
+FROM YelpCheckin C, C.dates D
+WHERE "2016-04-26 19:49:16" = D;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.007.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.007.query.sqlpp
index 30d21cfd6c..bc53b2aa52 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-bulkload/after-bulkload.007.query.sqlpp
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT VALUE C.dates
+FROM YelpCheckin C
+WHERE "-0y3MZU2oYP8r1ruDP1bfQ" = C.business_id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.001.ddl.sqlpp
similarity index 76%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.001.ddl.sqlpp
index a271778586..1dd2d6f56d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.001.ddl.sqlpp
@@ -17,15 +17,14 @@
  * under the License.
  */
 
-DROP DATAVERSE test if exists;
-CREATE DATAVERSE test;
-USE test;
+DROP DATAVERSE TestYelp IF EXISTS;
+CREATE DATAVERSE TestYelp;
+USE TestYelp;
 
-CREATE TYPE ColumnType AS {
-    id: int
+CREATE TYPE CheckinType AS {
+    checkin_id: uuid
 };
 
-CREATE DATASET ColumnDataset(ColumnType)
-PRIMARY KEY id WITH {
-    "storage-format": {"format" : "column"}
+CREATE DATASET YelpCheckin(CheckinType) PRIMARY KEY checkin_id AUTOGENERATED WITH {
+    "storage-format" : {"format" : "column"}
 };
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.002.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.002.update.sqlpp
new file mode 100644
index 0000000000..ba9a31bd4d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.002.update.sqlpp
@@ -0,0 +1,272 @@
+/*
+ * 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.
+ */
+
+USE TestYelp;
+
+INSERT INTO YelpCheckin (
+    [
+        {
+            "business_id": "--1UhMGODdWsrMastO9DZw",
+            "dates": [
+                "2016-04-26 19:49:16",
+                "2016-08-30 18:36:57",
+                "2016-10-15 02:45:18",
+                "2016-11-18 01:54:50",
+                "2017-04-20 18:39:06",
+                "2017-05-03 17:58:02",
+                "2019-03-19 22:04:48"
+            ]
+        },
+        {
+            "business_id": "--EF5N7P70J_UYBTPypYlA",
+            "dates": [
+                "2018-05-25 19:52:07",
+                "2018-09-18 16:09:44",
+                "2019-10-18 21:29:09"
+            ]
+        },
+        {
+            "business_id": "--Ni3oJ4VOqfOEu7Sj2Vzg",
+            "dates": [
+                "2019-06-07 17:54:58"
+            ]
+        },
+        {
+            "business_id": "--Y1Adl1YUWfYIRSd8vkmA",
+            "dates": [
+                "2011-05-03 20:54:05",
+                "2011-08-23 20:49:45",
+                "2014-12-04 06:13:01",
+                "2016-11-16 19:25:55"
+            ]
+        },
+        {
+            "business_id": "--YPwqIlRJrhHkJcjY3eiA",
+            "dates": [
+                "2016-06-18 21:35:45",
+                "2016-10-15 18:17:51"
+            ]
+        },
+        {
+            "business_id": "--e8PjCNhEz32pprnPhCwQ",
+            "dates": [
+                "2015-04-02 21:45:17"
+            ]
+        },
+        {
+            "business_id": "--kinfHwmtdjz03g8B8z8Q",
+            "dates": [
+                "2014-08-27 17:49:18",
+                "2015-12-19 21:30:31",
+                "2018-11-27 15:53:50"
+            ]
+        },
+        {
+            "business_id": "--q6datkI-f0EoVheXNEeQ",
+            "dates": [
+                "2014-01-28 20:56:04",
+                "2014-11-16 16:11:58",
+                "2015-11-15 19:21:53",
+                "2015-11-15 19:33:39"
+            ]
+        },
+        {
+            "business_id": "--qvQS4MigHPykD2GV0-zw",
+            "dates": [
+                "2019-04-11 18:30:12"
+            ]
+        },
+        {
+            "business_id": "--wIGbLEhlpl_UeAIyDmZQ",
+            "dates": [
+                "2015-06-06 20:01:06",
+                "2019-03-14 22:01:52"
+            ]
+        },
+        {
+            "business_id": "-0FA-Qdi3SPYIoJz9UQw-A",
+            "dates": [
+                "2018-09-29 18:55:17",
+                "2018-10-20 16:48:05",
+                "2018-10-20 22:20:24"
+            ]
+        },
+        {
+            "business_id": "-0Hj1hb_XW6ybWq2M7QhGA",
+            "dates": [
+                "2011-04-23 21:11:22",
+                "2014-05-04 19:42:48",
+                "2014-05-11 19:16:08",
+                "2014-06-04 19:14:18",
+                "2015-12-05 19:22:42",
+                "2017-05-15 23:19:00"
+            ]
+        },
+        {
+            "business_id": "-0KMvRFwDWdVBeTpT11iHw",
+            "dates": [
+                "2012-07-13 21:43:57",
+                "2016-12-24 02:27:31",
+                "2017-08-31 00:35:26"
+            ]
+        },
+        {
+            "business_id": "-0LPtgJC31FWMrMv317p0Q",
+            "dates": [
+                "2013-04-13 12:35:33",
+                "2013-08-19 23:35:49",
+                "2013-10-04 19:14:56"
+            ]
+        },
+        {
+            "business_id": "-0M3o2uWBnQZwd3hmfEwuw",
+            "dates": [
+                "2016-09-10 19:26:19",
+                "2018-09-08 14:15:37",
+                "2019-09-13 22:47:25"
+            ]
+        },
+        {
+            "business_id": "-0RRiWDtfnS16AKCtfvBZg",
+            "dates": [
+                "2017-05-19 14:30:16",
+                "2017-05-19 14:30:25",
+                "2017-08-28 15:49:37",
+                "2017-09-20 20:19:51",
+                "2017-10-01 16:31:05",
+                "2017-10-01 16:56:27",
+                "2017-12-27 23:33:20"
+            ]
+        },
+        {
+            "business_id": "-0Soj75v-XoRcf2ERr8Bmg",
+            "dates": [
+                "2019-06-05 18:22:49"
+            ]
+        },
+        {
+            "business_id": "-0ZumLlFjMh4ZW1z2nXGug",
+            "dates": [
+                "2011-09-24 21:37:32",
+                "2014-03-10 20:20:07",
+                "2015-05-27 00:40:24",
+                "2015-08-29 17:58:15",
+                "2018-03-16 15:03:26"
+            ]
+        },
+        {
+            "business_id": "-0aOudcaAyac0VJbMX-L1g",
+            "dates": [
+                "2015-03-16 23:51:16",
+                "2015-12-21 04:48:01",
+                "2016-10-28 20:22:42",
+                "2016-10-28 20:23:00"
+            ]
+        },
+        {
+            "business_id": "-0b86isaXMY0v4g-V8GZ9Q",
+            "dates": [
+                "2013-10-22 16:49:21",
+                "2014-11-21 17:39:24"
+            ]
+        },
+        {
+            "business_id": "-0d-BfFSU0bwLcnMaGRxYw",
+            "dates": [
+                "2014-08-07 18:30:48",
+                "2014-09-16 20:41:45",
+                "2014-10-12 23:22:27",
+                "2015-07-21 20:43:56",
+                "2015-07-21 20:45:07"
+            ]
+        },
+        {
+            "business_id": "-0jz6c3C6i7RG7Ag22K-Pg",
+            "dates": [
+                "2015-05-02 19:49:05",
+                "2015-05-06 03:52:18",
+                "2015-09-26 01:13:19"
+            ]
+        },
+        {
+            "business_id": "-0y3MZU2oYP8r1ruDP1bfQ",
+            "dates": [
+                "2015-04-11 13:14:14",
+                "2015-11-21 16:05:56",
+                "2016-05-06 14:10:04",
+                "2017-08-09 15:15:10",
+                "2017-10-21 15:12:56"
+            ]
+        },
+        {
+            "business_id": "-1BPe8UjF2_l3nVk-DFUjA",
+            "dates": [
+                "2015-12-03 18:44:00",
+                "2016-03-17 18:19:21",
+                "2016-11-02 15:58:38"
+            ]
+        },
+        {
+            "business_id": "-1E2CQu_38mkghvmZgCCRw",
+            "dates": []
+        },
+        {
+            "business_id": "-1wzk43IZ5D9Ysu6kzb5xA",
+            "dates": []
+        },
+        {
+            "business_id": "-23R9P2eG7VTc6DVLjFKzA",
+            "dates": [
+                "2011-12-21 19:02:51",
+                "2012-04-15 04:21:39",
+                "2012-04-15 14:23:56",
+                "2013-06-30 22:39:51",
+                "2013-10-04 20:34:13",
+                "2014-07-16 02:28:40"
+            ]
+        },
+        {
+            "business_id": "-26MGfikhJiTfCI-GqmzhQ",
+            "dates": [
+                "2018-06-13 20:16:07"
+            ]
+        },
+        {
+            "business_id": "-2bLuJsMZ0WhI9daurVQNQ",
+            "dates": [
+                "2015-05-29 16:46:17",
+                "2015-06-01 15:03:53"
+            ]
+        },
+        {
+            "business_id": "-2hDBMaza_ldqnZdiU06LQ",
+            "dates": [
+                "2011-10-08 12:02:23",
+                "2014-08-18 02:11:11",
+                "2016-01-07 05:27:51",
+                "2016-10-21 20:15:55",
+                "2016-12-01 03:57:10",
+                "2016-12-29 01:54:42",
+                "2018-07-22 19:55:31",
+                "2018-09-07 01:42:54",
+                "2019-03-08 03:41:06"
+            ]
+        }
+    ]
+);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.003.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.003.query.sqlpp
index 30d21cfd6c..5560372db5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.003.query.sqlpp
@@ -17,9 +17,10 @@
  * under the License.
  */
 
-USE test;
+SET `compiler.arrayindex` "true";
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT C.business_id
+FROM YelpCheckin C, C.dates D
+WHERE "2016-04-26 19:49:16" = D;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.004.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.004.query.sqlpp
index 30d21cfd6c..bc53b2aa52 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.004.query.sqlpp
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT VALUE C.dates
+FROM YelpCheckin C
+WHERE "-0y3MZU2oYP8r1ruDP1bfQ" = C.business_id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.005.ddl.sqlpp
similarity index 81%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.005.ddl.sqlpp
index 30d21cfd6c..0ef51a172f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.005.ddl.sqlpp
@@ -17,9 +17,7 @@
  * under the License.
  */
 
-USE test;
+USE TestYelp;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+CREATE INDEX IdxYelpCheckinDates ON YelpCheckin (UNNEST dates:string) EXCLUDE UNKNOWN KEY;
+CREATE INDEX IdxYelpCheckinBusinessId ON YelpCheckin (business_id:string);
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.006.query.sqlpp
similarity index 85%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.006.query.sqlpp
index 30d21cfd6c..5560372db5 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.006.query.sqlpp
@@ -17,9 +17,10 @@
  * under the License.
  */
 
-USE test;
+SET `compiler.arrayindex` "true";
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT C.business_id
+FROM YelpCheckin C, C.dates D
+WHERE "2016-04-26 19:49:16" = D;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.007.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.007.query.sqlpp
index 30d21cfd6c..bc53b2aa52 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-insert/after-insert.007.query.sqlpp
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+USE TestYelp;
+
+SELECT VALUE C.dates
+FROM YelpCheckin C
+WHERE "-0y3MZU2oYP8r1ruDP1bfQ" = C.business_id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-insert-with-meta.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-insert-with-meta.001.ddl.sqlpp
new file mode 100644
index 0000000000..ccaea7e8fe
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-insert-with-meta.001.ddl.sqlpp
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+DROP DATAVERSE test if exists;
+CREATE DATAVERSE test;
+USE test;
+
+CREATE TYPE DataType AS {
+    name:string,
+    age:int,
+    hobby:string
+};
+
+CREATE TYPE MetaType AS {
+    id:int
+};
+
+CREATE DATASET DS(DataType) WITH META(MetaType)
+PRIMARY KEY META().id WITH {
+  "storage-format": {"format" : "column"}
+};
+
+CREATE FEED DsStream WITH {
+ "adapter-name" : "localfs",
+ "reader" : "localfs",
+ "parser" : "record-with-metadata",
+ "type-name" : "DataType",
+ "meta-type-name" : "MetaType",
+ "path" : "asterix_nc1://data/csv/people.csv",
+ "format" : "csv",
+ "delimiter" : ",",
+ "record-format" : "adm",
+ "record-index" : "1",
+ "key-indexes" : "0",
+ "key-indicators" : "1",
+ "header" : "false"
+};
+
+CREATE FEED DsStream2 WITH {
+ "adapter-name" : "localfs",
+ "reader" : "localfs",
+ "parser" : "record-with-metadata",
+ "type-name" : "DataType",
+ "meta-type-name" : "MetaType",
+ "path" : "asterix_nc1://data/csv/people3.csv",
+ "format" : "csv",
+ "delimiter" : ",",
+ "record-format" : "adm",
+ "record-index" : "1",
+ "key-indexes" : "0",
+ "key-indicators" : "1",
+ "header" : "false"
+};
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.002.update.sqlpp
similarity index 89%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.002.update.sqlpp
index 30d21cfd6c..55e842cf7f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.002.update.sqlpp
@@ -19,7 +19,6 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SET `wait-for-completion-feed` "true";
+CONNECT FEED DsStream TO DATASET DS;
+START FEED DsStream;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.003.get.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.003.get.http
index 075d204e2d..e6efaa03d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.003.get.http
@@ -16,7 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=test&datasetName=DS
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.004.ddl.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.004.ddl.sqlpp
index 075d204e2d..369f3ab7f8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.004.ddl.sqlpp
@@ -19,4 +19,5 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+CREATE INDEX age_idx ON DS(age);
+CREATE INDEX hobby_age_idx ON DS(name, age);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.005.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.005.query.sqlpp
index 30d21cfd6c..9e6b11fe9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.005.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age BETWEEN 20 AND 30
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.006.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.006.query.sqlpp
index 30d21cfd6c..a6b1153d97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.006.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "basketball"
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.007.update.sqlpp
similarity index 89%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.007.update.sqlpp
index 30d21cfd6c..08652aa070 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.007.update.sqlpp
@@ -19,7 +19,6 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SET `wait-for-completion-feed` "true";
+CONNECT FEED DsStream2 TO DATASET DS;
+START FEED DsStream2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.008.get.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.008.get.http
index 075d204e2d..e6efaa03d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.008.get.http
@@ -16,7 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=test&datasetName=DS
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.009.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.009.query.sqlpp
index 30d21cfd6c..9e6b11fe9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.009.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age BETWEEN 20 AND 30
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.010.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.010.query.sqlpp
index 30d21cfd6c..a6b1153d97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.010.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "basketball"
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.011.update.sqlpp
similarity index 96%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.011.update.sqlpp
index 075d204e2d..1ab4c1cce2 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.011.update.sqlpp
@@ -19,4 +19,4 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+COMPACT DATASET DS;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.012.get.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.012.get.http
index 075d204e2d..e6efaa03d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.012.get.http
@@ -16,7 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=test&datasetName=DS
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.013.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.013.query.sqlpp
index 30d21cfd6c..9e6b11fe9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.013.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age BETWEEN 20 AND 30
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.014.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.014.query.sqlpp
index 30d21cfd6c..a6b1153d97 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.014.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "basketball"
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.001.ddl.sqlpp
new file mode 100644
index 0000000000..178040273a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.001.ddl.sqlpp
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+
+DROP DATAVERSE test if exists;
+CREATE DATAVERSE test;
+USE test;
+
+CREATE TYPE DataType AS {
+    name:string,
+    age:int,
+    hobby:string
+};
+
+CREATE TYPE MetaType AS {
+    id:int
+};
+
+CREATE DATASET DS(DataType) WITH META(MetaType)
+PRIMARY KEY META().id WITH {
+  "storage-format": {"format" : "column"}
+};
+
+CREATE FEED DsStream WITH {
+ "adapter-name" : "localfs",
+ "reader" : "localfs",
+ "parser" : "record-with-metadata",
+ "type-name" : "DataType",
+ "meta-type-name" : "MetaType",
+ "path" : "asterix_nc1://data/csv/people.csv",
+ "format" : "csv",
+ "delimiter" : ",",
+ "record-format" : "adm",
+ "record-index" : "1",
+ "key-indexes" : "0",
+ "key-indicators" : "1",
+ "header" : "false"
+};
+
+CREATE FEED DsStream2 WITH {
+ "adapter-name" : "localfs",
+ "reader" : "localfs",
+ "parser" : "record-with-metadata",
+ "type-name" : "DataType",
+ "meta-type-name" : "MetaType",
+ "path" : "asterix_nc1://data/csv/people3.csv",
+ "format" : "csv",
+ "delimiter" : ",",
+ "record-format" : "adm",
+ "record-index" : "1",
+ "key-indexes" : "0",
+ "key-indicators" : "1",
+ "header" : "false"
+};
+
+CREATE INDEX age_idx ON DS(age);
+CREATE INDEX hobby_age_idx ON DS(name, age);
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.002.update.sqlpp
similarity index 89%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.002.update.sqlpp
index 30d21cfd6c..55e842cf7f 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.002.update.sqlpp
@@ -19,7 +19,6 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SET `wait-for-completion-feed` "true";
+CONNECT FEED DsStream TO DATASET DS;
+START FEED DsStream;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.003.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.003.query.sqlpp
index 30d21cfd6c..9e6b11fe9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.003.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age BETWEEN 20 AND 30
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.004.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.004.query.sqlpp
index 075d204e2d..d5b902ab7a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.004.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age > 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.005.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.005.query.sqlpp
index 075d204e2d..6a585ca544 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.005.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age >= 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.006.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.006.query.sqlpp
index 075d204e2d..eaff1ad577 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.006.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age < 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.007.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.007.query.sqlpp
index 075d204e2d..d6a6c08d32 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.007.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age <= 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.008.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.008.query.sqlpp
index 30d21cfd6c..69be129609 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.008.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "reading"
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.009.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.009.query.sqlpp
index 30d21cfd6c..961ac70614 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.009.query.sqlpp
@@ -19,7 +19,8 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "reading"
+  AND d.age = 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.010.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.010.query.sqlpp
index 30d21cfd6c..327e345bab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.010.query.sqlpp
@@ -19,7 +19,8 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "reading"
+  AND d.age > 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.011.get.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.011.get.http
index 075d204e2d..e6efaa03d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.011.get.http
@@ -16,7 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=test&datasetName=DS
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.012.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.012.query.sqlpp
index 30d21cfd6c..9e6b11fe9b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.012.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age BETWEEN 20 AND 30
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.013.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.013.query.sqlpp
index 075d204e2d..d5b902ab7a 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.013.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age > 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.014.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.014.query.sqlpp
index 075d204e2d..6a585ca544 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.014.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age >= 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.015.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.015.query.sqlpp
index 075d204e2d..eaff1ad577 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.015.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age < 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.016.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.016.query.sqlpp
index 075d204e2d..d6a6c08d32 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.016.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age <= 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.017.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.017.query.sqlpp
index 30d21cfd6c..69be129609 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.017.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "reading"
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.018.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.018.query.sqlpp
index 30d21cfd6c..961ac70614 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.018.query.sqlpp
@@ -19,7 +19,8 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "reading"
+  AND d.age = 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.019.query.sqlpp
similarity index 88%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.019.query.sqlpp
index 30d21cfd6c..327e345bab 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.019.query.sqlpp
@@ -19,7 +19,8 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "reading"
+  AND d.age > 29
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.020.update.sqlpp
similarity index 89%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.020.update.sqlpp
index 30d21cfd6c..08652aa070 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.020.update.sqlpp
@@ -19,7 +19,6 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SET `wait-for-completion-feed` "true";
+CONNECT FEED DsStream2 TO DATASET DS;
+START FEED DsStream2;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.021.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.021.query.sqlpp
index 075d204e2d..7ff4f8ca56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.021.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age = 35
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.022.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.022.query.sqlpp
index 30d21cfd6c..ee52cb902c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.022.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "soccer"
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.023.get.http
similarity index 94%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.023.get.http
index 075d204e2d..e6efaa03d7 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.023.get.http
@@ -16,7 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-USE test;
-
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+/connector?dataverseName=test&datasetName=DS
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.024.query.sqlpp
similarity index 91%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.024.query.sqlpp
index 075d204e2d..7ff4f8ca56 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.024.query.sqlpp
@@ -19,4 +19,7 @@
 
 USE test;
 
-COMPACT DATASET ColumnDataset;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.age = 35
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.025.query.sqlpp
similarity index 90%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.025.query.sqlpp
index 30d21cfd6c..ee52cb902c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/secondary-index/index-with-meta/index-with-meta.025.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
-SELECT VALUE d
-FROM ColumnDataset d
-ORDER BY d.id;
\ No newline at end of file
+SELECT META().id, d.age, d.name
+FROM DS d
+WHERE d.hobby = "soccer"
+ORDER BY META().id
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.001.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.001.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.002.update.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.002.update.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.003.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.003.query.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.003.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.003.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.004.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.004.get.http
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.004.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.004.get.http
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.005.query.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.005.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.006.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.006.update.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.006.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.006.update.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.007.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.007.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.007.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.007.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.008.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.008.get.http
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.008.get.http
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.008.get.http
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.009.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.009.query.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.009.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.009.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.010.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.010.update.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.010.update.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.010.update.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.011.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.011.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.011.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.011.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.012.get.http
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.012.get.http
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.012.get.http
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.013.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.013.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.013.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.013.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.014.update.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.014.update.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.015.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.015.get.http
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.015.get.http
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.015.get.http
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.016.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.016.query.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.016.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/001/001.016.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.001.ddl.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.001.ddl.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.001.ddl.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.002.update.sqlpp
similarity index 84%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.002.update.sqlpp
index a078d7fe70..976ff3d5d8 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.002.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.002.update.sqlpp
@@ -20,7 +20,9 @@
 USE test;
 
 INSERT INTO ColumnDataset (
-    {"id": 1, "val": "1", "array": [10, 20, 30]},
-    {"id": 2, "val": "2", "array": [40, 50, 60]},
-    {"id": 3, "val": "3", "array": [70, 80, 90]}
+    {"id":10, "a":[1, 2]},
+    {"id":20, "a":[3, 4]},
+    {"id":30, "a":[5, 6]},
+    {"id":40, "a":[7, 8]},
+    {"id":50, "a":[9, 10]}
 );
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.003.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.003.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.003.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.003.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.004.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.004.get.http
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.004.get.http
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.004.get.http
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.005.query.sqlpp
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
copy to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.005.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.006.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.006.update.sqlpp
similarity index 87%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.006.update.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.006.update.sqlpp
index 6e6f4d499c..6ac2ae6b0b 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.006.update.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.006.update.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Upsert the record with id = 2
+-- Upsert the record with id = 10, the length of the arrays are not the same
 UPSERT INTO ColumnDataset (
-    {"id": 2, "val": "2000", "array": [400, 500, 600]}
+    {"id":10, "a":[100, 100, 100, 100]}
 );
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.007.query.sqlpp
similarity index 88%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.007.query.sqlpp
index 30d21cfd6c..6bdb5fa9f6 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.005.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.007.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Records are on disk as columns
+-- a newer record with id = 10 is in memory and should replace the older record with the same id
 SELECT VALUE d
 FROM ColumnDataset d
 ORDER BY d.id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.004.get.http b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.008.get.http
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.004.get.http
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.008.get.http
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.009.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.009.query.sqlpp
similarity index 93%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.009.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.009.query.sqlpp
index 36002c28ec..e1f485dc0c 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.009.query.sqlpp
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.009.query.sqlpp
@@ -19,7 +19,7 @@
 
 USE test;
 
--- Now, we have two on-disk components and both have records with id = 2. The new record should be returned
+-- Now, we have two on-disk components and both have records with id = 10. The new record should be returned
 SELECT VALUE d
 FROM ColumnDataset d
 ORDER BY d.id;
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.010.update.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.0014.update.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.010.update.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.016.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.011.query.sqlpp
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/upsert.016.query.sqlpp
rename to asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/column/upsert/002/002.011.query.sqlpp
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.03.adm
new file mode 100644
index 0000000000..5e38c96e7d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.03.adm
@@ -0,0 +1,5 @@
+{ "order_priority": "1-URGENT", "count": 9 }
+{ "order_priority": "2-HIGH", "count": 7 }
+{ "order_priority": "3-MEDIUM", "count": 9 }
+{ "order_priority": "4-NOT SPECIFIED", "count": 8 }
+{ "order_priority": "5-LOW", "count": 12 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.04.adm
new file mode 100644
index 0000000000..4b9eb7d214
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.04.adm
@@ -0,0 +1 @@
+{"results":"successful"}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.05.adm
new file mode 100644
index 0000000000..af9759bf16
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.05.adm
@@ -0,0 +1 @@
+{"keys":"l_orderkey,l_linenumber","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"LineItemType","open":false,"fields":[{"l_orderkey":{"type":"AInt64"}},{"l_partkey":{"type":"AInt64"}},{"l_suppkey":{"type":"AInt64"}},{"l_linenumber":{"type":"AInt64"}},{"l_quantity":{"type":"ADouble"}},{"l_extendedprice":{"type":"ADouble"}},{"l_discount":{"type":"ADouble"}},{"l_tax":{"type":"ADouble"}},{"l_returnflag":{"type":"AString"}},{"l_linestatus":{"type":"AString"}},{"l_shipdate":{" [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.06.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.06.adm
new file mode 100644
index 0000000000..00031012c9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.06.adm
@@ -0,0 +1 @@
+{"keys":"o_orderkey","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"OrderType","open":false,"fields":[{"o_orderkey":{"type":"AInt64"}},{"o_custkey":{"type":"AInt64"}},{"o_orderstatus":{"type":"AString"}},{"o_totalprice":{"type":"ADouble"}},{"o_orderdate":{"type":"AString"}},{"o_orderpriority":{"type":"AString"}},{"o_clerk":{"type":"AString"}},{"o_shippriority":{"type":"AInt64"}},{"o_comment":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/t [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.07.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.07.adm
new file mode 100644
index 0000000000..5e38c96e7d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.07.adm
@@ -0,0 +1,5 @@
+{ "order_priority": "1-URGENT", "count": 9 }
+{ "order_priority": "2-HIGH", "count": 7 }
+{ "order_priority": "3-MEDIUM", "count": 9 }
+{ "order_priority": "4-NOT SPECIFIED", "count": 8 }
+{ "order_priority": "5-LOW", "count": 12 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.08.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.08.adm
new file mode 100644
index 0000000000..356deeb7bd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.08.adm
@@ -0,0 +1 @@
+{ "DatasetName": "LineItem", "GroupName": "tpch1.LineItem_1", "rebalanceCount": 1 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.09.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.09.adm
new file mode 100644
index 0000000000..0f829fa74a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.09.adm
@@ -0,0 +1 @@
+{ "DatasetName": "Orders", "GroupName": "tpch2.Orders_1", "rebalanceCount": 1 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.10.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.10.adm
new file mode 100644
index 0000000000..4b9eb7d214
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.10.adm
@@ -0,0 +1 @@
+{"results":"successful"}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.11.adm
new file mode 100644
index 0000000000..d970119b99
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.11.adm
@@ -0,0 +1 @@
+{"keys":"l_orderkey,l_linenumber","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"LineItemType","open":false,"fields":[{"l_orderkey":{"type":"AInt64"}},{"l_partkey":{"type":"AInt64"}},{"l_suppkey":{"type":"AInt64"}},{"l_linenumber":{"type":"AInt64"}},{"l_quantity":{"type":"ADouble"}},{"l_extendedprice":{"type":"ADouble"}},{"l_discount":{"type":"ADouble"}},{"l_tax":{"type":"ADouble"}},{"l_returnflag":{"type":"AString"}},{"l_linestatus":{"type":"AString"}},{"l_shipdate":{" [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.12.adm
new file mode 100644
index 0000000000..38d2eac356
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.12.adm
@@ -0,0 +1 @@
+{"keys":"o_orderkey","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"OrderType","open":false,"fields":[{"o_orderkey":{"type":"AInt64"}},{"o_custkey":{"type":"AInt64"}},{"o_orderstatus":{"type":"AString"}},{"o_totalprice":{"type":"ADouble"}},{"o_orderdate":{"type":"AString"}},{"o_orderpriority":{"type":"AString"}},{"o_clerk":{"type":"AString"}},{"o_shippriority":{"type":"AInt64"}},{"o_comment":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/t [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.13.adm
new file mode 100644
index 0000000000..4405aa047e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.13.adm
@@ -0,0 +1,5 @@
+{ "order_priority": "1-URGENT", "count": 9 }
+{ "order_priority": "2-HIGH", "count": 7 }
+{ "order_priority": "3-MEDIUM", "count": 9 }
+{ "order_priority": "4-NOT SPECIFIED", "count": 8 }
+{ "order_priority": "5-LOW", "count": 12 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.14.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.14.adm
new file mode 100644
index 0000000000..3c8a3de183
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.14.adm
@@ -0,0 +1 @@
+{ "DatasetName": "LineItem", "GroupName": "tpch1.LineItem_2", "rebalanceCount": 2 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.15.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.15.adm
new file mode 100644
index 0000000000..06a2a13d44
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.15.adm
@@ -0,0 +1 @@
+{ "DatasetName": "Orders", "GroupName": "tpch2.Orders_2", "rebalanceCount": 2 }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.16.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.16.adm
new file mode 100644
index 0000000000..608357572a
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/rebalance/rebalance.16.adm
@@ -0,0 +1 @@
+{ "DatasetName": "Dataset", "GroupName": "MetadataGroup" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.03.adm
new file mode 100644
index 0000000000..fcc26c80d7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.03.adm
@@ -0,0 +1 @@
+{ "$1": 99 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.04.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.04.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.05.adm
new file mode 100644
index 0000000000..fcc26c80d7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.05.adm
@@ -0,0 +1 @@
+{ "$1": 99 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.07.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.07.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.07.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.08.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.08.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.08.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.09.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.09.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.09.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.11.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.11.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.12.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.12.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.13.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-1/use-case-1.13.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.03.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.03.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.04.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.04.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.05.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.05.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.07.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.07.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.07.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.08.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.08.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.08.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.09.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.09.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.09.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.11.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.11.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.12.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.12.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.13.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-2/use-case-2.13.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.03.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.03.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.04.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.04.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.05.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.05.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.07.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.07.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.07.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.08.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.08.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.08.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.09.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.09.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.09.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.11.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.11.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.12.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.12.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.13.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-3/use-case-3.13.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.03.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.03.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.04.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.04.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.05.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.05.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.07.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.07.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.07.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.08.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.08.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.08.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.09.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.09.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.09.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.11.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.11.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.12.adm
new file mode 100644
index 0000000000..f9dd3d2cdd
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.12.adm
@@ -0,0 +1 @@
+{"keys":"business_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"business_id":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpC [...]
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.13.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/use-case-4/use-case-4.13.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.03.adm
new file mode 100644
index 0000000000..fcc26c80d7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.03.adm
@@ -0,0 +1 @@
+{ "$1": 99 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.04.adm
new file mode 100644
index 0000000000..e9774d473c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.04.adm
@@ -0,0 +1 @@
+{"keys":"checkin_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"checkin_id":{"type":"AInt64"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpCheckin"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.05.adm
new file mode 100644
index 0000000000..fcc26c80d7
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.05.adm
@@ -0,0 +1 @@
+{ "$1": 99 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.07.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.07.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.07.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.08.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.08.adm
new file mode 100644
index 0000000000..e9774d473c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.08.adm
@@ -0,0 +1 @@
+{"keys":"checkin_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"checkin_id":{"type":"AInt64"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpCheckin"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.09.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.09.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.09.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.11.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.11.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.12.adm
new file mode 100644
index 0000000000..e9774d473c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.12.adm
@@ -0,0 +1 @@
+{"keys":"checkin_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"checkin_id":{"type":"AInt64"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpCheckin"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.13.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-additional-atomic-index/with-additional-atomic-index.13.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.03.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.03.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.03.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.04.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.04.adm
new file mode 100644
index 0000000000..e9774d473c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.04.adm
@@ -0,0 +1 @@
+{"keys":"checkin_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"checkin_id":{"type":"AInt64"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpCheckin"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.05.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.05.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.05.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.07.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.07.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.07.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.08.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.08.adm
new file mode 100644
index 0000000000..e9774d473c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.08.adm
@@ -0,0 +1 @@
+{"keys":"checkin_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"checkin_id":{"type":"AInt64"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpCheckin"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.09.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.09.adm
new file mode 100644
index 0000000000..3e1a84774d
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.09.adm
@@ -0,0 +1 @@
+{ "$1": 7 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.11.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.11.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.11.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.12.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.12.adm
new file mode 100644
index 0000000000..e9774d473c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.12.adm
@@ -0,0 +1 @@
+{"keys":"checkin_id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"CheckinType","open":true,"fields":[{"checkin_id":{"type":"AInt64"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_1/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_2/TestYelp/YelpCheckin/0/YelpCheckin"},{"ip":"127.0.0.1","path":"storage/partition_3/TestYelp/YelpCheckin/0/YelpCheckin"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.13.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.13.adm
new file mode 100644
index 0000000000..dc7ba8bd2b
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/array-index/with-composite-sk/with-composite-sk.13.adm
@@ -0,0 +1 @@
+{ "$1": 101 }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.003.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.003.adm
new file mode 100644
index 0000000000..6fa1293b94
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.003.adm
@@ -0,0 +1 @@
+{ "business_id": "--1UhMGODdWsrMastO9DZw" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.004.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.004.adm
new file mode 100644
index 0000000000..062a3591fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.004.adm
@@ -0,0 +1 @@
+[ "2015-04-11 13:14:14", "2015-11-21 16:05:56", "2016-05-06 14:10:04", "2017-08-09 15:15:10", "2017-10-21 15:12:56" ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.006.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.006.adm
new file mode 100644
index 0000000000..6fa1293b94
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.006.adm
@@ -0,0 +1 @@
+{ "business_id": "--1UhMGODdWsrMastO9DZw" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.007.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.007.adm
new file mode 100644
index 0000000000..062a3591fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-bulkload/after-bulkload.007.adm
@@ -0,0 +1 @@
+[ "2015-04-11 13:14:14", "2015-11-21 16:05:56", "2016-05-06 14:10:04", "2017-08-09 15:15:10", "2017-10-21 15:12:56" ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.003.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.003.adm
new file mode 100644
index 0000000000..6fa1293b94
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.003.adm
@@ -0,0 +1 @@
+{ "business_id": "--1UhMGODdWsrMastO9DZw" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.004.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.004.adm
new file mode 100644
index 0000000000..062a3591fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.004.adm
@@ -0,0 +1 @@
+[ "2015-04-11 13:14:14", "2015-11-21 16:05:56", "2016-05-06 14:10:04", "2017-08-09 15:15:10", "2017-10-21 15:12:56" ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.006.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.006.adm
new file mode 100644
index 0000000000..6fa1293b94
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.006.adm
@@ -0,0 +1 @@
+{ "business_id": "--1UhMGODdWsrMastO9DZw" }
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.007.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.007.adm
new file mode 100644
index 0000000000..062a3591fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-insert/after-insert.007.adm
@@ -0,0 +1 @@
+[ "2015-04-11 13:14:14", "2015-11-21 16:05:56", "2016-05-06 14:10:04", "2017-08-09 15:15:10", "2017-10-21 15:12:56" ]
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.003.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.003.adm
new file mode 100644
index 0000000000..c7dc23c7fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.003.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DataType","open":true,"fields":[{"name":{"type":"AString"}},{"age":{"type":"AInt64"}},{"hobby":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DS/0/DS"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.005.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.005.adm
new file mode 100644
index 0000000000..707fae0df4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.005.adm
@@ -0,0 +1,4 @@
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.006.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.006.adm
new file mode 100644
index 0000000000..7f83f16dc3
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.006.adm
@@ -0,0 +1 @@
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.008.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.008.adm
new file mode 100644
index 0000000000..c7dc23c7fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.008.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DataType","open":true,"fields":[{"name":{"type":"AString"}},{"age":{"type":"AInt64"}},{"hobby":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DS/0/DS"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.009.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.009.adm
new file mode 100644
index 0000000000..870dbf0397
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.009.adm
@@ -0,0 +1,5 @@
+{ "id": 5, "age": 28, "name": "Watson Jordon" }
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.010.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.010.adm
new file mode 100644
index 0000000000..a47f9db6eb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.010.adm
@@ -0,0 +1,2 @@
+{ "id": 5, "age": 28, "name": "Watson Jordon" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.012.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.012.adm
new file mode 100644
index 0000000000..c7dc23c7fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.012.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DataType","open":true,"fields":[{"name":{"type":"AString"}},{"age":{"type":"AInt64"}},{"hobby":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DS/0/DS"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.013.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.013.adm
new file mode 100644
index 0000000000..870dbf0397
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.013.adm
@@ -0,0 +1,5 @@
+{ "id": 5, "age": 28, "name": "Watson Jordon" }
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.014.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.014.adm
new file mode 100644
index 0000000000..a47f9db6eb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/create-index/after-upsert-with-meta/after-upsert-with-meta.014.adm
@@ -0,0 +1,2 @@
+{ "id": 5, "age": 28, "name": "Watson Jordon" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.003.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.003.adm
new file mode 100644
index 0000000000..707fae0df4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.003.adm
@@ -0,0 +1,4 @@
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.004.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.004.adm
new file mode 100644
index 0000000000..5fd0ed4938
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.004.adm
@@ -0,0 +1,6 @@
+{ "id": 32571888, "age": 45, "name": "Mat Steve" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
+{ "id": 45962603, "age": 40, "name": "Dan David" }
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 86897761, "age": 36, "name": "Sandra Pec" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.005.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.005.adm
new file mode 100644
index 0000000000..69955d6aa9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.005.adm
@@ -0,0 +1,7 @@
+{ "id": 32571888, "age": 45, "name": "Mat Steve" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
+{ "id": 45962603, "age": 40, "name": "Dan David" }
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
+{ "id": 86897761, "age": 36, "name": "Sandra Pec" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.006.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.006.adm
new file mode 100644
index 0000000000..ae312198f0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.006.adm
@@ -0,0 +1,2 @@
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.007.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.007.adm
new file mode 100644
index 0000000000..49002dc9c8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.007.adm
@@ -0,0 +1,3 @@
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.008.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.008.adm
new file mode 100644
index 0000000000..14874eddf1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.008.adm
@@ -0,0 +1,2 @@
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.009.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.009.adm
new file mode 100644
index 0000000000..84eebd989c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.009.adm
@@ -0,0 +1 @@
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.010.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.010.adm
new file mode 100644
index 0000000000..999526978e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.010.adm
@@ -0,0 +1 @@
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.011.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.011.adm
new file mode 100644
index 0000000000..c7dc23c7fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.011.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DataType","open":true,"fields":[{"name":{"type":"AString"}},{"age":{"type":"AInt64"}},{"hobby":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DS/0/DS"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.012.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.012.adm
new file mode 100644
index 0000000000..707fae0df4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.012.adm
@@ -0,0 +1,4 @@
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.013.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.013.adm
new file mode 100644
index 0000000000..5fd0ed4938
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.013.adm
@@ -0,0 +1,6 @@
+{ "id": 32571888, "age": 45, "name": "Mat Steve" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
+{ "id": 45962603, "age": 40, "name": "Dan David" }
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 86897761, "age": 36, "name": "Sandra Pec" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.014.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.014.adm
new file mode 100644
index 0000000000..69955d6aa9
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.014.adm
@@ -0,0 +1,7 @@
+{ "id": 32571888, "age": 45, "name": "Mat Steve" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
+{ "id": 45962603, "age": 40, "name": "Dan David" }
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
+{ "id": 52037425, "age": 30, "name": "Scott Scott" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
+{ "id": 86897761, "age": 36, "name": "Sandra Pec" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.015.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.015.adm
new file mode 100644
index 0000000000..ae312198f0
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.015.adm
@@ -0,0 +1,2 @@
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.016.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.016.adm
new file mode 100644
index 0000000000..49002dc9c8
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.016.adm
@@ -0,0 +1,3 @@
+{ "id": 13071782, "age": 24, "name": "Joe Dana" }
+{ "id": 26237702, "age": 28, "name": "Watson Jordon" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.017.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.017.adm
new file mode 100644
index 0000000000..14874eddf1
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.017.adm
@@ -0,0 +1,2 @@
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.018.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.018.adm
new file mode 100644
index 0000000000..84eebd989c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.018.adm
@@ -0,0 +1 @@
+{ "id": 76041664, "age": 29, "name": "John Mad" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.019.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.019.adm
new file mode 100644
index 0000000000..999526978e
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.019.adm
@@ -0,0 +1 @@
+{ "id": 51041435, "age": 32, "name": "Robert Moore" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.021.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.021.adm
new file mode 100644
index 0000000000..ee1749d510
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.021.adm
@@ -0,0 +1,2 @@
+{ "id": 7, "age": 35, "name": "Sandy Donald" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.022.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.022.adm
new file mode 100644
index 0000000000..ee1749d510
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.022.adm
@@ -0,0 +1,2 @@
+{ "id": 7, "age": 35, "name": "Sandy Donald" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.023.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.023.adm
new file mode 100644
index 0000000000..c7dc23c7fb
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.023.adm
@@ -0,0 +1 @@
+{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"DataType","open":true,"fields":[{"name":{"type":"AString"}},{"age":{"type":"AInt64"}},{"hobby":{"type":"AString"}}]},"splits":[{"ip":"127.0.0.1","path":"storage/partition_0/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_1/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_2/test/DS/0/DS"},{"ip":"127.0.0.1","path":"storage/partition_3/test/DS/0/DS"}]}
\ No newline at end of file
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.024.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.024.adm
new file mode 100644
index 0000000000..ee1749d510
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.024.adm
@@ -0,0 +1,2 @@
+{ "id": 7, "age": 35, "name": "Sandy Donald" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.025.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.025.adm
new file mode 100644
index 0000000000..ee1749d510
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/secondary-index/index-with-meta/index-with-meta.025.adm
@@ -0,0 +1,2 @@
+{ "id": 7, "age": 35, "name": "Sandy Donald" }
+{ "id": 39225791, "age": 35, "name": "Sandy Donald" }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.003.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.003.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.003.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.003.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.004.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.004.adm
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.004.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.004.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.005.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.005.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.005.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.005.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.007.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.007.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.007.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.007.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.008.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.008.adm
similarity index 100%
copy from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.008.adm
copy to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.008.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.009.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.009.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.009.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.009.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.011.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.011.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.011.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.011.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.012.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.012.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.012.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.012.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.013.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.013.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.013.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.013.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.015.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.015.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.015.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.015.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.016.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.016.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.016.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/001/upsert.016.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.003.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.003.adm
new file mode 100644
index 0000000000..cd33c4d376
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.003.adm
@@ -0,0 +1,5 @@
+{ "id": 10, "a": [ 1, 2 ] }
+{ "id": 20, "a": [ 3, 4 ] }
+{ "id": 30, "a": [ 5, 6 ] }
+{ "id": 40, "a": [ 7, 8 ] }
+{ "id": 50, "a": [ 9, 10 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.004.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.004.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.004.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.004.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.005.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.005.adm
new file mode 100644
index 0000000000..cd33c4d376
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.005.adm
@@ -0,0 +1,5 @@
+{ "id": 10, "a": [ 1, 2 ] }
+{ "id": 20, "a": [ 3, 4 ] }
+{ "id": 30, "a": [ 5, 6 ] }
+{ "id": 40, "a": [ 7, 8 ] }
+{ "id": 50, "a": [ 9, 10 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.007.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.007.adm
new file mode 100644
index 0000000000..606b98a9b4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.007.adm
@@ -0,0 +1,5 @@
+{ "id": 10, "a": [ 100, 100, 100, 100 ] }
+{ "id": 20, "a": [ 3, 4 ] }
+{ "id": 30, "a": [ 5, 6 ] }
+{ "id": 40, "a": [ 7, 8 ] }
+{ "id": 50, "a": [ 9, 10 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.008.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.008.adm
similarity index 100%
rename from asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/upsert.008.adm
rename to asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.008.adm
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.009.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.009.adm
new file mode 100644
index 0000000000..606b98a9b4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.009.adm
@@ -0,0 +1,5 @@
+{ "id": 10, "a": [ 100, 100, 100, 100 ] }
+{ "id": 20, "a": [ 3, 4 ] }
+{ "id": 30, "a": [ 5, 6 ] }
+{ "id": 40, "a": [ 7, 8 ] }
+{ "id": 50, "a": [ 9, 10 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.011.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.011.adm
new file mode 100644
index 0000000000..606b98a9b4
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/002/upsert.011.adm
@@ -0,0 +1,5 @@
+{ "id": 10, "a": [ 100, 100, 100, 100 ] }
+{ "id": 20, "a": [ 3, 4 ] }
+{ "id": 30, "a": [ 5, 6 ] }
+{ "id": 40, "a": [ 7, 8 ] }
+{ "id": 50, "a": [ 9, 10 ] }
diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
index 241e65e935..fc121ad08d 100644
--- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
+++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml
@@ -16134,8 +16134,13 @@
       </compilation-unit>
     </test-case>
     <test-case FilePath="column">
-      <compilation-unit name="upsert">
-        <output-dir compare="Text">upsert</output-dir>
+      <compilation-unit name="upsert/001">
+        <output-dir compare="Text">upsert/001</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="upsert/002">
+        <output-dir compare="Text">upsert/002</output-dir>
       </compilation-unit>
     </test-case>
     <test-case FilePath="column" check-warnings="true">
@@ -16161,5 +16166,60 @@
         <output-dir compare="Text">big-object</output-dir>
       </compilation-unit>
     </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/array-index/use-case-1">
+        <output-dir compare="Text">secondary-index/array-index/use-case-1</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/array-index/use-case-2">
+        <output-dir compare="Text">secondary-index/array-index/use-case-2</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/array-index/use-case-3">
+        <output-dir compare="Text">secondary-index/array-index/use-case-3</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/array-index/use-case-4">
+        <output-dir compare="Text">secondary-index/array-index/use-case-4</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/array-index/with-additional-atomic-index">
+        <output-dir compare="Text">secondary-index/array-index/with-additional-atomic-index</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/array-index/with-composite-sk">
+        <output-dir compare="Text">secondary-index/array-index/with-composite-sk</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/index-with-meta">
+        <output-dir compare="Text">secondary-index/index-with-meta</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/create-index/after-bulkload">
+        <output-dir compare="Text">secondary-index/create-index/after-bulkload</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/create-index/after-insert">
+        <output-dir compare="Text">secondary-index/create-index/after-insert</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="secondary-index/create-index/after-upsert-with-meta">
+        <output-dir compare="Text">secondary-index/create-index/after-upsert-with-meta</output-dir>
+      </compilation-unit>
+    </test-case>
+    <test-case FilePath="column">
+      <compilation-unit name="rebalance">
+        <output-dir compare="Text">rebalance</output-dir>
+      </compilation-unit>
+    </test-case>
   </test-group>
 </test-suite>
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
index 8e35416b0a..0b76216cd4 100644
--- a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/ColumnManagerFactory.java
@@ -20,6 +20,7 @@ package org.apache.asterix.column;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 import org.apache.asterix.column.operation.lsm.flush.FlushColumnTupleReaderWriterFactory;
 import org.apache.asterix.column.operation.lsm.load.LoadColumnTupleReaderWriterFactory;
@@ -53,7 +54,7 @@ public final class ColumnManagerFactory implements IColumnManagerFactory {
         this.tolerance = tolerance;
 
         this.datasetType = datasetType;
-        if (keySourceIndicator.size() != 1) {
+        if (containsSplitKeys(keySourceIndicator)) {
             throw new UnsupportedOperationException(
                     "Primary keys split between meta-type and datasetType is not supported");
         }
@@ -128,7 +129,7 @@ public final class ColumnManagerFactory implements IColumnManagerFactory {
             List<String> primaryKey = new ArrayList<>();
             ArrayNode primaryKeyNode = (ArrayNode) primaryKeysNode.get(i);
             for (int j = 0; j < primaryKeyNode.size(); j++) {
-                primaryKey.add(primaryKeyNode.get(i).asText());
+                primaryKey.add(primaryKeyNode.get(j).asText());
             }
             primaryKeys.add(primaryKey);
         }
@@ -143,4 +144,17 @@ public final class ColumnManagerFactory implements IColumnManagerFactory {
                 tolerance);
     }
 
+    private static boolean containsSplitKeys(List<Integer> keySourceIndicator) {
+        if (keySourceIndicator.size() == 1) {
+            return false;
+        }
+        Integer value = keySourceIndicator.get(0);
+        for (int i = 1; i < keySourceIndicator.size(); i++) {
+            if (!Objects.equals(value, keySourceIndicator.get(i))) {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleProjector.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleProjector.java
new file mode 100644
index 0000000000..b9935821f5
--- /dev/null
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleProjector.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.column.operation.lsm.secondary.create;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Collections;
+
+import org.apache.asterix.column.operation.query.QueryColumnTupleProjector;
+import org.apache.asterix.column.values.reader.filter.evaluator.NoOpColumnFilterEvaluatorFactory;
+import org.apache.asterix.common.exceptions.NoOpWarningCollector;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IValueReference;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnProjectionInfo;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnTupleProjector;
+
+final class PrimaryScanColumnTupleProjector implements IColumnTupleProjector {
+    private final QueryColumnTupleProjector projector;
+
+    public PrimaryScanColumnTupleProjector(ARecordType datasetType, int numberOfPrimaryKeys,
+            ARecordType requestedType) {
+        projector = new QueryColumnTupleProjector(datasetType, numberOfPrimaryKeys, requestedType,
+                Collections.emptyMap(), NoOpColumnFilterEvaluatorFactory.INSTANCE, NoOpWarningCollector.INSTANCE);
+    }
+
+    @Override
+    public IColumnProjectionInfo createProjectionInfo(IValueReference serializedMetadata) throws HyracksDataException {
+        return projector.createProjectionInfo(serializedMetadata);
+    }
+
+    @Override
+    public ITupleReference project(ITupleReference tuple, DataOutput dos, ArrayTupleBuilder tb) throws IOException {
+        return projector.project(tuple, dos, tb);
+    }
+}
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleProjectorFactory.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleProjectorFactory.java
new file mode 100644
index 0000000000..91c3616f09
--- /dev/null
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleProjectorFactory.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.column.operation.lsm.secondary.create;
+
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.common.projection.ITupleProjector;
+import org.apache.hyracks.storage.common.projection.ITupleProjectorFactory;
+
+public class PrimaryScanColumnTupleProjectorFactory implements ITupleProjectorFactory {
+    private static final long serialVersionUID = -2320917202024130839L;
+    private final ARecordType datasetType;
+    private final ARecordType metaType;
+    private final int numberOfPrimaryKeys;
+    private final ARecordType requestedType;
+
+    public PrimaryScanColumnTupleProjectorFactory(ARecordType datasetType, ARecordType metaType,
+            int numberOfPrimaryKeys, ARecordType requestedType) {
+        this.datasetType = datasetType;
+        this.metaType = metaType;
+        this.numberOfPrimaryKeys = numberOfPrimaryKeys;
+        this.requestedType = requestedType;
+    }
+
+    @Override
+    public ITupleProjector createTupleProjector(IHyracksTaskContext context) throws HyracksDataException {
+        if (metaType != null) {
+            return new PrimaryScanColumnTupleWithMetaProjector(datasetType, metaType, numberOfPrimaryKeys,
+                    requestedType);
+        }
+        return new PrimaryScanColumnTupleProjector(datasetType, numberOfPrimaryKeys, requestedType);
+    }
+}
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleWithMetaProjector.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleWithMetaProjector.java
new file mode 100644
index 0000000000..0933049e4b
--- /dev/null
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/create/PrimaryScanColumnTupleWithMetaProjector.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.column.operation.lsm.secondary.create;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Collections;
+
+import org.apache.asterix.column.operation.query.QueryColumnWithMetaTupleProjector;
+import org.apache.asterix.column.values.reader.filter.evaluator.NoOpColumnFilterEvaluatorFactory;
+import org.apache.asterix.common.exceptions.NoOpWarningCollector;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IValueReference;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnProjectionInfo;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnTupleProjector;
+
+final class PrimaryScanColumnTupleWithMetaProjector implements IColumnTupleProjector {
+    private final QueryColumnWithMetaTupleProjector projector;
+
+    public PrimaryScanColumnTupleWithMetaProjector(ARecordType datasetType, ARecordType metaType,
+            int numberOfPrimaryKeys, ARecordType requestedType) {
+        projector = new QueryColumnWithMetaTupleProjector(datasetType, metaType, numberOfPrimaryKeys, requestedType,
+                Collections.emptyMap(), metaType, Collections.emptyMap(), NoOpColumnFilterEvaluatorFactory.INSTANCE,
+                NoOpWarningCollector.INSTANCE);
+    }
+
+    @Override
+    public IColumnProjectionInfo createProjectionInfo(IValueReference serializedMetadata) throws HyracksDataException {
+        return projector.createProjectionInfo(serializedMetadata);
+    }
+
+    @Override
+    public ITupleReference project(ITupleReference tuple, DataOutput dos, ArrayTupleBuilder tb) throws IOException {
+        return projector.project(tuple, dos, tb);
+    }
+}
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleProjector.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleProjector.java
new file mode 100644
index 0000000000..b245785831
--- /dev/null
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleProjector.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.column.operation.lsm.secondary.upsert;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Collections;
+
+import org.apache.asterix.column.operation.query.QueryColumnTupleProjector;
+import org.apache.asterix.column.values.reader.filter.evaluator.NoOpColumnFilterEvaluatorFactory;
+import org.apache.asterix.common.exceptions.NoOpWarningCollector;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IValueReference;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnProjectionInfo;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnTupleProjector;
+
+final class UpsertPreviousColumnTupleProjector implements IColumnTupleProjector {
+    private final ArrayTupleBuilder builder;
+    private final QueryColumnTupleProjector projector;
+
+    public UpsertPreviousColumnTupleProjector(ARecordType datasetType, int numberOfPrimaryKeys,
+            ARecordType requestedType) {
+        builder = new ArrayTupleBuilder(numberOfPrimaryKeys + 1);
+        projector = new QueryColumnTupleProjector(datasetType, numberOfPrimaryKeys, requestedType,
+                Collections.emptyMap(), NoOpColumnFilterEvaluatorFactory.INSTANCE, NoOpWarningCollector.INSTANCE);
+    }
+
+    @Override
+    public IColumnProjectionInfo createProjectionInfo(IValueReference serializedMetadata) throws HyracksDataException {
+        return projector.createProjectionInfo(serializedMetadata);
+    }
+
+    @Override
+    public ITupleReference project(ITupleReference tuple, DataOutput dos, ArrayTupleBuilder tb) throws IOException {
+        builder.reset();
+        return projector.project(tuple, builder.getDataOutput(), builder);
+    }
+}
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleProjectorFactory.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleProjectorFactory.java
new file mode 100644
index 0000000000..643eebcada
--- /dev/null
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleProjectorFactory.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.column.operation.lsm.secondary.upsert;
+
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.storage.common.projection.ITupleProjector;
+import org.apache.hyracks.storage.common.projection.ITupleProjectorFactory;
+
+public class UpsertPreviousColumnTupleProjectorFactory implements ITupleProjectorFactory {
+    private static final long serialVersionUID = -2320917202024130839L;
+    private final ARecordType datasetType;
+    private final ARecordType metaType;
+    private final int numberOfPrimaryKeys;
+    private final ARecordType requestedType;
+
+    public UpsertPreviousColumnTupleProjectorFactory(ARecordType datasetType, ARecordType metaType,
+            int numberOfPrimaryKeys, ARecordType requestedType) {
+        this.datasetType = datasetType;
+        this.metaType = metaType;
+        this.numberOfPrimaryKeys = numberOfPrimaryKeys;
+        this.requestedType = requestedType;
+    }
+
+    @Override
+    public ITupleProjector createTupleProjector(IHyracksTaskContext context) throws HyracksDataException {
+        if (metaType != null) {
+            return new UpsertPreviousColumnTupleWithMetaProjector(datasetType, metaType, numberOfPrimaryKeys,
+                    requestedType);
+        }
+        return new UpsertPreviousColumnTupleProjector(datasetType, numberOfPrimaryKeys, requestedType);
+    }
+}
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleWithMetaProjector.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleWithMetaProjector.java
new file mode 100644
index 0000000000..d6285dcc94
--- /dev/null
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/lsm/secondary/upsert/UpsertPreviousColumnTupleWithMetaProjector.java
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.column.operation.lsm.secondary.upsert;
+
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Collections;
+
+import org.apache.asterix.column.operation.query.QueryColumnWithMetaTupleProjector;
+import org.apache.asterix.column.values.reader.filter.evaluator.NoOpColumnFilterEvaluatorFactory;
+import org.apache.asterix.common.exceptions.NoOpWarningCollector;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.data.std.api.IValueReference;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnProjectionInfo;
+import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnTupleProjector;
+
+final class UpsertPreviousColumnTupleWithMetaProjector implements IColumnTupleProjector {
+    private final ArrayTupleBuilder builder;
+    private final QueryColumnWithMetaTupleProjector projector;
+
+    public UpsertPreviousColumnTupleWithMetaProjector(ARecordType datasetType, ARecordType metaType,
+            int numberOfPrimaryKeys, ARecordType requestedType) {
+        // +2 one for the record and one for meta
+        builder = new ArrayTupleBuilder(numberOfPrimaryKeys + 2);
+        projector = new QueryColumnWithMetaTupleProjector(datasetType, metaType, numberOfPrimaryKeys, requestedType,
+                Collections.emptyMap(), metaType, Collections.emptyMap(), NoOpColumnFilterEvaluatorFactory.INSTANCE,
+                NoOpWarningCollector.INSTANCE);
+    }
+
+    @Override
+    public IColumnProjectionInfo createProjectionInfo(IValueReference serializedMetadata) throws HyracksDataException {
+        return projector.createProjectionInfo(serializedMetadata);
+    }
+
+    @Override
+    public ITupleReference project(ITupleReference tuple, DataOutput dos, ArrayTupleBuilder tb) throws IOException {
+        builder.reset();
+        return projector.project(tuple, builder.getDataOutput(), builder);
+    }
+}
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnMetadata.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnMetadata.java
index 6c5124041b..f2407d3cc7 100644
--- a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnMetadata.java
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnMetadata.java
@@ -47,6 +47,7 @@ import org.apache.hyracks.api.exceptions.IWarningCollector;
 import org.apache.hyracks.data.std.api.IValueReference;
 import org.apache.hyracks.data.std.primitive.IntegerPointable;
 import org.apache.hyracks.storage.am.lsm.btree.column.api.AbstractColumnTupleReader;
+import org.apache.hyracks.util.LogRedactionUtil;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -172,7 +173,7 @@ public class QueryColumnMetadata extends AbstractColumnImmutableReadMetadata {
 
         if (LOGGER.isInfoEnabled() && filterEvaluator != TrueColumnFilterEvaluator.INSTANCE) {
             String filterString = filterEvaluator == FalseColumnFilterEvaluator.INSTANCE ? "SKIP_ALL"
-                    : filterEvaluatorFactory.toString();
+                    : LogRedactionUtil.userData(filterEvaluatorFactory.toString());
             LOGGER.info("Filter: {}", filterString);
         }
 
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjector.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjector.java
index 8865b13f8e..08efc2b1ad 100644
--- a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjector.java
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjector.java
@@ -37,7 +37,7 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnProjectionInfo;
 import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnTupleProjector;
 
-class QueryColumnTupleProjector implements IColumnTupleProjector {
+public class QueryColumnTupleProjector implements IColumnTupleProjector {
     protected final ARecordType datasetType;
     protected final ARecordType requestedType;
     protected final int numberOfPrimaryKeys;
@@ -46,7 +46,7 @@ class QueryColumnTupleProjector implements IColumnTupleProjector {
     protected final IColumnFilterEvaluatorFactory filterEvaluator;
     private final AssembledTupleReference assembledTupleReference;
 
-    QueryColumnTupleProjector(ARecordType datasetType, int numberOfPrimaryKeys, ARecordType requestedType,
+    public QueryColumnTupleProjector(ARecordType datasetType, int numberOfPrimaryKeys, ARecordType requestedType,
             Map<String, FunctionCallInformation> functionCallInfoMap, IColumnFilterEvaluatorFactory filterEvaluator,
             IWarningCollector warningCollector) {
         this.datasetType = datasetType;
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnWithMetaTupleProjector.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnWithMetaTupleProjector.java
index e8f9045d69..b3deb46603 100644
--- a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnWithMetaTupleProjector.java
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnWithMetaTupleProjector.java
@@ -35,12 +35,12 @@ import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnProjectionInfo;
 
-class QueryColumnWithMetaTupleProjector extends QueryColumnTupleProjector {
+public class QueryColumnWithMetaTupleProjector extends QueryColumnTupleProjector {
     private final ARecordType metaType;
     private final ARecordType requestedMetaType;
     private final Map<String, FunctionCallInformation> metaFunctionCallInfoMap;
 
-    QueryColumnWithMetaTupleProjector(ARecordType datasetType, ARecordType metaType, int numberOfPrimaryKeys,
+    public QueryColumnWithMetaTupleProjector(ARecordType datasetType, ARecordType metaType, int numberOfPrimaryKeys,
             ARecordType requestedType, Map<String, FunctionCallInformation> functionCallInfoMap,
             ARecordType requestedMetaType, Map<String, FunctionCallInformation> metaFunctionCallInfoMap,
             IColumnFilterEvaluatorFactory filterEvaluator, IWarningCollector warningCollector) {
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/util/ColumnSecondaryIndexSchemaUtil.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/util/ColumnSecondaryIndexSchemaUtil.java
new file mode 100644
index 0000000000..87c111f509
--- /dev/null
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/util/ColumnSecondaryIndexSchemaUtil.java
@@ -0,0 +1,118 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.column.util;
+
+import java.util.List;
+
+import org.apache.asterix.om.typecomputer.impl.RecordMergeTypeComputer;
+import org.apache.asterix.om.types.AOrderedListType;
+import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.om.types.BuiltinType;
+import org.apache.asterix.om.types.IAType;
+import org.apache.asterix.runtime.projection.DataProjectionFiltrationInfo;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+
+public class ColumnSecondaryIndexSchemaUtil {
+    private ColumnSecondaryIndexSchemaUtil() {
+    }
+
+    /**
+     * Get the expected type for a value index
+     *
+     * @param paths the path to the indexed value
+     * @return expected type
+     */
+    public static ARecordType getRecordType(List<List<String>> paths) throws AlgebricksException {
+        ARecordType result = DataProjectionFiltrationInfo.EMPTY_TYPE;
+        for (List<String> path : paths) {
+            ARecordType type = getRecordType(path, "root", 0, BuiltinType.ANY);
+            result = (ARecordType) RecordMergeTypeComputer.merge(result, type);
+        }
+
+        // Rename
+        return new ARecordType("root", result.getFieldNames(), result.getFieldTypes(), true);
+    }
+
+    /**
+     * Get the expected type for an array index
+     *
+     * @param unnest  the unnest path (UNNEST)
+     * @param project the project path (SELECT)
+     * @return the expected type
+     */
+    public static ARecordType getRecordType(List<List<String>> unnest, List<List<String>> project)
+            throws AlgebricksException {
+        IAType result = getLeafType(project);
+        for (int i = unnest.size() - 1; i >= 0; i--) {
+            List<String> path = unnest.get(i);
+            result = getRecordType(path, "parent_" + i, 0, new AOrderedListType(result, "array_" + i));
+        }
+        return (ARecordType) result;
+    }
+
+    /**
+     * Merge all types into a single one
+     *
+     * @param types the list of type for indexed fields
+     * @return a single type that encompasses all indexed fields
+     */
+    public static ARecordType merge(List<ARecordType> types) throws AlgebricksException {
+        ARecordType result = types.get(0);
+        for (int i = 1; i < types.size(); i++) {
+            result = (ARecordType) RecordMergeTypeComputer.merge(result, types.get(i));
+        }
+
+        // Rename
+        return new ARecordType("root", result.getFieldNames(), result.getFieldTypes(), true);
+    }
+
+    private static IAType getType(String typeName, List<String> path, int fieldIndex, IAType leafType) {
+        if (fieldIndex == path.size()) {
+            return leafType;
+        }
+        return getRecordType(path, typeName, fieldIndex, leafType);
+    }
+
+    private static ARecordType getRecordType(List<String> path, String typeName, int fieldIndex, IAType leafType) {
+        String[] fieldNames = new String[1];
+        IAType[] fieldTypes = new IAType[1];
+
+        String fieldName = path.get(fieldIndex);
+        fieldNames[0] = fieldName;
+        fieldTypes[0] = getType(getTypeName(fieldName), path, fieldIndex + 1, leafType);
+        return new ARecordType(typeName, fieldNames, fieldTypes, true);
+    }
+
+    private static IAType getLeafType(List<List<String>> project) throws AlgebricksException {
+        IAType itemType;
+        // Sometimes 'project' contains a single null value
+        if (project.isEmpty() || project.get(0) == null) {
+            itemType = BuiltinType.ANY;
+        } else {
+            itemType = getRecordType(project);
+        }
+
+        return itemType;
+    }
+
+    private static String getTypeName(String fieldName) {
+        return fieldName + "_Type";
+    }
+
+}
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/RepeatedPrimitiveColumnValuesReader.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/RepeatedPrimitiveColumnValuesReader.java
index 0fb98bef76..673aa98bd7 100644
--- a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/RepeatedPrimitiveColumnValuesReader.java
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/RepeatedPrimitiveColumnValuesReader.java
@@ -129,4 +129,16 @@ public final class RepeatedPrimitiveColumnValuesReader extends AbstractColumnVal
         }
         delimiterIndex = levelToDelimiterMap[level];
     }
+
+    @Override
+    public void skip(int count) throws HyracksDataException {
+        for (int i = 0; i < count; i++) {
+            next();
+            if (isRepeatedValue()) {
+                while (!isLastDelimiter()) {
+                    next();
+                }
+            }
+        }
+    }
 }
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
index 6b12bf82ce..bb1fdd9015 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
@@ -20,11 +20,13 @@
 package org.apache.asterix.metadata.entities;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
+import org.apache.asterix.column.util.ColumnSecondaryIndexSchemaUtil;
 import org.apache.asterix.common.config.DatasetConfig.IndexType;
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.common.exceptions.CompilationException;
@@ -223,10 +225,7 @@ public class Index implements IMetadataEntity<Index>, Comparable<Index> {
         if (!datasetName.equals(otherIndex.getDatasetName())) {
             return false;
         }
-        if (!dataverseName.equals(otherIndex.getDataverseName())) {
-            return false;
-        }
-        return true;
+        return dataverseName.equals(otherIndex.getDataverseName());
     }
 
     @Override
@@ -415,6 +414,10 @@ public class Index implements IMetadataEntity<Index>, Comparable<Index> {
         public boolean isOverridingKeyFieldTypes() {
             return overrideKeyFieldTypes;
         }
+
+        public ARecordType getIndexExpectedType() throws AlgebricksException {
+            return ColumnSecondaryIndexSchemaUtil.getRecordType(getKeyFieldNames());
+        }
     }
 
     public static final class TextIndexDetails extends AbstractIndexDetails {
@@ -504,6 +507,15 @@ public class Index implements IMetadataEntity<Index>, Comparable<Index> {
         public boolean isOverridingKeyFieldTypes() {
             return overrideKeyFieldTypes;
         }
+
+        public ARecordType getIndexExpectedType() throws AlgebricksException {
+            List<ARecordType> types = new ArrayList<>();
+            for (Index.ArrayIndexElement element : elementList) {
+                types.add(ColumnSecondaryIndexSchemaUtil.getRecordType(element.getUnnestList(),
+                        element.getProjectList()));
+            }
+            return ColumnSecondaryIndexSchemaUtil.merge(types);
+        }
     }
 
     public static final class ArrayIndexElement implements Serializable {
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
index 6529794e96..083b9641a6 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
@@ -30,6 +30,8 @@ import java.util.UUID;
 
 import org.apache.asterix.builders.IARecordBuilder;
 import org.apache.asterix.builders.RecordBuilder;
+import org.apache.asterix.column.util.ColumnSecondaryIndexSchemaUtil;
+import org.apache.asterix.common.config.DatasetConfig;
 import org.apache.asterix.common.config.DatasetConfig.DatasetType;
... 755 lines suppressed ...