Verifying Database Capabilities
Sometimes certain bits of code may only work on a certain database version. While we try to avoid such code as much as possible sometimes it is necessary to add database (version) specific behavior.
To facilitate this we have the following methods that you can use:
ApplicationRecord.database.version
: returns the PostgreSQL version number as a string in the formatX.Y.Z
.
This allows you to write code such as:
if ApplicationRecord.database.version.to_f >= 11.7
run_really_fast_query
else
run_fast_query
end
Read-only database
The database can be used in read-only mode. In this case we have to
make sure all GET requests don’t attempt any write operations to the
database. If one of those requests wants to write to the database, it needs
to be wrapped in a Gitlab::Database.read_only?
or Gitlab::Database.read_write?
guard, to make sure it doesn’t for read-only databases.
We have a Rails Middleware that filters any potentially writing
operations (the CUD
operations of CRUD) and prevent the user from trying
to update the database and getting a 500 error (see Gitlab::Middleware::ReadOnly
).
Docs
Edit this page to fix an error or add an improvement in a merge request.
Create an issue to suggest an improvement to this page.
Product
Create an issue if there's something you don't like about this feature.
Propose functionality by submitting a feature request.
Feature availability and product trials
View pricing to see all GitLab tiers and features, or to upgrade.
Try GitLab for free with access to all features for 30 days.
Get help
If you didn't find what you were looking for, search the docs.
If you want help with something specific and could use community support, post on the GitLab forum.
For problems setting up or using this feature (depending on your GitLab subscription).
Request support