Fossil SCM

Performance enhancement for branch name look-ups.

drh 2012-10-28 17:28 trunk
Commit 186405ce3abfe8be99d5106297930ac38c1b86c4
1 file changed +6 -9
+6 -9
--- src/name.c
+++ src/name.c
@@ -143,17 +143,16 @@
143143
}
144144
145145
/* "tag:" + symbolic-name */
146146
if( memcmp(zTag, "tag:", 4)==0 ){
147147
rid = db_int(0,
148
- "SELECT event.objid"
148
+ "SELECT event.objid, max(event.mtime)"
149149
" FROM tag, tagxref, event"
150150
" WHERE tag.tagname='sym-%q' "
151151
" AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
152152
" AND event.objid=tagxref.rid "
153
- " AND event.type GLOB '%q'"
154
- " ORDER BY event.mtime DESC /*sort*/",
153
+ " AND event.type GLOB '%q'",
155154
&zTag[4], zType
156155
);
157156
return rid;
158157
}
159158
@@ -197,18 +196,17 @@
197196
if( sqlite3_strnicmp(&zDate[nDate-3],"utc",3)==0 ){
198197
zDate[nDate-3] = 'z';
199198
zDate[nDate-2] = 0;
200199
}
201200
rid = db_int(0,
202
- "SELECT event.objid"
201
+ "SELECT event.objid, max(event.mtime)"
203202
" FROM tag, tagxref, event"
204203
" WHERE tag.tagname='sym-%q' "
205204
" AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
206205
" AND event.objid=tagxref.rid "
207206
" AND event.mtime<=julianday(%Q)"
208
- " AND event.type GLOB '%q'"
209
- " ORDER BY event.mtime DESC /*sort*/ ",
207
+ " AND event.type GLOB '%q'",
210208
zTagBase, zDate, zType
211209
);
212210
return rid;
213211
}
214212
@@ -239,17 +237,16 @@
239237
if( rid ) return rid;
240238
}
241239
242240
/* Symbolic name */
243241
rid = db_int(0,
244
- "SELECT event.objid"
242
+ "SELECT event.objid, max(event.mtime)"
245243
" FROM tag, tagxref, event"
246244
" WHERE tag.tagname='sym-%q' "
247245
" AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
248246
" AND event.objid=tagxref.rid "
249
- " AND event.type GLOB '%q'"
250
- " ORDER BY event.mtime DESC /*sort*/ ",
247
+ " AND event.type GLOB '%q'",
251248
zTag, zType
252249
);
253250
if( rid>0 ) return rid;
254251
255252
/* Undocumented: numeric tags get translated directly into the RID */
256253
--- src/name.c
+++ src/name.c
@@ -143,17 +143,16 @@
143 }
144
145 /* "tag:" + symbolic-name */
146 if( memcmp(zTag, "tag:", 4)==0 ){
147 rid = db_int(0,
148 "SELECT event.objid"
149 " FROM tag, tagxref, event"
150 " WHERE tag.tagname='sym-%q' "
151 " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
152 " AND event.objid=tagxref.rid "
153 " AND event.type GLOB '%q'"
154 " ORDER BY event.mtime DESC /*sort*/",
155 &zTag[4], zType
156 );
157 return rid;
158 }
159
@@ -197,18 +196,17 @@
197 if( sqlite3_strnicmp(&zDate[nDate-3],"utc",3)==0 ){
198 zDate[nDate-3] = 'z';
199 zDate[nDate-2] = 0;
200 }
201 rid = db_int(0,
202 "SELECT event.objid"
203 " FROM tag, tagxref, event"
204 " WHERE tag.tagname='sym-%q' "
205 " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
206 " AND event.objid=tagxref.rid "
207 " AND event.mtime<=julianday(%Q)"
208 " AND event.type GLOB '%q'"
209 " ORDER BY event.mtime DESC /*sort*/ ",
210 zTagBase, zDate, zType
211 );
212 return rid;
213 }
214
@@ -239,17 +237,16 @@
239 if( rid ) return rid;
240 }
241
242 /* Symbolic name */
243 rid = db_int(0,
244 "SELECT event.objid"
245 " FROM tag, tagxref, event"
246 " WHERE tag.tagname='sym-%q' "
247 " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
248 " AND event.objid=tagxref.rid "
249 " AND event.type GLOB '%q'"
250 " ORDER BY event.mtime DESC /*sort*/ ",
251 zTag, zType
252 );
253 if( rid>0 ) return rid;
254
255 /* Undocumented: numeric tags get translated directly into the RID */
256
--- src/name.c
+++ src/name.c
@@ -143,17 +143,16 @@
143 }
144
145 /* "tag:" + symbolic-name */
146 if( memcmp(zTag, "tag:", 4)==0 ){
147 rid = db_int(0,
148 "SELECT event.objid, max(event.mtime)"
149 " FROM tag, tagxref, event"
150 " WHERE tag.tagname='sym-%q' "
151 " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
152 " AND event.objid=tagxref.rid "
153 " AND event.type GLOB '%q'",
 
154 &zTag[4], zType
155 );
156 return rid;
157 }
158
@@ -197,18 +196,17 @@
196 if( sqlite3_strnicmp(&zDate[nDate-3],"utc",3)==0 ){
197 zDate[nDate-3] = 'z';
198 zDate[nDate-2] = 0;
199 }
200 rid = db_int(0,
201 "SELECT event.objid, max(event.mtime)"
202 " FROM tag, tagxref, event"
203 " WHERE tag.tagname='sym-%q' "
204 " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
205 " AND event.objid=tagxref.rid "
206 " AND event.mtime<=julianday(%Q)"
207 " AND event.type GLOB '%q'",
 
208 zTagBase, zDate, zType
209 );
210 return rid;
211 }
212
@@ -239,17 +237,16 @@
237 if( rid ) return rid;
238 }
239
240 /* Symbolic name */
241 rid = db_int(0,
242 "SELECT event.objid, max(event.mtime)"
243 " FROM tag, tagxref, event"
244 " WHERE tag.tagname='sym-%q' "
245 " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 "
246 " AND event.objid=tagxref.rid "
247 " AND event.type GLOB '%q'",
 
248 zTag, zType
249 );
250 if( rid>0 ) return rid;
251
252 /* Undocumented: numeric tags get translated directly into the RID */
253

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button