On 2/8/16, Eric Hill <Eric.Hill at jmp.com> wrote:
> Hey,
>
> It appears that LEFT and RIGHT are treated as reserved words by SQLite, so
> my attempts to use sqlite3_create_function() to create my own LEFT and RIGHT
> SQL functions have been unsuccessful (I'm using 3.8.11.1).  Several
> databases (SQL Server, MySQL) define their own LEFT and RIGHT functions for
> performing sub-string functions, apparently without conflicting with LEFT
> JOIN/RIGHT JOIN syntax.  Is that just not possible for SQLite?

Not easily, it seems.  There is a list of keywords that can fallback
to be identifiers
(https://www.sqlite.org/src/artifact/d7bff41d4?ln=220,233) if they
cannot be parsed as their original keyword value.  I tried adding
JOIN_KW to that list.  (JOIN_KW is a compound keyword that includes
"LEFT", "RIGHT", "NATURAL", "CROSS", "FULL", "INNER", and "OUTER".)
The result compiled, but lots of tests failed.  I don't know if that
is something that would be easy to fix or not.

Even if it were possible to fix it, I am not in a big rush to do so.
By allowing LEFT and RIGHT to be identifiers, we would be making a
promise that they can be identifiers in all future versions of SQLite,
which puts an additional constraint on future changes.  I'm not sure
this is worth it.

-- 
D. Richard Hipp
drh at sqlite.org

Reply via email to