Commit 57e20d13 authored by Alina Mihaila's avatar Alina Mihaila Committed by Craig Norris

Document add hardening method

parent c15a9109
...@@ -214,11 +214,12 @@ For GitLab.com, there are extremely large tables with 15 second query timeouts, ...@@ -214,11 +214,12 @@ For GitLab.com, there are extremely large tables with 15 second query timeouts,
| `merge_request_diff_files` | 1082 | | `merge_request_diff_files` | 1082 |
| `events` | 514 | | `events` | 514 |
We have several batch counting methods available: The following operation methods are available for your use:
- [Ordinary Batch Counters](#ordinary-batch-counters) - [Ordinary Batch Counters](#ordinary-batch-counters)
- [Distinct Batch Counters](#distinct-batch-counters) - [Distinct Batch Counters](#distinct-batch-counters)
- [Sum Batch Counters](#sum-batch-counters) - [Sum Batch Operation](#sum-batch-operation)
- [Add Operation](#add-operation)
- [Estimated Batch Counters](#estimated-batch-counters) - [Estimated Batch Counters](#estimated-batch-counters)
Batch counting requires indexes on columns to calculate max, min, and range queries. In some cases, Batch counting requires indexes on columns to calculate max, min, and range queries. In some cases,
...@@ -276,7 +277,7 @@ distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: :: ...@@ -276,7 +277,7 @@ distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::
distinct_count(::Clusters::Applications::CertManager.where(time_period).available.joins(:cluster), 'clusters.user_id') distinct_count(::Clusters::Applications::CertManager.where(time_period).available.joins(:cluster), 'clusters.user_id')
``` ```
### Sum Batch Counters ### Sum Batch Operation
Handles `ActiveRecord::StatementInvalid` error Handles `ActiveRecord::StatementInvalid` error
...@@ -317,6 +318,25 @@ sum(Issue.group(:state_id), :weight)) ...@@ -317,6 +318,25 @@ sum(Issue.group(:state_id), :weight))
# returns => {1=>3542, 2=>6820} # returns => {1=>3542, 2=>6820}
``` ```
### Add Operation
Handles `StandardError`.
Returns `-1` if any of the arguments are `-1`.
Sum the values given as parameters.
Method: `add(*args)`
Examples
```ruby
project_imports = distinct_count(::Project.where.not(import_type: nil), :creator_id)
bulk_imports = distinct_count(::BulkImport, :user_id)
add(project_imports, bulk_imports)
```
### Estimated Batch Counters ### Estimated Batch Counters
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48233) in GitLab 13.7. > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48233) in GitLab 13.7.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment