On Wed, Oct 26, 2011 at 01:33, Dmitriy Sintsov <questpc(a)rambler.ru> wrote:
* Jeremy Baron <jeremy(a)tuxmachine.com> [Wed, 26
Oct 2011 01:09:07
-0400]:
Should I
do not use table aliases at all?
Aliases should be fine. (at least per the docs I found and reedy's
example)
If they are fine, why my second converted query (last post in bug 31534)
https://bugzilla.wikimedia.org/show_bug.cgi?id=31534
fails to execute on MySQL ?
I think you found the problem already in your comment 2 but I missed
it the first time around:
произошёл из функции «qp_PollStore::pollVotersPager».
База данных возвратила
ошибку «1064: You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near
''qup' INNER JOIN `wiki_qp_users` 'qu' ON ((qup.uid = qu.uid)) WHERE
pid = 7
LI' at line 1 (127.0.0.1)».
The Database class built query is identical to manually built query, except
the Database class wraps table aliases into single quotes. Original query
works.
Seems pretty clearly broken; we should fix the way we quote. (and
maybe not break anyone because anyone using the syntax that triggers
this would already be broken because of this) Maybe we need backticks
instead of quotes? I can test when I'm less sleepy but maybe someone
else knows. Looks like it per
http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
However my far goal is to make the whole extension
compatible to non-MySQL DBMS, I guess this query will probably work, but
I have another queries, like that second one with INNER JOIN.
Maybe I should get rid of table aliases, the simpliest way.
That may be a solution but either way the bug shouldn't be ignored.
Hopefully (if someone (e.g. domas) agrees that it's safe) this can be
backported to 1.17 and you could use it. I'm not too familiar with the
standard backporting criteria for point releases.
-Jeremy