temp revert back changes that break even legacy emulator

This commit is contained in:
Theo van Kraay
2024-09-05 14:57:51 +01:00
committed by Chris Anderson
parent c101f7de74
commit d9d90ac6d9
3 changed files with 17 additions and 22 deletions

View File

@@ -58,8 +58,7 @@ export class ParallelQueryExecutionContextBase {
this.err = undefined;
this.state = ParallelQueryExecutionContextBase.STATES.started;
this.routingProvider = new SmartRoutingMapProvider(this.clientContext);
//this.sortOrders = this.partitionedQueryExecutionInfo.queryInfo.orderBy;
this.sortOrders = [];
this.sortOrders = this.partitionedQueryExecutionInfo.queryInfo.orderBy;
this.requestContinuation = options ? options.continuationToken || options.continuation : null;
// response headers of undergoing operation
this.respHeaders = getInitialHeader();
@@ -82,9 +81,7 @@ export class ParallelQueryExecutionContextBase {
async _onTargetPartitionRanges() {
// invokes the callback when the target partition ranges are ready
const parsedRanges = this.partitionedQueryExecutionInfo.queryRanges;
//const queryRanges = parsedRanges.map((item) => QueryRange.parseFromDict(item));
//hard coding the partition key ranges to be the parsedRanges
const queryRanges = parsedRanges;
const queryRanges = parsedRanges.map((item) => QueryRange.parseFromDict(item));
return this.routingProvider.getOverlappingRanges(this.collectionLink, queryRanges, this.getDiagnosticNode());
}
/**

View File

@@ -1,7 +1,10 @@
import { Constants } from "../common";
import { RUCapPerOperationExceededErrorCode } from "../request/RUCapPerOperationExceededError";
import { GroupByEndpointComponent } from "./EndpointComponent/GroupByEndpointComponent";
import { GroupByValueEndpointComponent } from "./EndpointComponent/GroupByValueEndpointComponent";
import { NonStreamingOrderByDistinctEndpointComponent } from "./EndpointComponent/NonStreamingOrderByDistinctEndpointComponent";
import { NonStreamingOrderByEndpointComponent } from "./EndpointComponent/NonStreamingOrderByEndpointComponent";
import { OffsetLimitEndpointComponent } from "./EndpointComponent/OffsetLimitEndpointComponent";
import { OrderByEndpointComponent } from "./EndpointComponent/OrderByEndpointComponent";
import { OrderedDistinctEndpointComponent } from "./EndpointComponent/OrderedDistinctEndpointComponent";
import { UnorderedDistinctEndpointComponent } from "./EndpointComponent/UnorderedDistinctEndpointComponent";
@@ -24,16 +27,13 @@ export class PipelinedQueryExecutionContext {
this.pageSize = PipelinedQueryExecutionContext.DEFAULT_PAGE_SIZE;
}
// Pick between Nonstreaming and streaming endpoints
// this.nonStreamingOrderBy = partitionedQueryExecutionInfo.queryInfo.hasNonStreamingOrderBy;
this.nonStreamingOrderBy = false;
this.nonStreamingOrderBy = partitionedQueryExecutionInfo.queryInfo.hasNonStreamingOrderBy;
// Pick between parallel vs order by execution context
// const sortOrders = partitionedQueryExecutionInfo.queryInfo.orderBy;
const sortOrders = [];
const sortOrders = partitionedQueryExecutionInfo.queryInfo.orderBy;
// TODO: Currently we don't get any field from backend to determine streaming queries
if (this.nonStreamingOrderBy) {
this.vectorSearchBufferSize = this.calculateVectorSearchBufferSize(partitionedQueryExecutionInfo.queryInfo, options);
//const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;
const distinctType = "None";
const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;
const context = new ParallelQueryExecutionContext(this.clientContext, this.collectionLink, this.query, this.options, this.partitionedQueryExecutionInfo);
if (distinctType === "None") {
this.endpoint = new NonStreamingOrderByEndpointComponent(context, sortOrders, this.vectorSearchBufferSize, partitionedQueryExecutionInfo.queryInfo.offset);
@@ -51,7 +51,7 @@ export class PipelinedQueryExecutionContext {
else {
this.endpoint = new ParallelQueryExecutionContext(this.clientContext, this.collectionLink, this.query, this.options, this.partitionedQueryExecutionInfo);
}
/*if (Object.keys(partitionedQueryExecutionInfo.queryInfo.groupByAliasToAggregateType).length >
if (Object.keys(partitionedQueryExecutionInfo.queryInfo.groupByAliasToAggregateType).length >
0 ||
partitionedQueryExecutionInfo.queryInfo.aggregates.length > 0 ||
partitionedQueryExecutionInfo.queryInfo.groupByExpressions.length > 0) {
@@ -61,21 +61,20 @@ export class PipelinedQueryExecutionContext {
else {
this.endpoint = new GroupByEndpointComponent(this.endpoint, partitionedQueryExecutionInfo.queryInfo);
}
}*/
}
// If top then add that to the pipeline. TOP N is effectively OFFSET 0 LIMIT N
/*const top = partitionedQueryExecutionInfo.queryInfo.top;
const top = partitionedQueryExecutionInfo.queryInfo.top;
if (typeof top === "number") {
this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, 0, top);
}*/
}
// If offset+limit then add that to the pipeline
/*const limit = partitionedQueryExecutionInfo.queryInfo.limit;
const limit = partitionedQueryExecutionInfo.queryInfo.limit;
const offset = partitionedQueryExecutionInfo.queryInfo.offset;
if (typeof limit === "number" && typeof offset === "number") {
this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, offset, limit);
}*/
}
// If distinct then add that to the pipeline
// const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;
const distinctType = "None";
const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;
if (distinctType === "Ordered") {
this.endpoint = new OrderedDistinctEndpointComponent(this.endpoint);
}

View File

@@ -57,10 +57,9 @@ export class SmartRoutingMapProvider {
*/
async getOverlappingRanges(collectionLink, sortedRanges, diagnosticNode) {
// validate if the list is non- overlapping and sorted TODO: any PartitionKeyRanges
/*if (!SmartRoutingMapProvider._isSortedAndNonOverlapping(sortedRanges)) {
if (!SmartRoutingMapProvider._isSortedAndNonOverlapping(sortedRanges)) {
throw new Error("the list of ranges is not a non-overlapping sorted ranges");
}*/
sortedRanges = [];
}
let partitionKeyRanges = []; // TODO: any ParitionKeyRanges
if (sortedRanges.length === 0) {
return partitionKeyRanges;