Azurite
Azurite copied to clipboard
[Table Storage] Azurite query behavior different from Azure for null values
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
@EmmaZhu Would you please help to look?
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.