On 25 Jan 2017, at 5:45pm, Ersin Akinci <ersin.aki...@gmail.com> wrote:

> Thanks Richard and Simon for your insights. I think I'm still missing
> a few things, though.
> 
> 1. What does it mean when SQLite tries to create an index on a string?
> Simon suggested that it's creating a calculated index, but I'm not
> sure what means. (Does it just mean an "index" literally just on the
> word "yearz_doesnt_exist"? That seems quite silly.)

SQLite supports indexes on calculations.  Or other expressions.  So you should 
be able to do things like

CREATE INDEX fred ON MyTable (CASE WHEN stock < 0 THEN 0 ELSE stock END)

Since a constant string is an expression, and single quotes must be used to 
quote strings, this means you can do something like

CREATE INDEX mabel ON MyTable ('hello mom')

It won’t do anything useful, but it should work.

> 2. And regardless, why is there a different result when using single
> quotes vs. double quotes?

The two quotes mean completely different things to SQLite.  Single quotes are 
used to quote strings.  Double quotes are used to quote entity names (like 
column names, table names, etc.).  Properly speaking the version of your 
command with double quotes should be rejected for the reason you expected but, 
as DRH explained, for historical reasons if there’s no column with the given 
name SQLite thinks you want the contents of the quotes as a string.  And that’s 
what it’s doing.

Simon.
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to