1def migrate_up(manager): 2 manager.execute_script(ADD_COLUMN_SQL) 3 manager.execute_script(ALTER_VIEWS_UP_SQL) 4 5 6def migrate_down(manager): 7 manager.execute_script(DROP_COLUMN_SQL) 8 manager.execute_script(ALTER_VIEWS_DOWN_SQL) 9 10 11ADD_COLUMN_SQL = """\ 12ALTER TABLE tests ADD COLUMN started_time datetime NULL; 13""" 14 15DROP_COLUMN_SQL = """\ 16ALTER TABLE tests DROP started_time; 17""" 18 19ALTER_VIEWS_UP_SQL = """\ 20ALTER VIEW test_view AS 21SELECT tests.test_idx, 22 tests.job_idx, 23 tests.test, 24 tests.subdir, 25 tests.kernel_idx, 26 tests.status, 27 tests.reason, 28 tests.machine_idx, 29 tests.started_time AS test_started_time, 30 tests.finished_time AS test_finished_time, 31 jobs.tag AS job_tag, 32 jobs.label AS job_label, 33 jobs.username AS job_username, 34 jobs.queued_time AS job_queued_time, 35 jobs.started_time AS job_started_time, 36 jobs.finished_time AS job_finished_time, 37 machines.hostname AS machine_hostname, 38 machines.machine_group, 39 machines.owner AS machine_owner, 40 kernels.kernel_hash, 41 kernels.base AS kernel_base, 42 kernels.printable AS kernel_printable, 43 status.word AS status_word 44FROM tests 45INNER JOIN jobs ON jobs.job_idx = tests.job_idx 46INNER JOIN machines ON machines.machine_idx = jobs.machine_idx 47INNER JOIN kernels ON kernels.kernel_idx = tests.kernel_idx 48INNER JOIN status ON status.status_idx = tests.status; 49 50-- perf_view (to make life easier for people trying to mine performance data) 51ALTER VIEW perf_view AS 52SELECT tests.test_idx, 53 tests.job_idx, 54 tests.test, 55 tests.subdir, 56 tests.kernel_idx, 57 tests.status, 58 tests.reason, 59 tests.machine_idx, 60 tests.started_time AS test_started_time, 61 tests.finished_time AS test_finished_time, 62 jobs.tag AS job_tag, 63 jobs.label AS job_label, 64 jobs.username AS job_username, 65 jobs.queued_time AS job_queued_time, 66 jobs.started_time AS job_started_time, 67 jobs.finished_time AS job_finished_time, 68 machines.hostname AS machine_hostname, 69 machines.machine_group, 70 machines.owner AS machine_owner, 71 kernels.kernel_hash, 72 kernels.base AS kernel_base, 73 kernels.printable AS kernel_printable, 74 status.word AS status_word, 75 iteration_result.iteration, 76 iteration_result.attribute AS iteration_key, 77 iteration_result.value AS iteration_value 78FROM tests 79INNER JOIN jobs ON jobs.job_idx = tests.job_idx 80INNER JOIN machines ON machines.machine_idx = jobs.machine_idx 81INNER JOIN kernels ON kernels.kernel_idx = tests.kernel_idx 82INNER JOIN status ON status.status_idx = tests.status 83INNER JOIN iteration_result ON iteration_result.test_idx = tests.kernel_idx; 84""" 85 86ALTER_VIEWS_DOWN_SQL = """\ 87ALTER VIEW test_view AS 88SELECT tests.test_idx, 89 tests.job_idx, 90 tests.test, 91 tests.subdir, 92 tests.kernel_idx, 93 tests.status, 94 tests.reason, 95 tests.machine_idx, 96 tests.finished_time AS test_finished_time, 97 jobs.tag AS job_tag, 98 jobs.label AS job_label, 99 jobs.username AS job_username, 100 jobs.queued_time AS job_queued_time, 101 jobs.started_time AS job_started_time, 102 jobs.finished_time AS job_finished_time, 103 machines.hostname AS machine_hostname, 104 machines.machine_group, 105 machines.owner AS machine_owner, 106 kernels.kernel_hash, 107 kernels.base AS kernel_base, 108 kernels.printable AS kernel_printable, 109 status.word AS status_word 110FROM tests 111INNER JOIN jobs ON jobs.job_idx = tests.job_idx 112INNER JOIN machines ON machines.machine_idx = jobs.machine_idx 113INNER JOIN kernels ON kernels.kernel_idx = tests.kernel_idx 114INNER JOIN status ON status.status_idx = tests.status; 115 116-- perf_view (to make life easier for people trying to mine performance data) 117ALTER VIEW perf_view AS 118SELECT tests.test_idx, 119 tests.job_idx, 120 tests.test, 121 tests.subdir, 122 tests.kernel_idx, 123 tests.status, 124 tests.reason, 125 tests.machine_idx, 126 tests.finished_time AS test_finished_time, 127 jobs.tag AS job_tag, 128 jobs.label AS job_label, 129 jobs.username AS job_username, 130 jobs.queued_time AS job_queued_time, 131 jobs.started_time AS job_started_time, 132 jobs.finished_time AS job_finished_time, 133 machines.hostname AS machine_hostname, 134 machines.machine_group, 135 machines.owner AS machine_owner, 136 kernels.kernel_hash, 137 kernels.base AS kernel_base, 138 kernels.printable AS kernel_printable, 139 status.word AS status_word, 140 iteration_result.iteration, 141 iteration_result.attribute AS iteration_key, 142 iteration_result.value AS iteration_value 143FROM tests 144INNER JOIN jobs ON jobs.job_idx = tests.job_idx 145INNER JOIN machines ON machines.machine_idx = jobs.machine_idx 146INNER JOIN kernels ON kernels.kernel_idx = tests.kernel_idx 147INNER JOIN status ON status.status_idx = tests.status 148INNER JOIN iteration_result ON iteration_result.test_idx = tests.kernel_idx; 149""" 150