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.
This commit is contained in:
parent
8a49eeed6d
commit
8b9b37f6c8
2 changed files with 7 additions and 2 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fix upcoming milestone when there are milestones with far-future due dates
|
||||
merge_request:
|
||||
author:
|
||||
type: fixed
|
Loading…
Reference in a new issue