Re: new environment variable INITDB_LOCALE_PROVIDER
| От | Jeff Davis | 
|---|---|
| Тема | Re: new environment variable INITDB_LOCALE_PROVIDER | 
| Дата | |
| Msg-id | 70b850f2f825df09be3444f76bb80ee10f471690.camel@j-davis.com обсуждение исходный текст  | 
		
| Ответ на | Re: new environment variable INITDB_LOCALE_PROVIDER (Chao Li <li.evan.chao@gmail.com>) | 
| Ответы | 
                	
            		Re: new environment variable INITDB_LOCALE_PROVIDER
            		
            		 | 
		
| Список | pgsql-hackers | 
On Fri, 2025-10-10 at 12:13 +0800, Chao Li wrote:
> Are we assuming that 
>
> * if the settings come from command line options, then the user is
> intentionally doing that, so we throw an error
> * if the settings come from env, then the user might not be aware of
> them, so we only issue a warning?
>
> If that’s the case, I’m not fully convinced by this design. Since
> initdb is a one-time operation, I think it would be better to require
> everything to be explicit.
That would have been ideal a long time ago, but plain "initdb" without
locale options has succeeded for a long time, using information from
the environment. If we make that fail and require the user to specify
the options explicitly, I fear that would be too disruptive to the many
scripts around.
So we need to do something reasonable when the provider is builtin and
LC_CTYPE/LC_COLLATE from the environment are incompatible with UTF-8.
Forcing LC_CTYPE=C and/or LC_COLLATE=C:
  * Only happens if:
    - the provider is builtin;
    - LC_CTYPE/LC_COLLATE come from the environment (i.e.
      --locale/--lc-ctype/--lc-collate are unspecified); and
    - LC_CTYPE/LC_COLLATE are incompatible with UTF-8.
  * Has little practical effect because those settings aren't
    used many places when the provider is builtin or ICU.
so I think a warning is acceptable there.
Regards,
    Jeff Davis
		
	В списке pgsql-hackers по дате отправления: