Merge lp:~joetalbott/qa-dashboard/sql_optimization into lp:qa-dashboard
- sql_optimization
- Merge into dev
Proposed by
Joe Talbott
Status: | Merged |
---|---|
Approved by: | Chris Johnston |
Approved revision: | 739 |
Merged at revision: | 740 |
Proposed branch: | lp:~joetalbott/qa-dashboard/sql_optimization |
Merge into: | lp:qa-dashboard |
Diff against target: |
283 lines (+234/-4) 4 files modified
common/migrations/0012_add_index_Artifact_name.py (+114/-0) common/migrations/0013_add_index_Artifact_url.py (+114/-0) common/models.py (+2/-2) smokeng/views.py (+4/-2) |
To merge this branch: | bzr merge lp:~joetalbott/qa-dashboard/sql_optimization |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot | continuous-integration | Approve | |
Andy Doan (community) | Approve | ||
Chris Johnston | Approve | ||
Review via email: mp+217927@code.launchpad.net |
Commit message
smokeng - Optimize crash gathering code.
Description of the change
smokeng - Optimize crash gathering code.
To post a comment you must log in.
Revision history for this message
Andy Doan (doanac) wrote : | # |
i did zero investigation, but i was hoping we just needed an index or two added to the db to help this.
review:
Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:739
http://
Executed test runs:
Click here to trigger a rebuild:
http://
review:
Approve
(continuous-integration)
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file 'common/migrations/0012_add_index_Artifact_name.py' | |||
2 | --- common/migrations/0012_add_index_Artifact_name.py 1970-01-01 00:00:00 +0000 | |||
3 | +++ common/migrations/0012_add_index_Artifact_name.py 2014-05-01 15:18:22 +0000 | |||
4 | @@ -0,0 +1,114 @@ | |||
5 | 1 | # -*- coding: utf-8 -*- | ||
6 | 2 | import datetime | ||
7 | 3 | from south.db import db | ||
8 | 4 | from south.v2 import SchemaMigration | ||
9 | 5 | from django.db import models | ||
10 | 6 | |||
11 | 7 | |||
12 | 8 | class Migration(SchemaMigration): | ||
13 | 9 | |||
14 | 10 | def forwards(self, orm): | ||
15 | 11 | # Adding index on 'Artifact', fields ['name'] | ||
16 | 12 | db.create_index('common_artifacts', ['name']) | ||
17 | 13 | |||
18 | 14 | |||
19 | 15 | def backwards(self, orm): | ||
20 | 16 | # Removing index on 'Artifact', fields ['name'] | ||
21 | 17 | db.delete_index('common_artifacts', ['name']) | ||
22 | 18 | |||
23 | 19 | |||
24 | 20 | models = { | ||
25 | 21 | u'auth.group': { | ||
26 | 22 | 'Meta': {'object_name': 'Group'}, | ||
27 | 23 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
28 | 24 | 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), | ||
29 | 25 | 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) | ||
30 | 26 | }, | ||
31 | 27 | u'auth.permission': { | ||
32 | 28 | 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, | ||
33 | 29 | 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
34 | 30 | 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), | ||
35 | 31 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
36 | 32 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) | ||
37 | 33 | }, | ||
38 | 34 | u'auth.user': { | ||
39 | 35 | 'Meta': {'object_name': 'User'}, | ||
40 | 36 | 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
41 | 37 | 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), | ||
42 | 38 | 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
43 | 39 | 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), | ||
44 | 40 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
45 | 41 | 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
46 | 42 | 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
47 | 43 | 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
48 | 44 | 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
49 | 45 | 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
50 | 46 | 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), | ||
51 | 47 | 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), | ||
52 | 48 | 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) | ||
53 | 49 | }, | ||
54 | 50 | u'common.artifact': { | ||
55 | 51 | 'Meta': {'object_name': 'Artifact', 'db_table': "'common_artifacts'"}, | ||
56 | 52 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
57 | 53 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
58 | 54 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
59 | 55 | 'jenkins_build': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['common.JenkinsBuild']"}), | ||
60 | 56 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'db_index': 'True'}), | ||
61 | 57 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
62 | 58 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), | ||
63 | 59 | 'url': ('django.db.models.fields.URLField', [], {'max_length': '4096', 'db_index': 'True'}) | ||
64 | 60 | }, | ||
65 | 61 | u'common.bug': { | ||
66 | 62 | 'Meta': {'object_name': 'Bug', 'db_table': "'bugs'"}, | ||
67 | 63 | 'assignee': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'null': 'True'}), | ||
68 | 64 | 'bug_no': ('django.db.models.fields.CharField', [], {'max_length': '4096'}), | ||
69 | 65 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
70 | 66 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
71 | 67 | 'importance': ('django.db.models.fields.CharField', [], {'default': "u'unknown'", 'max_length': '4096'}), | ||
72 | 68 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
73 | 69 | 'project': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'null': 'True'}), | ||
74 | 70 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
75 | 71 | 'status': ('django.db.models.fields.CharField', [], {'default': "u'unknown'", 'max_length': '4096'}), | ||
76 | 72 | 'title': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'null': 'True'}), | ||
77 | 73 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}) | ||
78 | 74 | }, | ||
79 | 75 | u'common.jenkinsbuild': { | ||
80 | 76 | 'Meta': {'unique_together': "(('job', 'build_number'),)", 'object_name': 'JenkinsBuild', 'db_table': "'jenkins_builds'"}, | ||
81 | 77 | 'bugs': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'build_bugs'", 'symmetrical': 'False', 'to': u"orm['common.Bug']"}), | ||
82 | 78 | 'build_description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '4096'}), | ||
83 | 79 | 'build_number': ('django.db.models.fields.CharField', [], {'max_length': '4096'}), | ||
84 | 80 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
85 | 81 | 'failed': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
86 | 82 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
87 | 83 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
88 | 84 | 'job': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['common.JenkinsJob']"}), | ||
89 | 85 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
90 | 86 | 'ran_at': ('django.db.models.fields.DateTimeField', [], {}), | ||
91 | 87 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}) | ||
92 | 88 | }, | ||
93 | 89 | u'common.jenkinsjob': { | ||
94 | 90 | 'Meta': {'object_name': 'JenkinsJob', 'db_table': "'jenkins_jobs'"}, | ||
95 | 91 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
96 | 92 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
97 | 93 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
98 | 94 | 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '4096'}), | ||
99 | 95 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
100 | 96 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), | ||
101 | 97 | 'url': ('django.db.models.fields.URLField', [], {'max_length': '4096'}) | ||
102 | 98 | }, | ||
103 | 99 | u'common.userprofile': { | ||
104 | 100 | 'Meta': {'object_name': 'UserProfile', 'db_table': "'custom_user_profile'"}, | ||
105 | 101 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
106 | 102 | 'use_private_url': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
107 | 103 | 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'}) | ||
108 | 104 | }, | ||
109 | 105 | u'contenttypes.contenttype': { | ||
110 | 106 | 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, | ||
111 | 107 | 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
112 | 108 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
113 | 109 | 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
114 | 110 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) | ||
115 | 111 | } | ||
116 | 112 | } | ||
117 | 113 | |||
118 | 114 | complete_apps = ['common'] | ||
119 | 0 | \ No newline at end of file | 115 | \ No newline at end of file |
120 | 1 | 116 | ||
121 | === added file 'common/migrations/0013_add_index_Artifact_url.py' | |||
122 | --- common/migrations/0013_add_index_Artifact_url.py 1970-01-01 00:00:00 +0000 | |||
123 | +++ common/migrations/0013_add_index_Artifact_url.py 2014-05-01 15:18:22 +0000 | |||
124 | @@ -0,0 +1,114 @@ | |||
125 | 1 | # -*- coding: utf-8 -*- | ||
126 | 2 | import datetime | ||
127 | 3 | from south.db import db | ||
128 | 4 | from south.v2 import SchemaMigration | ||
129 | 5 | from django.db import models | ||
130 | 6 | |||
131 | 7 | |||
132 | 8 | class Migration(SchemaMigration): | ||
133 | 9 | |||
134 | 10 | def forwards(self, orm): | ||
135 | 11 | # Adding index on 'Artifact', fields ['url'] | ||
136 | 12 | db.create_index('common_artifacts', ['url']) | ||
137 | 13 | |||
138 | 14 | |||
139 | 15 | def backwards(self, orm): | ||
140 | 16 | # Removing index on 'Artifact', fields ['url'] | ||
141 | 17 | db.delete_index('common_artifacts', ['url']) | ||
142 | 18 | |||
143 | 19 | |||
144 | 20 | models = { | ||
145 | 21 | u'auth.group': { | ||
146 | 22 | 'Meta': {'object_name': 'Group'}, | ||
147 | 23 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
148 | 24 | 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), | ||
149 | 25 | 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) | ||
150 | 26 | }, | ||
151 | 27 | u'auth.permission': { | ||
152 | 28 | 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, | ||
153 | 29 | 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
154 | 30 | 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), | ||
155 | 31 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
156 | 32 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) | ||
157 | 33 | }, | ||
158 | 34 | u'auth.user': { | ||
159 | 35 | 'Meta': {'object_name': 'User'}, | ||
160 | 36 | 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
161 | 37 | 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), | ||
162 | 38 | 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
163 | 39 | 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), | ||
164 | 40 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
165 | 41 | 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
166 | 42 | 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
167 | 43 | 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
168 | 44 | 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), | ||
169 | 45 | 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), | ||
170 | 46 | 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), | ||
171 | 47 | 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), | ||
172 | 48 | 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) | ||
173 | 49 | }, | ||
174 | 50 | u'common.artifact': { | ||
175 | 51 | 'Meta': {'object_name': 'Artifact', 'db_table': "'common_artifacts'"}, | ||
176 | 52 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
177 | 53 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
178 | 54 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
179 | 55 | 'jenkins_build': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['common.JenkinsBuild']"}), | ||
180 | 56 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'db_index': 'True'}), | ||
181 | 57 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
182 | 58 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), | ||
183 | 59 | 'url': ('django.db.models.fields.URLField', [], {'max_length': '4096', 'db_index': 'True'}) | ||
184 | 60 | }, | ||
185 | 61 | u'common.bug': { | ||
186 | 62 | 'Meta': {'object_name': 'Bug', 'db_table': "'bugs'"}, | ||
187 | 63 | 'assignee': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'null': 'True'}), | ||
188 | 64 | 'bug_no': ('django.db.models.fields.CharField', [], {'max_length': '4096'}), | ||
189 | 65 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
190 | 66 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
191 | 67 | 'importance': ('django.db.models.fields.CharField', [], {'default': "u'unknown'", 'max_length': '4096'}), | ||
192 | 68 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
193 | 69 | 'project': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'null': 'True'}), | ||
194 | 70 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
195 | 71 | 'status': ('django.db.models.fields.CharField', [], {'default': "u'unknown'", 'max_length': '4096'}), | ||
196 | 72 | 'title': ('django.db.models.fields.CharField', [], {'max_length': '4096', 'null': 'True'}), | ||
197 | 73 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}) | ||
198 | 74 | }, | ||
199 | 75 | u'common.jenkinsbuild': { | ||
200 | 76 | 'Meta': {'unique_together': "(('job', 'build_number'),)", 'object_name': 'JenkinsBuild', 'db_table': "'jenkins_builds'"}, | ||
201 | 77 | 'bugs': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'build_bugs'", 'symmetrical': 'False', 'to': u"orm['common.Bug']"}), | ||
202 | 78 | 'build_description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '4096'}), | ||
203 | 79 | 'build_number': ('django.db.models.fields.CharField', [], {'max_length': '4096'}), | ||
204 | 80 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
205 | 81 | 'failed': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
206 | 82 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
207 | 83 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
208 | 84 | 'job': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['common.JenkinsJob']"}), | ||
209 | 85 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
210 | 86 | 'ran_at': ('django.db.models.fields.DateTimeField', [], {}), | ||
211 | 87 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}) | ||
212 | 88 | }, | ||
213 | 89 | u'common.jenkinsjob': { | ||
214 | 90 | 'Meta': {'object_name': 'JenkinsJob', 'db_table': "'jenkins_jobs'"}, | ||
215 | 91 | 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), | ||
216 | 92 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
217 | 93 | 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
218 | 94 | 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '4096'}), | ||
219 | 95 | 'publish': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), | ||
220 | 96 | 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), | ||
221 | 97 | 'url': ('django.db.models.fields.URLField', [], {'max_length': '4096'}) | ||
222 | 98 | }, | ||
223 | 99 | u'common.userprofile': { | ||
224 | 100 | 'Meta': {'object_name': 'UserProfile', 'db_table': "'custom_user_profile'"}, | ||
225 | 101 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
226 | 102 | 'use_private_url': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), | ||
227 | 103 | 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['auth.User']", 'unique': 'True'}) | ||
228 | 104 | }, | ||
229 | 105 | u'contenttypes.contenttype': { | ||
230 | 106 | 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, | ||
231 | 107 | 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
232 | 108 | u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), | ||
233 | 109 | 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), | ||
234 | 110 | 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) | ||
235 | 111 | } | ||
236 | 112 | } | ||
237 | 113 | |||
238 | 114 | complete_apps = ['common'] | ||
239 | 0 | \ No newline at end of file | 115 | \ No newline at end of file |
240 | 1 | 116 | ||
241 | === modified file 'common/models.py' | |||
242 | --- common/models.py 2013-10-24 13:47:27 +0000 | |||
243 | +++ common/models.py 2014-05-01 15:18:22 +0000 | |||
244 | @@ -159,8 +159,8 @@ | |||
245 | 159 | class Meta: | 159 | class Meta: |
246 | 160 | db_table = "common_artifacts" | 160 | db_table = "common_artifacts" |
247 | 161 | 161 | ||
250 | 162 | url = models.URLField(max_length=4096) | 162 | url = models.URLField(max_length=4096, db_index=True) |
251 | 163 | name = models.CharField(max_length=4096) | 163 | name = models.CharField(max_length=4096, db_index=True) |
252 | 164 | jenkins_build = models.ForeignKey(JenkinsBuild) | 164 | jenkins_build = models.ForeignKey(JenkinsBuild) |
253 | 165 | 165 | ||
254 | 166 | 166 | ||
255 | 167 | 167 | ||
256 | === modified file 'smokeng/views.py' | |||
257 | --- smokeng/views.py 2014-02-13 20:51:20 +0000 | |||
258 | +++ smokeng/views.py 2014-05-01 15:18:22 +0000 | |||
259 | @@ -90,7 +90,7 @@ | |||
260 | 90 | passrates = {} | 90 | passrates = {} |
261 | 91 | 91 | ||
262 | 92 | bugs = _get_bugs(release) | 92 | bugs = _get_bugs(release) |
264 | 93 | crashes = _get_crashes() | 93 | crashes = _get_crashes(release) |
265 | 94 | bug_data = {} | 94 | bug_data = {} |
266 | 95 | for result in results: | 95 | for result in results: |
267 | 96 | _append_totals(totals, result, crashes) | 96 | _append_totals(totals, result, crashes) |
268 | @@ -124,12 +124,14 @@ | |||
269 | 124 | return totals, bug_data | 124 | return totals, bug_data |
270 | 125 | 125 | ||
271 | 126 | 126 | ||
273 | 127 | def _get_crashes(): | 127 | def _get_crashes(release): |
274 | 128 | crashes = SmokeResult.objects.filter( | 128 | crashes = SmokeResult.objects.filter( |
275 | 129 | publish=True, | 129 | publish=True, |
276 | 130 | jenkins_build__artifact__name__endswith='.crash', | 130 | jenkins_build__artifact__name__endswith='.crash', |
277 | 131 | image__release=release, | ||
278 | 131 | ).distinct( | 132 | ).distinct( |
279 | 132 | 'image__id', | 133 | 'image__id', |
280 | 134 | 'jenkins_build__id', | ||
281 | 133 | 'jenkins_build__artifact__url', | 135 | 'jenkins_build__artifact__url', |
282 | 134 | ).values( | 136 | ).values( |
283 | 135 | 'image__id', | 137 | 'image__id', |
11:14:13 cjohnston | do you have any before and after data?
11:15:10 josepht | it halved the query time for utopic results for me