Skip to content

Iterations dates validations

Alexandru Croitor requested to merge iterations-dates-validations into master

What does this MR do?

Changes the iteration dates overlap validation to only consider dates overlap within a single iteration cadence. With the introduction of iteration cadences !50707 (merged) each iteration is now wrapped in a iteration cadence container, so we can have multiple cadences within same group, and we only need to validate that we do not have overlapping iterations within same cadence.

This should allow to provide greater flexibility for teams to define their own iterations and iteration cadences or reuse exiting ones.

Database

Up

  • Add looser constraint for dates overlap per iteration_cadence_id
== 20210127152613 AddIterationsCadenceDateRangeConstraint: migrating ==========
-- execute("ALTER TABLE sprints\n  ADD CONSTRAINT iteration_start_and_due_date_iterations_cadence_id_constraint\n  EXCLUDE USING gist\n  ( iterations_cadence_id WITH =,\n    daterange(start_date, due_date, '[]') WITH &&\n  )\n  WHERE (group_id IS NOT NULL)\n")
   -> 0.0056s
== 20210127152613 AddIterationsCadenceDateRangeConstraint: migrated (0.0117s) =
  • remove the stricter constraint for dates overlap per group
== 20210127202613 RemoveIterationGroupDateRangeConstraint: migrating ==========
-- execute("ALTER TABLE sprints\n  DROP CONSTRAINT IF EXISTS iteration_start_and_due_daterange_group_id_constraint\n")
   -> 0.0010s
== 20210127202613 RemoveIterationGroupDateRangeConstraint: migrated (0.0082s) =
  • Add constraint on sprints start date
== 20210218144056 AddSprintsStartDateNotNullCheckConstraint: migrating ========
-- current_schema()
   -> 0.0004s
-- transaction_open?()
   -> 0.0000s
-- current_schema()
   -> 0.0002s
-- execute("ALTER TABLE sprints\nADD CONSTRAINT check_ccd8a1eae0\nCHECK ( start_date IS NOT NULL )\nNOT VALID;\n")
   -> 0.0052s
== 20210218144056 AddSprintsStartDateNotNullCheckConstraint: migrated (0.0254s)
  • Add constraint on sprints due date
== 20210218144656 AddSprintsDueDateNotNullCheckConstraint: migrating ==========
-- current_schema()
   -> 0.0003s
-- transaction_open?()
   -> 0.0000s
-- current_schema()
   -> 0.0003s
-- execute("ALTER TABLE sprints\nADD CONSTRAINT check_df3816aed7\nCHECK ( due_date IS NOT NULL )\nNOT VALID;\n")
   -> 0.0009s
== 20210218144656 AddSprintsDueDateNotNullCheckConstraint: migrated (0.0098s) =

Down

  • We cannot restore constraint for dates overlap per group on long run
== 20210127202613 RemoveIterationGroupDateRangeConstraint: reverting ==========
== 20210127202613 RemoveIterationGroupDateRangeConstraint: reverted (0.0000s) =
  • Drop constraint for dates overlap on iterations_cadence_id
== 20210127152613 AddIterationsCadenceDateRangeConstraint: reverting ==========
-- execute("ALTER TABLE sprints\n  DROP CONSTRAINT IF EXISTS iteration_start_and_due_date_iterations_cadence_id_constraint\n")
   -> 0.0016s
== 20210127152613 AddIterationsCadenceDateRangeConstraint: reverted (0.0100s) =
  • Drop constraint on sprints due date
== 20210218144656 AddSprintsDueDateNotNullCheckConstraint: reverting ==========
-- execute("ALTER TABLE sprints\nDROP CONSTRAINT IF EXISTS check_df3816aed7\n")
   -> 0.0010s
== 20210218144656 AddSprintsDueDateNotNullCheckConstraint: reverted (0.0086s) =
  • Drop constraint on sprints start date
== 20210218144056 AddSprintsStartDateNotNullCheckConstraint: reverting ========
-- execute("ALTER TABLE sprints\nDROP CONSTRAINT IF EXISTS check_ccd8a1eae0\n")
   -> 0.0010s
== 20210218144056 AddSprintsStartDateNotNullCheckConstraint: reverted (0.0075s)

#293922 (closed) #230894 (closed)

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

#293922 (closed)

Edited by Alexandru Croitor

Merge request reports