vercel / cosmosdb-server

A Cosmos DB server implementation for testing your applications locally.
MIT License
174 stars 30 forks source link

Check partition header when querying documents #73

Open tony-kennards opened 3 years ago

tony-kennards commented 3 years ago

When we specify PartitionKey in QueryRequestOptions in c# sdk, it does not require the query string contains partition key condition. Instead, it sends the http header "x-ms-documentdb-partitionkey".

using var query = _container.GetItemQueryIterator<ProductInCosmos>(
                "SELECT * FROM c WHERE c.age < 10",
                requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey("Student") });

This PR is to check http header when querying documents. If the partition key value is provided in header, do not return 400

nkzawa commented 3 years ago

Thank you for the PR, it makes sense but additionally seems like we need to use the partition value for filtering as well?

For example, SELECT * FROM c WHERE c.age < 10 with the partition key Student should work like:

SELECT * FROM c WHERE c.age < 10 AND c.type = 'Student'

Need to investigate how real cosmos db works actually 🤔