diff options
author | Sean McGivern <sean@gitlab.com> | 2019-03-06 12:30:03 +0000 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2019-03-06 13:40:03 +0000 |
commit | 8b9b37f6c86bfc049f0b4fc785ae01d94545ab48 (patch) | |
tree | 7acce1ce3e31da37bac5ff1c4fb494a19ee3b5a1 /app/models | |
parent | 8a49eeed6db026b0454c2119ab18b0b09d9661ff (diff) | |
download | gitlab-ce-8b9b37f6c86bfc049f0b4fc785ae01d94545ab48.tar.gz |
Fix upcoming milestone for far-future due dates
`NOW()` is a timestamp, with a maximum year (in Postgres) 294276 AD.
`milestones.due_date` is a date with a maximum year (again, in Postgres)
of 5874897 AD.
If there is a due date past the limit for the timestamp, comparing the
two will fail with:
ERROR: date out of range for timestamp
We also need to add validations to keep the due dates sensible, but for
now we can simply use `CURRENT_DATE` instead of `NOW()`, so the types
match with no coercion needed.
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/milestone.rb | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/app/models/milestone.rb b/app/models/milestone.rb index 26cfdc5ef30..d6f94cad1fb 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -149,7 +149,7 @@ class Milestone < ActiveRecord::Base def self.upcoming_ids(projects, groups) rel = unscoped .for_projects_and_groups(projects, groups) - .active.where('milestones.due_date > NOW()') + .active.where('milestones.due_date > CURRENT_DATE') if Gitlab::Database.postgresql? rel.order(:project_id, :group_id, :due_date).select('DISTINCT ON (project_id, group_id) id') @@ -161,7 +161,7 @@ class Milestone < ActiveRecord::Base ON milestones.project_id <=> earlier_milestones.project_id AND milestones.group_id <=> earlier_milestones.group_id AND milestones.due_date > earlier_milestones.due_date - AND earlier_milestones.due_date > NOW() + AND earlier_milestones.due_date > CURRENT_DATE AND earlier_milestones.state = 'active' HEREDOC |