Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Perl Locale update with LANG env setting #93

Merged
merged 13 commits into from
Aug 8, 2024
Merged

Conversation

Eprince-hub
Copy link
Member

@Eprince-hub Eprince-hub commented Aug 2, 2024

Closes #47

The solution provided in #80 caused a new error postmaster became multithreaded during startup as postgres server could not be started in macOS terminal if the LANG locale is not set. This was not noticed during the PR because the iTerm2 used for the testing sets the LANG locale automatically but the macOS terminal does not.

The FATAL: postmaster became multithreaded during startup error could be caused by anything, but these are the things we know now so far

  1. When the LANG environment variable is unset to LANG= or LANG="", the above error will occur. When running Postgres from iTerm2, this error doesn't occur because iTerm2 sets this LANG environment variable by default using the system language setting
  2. iTerm2 had an initial value of en_GB.UTF-8, which is my system's primary language setting for all locale
  3. This error occurs in the macOS terminal when running Postgres because the LANG is unset by default.
  4. Setting the LANG in the macOS terminal fixed the issue, and Postgres could run without any problem
  5. Unsetting the LANG in the iTerm2 terminal causes the error to also occur there
  6. When LANG is set, other LC_ variables use the value assigned to it
  7. When LANG is unset, other LC_ variables will have a default value of C

Screenshot 2024-08-02 at 17 21 38

Values when LANG is unset

locale output when running locale

macOS terminal

LANG=""
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

iterm2 Terminal

LANG=""
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

env variables output when running env

macOS terminal

__CFBundleIdentifier=com.apple.Terminal
TMPDIR=/var/folders/0w/8ddfv3y91kqf7_qpsxwv9y2r0000gn/T/
XPC_FLAGS=0x0
TERM=xterm-256color
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.a9uJAPLv9o/Listeners
XPC_SERVICE_NAME=0
TERM_PROGRAM=Apple_Terminal
TERM_PROGRAM_VERSION=453
TERM_SESSION_ID=2558D981-7F90-452B-ADA4-8C036000F518
SHELL=/bin/zsh
HOME=/Users/upleveled
LOGNAME=upleveled
USER=upleveled
PATH=/Users/upleveled/.console-ninja/.bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/upleveled/development/flutter/bin:/Users/upleveled/Library/Android/sdk/platform-tools
SHLVL=1
PWD=/Users/upleveled
OLDPWD=/Users/upleveled/upleveled/system-setup
ANDROID_SDK=/Users/upleveled/Android/Sdk
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_REPOSITORY=/opt/homebrew
INFOPATH=/opt/homebrew/share/info:
PGDATA=/opt/homebrew/var/postgresql@16
PSQL_PAGER=less --chop-long-lines --header 1
LC_CTYPE=UTF-8
_=/usr/bin/env

iterm2 terminal

TERM_SESSION_ID=w0t0p0:289876C1-77BD-4A97-92B7-FB315FED884B
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.a9uJAPLv9o/Listeners
LC_TERMINAL_VERSION=3.5.3
COLORFGBG=15;0
ITERM_PROFILE=Default
XPC_FLAGS=0x0
PWD=/Users/upleveled
SHELL=/bin/zsh
__CFBundleIdentifier=com.googlecode.iterm2
TERM_FEATURES=T3LrMSc7UUw9Ts3BFGsSyHNoSxF
TERM_PROGRAM_VERSION=3.5.3
TERM_PROGRAM=iTerm.app
PATH=/Users/upleveled/.console-ninja/.bin:/Users/upleveled/.console-ninja/.bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/upleveled/development/flutter/bin:/Users/upleveled/Library/Android/sdk/platform-tools:/Applications/iTerm.app/Contents/Resources/utilities
LC_TERMINAL=iTerm2
COLORTERM=truecolor
COMMAND_MODE=unix2003
TERM=xterm-256color
TERMINFO_DIRS=/Applications/iTerm.app/Contents/Resources/terminfo:/usr/share/terminfo
HOME=/Users/upleveled
TMPDIR=/var/folders/0w/8ddfv3y91kqf7_qpsxwv9y2r0000gn/T/
USER=upleveled
XPC_SERVICE_NAME=0
LOGNAME=upleveled
ITERM_SESSION_ID=w0t0p0:289876C1-77BD-4A97-92B7-FB315FED884B
__CF_USER_TEXT_ENCODING=0x0:0:0
SHLVL=1
OLDPWD=/Users/upleveled
ANDROID_SDK=/Users/upleveled/Android/Sdk
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_REPOSITORY=/opt/homebrew
INFOPATH=/opt/homebrew/share/info:
PGDATA=/opt/homebrew/var/postgresql@16
PSQL_PAGER=less --chop-long-lines --header 1
_=/usr/bin/env

