Skip to content

Remove "expires_at" hardcode of SQL

What does this MR do and why?

Related discussion: !113111 (comment 1339690998)

Update a SQL hard code to a dynamic SQL statement.

This hard code causes errors in complex inner join statements. See How to set up and validate locally.

SQL changes

Take DeployToken.expired as an example

Before ->

SELECT
  "deploy_tokens".*
FROM
  "deploy_tokens"
WHERE
  (
    expires_at IS NOT NULL
    AND expires_at <= '2023-04-04 07:27:02.906124'
  )

After ->

SELECT
  "deploy_tokens".*
FROM
  "deploy_tokens"
WHERE
  "deploy_tokens"."expires_at" IS NOT NULL
  AND "deploy_tokens"."expires_at" <= '2023-04-04 07: 26: 08.383978'

Screenshots or screen recordings

No UI changes.

How to set up and validate locally

# bin/rails console
> users = Group.first.users
> PersonalAccessToken.expired.joins(:user).merge(users).count # The old code will report an error

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.


cc @mtan-gitlab @icbd @chaomao

Edited by Zhiyuan Lu

Merge request reports