add FIX postgres REFRESH COLLATION VERSION#179
add FIX postgres REFRESH COLLATION VERSION#179PentiumB wants to merge 1 commit intoremnawave:mainfrom
Conversation
There was a problem hiding this comment.
Greptile Overview
Greptile Summary
This PR adds a PostgreSQL maintenance command to fix collation version issues that can occur after PostgreSQL upgrades or locale mismatches. The change adds a new section to the useful commands documentation with a PL/pgSQL script that iterates through all databases (except template0) and refreshes their collation versions. This is a common maintenance task needed in containerized PostgreSQL deployments when the container image is updated, as collation version mismatches can cause warnings and affect text sorting/comparison operations. The command is designed to be run from the Remnawave installation directory and uses environment variables to connect to the database.
Important Files Changed
Changed Files
| Filename | Score | Overview |
|---|---|---|
| docs/guides/useful-commands.md | 3/5 | Added PostgreSQL collation version refresh command with potential placement and hardcoding issues |
Confidence score: 3/5
- This PR is moderately safe to merge but has some organizational and compatibility concerns that should be addressed
- Score reflects the useful nature of the command but deducted points for incorrect section placement (command is under "Remnawave Node" section instead of "Remnawave Panel") and hardcoded database name that may not match all installations
- Pay close attention to the placement of the command and verify the hardcoded database name matches the actual installation configuration
Sequence Diagram
sequenceDiagram
participant User
participant Terminal
participant DockerCompose as Docker Compose
participant RemnavaveContainer as Remnawave Container
participant PostgresContainer as Postgres Container
participant PostgresDB as Postgres Database
User->>Terminal: "cd /opt/remnawave && docker compose exec remnawave-db psql..."
Terminal->>DockerCompose: "Execute docker compose exec command"
DockerCompose->>RemnavaveContainer: "Read .env file for POSTGRES_USER"
RemnavaveContainer-->>DockerCompose: "Return POSTGRES_USER value"
DockerCompose->>PostgresContainer: "Connect to psql with user and database"
PostgresContainer->>PostgresDB: "Execute DO block script"
PostgresDB->>PostgresDB: "Loop through all databases (except template0)"
loop For each database
PostgresDB->>PostgresDB: "Execute ALTER DATABASE REFRESH COLLATION VERSION"
end
PostgresDB-->>PostgresContainer: "Return execution results"
PostgresContainer-->>DockerCompose: "Return psql output"
DockerCompose-->>Terminal: "Display command results"
Terminal-->>User: "Show collation version refresh completion"
1 file reviewed, 2 comments
| cd /opt/remnanode && docker compose down && docker compose up -d && docker compose logs -f -t | ||
| ``` | ||
|
|
||
| ### FIX postgres REFRESH COLLATION VERSION |
There was a problem hiding this comment.
style: This section is placed under 'Remnawave Node' but it's actually a database operation that should be under 'Remnawave Panel' section
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/guides/useful-commands.md
Line: 48:48
Comment:
**style:** This section is placed under 'Remnawave Node' but it's actually a database operation that should be under 'Remnawave Panel' section
How can I resolve this? If you propose a fix, please make it concise.| ### FIX postgres REFRESH COLLATION VERSION | ||
|
|
||
| ```bash | ||
| cd /opt/remnawave && docker compose exec remnawave-db psql -U $(grep '^POSTGRES_USER=' .env | cut -d '=' -f2) -d remnawave_db -c " |
There was a problem hiding this comment.
logic: The database name 'remnawave_db' is hardcoded. Consider using $(grep '^POSTGRES_DB=' .env | cut -d '=' -f2) to match the actual database name from the environment file
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/guides/useful-commands.md
Line: 51:51
Comment:
**logic:** The database name 'remnawave_db' is hardcoded. Consider using `$(grep '^POSTGRES_DB=' .env | cut -d '=' -f2)` to match the actual database name from the environment file
How can I resolve this? If you propose a fix, please make it concise.
No description provided.