Azurite icon indicating copy to clipboard operation
Azurite copied to clipboard

[Table Storage] Azurite query behavior different from Azure for null values

Open yohny opened this issue 1 year ago • 2 comments

The behavior when querying Azurite table storage and real Azure table storage is different. The query myCol eq null works without issue against Azurite table storage, but when executed against real Azure table storage the error occures. Azurite log output:

127.0.0.1 - - [01/Oct/2024:08:40:28 +0000] "GET /devstoreaccount1/RemoteSupportRequests()?$filter=myCol%20eq%20null HTTP/1.1" 200 -

Error when the same query is executed against Azure table storage from Nodejs Azure function

Executed 'Functions.registerSR' (Failed, Id=7d45ce46-8903-4a7b-94ed-30315cd4160d, Duration=2756ms)
[2024-10-01T08:48:30.785Z] System.Private.CoreLib: Exception while executing function: Functions.registerSR. System.Private.CoreLib: Result: Failure     
Exception: {"odata.error":{"code":"InvalidInput","message":{"lang":"en-US","value":"One of the request inputs is not valid.\nRequestId:a8fa2604-4002-0083-09de-138354000000\nTime:2024-10-01T08:48:30.7516873Z"}}}
Stack: RestError: {"odata.error":{"code":"InvalidInput","message":{"lang":"en-US","value":"One of the request inputs is not valid.\nRequestId:a8fa2604-4002-0083-09de-138354000000\nTime:2024-10-01T08:48:30.7516873Z"}}}
    at handleErrorResponse (C:\Users\nej\source\repos\azf-samples-ts\node_modules\@azure\core-client\dist\commonjs\deserializationPolicy.js:148:19)      
    at deserializeResponseBody (C:\Users\nej\source\repos\azf-samples-ts\node_modules\@azure\core-client\dist\commonjs\deserializationPolicy.js:83:45)   
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5).

Azurite 3.32.0

yohny avatar Oct 01 '24 08:10 yohny

@EmmaZhu Would you please help to look?

blueww avatar Oct 10 '24 03:10 blueww

We also experienced a similar issue when it comes to default aspire Healthchecks: https://github.com/Azure/Azurite/issues/2450

The reason is that the healthcheck uses a filter of just "false" so no elements get returned but azurite seems to not like that: https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks/blob/116a4eac95eac47d1811d33a1f93b053ff87fa19/src/HealthChecks.Azure.Data.Tables/AzureTableServiceHealthCheck.cs#L38

I think "false" and also maybe "true" even so they don't make much sense in general use cases should be supported here.

WolfspiritM avatar Oct 14 '24 18:10 WolfspiritM