За пълнота отговарям на моето и се свързвам с друг въпрос Изглежда, че това поведение е пряко следствие от стандарта на SQL, позволяващ празно пространство между функцията и скоби.
Тъй като (обикновено) е позволено да се казва FUNCTION_NAME (x), тогава, когато тази функция се приложи към първия член на select
SELECT FUNCTION_NAME (x)
тогава анализаторът ще има трудно време да установи дали това е контекст на име на функция или SELECT модифицираща ключова дума.
Така че в горния случай FUNCTION_NAME всъщност е FUNCTION_NAME_OR_KEYWORD за анализатора.
Но това отива по-далеч:тъй като пространството между името на функцията и скобата Е разрешено, анализаторът всъщност НЕ може да прави разлика между
SELECT FUNCTION_NAME_OR_KEYWORD (x)
и
SELECT FUNCTION_NAME_OR_KEYWORD(x)
(трябва да тества ключовите думи, за да види дали са функции) и тъй като (x) ще бъде анализирано до x, следва, че за FUNCTION_NAME_OR_KEYWORD -> DISTINCT (и всички други модифициращи ключови думи SELECT) няма разлика между
SELECT DISTINCT x, y, z, ...
и
SELECT DISTINCT(x), y, z, ...
QED, но без твърди препратки (предположение, че стандарт не се интересува от пробелите между имената на функциите и скоби според мен е оправдано, но не успях да следвам граматиката на BNF до степен, че да мога да цитирам точното правило).
ЗАБЕЛЕЖКА:mysql има определен брой функции, при които се грижи за интервал между функциите и скоби, но вярвам, че това са изключения (следователно опцията на сървъра да го игнорира)