>From Ali Alsuliman <[email protected]>:

Ali Alsuliman has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17399 )

Change subject: [ASTERIXDB-3119][*DB][IDX] Make local ordering property only on 
SKs
......................................................................

[ASTERIXDB-3119][*DB][IDX] Make local ordering property only on SKs

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
For now, make the local ordering property of query-index() on
only the secondary keys.

Change-Id: I8afb2b197da19b45b91507280652f2171b40e9c4
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17399
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Murtadha Hubail <[email protected]>
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexDatasource.java
2 files changed, 32 insertions(+), 7 deletions(-)

Approvals:
  Murtadha Hubail: Looks good to me, approved
  Jenkins: Verified; Verified
  Anon. E. Moose #1000171:




diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexDatasource.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexDatasource.java
index f43588e..cf2b891 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexDatasource.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexDatasource.java
@@ -56,13 +56,16 @@
     private final Dataset ds;
     private final String indexName;
     private final AlgebricksAbsolutePartitionConstraint storageLocations;
+    private final int numSecKeys;

     public QueryIndexDatasource(Dataset ds, String indexName, INodeDomain 
domain,
-            AlgebricksAbsolutePartitionConstraint storageLocations, 
ARecordType recType) throws AlgebricksException {
+            AlgebricksAbsolutePartitionConstraint storageLocations, 
ARecordType recType, int numSecKeys)
+            throws AlgebricksException {
         super(createQueryIndexDataSourceId(ds, indexName), 
QueryIndexRewriter.QUERY_INDEX, domain, recType);
         this.ds = ds;
         this.indexName = indexName;
         this.storageLocations = storageLocations;
+        this.numSecKeys = numSecKeys;
     }

     @Override
@@ -109,12 +112,12 @@
     public IDataSourcePropertiesProvider getPropertiesProvider() {
         return scanVariables -> {
             List<ILocalStructuralProperty> propsLocal = new ArrayList<>(1);
-            int numScanKeys = scanVariables.size();
-            List<OrderColumn> scanKeys = new ArrayList<>(numScanKeys);
-            for (int i = 0; i < numScanKeys; i++) {
-                scanKeys.add(new OrderColumn(scanVariables.get(i), 
OrderOperator.IOrder.OrderKind.ASC));
+            //TODO(ali): consider primary keys?
+            List<OrderColumn> secKeys = new ArrayList<>(numSecKeys);
+            for (int i = 0; i < numSecKeys; i++) {
+                secKeys.add(new OrderColumn(scanVariables.get(i), 
OrderOperator.IOrder.OrderKind.ASC));
             }
-            propsLocal.add(new LocalOrderProperty(scanKeys));
+            propsLocal.add(new LocalOrderProperty(secKeys));
             return new StructuralPropertiesVector(new 
RandomPartitioningProperty(domain), propsLocal);
         };
     }
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
index 1906fcf..e0ff9c2 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
@@ -128,7 +128,8 @@
                 (AlgebricksAbsolutePartitionConstraint) 
secIdxHelper.getSecondaryPartitionConstraint();
         INodeDomain domain = mp.findNodeDomain(ds.getNodeGroupName());
         ARecordType recType = computeRecType(f, mp, null, null, null);
-        return new QueryIndexDatasource(ds, idx.getIndexName(), domain, 
secPartitionConstraint, recType);
+        int numSecKeys = ((Index.ValueIndexDetails) 
idx.getIndexDetails()).getKeyFieldNames().size();
+        return new QueryIndexDatasource(ds, idx.getIndexName(), domain, 
secPartitionConstraint, recType, numSecKeys);
     }

     private ARecordType computeRecType(AbstractFunctionCallExpression f, 
MetadataProvider metadataProvider,

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17399
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: neo
Gerrit-Change-Id: I8afb2b197da19b45b91507280652f2171b40e9c4
Gerrit-Change-Number: 17399
Gerrit-PatchSet: 2
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Murtadha Hubail <[email protected]>
Gerrit-MessageType: merged

Reply via email to