Postgres not running when LANG is unset

iTerm2 terminal
Screenshot 2024-08-02 at 18 34 39

macOS terminal
Screenshot 2024-08-02 at 18 35 24

Values when LANG is set

locale output when running locale

macOS terminal

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

iTerm2 Terminal

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=

env variables output when running env

macOS terminal

__CFBundleIdentifier=com.apple.Terminal
TMPDIR=/var/folders/0w/8ddfv3y91kqf7_qpsxwv9y2r0000gn/T/
XPC_FLAGS=0x0
TERM=xterm-256color
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.a9uJAPLv9o/Listeners
XPC_SERVICE_NAME=0
TERM_PROGRAM=Apple_Terminal
TERM_PROGRAM_VERSION=453
TERM_SESSION_ID=2558D981-7F90-452B-ADA4-8C036000F518
SHELL=/bin/zsh
HOME=/Users/upleveled
LOGNAME=upleveled
USER=upleveled
PATH=/Users/upleveled/.console-ninja/.bin:/Users/upleveled/.console-ninja/.bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/upleveled/development/flutter/bin:/Users/upleveled/Library/Android/sdk/platform-tools
SHLVL=1
PWD=/Users/upleveled
OLDPWD=/Users/upleveled/upleveled/system-setup
ANDROID_SDK=/Users/upleveled/Android/Sdk
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_REPOSITORY=/opt/homebrew
INFOPATH=/opt/homebrew/share/info:
PGDATA=/opt/homebrew/var/postgresql@16
PSQL_PAGER=less --chop-long-lines --header 1
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
_=/usr/bin/env

iTerm2 terminal

TERM_SESSION_ID=w0t0p0:289876C1-77BD-4A97-92B7-FB315FED884B
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.a9uJAPLv9o/Listeners
LC_TERMINAL_VERSION=3.5.3
COLORFGBG=15;0
ITERM_PROFILE=Default
XPC_FLAGS=0x0
PWD=/Users/upleveled
SHELL=/bin/zsh
__CFBundleIdentifier=com.googlecode.iterm2
TERM_FEATURES=T3LrMSc7UUw9Ts3BFGsSyHNoSxF
TERM_PROGRAM_VERSION=3.5.3
TERM_PROGRAM=iTerm.app
PATH=/Users/upleveled/.console-ninja/.bin:/Users/upleveled/.console-ninja/.bin:/Users/upleveled/.console-ninja/.bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/upleveled/development/flutter/bin:/Users/upleveled/Library/Android/sdk/platform-tools:/Applications/iTerm.app/Contents/Resources/utilities
LC_TERMINAL=iTerm2
COLORTERM=truecolor
COMMAND_MODE=unix2003
TERM=xterm-256color
TERMINFO_DIRS=/Applications/iTerm.app/Contents/Resources/terminfo:/usr/share/terminfo
HOME=/Users/upleveled
TMPDIR=/var/folders/0w/8ddfv3y91kqf7_qpsxwv9y2r0000gn/T/
USER=upleveled
XPC_SERVICE_NAME=0
LOGNAME=upleveled
ITERM_SESSION_ID=w0t0p0:289876C1-77BD-4A97-92B7-FB315FED884B
__CF_USER_TEXT_ENCODING=0x0:0:0
SHLVL=1
OLDPWD=/Users/upleveled
ANDROID_SDK=/Users/upleveled/Android/Sdk
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_REPOSITORY=/opt/homebrew
INFOPATH=/opt/homebrew/share/info:
PGDATA=/opt/homebrew/var/postgresql@16
PSQL_PAGER=less --chop-long-lines --header 1
LANG=en_US.UTF-8
_=/usr/bin/env

