Skip to content

Add `latest` column into `security_scans` table

What does this MR do?

This MR introduces a new column called latest for the security_findings table. Prior to this change, we were joining to the ci_builds table to get the latest records but due to sharding effort, this is not an option anymore.

This will fix #339810 (closed) and unblock !66735 (merged).

Database review

We could also introduce a compound index but the number of records to be filtered will be either zero or too low.

An example query to utilize this new column would be;

SELECT 
  * 
FROM 
  security_scans
WHERE 
  pipeline_id = $1 AND latest IS TRUE;

I will create another MR to populate the data for the existing records after this gets merged.

rake db:migrate:up VERSION=20210902171406

== 20210902171406 AddLatestColumnIntoTheSecurityScansTable: migrating =========
-- add_column(:security_scans, :latest, :boolean, {:default=>true, :null=>false})
   -> 0.0089s
== 20210902171406 AddLatestColumnIntoTheSecurityScansTable: migrated (0.0231s)

rake db:migrate:down VERSION=20210902171406

== 20210902171406 AddLatestColumnIntoTheSecurityScansTable: reverting =========
-- remove_column(:security_scans, :latest)
   -> 0.0049s
== 20210902171406 AddLatestColumnIntoTheSecurityScansTable: reverted (0.0716s)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • [-] 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
Edited by Mehmet Emin INAC

Merge request reports