Skip to content

Culture Configuration in Azure Cosmos DB Emulator #1860

@Florent-LAVAUD

Description

@Florent-LAVAUD

Hello,

I am reaching out to seek your assistance regarding an issue I am encountering with the Azure Cosmos DB Emulator.

Problem Description

I am developing a .NET application using Azure Cosmos DB, and when executing Gremlin queries on the Azure Cosmos DB Emulator locally, I encounter the following error:

Gremlin query syntax error: Unable to parse decimal literal.

This error occurs when executing a query containing a decimal number, for example: .property('field1$.field2', 2.2). After several investigations, it seems that this error is related to the emulator's culture configuration, specifically how decimal numbers are interpreted. My development environment uses the French culture, which uses a comma (,) as the decimal separator instead of a period (.).

Technical Details

  • Operating System: Windows 11
  • Version of Cosmos DB Emulator: 2.14.18.0 (installed locally, NOT the Docker container)
  • Version of .NET: 8.0.300

Actions Taken

By changing my system's regional settings to en-US, I was able to confirm that the issue is indeed related to the application's culture, as the exception no longer occurs in this configuration. However, I wish to keep my system in French.

To address this issue, I attempted to add the following line in my emulator startup script:

$env:DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1

However, for the past few months, adding this line has completely prevented the emulator from starting.

Here's my full script :

# Set culture to en-US for this session
# this is not working either, the exception is still thrown
# $env:DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = "false"
# $env:DOTNET_CLI_UI_LANGUAGE = "en-US"
# $env:LC_ALL = "en-US"
# $env:LANG = "en-US"

# With this setting, the emulator not start properly
# $env:DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = 1 

Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator"

$startEmulatorCmd = "Start-CosmosDbEmulator -EnableGremlin"

Invoke-Expression -Command $startEmulatorCmd

Request for Assistance

Could you please advise if there is a method to configure the specific culture of the Azure Cosmos DB Emulator so that it uses a period (.) as the decimal separator, without affecting other applications on my system?

Thank you in advance for your help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions