[ASTERIXDB-3494][STO] Column tuple projector fixes
- user model changes: no
- storage format changes: no
- interface changes: no
- Fix column projection types for tuple projectors.
- Use the proper ColumnReadContext on MODIFY operations.
Ext-ref: MB-63316
Change-Id: I3672352d7c8213c0478f88521d64f75ae67fb6e5
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18773
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Wail Alkowaileet <wael.y.k@gmail.com>
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
index 79a1860..096134a 100644
--- 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
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.column.operation.lsm.secondary.create;
+import static org.apache.hyracks.storage.am.lsm.btree.column.api.projection.ColumnProjectorType.MODIFY;
+
import java.io.DataOutput;
import java.io.IOException;
import java.util.Collections;
@@ -40,7 +42,7 @@
int numberOfPrimaryKeys, ARecordType requestedType) {
projector = new QueryColumnWithMetaTupleProjector(datasetType, metaType, numberOfPrimaryKeys, requestedType,
Collections.emptyMap(), metaType, NoOpColumnFilterEvaluatorFactory.INSTANCE,
- NoOpColumnFilterEvaluatorFactory.INSTANCE, NoOpWarningCollector.INSTANCE, null);
+ NoOpColumnFilterEvaluatorFactory.INSTANCE, NoOpWarningCollector.INSTANCE, null, MODIFY);
}
@Override
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
index 271649a..65d6d21 100644
--- 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
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.column.operation.lsm.secondary.upsert;
+import static org.apache.hyracks.storage.am.lsm.btree.column.api.projection.ColumnProjectorType.MODIFY;
+
import java.io.DataOutput;
import java.io.IOException;
import java.util.Collections;
@@ -43,7 +45,7 @@
builder = new ArrayTupleBuilder(numberOfPrimaryKeys + 2);
projector = new QueryColumnWithMetaTupleProjector(datasetType, metaType, numberOfPrimaryKeys, requestedType,
Collections.emptyMap(), metaType, NoOpColumnFilterEvaluatorFactory.INSTANCE,
- NoOpColumnFilterEvaluatorFactory.INSTANCE, NoOpWarningCollector.INSTANCE, null);
+ NoOpColumnFilterEvaluatorFactory.INSTANCE, NoOpWarningCollector.INSTANCE, null, MODIFY);
}
@Override
diff --git a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjectorFactory.java b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjectorFactory.java
index e333405..68362e8 100644
--- a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjectorFactory.java
+++ b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/QueryColumnTupleProjectorFactory.java
@@ -68,6 +68,6 @@
// The dataset has a meta part
return new QueryColumnWithMetaTupleProjector(datasetType, metaType, numberOfPrimaryKeys, requestedType,
functionCallInfo, requestedMetaType, rangeFilterEvaluatorFactory, columnFilterEvaluatorFactory,
- warningCollector, context);
+ warningCollector, context, QUERY);
}
}
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 74524fe..d7fb662 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
@@ -18,8 +18,6 @@
*/
package org.apache.asterix.column.operation.query;
-import static org.apache.hyracks.storage.am.lsm.btree.column.api.projection.ColumnProjectorType.QUERY;
-
import java.io.DataOutput;
import java.io.IOException;
import java.util.Map;
@@ -37,6 +35,7 @@
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.ColumnProjectorType;
import org.apache.hyracks.storage.am.lsm.btree.column.api.projection.IColumnProjectionInfo;
public class QueryColumnWithMetaTupleProjector extends QueryColumnTupleProjector {
@@ -47,9 +46,9 @@
ARecordType requestedType, Map<String, FunctionCallInformation> functionCallInfoMap,
ARecordType requestedMetaType, IColumnRangeFilterEvaluatorFactory filterEvaluator,
IColumnIterableFilterEvaluatorFactory columnFilterEvaluatorFactory, IWarningCollector warningCollector,
- IHyracksTaskContext context) {
+ IHyracksTaskContext context, ColumnProjectorType projectorType) {
super(datasetType, numberOfPrimaryKeys, requestedType, functionCallInfoMap, filterEvaluator,
- columnFilterEvaluatorFactory, warningCollector, context, QUERY);
+ columnFilterEvaluatorFactory, warningCollector, context, projectorType);
this.metaType = metaType;
this.requestedMetaType = requestedMetaType;
}
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/CloudColumnIndexDiskCacheManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/CloudColumnIndexDiskCacheManager.java
index 417322e..34d8344 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/CloudColumnIndexDiskCacheManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/CloudColumnIndexDiskCacheManager.java
@@ -28,7 +28,6 @@
import org.apache.hyracks.storage.am.lsm.btree.column.cloud.buffercache.IColumnReadContext;
import org.apache.hyracks.storage.am.lsm.btree.column.cloud.buffercache.IColumnWriteContext;
import org.apache.hyracks.storage.am.lsm.btree.column.cloud.buffercache.read.CloudColumnReadContext;
-import org.apache.hyracks.storage.am.lsm.btree.column.cloud.buffercache.read.DefaultColumnReadContext;
import org.apache.hyracks.storage.am.lsm.btree.column.cloud.buffercache.write.CloudColumnWriteContext;
import org.apache.hyracks.storage.am.lsm.btree.column.cloud.sweep.ColumnSweepPlanner;
import org.apache.hyracks.storage.am.lsm.btree.column.cloud.sweep.ColumnSweeper;
@@ -73,9 +72,8 @@
if (projectorType == ColumnProjectorType.QUERY) {
planner.access(projectionInfo);
} else if (projectorType == ColumnProjectorType.MODIFY) {
- planner.setIndexedColumns(projectionInfo);
// Requested (and indexed) columns will be persisted if space permits
- return DefaultColumnReadContext.INSTANCE;
+ planner.setIndexedColumns(projectionInfo);
}
return new CloudColumnReadContext(projectionInfo, drive, planner.getPlanCopy());
}