summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2019-03-06 12:30:03 +0000
committerSean McGivern <sean@gitlab.com>2019-03-06 13:40:03 +0000
commit8b9b37f6c86bfc049f0b4fc785ae01d94545ab48 (patch)
tree7acce1ce3e31da37bac5ff1c4fb494a19ee3b5a1 /app/models
parent8a49eeed6db026b0454c2119ab18b0b09d9661ff (diff)
downloadgitlab-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.rb4
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