Luo Chen has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/2824
Change subject: [ASTERIXDB-2429] Fix the upsert of primary key index ...................................................................... [ASTERIXDB-2429] Fix the upsert of primary key index - user model changes: no - storage format changes: no - interface changes: no Details: - Previously the primary key index is not properly maintained during upsert. Since there is no secondary key in the primary key index, the old value would always point to the primary key, which is always equal to the new value. As a result, the primary key index is nevered maintainined during upsert. - This patch fixes this bug with two changes: First, if there is a primary key index, we would perform upsert anyway no matter whether old value == new value Second, use a boolean variable to indicate whether the operation is upsert or delete since for the primary key index, old value cannot provide such information. Change-Id: I984c50831a08149becac6fb7b664da8c886bc791 --- M asterixdb/asterix-active/pom.xml M asterixdb/asterix-algebra/pom.xml M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java M asterixdb/asterix-app/pom.xml M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/common/TestExecutor.java M asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/SqlppExecutionTest.java A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-meta-pk-index/change-feed-with-meta-pk-index.1.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-meta-pk-index/change-feed-with-meta-pk-index.2.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-meta-pk-index/change-feed-with-meta-pk-index.3.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/feeds/change-feed-with-meta-pk-index/change-feed-with-meta-pk-index.4.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/upsert/primary-secondary-btree/primary-secondary-btree.4.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/results/feeds/change-feed-with-meta-pk-index/change-feed-with-meta-pk-index.1.adm A asterixdb/asterix-app/src/test/resources/runtimets/results/upsert/primary-secondary-btree/primary-secondary-btree.2.adm M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml M asterixdb/asterix-benchmark/pom.xml M asterixdb/asterix-client-helper/pom.xml M asterixdb/asterix-common/pom.xml M asterixdb/asterix-coverage/pom.xml M asterixdb/asterix-dashboard/pom.xml D asterixdb/asterix-dashboard/src/node/.angular-cli.json A asterixdb/asterix-dashboard/src/node/angular.json M asterixdb/asterix-dashboard/src/node/karma.conf.js M asterixdb/asterix-dashboard/src/node/package.json M asterixdb/asterix-dashboard/src/node/src/app/app-config.service.ts M asterixdb/asterix-dashboard/src/node/src/app/app.component.scss M asterixdb/asterix-dashboard/src/node/src/app/app.component.ts M asterixdb/asterix-dashboard/src/node/src/app/app.module.ts M asterixdb/asterix-dashboard/src/node/src/app/dashboard/appbar.component.html M asterixdb/asterix-dashboard/src/node/src/app/dashboard/appbar.component.scss M asterixdb/asterix-dashboard/src/node/src/app/dashboard/appbar.component.ts M asterixdb/asterix-dashboard/src/node/src/app/dashboard/apptab.component.html M asterixdb/asterix-dashboard/src/node/src/app/dashboard/apptab.component.scss M asterixdb/asterix-dashboard/src/node/src/app/dashboard/apptab.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/codemirror-metadata.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/codemirror-metadata.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datasets-collection/dataset-create-dialog.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datasets-collection/dataset-create-dialog.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datasets-collection/dataset-drop-dialog.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datasets-collection/dataset-drop-dialog.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datasets-collection/datasets.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datasets-collection/datasets.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datasets-collection/datasets.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datatypes-collection/datatype-create-dialog.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datatypes-collection/datatype-drop-dialog.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datatypes-collection/datatype-drop-dialog.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datatypes-collection/datatypes.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datatypes-collection/datatypes.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/datatypes-collection/datatypes.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/dataverses-collection/dataverses-create-dialog.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/dataverses-collection/dataverses-drop-dialog.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/dataverses-collection/dataverses-drop-dialog.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/dataverses-collection/dataverses.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/dataverses-collection/dataverses.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/dataverses-collection/dataverses.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/indexes-collection/index-create-dialog.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/indexes-collection/index-create-dialog.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/indexes-collection/index-drop-dialog.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/indexes-collection/index-drop-dialog.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/indexes-collection/indexes.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/indexes-collection/indexes.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/indexes-collection/indexes.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/input-metadata.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/input-metadata.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/input-metadata.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/metadata-container.component.html D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/metadata-container.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/metadata/metadata-container.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/codemirror.component.scss D asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/codemirror.component.ts M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/input.component.html M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/input.component.scss M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/input.component.ts R asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/metadata-inspector.component.html R asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/metadata-inspector.component.scss M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/metadata.component.html M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/metadata.component.scss M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/metadata.component.ts D asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/ouput.component.ts M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/output.component.html M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/output.component.scss A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/output.component.ts A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/plan-node-svg.component.html A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/plan-node-svg.component.scss A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/plan-node-svg.component.ts A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/plan-view.component.html A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/plan-view.component.scss A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/plan-view.component.ts M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/query-container.component.html M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/query-container.component.scss M asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/query-container.component.ts A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/tree-node.component.html A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/tree-node.component.scss A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/tree-node.component.ts A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/tree-view.component.html A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/tree-view.component.scss A asterixdb/asterix-dashboard/src/node/src/app/dashboard/query/tree-view.component.ts D asterixdb/asterix-dashboard/src/node/src/app/db.ts M asterixdb/asterix-dashboard/src/node/src/app/material.module.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/actions/app.actions.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/actions/dataset.actions.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/actions/datatype.actions.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/actions/dataverse.actions.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/actions/index.actions.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/actions/metadata.actions.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/actions/query.actions.ts R asterixdb/asterix-dashboard/src/node/src/app/shared/effects/app.effects.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/effects/dataset.effects.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/effects/datatype.effects.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/effects/dataverse.effects.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/effects/index.effects.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/effects/metadata.effects.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/effects/query.effects.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/models/asterixDB.model.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/keys.pipe.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/pipes/objectArrayType.pipe.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/app.reducer.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataset.reducer.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/datatype.reducer.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/dataverse.reducer.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.reducer.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/index.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/metadata.reducer.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query-metadata.reducer.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/reducers/query.reducer.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/services/app-core.service.ts D asterixdb/asterix-dashboard/src/node/src/app/shared/services/async-metadata.service.ts M asterixdb/asterix-dashboard/src/node/src/app/shared/services/async-query.service.ts A asterixdb/asterix-dashboard/src/node/src/assets/feather.png A asterixdb/asterix-dashboard/src/node/src/assets/tree.svg M asterixdb/asterix-dashboard/src/node/src/environments/environment.prod.ts M asterixdb/asterix-dashboard/src/node/src/environments/environment.ts M asterixdb/asterix-dashboard/src/node/src/index.html M asterixdb/asterix-dashboard/src/node/src/main.scss M asterixdb/asterix-dashboard/src/node/src/main.ts M asterixdb/asterix-dashboard/src/node/src/polyfills.ts M asterixdb/asterix-dashboard/src/node/src/styles/_constants.scss M asterixdb/asterix-dashboard/src/node/src/styles/_general.scss M asterixdb/asterix-dashboard/src/node/src/test.ts M asterixdb/asterix-dashboard/src/node/src/tsconfig.app.json M asterixdb/asterix-dashboard/src/node/src/tsconfig.spec.json M asterixdb/asterix-dashboard/src/node/src/typings.d.ts M asterixdb/asterix-dashboard/src/node/tslint.json M asterixdb/asterix-doc/pom.xml M asterixdb/asterix-examples/pom.xml M asterixdb/asterix-external-data/pom.xml M asterixdb/asterix-fuzzyjoin/pom.xml M asterixdb/asterix-hivecompat/pom.xml M asterixdb/asterix-lang-aql/pom.xml M asterixdb/asterix-lang-common/pom.xml M asterixdb/asterix-lang-sqlpp/pom.xml M asterixdb/asterix-license/pom.xml M asterixdb/asterix-maven-plugins/asterix-evaluator-generator-maven-plugin/pom.xml M asterixdb/asterix-maven-plugins/asterix-grammar-extension-maven-plugin/pom.xml M asterixdb/asterix-maven-plugins/asterix-test-datagenerator-maven-plugin/pom.xml M asterixdb/asterix-maven-plugins/lexer-generator-maven-plugin/pom.xml M asterixdb/asterix-maven-plugins/pom.xml M asterixdb/asterix-maven-plugins/record-manager-generator-maven-plugin/pom.xml M asterixdb/asterix-metadata/pom.xml M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java M asterixdb/asterix-om/pom.xml M asterixdb/asterix-replication/pom.xml M asterixdb/asterix-runtime/pom.xml M asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java M asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorDescriptor.java M asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMSecondaryUpsertOperatorNodePushable.java M asterixdb/asterix-server/pom.xml M asterixdb/asterix-test-framework/pom.xml M asterixdb/asterix-tools/pom.xml M asterixdb/asterix-transactions/pom.xml M asterixdb/pom.xml M asterixdb/src/main/assembly/source.xml M asterixdb/src/main/licenses/templates/3rdpartylicenses.txt M hyracks-fullstack/algebricks/algebricks-common/pom.xml M hyracks-fullstack/algebricks/algebricks-compiler/pom.xml M hyracks-fullstack/algebricks/algebricks-core/pom.xml M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IndexInsertDeleteUpsertOperator.java M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java M hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/UsedVariableVisitor.java M hyracks-fullstack/algebricks/algebricks-data/pom.xml M hyracks-fullstack/algebricks/algebricks-rewriter/pom.xml M hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java M hyracks-fullstack/algebricks/algebricks-runtime/pom.xml M hyracks-fullstack/algebricks/algebricks-tests/pom.xml M hyracks-fullstack/algebricks/pom.xml M hyracks-fullstack/hyracks-fullstack-license/pom.xml M hyracks-fullstack/hyracks/hyracks-api/pom.xml M hyracks-fullstack/hyracks/hyracks-client/pom.xml M hyracks-fullstack/hyracks/hyracks-comm/pom.xml M hyracks-fullstack/hyracks/hyracks-control/hyracks-control-cc/pom.xml M hyracks-fullstack/hyracks/hyracks-control/hyracks-control-common/pom.xml M hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/pom.xml M hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/pom.xml M hyracks-fullstack/hyracks/hyracks-control/pom.xml M hyracks-fullstack/hyracks/hyracks-data/hyracks-data-std/pom.xml M hyracks-fullstack/hyracks/hyracks-data/pom.xml M hyracks-fullstack/hyracks/hyracks-dataflow-common/pom.xml M hyracks-fullstack/hyracks/hyracks-dataflow-std/pom.xml M hyracks-fullstack/hyracks/hyracks-dist/pom.xml M hyracks-fullstack/hyracks/hyracks-documentation/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeserver/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/btree-example/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/hyracks-shutdown-test/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/text-example/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/text-example/textclient/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/text-example/texthelper/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/text-example/textserver/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/tpch-example/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/tpch-example/tpchclient/pom.xml M hyracks-fullstack/hyracks/hyracks-examples/tpch-example/tpchserver/pom.xml M hyracks-fullstack/hyracks/hyracks-hdfs/pom.xml M hyracks-fullstack/hyracks/hyracks-http/pom.xml M hyracks-fullstack/hyracks/hyracks-ipc/pom.xml M hyracks-fullstack/hyracks/hyracks-maven-plugins/hyracks-virtualcluster-maven-plugin/pom.xml M hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml M hyracks-fullstack/hyracks/hyracks-maven-plugins/pom.xml M hyracks-fullstack/hyracks/hyracks-net/pom.xml M hyracks-fullstack/hyracks/hyracks-server/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-btree/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-common/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-am-rtree/pom.xml M hyracks-fullstack/hyracks/hyracks-storage-common/pom.xml M hyracks-fullstack/hyracks/hyracks-test-support/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-bloomfilter-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-btree-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-common-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-lsm-rtree-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/hyracks-storage-common-test/pom.xml M hyracks-fullstack/hyracks/hyracks-tests/pom.xml M hyracks-fullstack/hyracks/hyracks-util/pom.xml M hyracks-fullstack/hyracks/pom.xml M hyracks-fullstack/pom.xml M hyracks-fullstack/src/main/assembly/source.xml M pom.xml 249 files changed, 5,012 insertions(+), 7,385 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/24/2824/1 -- To view, visit https://asterix-gerrit.ics.uci.edu/2824 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I984c50831a08149becac6fb7b664da8c886bc791 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Luo Chen <[email protected]>
