summaryrefslogtreecommitdiff
path: root/lib/gitlab/database.rb
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'mk-add-old-attachments-to-uploads-table' into 'master'Stan Hu2017-12-071-2/+8
|\ | | | | | | | | Add old files to uploads table See merge request gitlab-org/gitlab-ce!15270
| * Ensure consistent column orderMichael Kozono2017-12-011-1/+1
| |
| * Don’t quote `NOW()` for created_at columnMichael Kozono2017-12-011-2/+8
| | | | | | | | To fix for MySQL.
* | add Gitlab::Database.replication_slots_supported?Brett Walker2017-12-051-0/+4
|/
* Add returning IDs to Gitlab::Database.bulk_insertYorick Peterse2017-11-071-2/+23
| | | | | | | This adds the keyword argument "return_ids" to Gitlab::Database.bulk_insert. When set to `true` (and PostgreSQL is used) this method will return an Array of the IDs of the inserted rows, otherwise it will return an empty Array.
* Handle large values on `MergeRequestDiffCommit` dates39561-seed_fu-fails-to-load-gitlab-testAlejandro Rodríguez2017-10-301-0/+8
|
* Create idea of read-only databasetc-geo-read-only-ideaToon Claes2017-10-061-0/+9
| | | | | | | | | | | | In GitLab EE, a GitLab instance can be read-only (e.g. when it's a Geo secondary node). But in GitLab CE it also might be useful to have the "read-only" idea around. So port it back to GitLab CE. Also having the principle of read-only in GitLab CE would hopefully lead to less errors introduced, doing write operations when there aren't allowed for read-only calls. Closes gitlab-org/gitlab-ce#37534.
* Improve migrations using triggerscheck-trigger-permissions-mysqlYorick Peterse2017-08-291-0/+8
| | | | | | | | | | | | | | | | This adds a bunch of checks to migrations that may create or drop triggers. Dropping triggers/functions is done using "IF EXISTS" so we don't throw an error if the object in question has already been dropped. We now also raise a custom error (message) when the user does not have TRIGGER privileges. This should prevent the schema from entering an inconsistent state while also providing the user with enough information on how to solve the problem. The recommendation of using SUPERUSER permissions is a bit extreme but we require this anyway (Omnibus also configures users with this permission). Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/36633
* Use a specialized class for querying eventsYorick Peterse2017-08-101-0/+4
| | | | | | | | | | | | | | | This changes various controllers to use the new EventCollection class for retrieving events. This class uses a JOIN LATERAL query on PostgreSQL to retrieve queries in a more efficient way, while falling back to a simpler / less efficient query for MySQL. The EventCollection class also includes a limit on the number of events to display to prevent malicious users from cycling through all events, as doing so could put a lot of pressure on the database. JOIN LATERAL is only supported on PostgreSQL starting with version 9.3.0 and as such this optimisation is only used when using PostgreSQL 9.3 or newer.
* Fix Gitlab::Database.bulk_insert for non-UTF-8 data34324-gitlab-db-seed-is-brokenSean McGivern2017-06-261-1/+1
|
* Add table for files in merge request diffsSean McGivern2017-06-161-0/+16
| | | | | | | | | | | | | | | | This adds an ID-less table containing one row per file, per merge request diff. It has a column for each attribute on Gitlab::Git::Diff that is serialised currently, with the advantage that we can easily query the attributes of this new table. It does not migrate existing data, so we have fallback code when the legacy st_diffs column is present instead. For a merge request diff to be valid, it should have at most one of: * Rows in this new table, with the correct merge_request_diff_id. * A non-NULL st_diffs column. It may have neither, if the diff is empty.
* removes redundant code from database.rb29056-backport-ee-cleanup-database-fileTiago Botelho2017-04-111-4/+4
|
* Added Gitlab::Database.configYorick Peterse2017-03-171-1/+5
| | | | | | | | This returns the ActiveRecord configuration for the current environment. While CE doesn't use this very often, EE will use it in a few places for the database load balancing code. I'm adding this to CE so we don't end up with merge conflicts in this file.
* removes redundant code from gitlab database filegitlab-database-fixTiago Botelho2017-03-021-3/+3
|
* Allow setting of a custom connection pool hostYorick Peterse2017-02-221-1/+6
| | | | | | | This allows you to set a custom host when calling Gitlab::Database.create_connection_pool. This is necessary for load balancing as in this case we want to inherit all settings except for the hostname.
* Merge branch 'create-connection-pool' into 'master' Yorick Peterse2017-02-141-0/+25
|\ | | | | | | | | Introduce Gitlab::Database.with_connection_pool See merge request !9192
| * Only ensure against yield so that pool should be availablecreate-connection-poolLin Jen-Shin2017-02-141-4/+5
| | | | | | | | | | Feedback: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9192#note_23293693
| * Have some simple way to create connection poolLin Jen-Shin2017-02-141-0/+24
| |
* | Don't connect in Gitlab::Database.adapter_namefix-ar-connection-leaksYorick Peterse2017-02-131-1/+1
|/ | | | | | We don't need to connect when requesting the name of the database adapter. This in turn should prevent us from requesting/leaking connections just by asking whether we're using PostgreSQL or MySQL.
* Improve performance of finding last deployed environmentDouwe Maan2017-02-061-0/+14
|
* Refresh project authorizations using a Redis leaserefresh-authorizations-with-leaseYorick Peterse2016-11-251-7/+0
| | | | | | | | | | | | | | | | | When I proposed using serializable transactions I was hoping we would be able to refresh data of individual users concurrently. Unfortunately upon closer inspection it was revealed this was not the case. This could result in a lot of queries failing due to serialization errors, overloading the database in the process (given enough workers trying to update the target table). To work around this we're now using a Redis lease that is cancelled upon completion. This ensures we can update the data of different users concurrently without overloading the database. The code will try to obtain the lease until it succeeds, waiting at least 1 second between retries. This is necessary as we may otherwise end up _not_ updating the data which is not an option.
* Precalculate user's authorized projects in databaseAhmad Sherif2016-11-181-0/+7
| | | | Closes #23150
* Fix methods visibility in gitlab database moduleGrzegorz Bizon2016-07-191-2/+4
|
* Fix RangeError exceptions when referring to issues or merge requests outside ↵Stan Hu2016-06-181-0/+5
| | | | | | | | | | of max database values When using #XYZ in Markdown text, if XYZ exceeds the maximum value of a signed 32-bit integer, we get an exception when the Markdown render attempts to run `where(iids: XYZ)`. Introduce a method that will throw out out-of-bounds values. Closes #18777
* Random selection now also works for MySQLseed-fu-award-emojiZ.J. van de Weg2016-06-151-0/+4
|
* Improve Issuable.order_labels_priorityRémy Coutable2016-06-061-0/+14
| | | | Signed-off-by: Rémy Coutable <remy@rymai.me>
* Enable Rubocop Casecmp Performance Cop.Connor Shea2016-05-101-2/+2
| | | | Also fixes the errors caused by enabling the cop. casecmp is more performant than `.downcase` and `==`.
* Fix undefined method `postgresql?` during migrationrs-gitlab-database-moduleRobert Speicher2016-02-151-6/+2
|
* Display database type and version in Administration dashboardrs-database-infoRobert Speicher2016-02-021-6/+32
| | | | Closes #12900
* Migrate CI WebHooks and Emails to new tablesKamil Trzcinski2015-12-101-0/+18
|
* Fix Gitlab::Database#mysql?Douwe Maan2015-10-221-1/+1
|
* Added methods for detecting MySQL/PostgreSQLYorick Peterse2015-10-071-0/+11
These two methods remove the need for manually going into ActiveRecord::Base.connection all over the place.