/ buildbot / useful-db-scripts.sql
useful-db-scripts.sql
 1  # Copyright (c) 2017-2020 Krzysztof Kozlowski
 2  # Author: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
 3  #                             <krzk@kernel.org>
 4  #
 5  # SPDX-License-Identifier: GPL-2.0
 6  #
 7  
 8  # Dump entire buildbot DB:
 9  # mysqldump --add-drop-table --add-locks  --extended-insert --lock-tables -u buildbot -p -h localhost -P 3306 --protocol tcp buildbot > bck-db-buildbot-$(date +%Y-%m-%d).sql
10  
11  SELECT COUNT(*),project FROM buildbot.changes GROUP BY project;
12  
13  # next:
14  SELECT COUNT(*) FROM buildbot.changes
15  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
16  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
17  WHERE
18    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))
19    AND buildbot.changes.project = 'next';
20  
21  DELETE buildbot.changes, buildbot.sourcestamps, buildbot.change_files FROM buildbot.changes
22  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
23  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
24  WHERE
25    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))
26    AND buildbot.changes.project = 'next';
27  
28  # stable and stable-rc
29  SELECT COUNT(*) FROM buildbot.changes
30  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
31  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
32  WHERE
33    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 90 DAY))
34    AND (buildbot.changes.project = 'stable-rc' OR buildbot.changes.project = 'stable');
35  
36  DELETE buildbot.changes, buildbot.sourcestamps, buildbot.change_files FROM buildbot.changes
37  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
38  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
39  WHERE
40    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 90 DAY))
41    AND (buildbot.changes.project = 'stable-rc' OR buildbot.changes.project = 'stable');
42  
43  # krzk-github
44  SELECT COUNT(*) FROM buildbot.changes
45  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
46  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
47  WHERE
48    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 180 DAY))
49    AND buildbot.changes.project = 'krzk-github';
50  
51  DELETE buildbot.changes, buildbot.sourcestamps, buildbot.change_files FROM buildbot.changes
52  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
53  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
54  WHERE
55    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 180 DAY))
56    AND buildbot.changes.project = 'krzk-github';
57  
58  # All (so also krzk and mainline):
59  SELECT COUNT(*) FROM buildbot.changes
60  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
61  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
62  WHERE
63    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 360 DAY));
64  
65  DELETE buildbot.changes, buildbot.sourcestamps, buildbot.change_files FROM buildbot.changes
66  LEFT JOIN buildbot.sourcestamps ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
67  LEFT JOIN buildbot.change_files ON buildbot.changes.changeid = buildbot.change_files.changeid
68  WHERE
69    buildbot.changes.when_timestamp < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 360 DAY));
70  
71  # Cleanup after previous deletes:
72  DELETE buildbot.change_files FROM buildbot.change_files
73  LEFT JOIN buildbot.changes ON buildbot.changes.changeid = buildbot.change_files.changeid
74  WHERE buildbot.changes.changeid IS NULL;
75  
76  DELETE buildbot.sourcestamps FROM buildbot.sourcestamps
77  LEFT JOIN buildbot.changes ON buildbot.changes.sourcestampid = buildbot.sourcestamps.id
78  WHERE buildbot.changes.changeid IS NULL;
79  
80  OPTIMIZE TABLE buildbot.changes, buildbot.sourcestamps, buildbot.change_files;
81  
82  SELECT COUNT(*),project FROM buildbot.changes GROUP BY project;
83  
84  # Select pending build requests for specific project:
85     
86  SELECT buildbot.buildrequests.*, from_unixtime(buildbot.buildrequests.submitted_at), buildbot.buildset_sourcestamps.buildsetid, buildbot.sourcestamps.id, buildbot.sourcestamps.project FROM buildbot.buildrequests
87  INNER JOIN buildbot.buildset_sourcestamps ON buildbot.buildrequests.buildsetid = buildbot.buildset_sourcestamps.buildsetid
88  INNER JOIN buildbot.sourcestamps ON buildbot.buildset_sourcestamps.sourcestampid = buildbot.sourcestamps.id
89  WHERE buildbot.buildrequests.complete = 0
90  	AND buildbot.sourcestamps.project = "krzk";
91  # And remove them:
92  DELETE buildbot.buildrequests FROM buildbot.buildrequests
93  INNER JOIN buildbot.buildset_sourcestamps ON buildbot.buildrequests.buildsetid = buildbot.buildset_sourcestamps.buildsetid
94  INNER JOIN buildbot.sourcestamps ON buildbot.buildset_sourcestamps.sourcestampid = buildbot.sourcestamps.id
95  WHERE buildbot.buildrequests.complete = 0
96  	AND buildbot.sourcestamps.project = "krzk";