Postgres running with no error when LANG is set

iTerm2
Screenshot 2024-08-02 at 18 30 57

macOS terminal
Screenshot 2024-08-02 at 18 31 47

https://iterm2.com/documentation-preferences-profiles-terminal.html#:~:text=a%20bell%20graphic.-,Environment,-You%20have%20the

Solutions: setting the LANG

After checking all the systems, I realized that setting the LANG to English and recommended encoding (export LANG=en_US.UTF-8) will make Postgres use these values and encoding which will solve the postmaster multithreaded error and also make postgres ignore the values of the lc_messages and the lc_timeset in thepostgresql.conf` file which makes this PR #80 obsolete.
Postgres will only default to the values in postgresql.conf file if none of these are set (LC_ALL, LC_COLLATE, LANG)

Before running the environment variable setup

Screenshot 2024-08-06 162316
Screenshot 2024-08-06 at 16 20 15
Screenshot 2024-08-06 at 16 35 27

After running the environment variable setup

Screenshot 2024-08-06 162351
Screenshot 2024-08-06 at 16 20 37
Screenshot 2024-08-06 at 16 37 32

@Eprince-hub Eprince-hub self-assigned this Aug 2, 2024
PGDATA=$(dirname "$(sudo -u postgres psql --tuples-only --pset format=unaligned --command "SHOW config_file;")")
source ~/`[[ $SHELL == *"zsh" ]] && echo '.zshenv' || echo '.bashrc'`
perl -i -pe 's/^[#\s]*(lc_messages|lc_time)\s*=.+$/\1 = '\''en_US.UTF-8'\''/' "$PGDATA/postgresql.conf"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting lc_messages and lc_time in the postgresql.conf file is not needed when the LANG is set as the Postgres server will use the value of this whenever it's set and only default back to the values in the postgresql.conf file when LANG is not set

Source
Postgres docs
Postgres docs

source ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'`
perl -i -pe 's/^[#\s]*(lc_messages|lc_time)\s*=.+$/\1 = '\''en_US.UTF-8'\''/' "$PGDATA/postgresql.conf"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting lc_messages and lc_time in the postgresql.conf file is not needed when the LANG is set as the Postgres server will use the value of this whenever it's set and only default back to the values in the postgresql.conf file when LANG is not set

Source
Postgres docs
Postgres docs

source "$USERPROFILE/.bash_profile"
perl -i -pe 's/^[#\s]*(lc_messages|lc_time)\s*=.+$/\1 = '\''en_US.UTF-8'\''/' "$PGDATA/postgresql.conf"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting lc_messages and lc_time in the postgresql.conf file is not needed when the LANG is set as the Postgres server will use the value of this whenever it's set and only default back to the values in the postgresql.conf file when LANG is not set

Source
Postgres docs
Postgres docs

macos.md Outdated
echo "\nexport PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'`
echo -e "export PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'`
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Add a setting for the environment variable for the LANG locale, as Postgres server will use the encoding set to it and ignore the settings in the postgresql.conf file
  2. Use the similar echo command that is used on other systems because the previous command doesn't work on Linux and Windows

windows.md Outdated
echo "export PSQL_PAGER=\"less --chop-long-lines --header 1\"" >> "$USERPROFILE/.bash_profile"
echo -e "export PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> "$USERPROFILE/.bash_profile"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Add a setting for the environment variable for the LANG locale, as Postgres server will use the encoding set to it and ignore the settings in the postgresql.conf file

linux.md Outdated
echo "export PSQL_PAGER=\"less --chop-long-lines --header 1\"" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshenv' || echo '.bashrc'`
echo -e "export PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshenv' || echo '.bashrc'`
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Add a setting for the environment variable for the LANG locale, as Postgres server will use the encoding set to it and ignore the settings in the postgresql.conf file

@Eprince-hub Eprince-hub requested a review from karlhorky August 6, 2024 15:48
macos.md Outdated
@@ -191,9 +191,8 @@ Make sure that you're running the 2nd-newest macOS version or the newest version

```bash
[[ -d /opt/homebrew/var/postgresql@16 ]] && PGDATA_TMP=/opt/homebrew/var/postgresql@16 || PGDATA_TMP=/usr/local/var/postgresql@16
echo "\nexport PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'`
echo -e "export PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably we should keep the \n at the beginning, in case the config file doesn't have a newline at the end of the file

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keeping the \n without the -e flag works in macOS but not on Windows and Linux because new line is handled differently on those systems

echo "\n" vs echo -e "\n"
Screenshot 2024-08-07 at 10 42 16

Screenshot 2024-08-07 104017

These commands produce different results on macOS than on others
macOS

echo "\nexport PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'` 

Result

export PGDATA=/opt/homebrew/var/postgresql@16
export PSQL_PAGER="less --chop-long-lines --header 1"
export LANG=en_US.UTF-8

Linux

echo "\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshenv' || echo '.bashrc'` 

Result

\nexport PSQL_PAGER="less --chop-long-lines --header 1"\nexport LANG=en_US.UTF-8

Windows

echo "\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> "$USERPROFILE/.bash_profile"

Result

\nexport PSQL_PAGER="less --chop-long-lines --header 1"\nexport LANG=en_US.UTF-8

We can add the \n only for the macOS script
db38259

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I want to use the first \n on other systems, I can do something like this, but I don't see the need apart from making everything look the same. We can have the new line for macOS and have the -e for other systems

macOS

echo -e "\nexport PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'` 

Linux

echo -e "\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshenv' || echo '.bashrc'` 

Windows

echo -e "\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> "$USERPROFILE/.bash_profile"

Copy link
Member Author

@Eprince-hub Eprince-hub Aug 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As agreed in the daily, we are now using the version with -e without the first \n for all systems

0526ba1
10b285d

macos.md Outdated
@@ -191,9 +191,8 @@ Make sure that you're running the 2nd-newest macOS version or the newest version

```bash
[[ -d /opt/homebrew/var/postgresql@16 ]] && PGDATA_TMP=/opt/homebrew/var/postgresql@16 || PGDATA_TMP=/usr/local/var/postgresql@16
echo "\nexport PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'`
echo -e "export PGDATA=$PGDATA_TMP\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> ~/`[[ $SHELL == *"zsh" ]] && echo '.zshrc' || echo '.bash_profile'`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need the -e flag now, and why didn't we need it before?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Echo doesn't handle new lines correctly on Windows and Linux

echo "\n" vs echo -e "\n"
Screenshot 2024-08-07 at 10 42 16

Screenshot 2024-08-07 104017

@Eprince-hub Eprince-hub requested review from karlhorky and removed request for karlhorky August 7, 2024 11:07
@Eprince-hub Eprince-hub requested a review from karlhorky August 8, 2024 14:10
windows.md Outdated
Comment on lines 256 to 258
echo "export PATH=\$PATH:\"/c/Program Files/PostgreSQL/16/bin\"" >> "$USERPROFILE/.bash_profile"
echo "export PGDATA=\"/c/Program Files/PostgreSQL/16/data\"" >> "$USERPROFILE/.bash_profile"
echo "export PSQL_PAGER=\"less --chop-long-lines --header 1\"" >> "$USERPROFILE/.bash_profile"
echo -e "\nexport PSQL_PAGER=\"less --chop-long-lines --header 1\"\nexport LANG=en_US.UTF-8" >> "$USERPROFILE/.bash_profile"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems like these previous export commands should be also moved to this line?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I decided to have all the echo commands for all systems separated into multiple commands as this would make it clear for the students to understand what they are running and what it is doing

de52735

Copy link
Member

@karlhorky karlhorky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@Eprince-hub Eprince-hub changed the title Set correct configuration for PostgreSQL Replace Perl Locale Update with Shell Echo Commands Aug 8, 2024
@Eprince-hub Eprince-hub changed the title Replace Perl Locale Update with Shell Echo Commands Replace Perl Locale update with LANG env setting Aug 8, 2024
@Eprince-hub Eprince-hub merged commit 2f5d62c into main Aug 8, 2024
@Eprince-hub Eprince-hub deleted the postgres-configs branch August 8, 2024 16:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Fix native language support issue with PostgreSQL 15 on macOS
2 participants