|
111 | 111 | (format "CREATE UNIQUE INDEX IF NOT EXISTS resource_events_hash_%s ON %s (event_hash)" |
112 | 112 | iso-week-year full-table-name)]))) |
113 | 113 |
|
| 114 | +;; This var is used in testing to simulate migration 74 being applied without |
| 115 | +;; adding the idx_reports_id index to partitions. Changing this behavior in |
| 116 | +;; migration 74 should be safe because the index creation is guarded by |
| 117 | +;; 'if not exists' in both the changed migration 74 and in the newer 76. |
| 118 | +(def ^:dynamic add-report-id-idx? true) |
| 119 | + |
114 | 120 | (defn create-reports-partition |
115 | 121 | "Creates a partition in the reports table" |
116 | 122 | [date] |
|
131 | 137 | " FOREIGN KEY (status_id) REFERENCES report_statuses(id) ON DELETE CASCADE") |
132 | 138 | iso-week-year)]) |
133 | 139 | (fn [full-table-name iso-week-year] |
134 | | - [(format "CREATE UNIQUE INDEX IF NOT EXISTS idx_reports_id_%s ON %s USING btree (id)" |
135 | | - iso-week-year full-table-name) |
136 | | - (format "CREATE INDEX IF NOT EXISTS idx_reports_compound_id_%s ON %s USING btree (producer_timestamp, certname, hash) WHERE (start_time IS NOT NULL)" |
137 | | - iso-week-year full-table-name) |
138 | | - (format "CREATE INDEX IF NOT EXISTS idx_reports_noop_pending_%s ON %s USING btree (noop_pending) WHERE (noop_pending = true)" |
139 | | - iso-week-year full-table-name) |
140 | | - (format "CREATE INDEX IF NOT EXISTS idx_reports_prod_%s ON %s USING btree (producer_id)" |
141 | | - iso-week-year full-table-name) |
142 | | - (format "CREATE INDEX IF NOT EXISTS idx_reports_producer_timestamp_%s ON %s USING btree (producer_timestamp)" |
143 | | - iso-week-year full-table-name) |
144 | | - (format "CREATE INDEX IF NOT EXISTS idx_reports_producer_timestamp_by_hour_certname_%s ON %s USING btree (date_trunc('hour'::text, timezone('UTC'::text, producer_timestamp)), producer_timestamp, certname)" |
145 | | - iso-week-year full-table-name) |
146 | | - (format "CREATE INDEX IF NOT EXISTS reports_cached_catalog_status_on_fail_%s ON %s USING btree (cached_catalog_status) WHERE (cached_catalog_status = 'on_failure'::text)" |
147 | | - iso-week-year full-table-name) |
148 | | - (format "CREATE INDEX IF NOT EXISTS reports_catalog_uuid_idx_%s ON %s USING btree (catalog_uuid)" |
149 | | - iso-week-year full-table-name) |
150 | | - (format "CREATE INDEX IF NOT EXISTS reports_certname_idx_%s ON %s USING btree (certname)" |
151 | | - iso-week-year full-table-name) |
152 | | - (format "CREATE INDEX IF NOT EXISTS reports_end_time_idx_%s ON %s USING btree (end_time)" |
153 | | - iso-week-year full-table-name) |
154 | | - (format "CREATE INDEX IF NOT EXISTS reports_environment_id_idx_%s ON %s USING btree (environment_id)" |
155 | | - iso-week-year full-table-name) |
156 | | - (format "CREATE UNIQUE INDEX IF NOT EXISTS reports_hash_expr_idx_%s ON %s USING btree (encode(hash, 'hex'::text))" |
157 | | - iso-week-year full-table-name) |
158 | | - (format "CREATE INDEX IF NOT EXISTS reports_job_id_idx_%s ON %s USING btree (job_id) WHERE (job_id IS NOT NULL)" |
159 | | - iso-week-year full-table-name) |
160 | | - (format "CREATE INDEX IF NOT EXISTS reports_noop_idx_%s ON %s USING btree (noop) WHERE (noop = true)" |
161 | | - iso-week-year full-table-name) |
162 | | - (format "CREATE INDEX IF NOT EXISTS reports_status_id_idx_%s ON %s USING btree (status_id)" |
163 | | - iso-week-year full-table-name) |
164 | | - (format "CREATE INDEX IF NOT EXISTS reports_tx_uuid_expr_idx_%s ON %s USING btree (((transaction_uuid)::text))" |
165 | | - iso-week-year full-table-name)]))) |
| 140 | + (let [indexes |
| 141 | + [(format "CREATE INDEX IF NOT EXISTS idx_reports_compound_id_%s ON %s USING btree (producer_timestamp, certname, hash) WHERE (start_time IS NOT NULL)" |
| 142 | + iso-week-year full-table-name) |
| 143 | + (format "CREATE INDEX IF NOT EXISTS idx_reports_noop_pending_%s ON %s USING btree (noop_pending) WHERE (noop_pending = true)" |
| 144 | + iso-week-year full-table-name) |
| 145 | + (format "CREATE INDEX IF NOT EXISTS idx_reports_prod_%s ON %s USING btree (producer_id)" |
| 146 | + iso-week-year full-table-name) |
| 147 | + (format "CREATE INDEX IF NOT EXISTS idx_reports_producer_timestamp_%s ON %s USING btree (producer_timestamp)" |
| 148 | + iso-week-year full-table-name) |
| 149 | + (format "CREATE INDEX IF NOT EXISTS idx_reports_producer_timestamp_by_hour_certname_%s ON %s USING btree (date_trunc('hour'::text, timezone('UTC'::text, producer_timestamp)), producer_timestamp, certname)" |
| 150 | + iso-week-year full-table-name) |
| 151 | + (format "CREATE INDEX IF NOT EXISTS reports_cached_catalog_status_on_fail_%s ON %s USING btree (cached_catalog_status) WHERE (cached_catalog_status = 'on_failure'::text)" |
| 152 | + iso-week-year full-table-name) |
| 153 | + (format "CREATE INDEX IF NOT EXISTS reports_catalog_uuid_idx_%s ON %s USING btree (catalog_uuid)" |
| 154 | + iso-week-year full-table-name) |
| 155 | + (format "CREATE INDEX IF NOT EXISTS reports_certname_idx_%s ON %s USING btree (certname)" |
| 156 | + iso-week-year full-table-name) |
| 157 | + (format "CREATE INDEX IF NOT EXISTS reports_end_time_idx_%s ON %s USING btree (end_time)" |
| 158 | + iso-week-year full-table-name) |
| 159 | + (format "CREATE INDEX IF NOT EXISTS reports_environment_id_idx_%s ON %s USING btree (environment_id)" |
| 160 | + iso-week-year full-table-name) |
| 161 | + (format "CREATE UNIQUE INDEX IF NOT EXISTS reports_hash_expr_idx_%s ON %s USING btree (encode(hash, 'hex'::text))" |
| 162 | + iso-week-year full-table-name) |
| 163 | + (format "CREATE INDEX IF NOT EXISTS reports_job_id_idx_%s ON %s USING btree (job_id) WHERE (job_id IS NOT NULL)" |
| 164 | + iso-week-year full-table-name) |
| 165 | + (format "CREATE INDEX IF NOT EXISTS reports_noop_idx_%s ON %s USING btree (noop) WHERE (noop = true)" |
| 166 | + iso-week-year full-table-name) |
| 167 | + (format "CREATE INDEX IF NOT EXISTS reports_status_id_idx_%s ON %s USING btree (status_id)" |
| 168 | + iso-week-year full-table-name) |
| 169 | + (format "CREATE INDEX IF NOT EXISTS reports_tx_uuid_expr_idx_%s ON %s USING btree (((transaction_uuid)::text))" |
| 170 | + iso-week-year full-table-name)]] |
| 171 | + (if add-report-id-idx? |
| 172 | + (conj indexes (format "CREATE UNIQUE INDEX IF NOT EXISTS idx_reports_id_%s ON %s USING btree (id)" |
| 173 | + iso-week-year full-table-name)) |
| 174 | + indexes))))) |
0 commit comments