Oracle 5.0 Reference Manual page 776

Table of Contents

Advertisement

MySQL 5.0 supports built-in (native) functions, user-defined functions (UDFs), and stored functions.
This section describes how the server recognizes whether the name of a built-in function is used as
a function call or as an identifier, and how the server determines which function to use in cases when
functions of different types exist with a given name.
Built-In Function Name Parsing
The parser uses default rules for parsing names of built-in functions. These rules can be changed by
enabling the
IGNORE_SPACE
When the parser encounters a word that is the name of a built-in function, it must determine whether
the name signifies a function call or is instead a nonexpression reference to an identifier such as a
table or column name. For example, in the following statements, the first reference to
function call, whereas the second reference is a table name:
SELECT COUNT(*) FROM mytable;
CREATE TABLE count (i INT);
The parser should recognize the name of a built-in function as indicating a function call only when
parsing what is expected to be an expression. That is, in nonexpression context, function names are
permitted as identifiers.
However, some built-in functions have special parsing or implementation considerations, so the parser
uses the following rules by default to distinguish whether their names are being used as function calls
or as identifiers in nonexpression context:
• To use the name as a function call in an expression, there must be no whitespace between the name
and the following "(" parenthesis character.
• Conversely, to use the function name as an identifier, it must not be followed immediately by a
parenthesis.
The requirement that function calls be written with no whitespace between the name and the
parenthesis applies only to the built-in functions that have special considerations.
name. The exact list of function names for which following whitespace determines their interpretation
are those listed in the
sql_functions[]
5.1, they are rather numerous (about 200), so you may find it easiest to treat the no-whitespace
requirement as applying to all function calls. In MySQL 5.1, parser improvements reduce to about 30
the number of affected function names.
For functions not listed in the sql_functions[]) array, whitespace does not matter. They are
interpreted as function calls only when used in expression context and may be used freely as identifiers
otherwise.
is one such name. However, for these nonaffected function names, interpretation
ASCII
may vary in expression context:
the given name; if not,
one exists with that name.
The
[536]
IGNORE_SPACE
are whitespace-sensitive:
• With
IGNORE_SPACE
no whitespace between the name and the following parenthesis. This occurs even when the function
name is used in nonexpression context:
mysql>
CREATE TABLE count(i INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'count(i INT)'
To eliminate the error and cause the name to be treated as an identifier, either use whitespace
following the name or write it as a quoted identifier (or both):
CREATE TABLE count (i INT);
Function Name Parsing and Resolution
[536]
SQL mode.
array of the
func_name ()
is interpreted as a user-defined function or stored function if
func_name ()
SQL mode can be used to modify how the parser treats function names that
[536]
disabled, the parser interprets the name as a function call when there is
756
source file. Before MySQL
sql/lex.h
is interpreted as a built-in function if there is one with
is a
count
is one such
COUNT

Advertisement

Table of Contents
loading

This manual is also suitable for:

Mysql 5.0

Table of Contents