Skip to content
Snippets Groups Projects
  • Clément Lassieur's avatar
    4db99f64
    database: Merge Derivations into Builds table. · 4db99f64
    Clément Lassieur authored
    Fixes <https://bugs.gnu.org/32190>.
    
    * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-2.sql'.
    * doc/cuirass.texi (Derivations): Remove section.
    (Builds): Update accordingly.  Add columns from the Derivations table.
    (Outputs): Replace 'id' with 'derivation'.
    * src/cuirass/base.scm (evaluate): Don't add jobs to the Derivations table.
    (build-packages): Add columns that were in the Derivations table before.  Only
    build the derivations that were successfully registered, that is, those that
    didn't exist in the Builds table.  Give a derivation instead of a build id to
    DB-GET-BUILD.  Compute the number of failed jobs based on the derivations that
    were added to the table, instead of the jobs.
    * src/cuirass/database.scm (db-add-derivation, db-get-derivation): Remove
    exported procedures.
    (db-add-build): Catch SQLITE_CONSTRAINT_PRIMARYKEY error, which means that two
    jobs produced the same derivation, and return #f in that case.  Add columns
    that were in the Derivations table before.  Use 'derivation' as primary key
    for the Outputs table.
    (db-get-outputs): Use 'derivation' as identifier, instead of 'build-id'.
    (filters->order): Replace 'id' with 'rowid'.
    (db-get-builds): Add a 'derivation' filter.  Replace 'id' with 'rowid'.
    Remove the 'INNER JOIN Derivations'.  Replace Derivations with Builds.  Return
    'derivation' in first position to make it clear that it's the primary key.
    Pass DERIVATION instead of ID to DB-GET-OUTPUTS.
    (db-get-build): Allow to take a derivation as argument.  Use NUMBER? to
    differentiate between derivations and ids.
    (db-get-pending-derivations): Remove the 'SELECT DISTINCT' clause now that
    derivations are unique.  Remove the 'INNER JOIN Builds'.
    (db-get-evaluations-build-summary, db-get-builds-min, db-get-builds-max):
    Replace 'id' with 'rowid'.
    * src/schema.sql (Derivations): Remove table.
    (Outputs): Replace Builds.id with Builds.derivation.
    (Builds): Use 'derivation' as primary key.  Remove the 'id' column.  Add
    'job_name', 'system', 'nix_name' columns that were in the Derivations table
    before.
    (Builds_Derivations_index): Rename to Builds_index.  Update accordingly.
    (Derivations_index): Remove index.
    * src/sql/upgrade-2.sql: New file with SQL queries to upgrade the database.
    * tests/database.scm (make-dummy-job, make-dummy-derivation): Remove
    procedures.
    (make-dummy-build): Add columns that were in MAKE-DUMMY-DERIVATION.  Get the
    DRV parameter to be mandatory because it's a primary key.
    (%id): Remove parameter.
    ("db-add-derivation", "db-get-derivation"): Remove tests.
    ("db-add-build"): Expect #f, because it adds twice the same derivation.  Pass
    the derivation argument to MAKE-DUMMY-BUILD.
    ("db-update-build-status!"): Rename 'id' to 'derivation'.  Pass the derivation
    argument to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION call.
    ("db-get-builds", "db-get-pending-derivations"): Pass the derivation argument
    to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION calls.
    * tests/http.scm ("fill-db"): Remove DERIVATION1 and DERIVATION2, and put
    their content in BUILD1 and BUILD2.  Remove the DB-ADD-DERIVATION calls.
    database: Merge Derivations into Builds table.
    Clément Lassieur authored
    Fixes <https://bugs.gnu.org/32190>.
    
    * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-2.sql'.
    * doc/cuirass.texi (Derivations): Remove section.
    (Builds): Update accordingly.  Add columns from the Derivations table.
    (Outputs): Replace 'id' with 'derivation'.
    * src/cuirass/base.scm (evaluate): Don't add jobs to the Derivations table.
    (build-packages): Add columns that were in the Derivations table before.  Only
    build the derivations that were successfully registered, that is, those that
    didn't exist in the Builds table.  Give a derivation instead of a build id to
    DB-GET-BUILD.  Compute the number of failed jobs based on the derivations that
    were added to the table, instead of the jobs.
    * src/cuirass/database.scm (db-add-derivation, db-get-derivation): Remove
    exported procedures.
    (db-add-build): Catch SQLITE_CONSTRAINT_PRIMARYKEY error, which means that two
    jobs produced the same derivation, and return #f in that case.  Add columns
    that were in the Derivations table before.  Use 'derivation' as primary key
    for the Outputs table.
    (db-get-outputs): Use 'derivation' as identifier, instead of 'build-id'.
    (filters->order): Replace 'id' with 'rowid'.
    (db-get-builds): Add a 'derivation' filter.  Replace 'id' with 'rowid'.
    Remove the 'INNER JOIN Derivations'.  Replace Derivations with Builds.  Return
    'derivation' in first position to make it clear that it's the primary key.
    Pass DERIVATION instead of ID to DB-GET-OUTPUTS.
    (db-get-build): Allow to take a derivation as argument.  Use NUMBER? to
    differentiate between derivations and ids.
    (db-get-pending-derivations): Remove the 'SELECT DISTINCT' clause now that
    derivations are unique.  Remove the 'INNER JOIN Builds'.
    (db-get-evaluations-build-summary, db-get-builds-min, db-get-builds-max):
    Replace 'id' with 'rowid'.
    * src/schema.sql (Derivations): Remove table.
    (Outputs): Replace Builds.id with Builds.derivation.
    (Builds): Use 'derivation' as primary key.  Remove the 'id' column.  Add
    'job_name', 'system', 'nix_name' columns that were in the Derivations table
    before.
    (Builds_Derivations_index): Rename to Builds_index.  Update accordingly.
    (Derivations_index): Remove index.
    * src/sql/upgrade-2.sql: New file with SQL queries to upgrade the database.
    * tests/database.scm (make-dummy-job, make-dummy-derivation): Remove
    procedures.
    (make-dummy-build): Add columns that were in MAKE-DUMMY-DERIVATION.  Get the
    DRV parameter to be mandatory because it's a primary key.
    (%id): Remove parameter.
    ("db-add-derivation", "db-get-derivation"): Remove tests.
    ("db-add-build"): Expect #f, because it adds twice the same derivation.  Pass
    the derivation argument to MAKE-DUMMY-BUILD.
    ("db-update-build-status!"): Rename 'id' to 'derivation'.  Pass the derivation
    argument to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION call.
    ("db-get-builds", "db-get-pending-derivations"): Pass the derivation argument
    to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION calls.
    * tests/http.scm ("fill-db"): Remove DERIVATION1 and DERIVATION2, and put
    their content in BUILD1 and BUILD2.  Remove the DB-ADD-DERIVATION calls.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
upgrade-2.sql 1.66 KiB