Last modified: 2011-03-14 13:49:01 UTC
With the addition of a LIKE parameter to doQUERY(), we would be able to do filtering based on name matches, which is a common request for special pages (bug 6 comes to mind).
Created attachment 4384 [details]
Patch to implement LIKE into doQuery()
This may or may not work, I'm not entirely sure. I'd really like input on the feasibility of this idea, as I think it could greatly enhance our various querypages.
1) This breaks all existing uses of doQuery that specified $shownavigation. You need to add the new parameter to the end, or make a new method.
2) You only support LIKE '%foo%'; is that desirable? Would 'foo%' and '%foo' be useful in some cases? Or maybe '%foo%bar', etc.?
3) What effect would using this have on performance?
1) Oops, wasn't paying attention.
2) I'm not sure how you would implement that, interface-side. Would you have to give options, such as "begins with/ends with?" Give them ability to put %'s in themselves (very dangerous!), or what? I'm open to ideas, as I hadn't considered that previously. I figured %like% to be a "contains," I suppose.
3) A lot, potentially. How does Prefixindex deal with the LIKE?
(In reply to comment #3)
> 2) I'm not sure how you would implement that, interface-side. Would you have to
> give options, such as "begins with/ends with?" Give them ability to put %'s in
> themselves (very dangerous!), or what? I'm open to ideas, as I hadn't
> considered that previously. I figured %like% to be a "contains," I suppose.
I was imagining the caller wouldn't be passing input straight from a form, it would be taking form input and calling based on that. Is this incorrect? I never looked at QueryPage.php, to be honest.
> 3) A lot, potentially. How does Prefixindex deal with the LIKE?
LIKEs where the only wildcard is at the very end of the string (e.g., LIKE 'Foo%') can use an index on the column you're LIKEing. LIKE '%foo%' cannot use an index to retrieve the desired rows, in MySQL -- it has to scan the contents of all rows that otherwise match. I don't know much about the querycache table is used, either, so I don't know whether this is a problem in the specific case. Maybe I'm not the best person to comment on this bug. :)
All I know is I need Special:PrefixIndex/* or some way to match everything
Special:Allpages with no arguments gets everything.
Special:PrefixIndex with no arguments gets nothing.
Special:Allpages is great, so I link it from the Main Page on
http://radioscanningtw.jidanni.org/), but when the user attempts to
narrow his view, there is no lower bound. That's why
Special:PrefixIndex was invented, apparently.
So I want to link Special:PrefixIndex from my Main Page instead, but
then the user will start out seeing no pages at all and think my site
Special:PrefixIndex/* of course gets nothing.
WONTFIX. Crap bug I filed long before I knew what I was talking about. Adding LIKE to doQuery() is stupid.