gajus / pg-formatter

A PostgreSQL SQL syntax beautifier.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Locale issues on Windows

asherber opened this issue · comments

I'm using the Strawberry Perl distro on Windows, along with Node 20.10.0. When I invoke pg-formatter out of the box, it does what it's supposed to, but then it also outputs:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = "C.UTF-8",
        (possibly more locale environment variables)
        LANG = (unset)
    are supported and installed on your system.
perl: warning: Falling back to the system default locale ("English_United States.1252").

I'm a newbie with Perl and haven't been able to find much info about locale handling on Windows. But after a lot of poking around, I tracked this down to:

pg-formatter/src/format.ts

Lines 121 to 123 in 6e1c8af

env: {
LC_ALL: 'C.UTF-8',
},

If I change the value of LC_ALL to C on line 122, then everything works fine with no warnings. (It also works if I remove lines 121-123 entirely.)

Is using C an appropriate fix on Windows? Or is there a better approach? In either case, can this be built into pg-formatter by checking process.platform?

You could also start perl with the -X flag to disable all warnings (Have not tested the output of this).

@gajus C.UTF-8 making script unusable on macOS – it is flooding with following statement right inside the code

perl: warning: Falling back TO the standard locale ("C").
perl: warning: Setting locale failed. 
perl: warning: Please CHECK that your locale settings: LC_ALL = "C.UTF-8", LANG = (unset) are supported AND installed ON your system.

Removing env section fixes all issues.
Please consider applying that change.

This bug is preventing me from adopting eslint-plugin-sql.