madd0/AzureStorageDriver

Malformed OData Request

mguinness opened this issue · 2 comments

Getting "Bad Request" when using the following LINQ query:

from t in TestTable
where t.PartitionKey == "Date Test" && t.TestDate < t.Timestamp
select t

Resulting query is: (PartitionKey eq 'Date Test') and (() lt ())

While the LINQ query is valid, OData only supports a subset of criteria and therefore cannot be translated.

Could an exception should be raised in those instances?

madd0 commented

From what I understand, Table storage doesn't support comparing table columns among them, only against expressions that can be converted to constants in the OData query.

An exception is actually being thrown; StorageException 😛

The translation of Linq code into an OData query is done by the Azure SDK, so I don't control much of that process. I used to at least be able to show the URL in the SQL tab of LinqPad, but since I updated to a newer version of the SDK I can't even do that any more.

What do you suggest would be more appropriate behaviour?

I am getting StorageException in LINQPad, but I thought that it might be possible to validate the query string before making the request. If the translation is done within Azure SDK then not much can be done about that. Thanks for your response.