*** 5,18 **** ---- - *: Extended POSIX regular expressions (should be easy, man 3 regcomp, or http://mirbsd.bsdadvocacy.org/man3/regcomp.htm for reference) - SELECT * FROM table WHERE name REGEX '[a-zA-Z]+_{0,3}'; - - *: The EXISTS keyword is not supported (IN is, but IN is only a special case of EXISTS). And what about - corelated subqueries ? - - _:Both supported as of 3.1. - *: Multiple databases are not supported. For example, the following construct for creating a table in a database db1 based on a table in database db2 won't work: --- 5,10 ---- *************** *** 28,35 **** *: SQL92 Character sets, collations, coercibility. - *: Inserting blob using X'AABBCCDD' syntax. (note: supported in Sqlite3) - *: Stored Procedures *: Rollup and Cube - _Who can tell me what this means?_ --- 20,25 ---- *************** *** 147,167 **** *: Multi-column IN clause (ie. SELECT * FROM tab WHERE (key1, key2) IN (SELECT...) - *: CURRENT-Functions like CURRENT_DATE, CURRENT_TIME are missing _Try "SELECT date('now');" or - "SELECT datetime('now','localtime');"_ - - _:Added as of 3.1 - *: INSERTing fewer values than columns does not fill the missing columns with the default values; if fewer values than columns in the table are supplied, all columns filled have to be named before the keyword values *: INSERTing one record with all VALUES to DEFAULT: INSERT INTO example () VALUES (); - *: ESCAPE clause for LIKE - - _:Added as of 3.1 - *: DISTINCT ON (expr,...) - this is from Postgres, where expr,... must be the leftmost expressions from the ORDER BY clause --- 137,148 ---- *************** *** 203,208 **** --- 184,241 ---- db out of the house, or is there something I didn't find? Or a simple MD5 function to obscure data using a one way hash. See the MySQL function MD5 or Password for examples. + *:More than one primary key per table, I can specify this with MySQL for example and SQLite returns me + an error: more than one primary key specified... + + *:UPDATE t1, t2 SET t1.f1 = value WHERE t1.f2 = t2.fa + + *:SHOW TABLES and DESCRIBE [tablename] would be nice - not sure if they're standard, but they are a + rather nice feature of MySQL... + -------- No, it's not standard. The standard says it should be a special database called + INFORMATION_SCHEMA, wich contains info about all databases, tables, columns, index, views, stored + procedures, etc. + + *:SELECT ... FOR UPDATE OF ... is not supported. This is understandable considering the mechanics of + SQLite in that row locking is redundant as the entire database is locked when updating any bit of it. + However, it would be good if a future version of SQLite supports it for SQL interchageability reasons if + nothing else. The only functionality required is to ensure a "RESERVED" lock is placed on the database + if not already there. + + *:DELETE from table ORDER BY column LIMIT x,y is not supported. I worked around + it by using a second query and deleting, eg: SELECT timestamp from table LIMIT x,1; DELETE from table + where timestamp < ..... + + *:The corollary to above, UPDATE table SET x WHERE y ORDER BY z is not supported. Haven't tried the + LIMIT addition to that form. + + *:Named parts of natural joins. For example: SELECT a.c1 FROM T1 a NATURAL JOIN T1 b. Because + sqlite reduces the number of columns kept, the name is lost. + + *:The ALL and ANY quantifiers for comparisons with subquery results aren't supported. + ==== + FEATURES ADDED IN RECENT VERSIONS + ==== + *: Extended POSIX regular expressions (should be easy, man 3 regcomp, or http://mirbsd.bsdadvocacy.org/man3/regcomp.htm for reference) + SELECT * FROM table WHERE name REGEX '[a-zA-Z]+_{0,3}'; + + The infrastructure for this syntax now exists, but you have to create a user-defined regex matching function. + + *: The EXISTS keyword is not supported (IN is, but IN is only a special case of EXISTS). And what about + corelated subqueries ? + + _:Both supported as of 3.1. + + *: Inserting blob using X'AABBCCDD' syntax. (note: supported in Sqlite3) + + *: CURRENT-Functions like CURRENT_DATE, CURRENT_TIME are missing _Try "SELECT date('now');" or + "SELECT datetime('now','localtime');"_ + + _:Added as of 3.1 + + *: ESCAPE clause for LIKE + + _:Added as of 3.1 + *:AUTO_INCREMENT field type. SQLite supports auto_incrementing fields but only if that field is set as "INTEGER PRIMARY KEY". *************** *** 246,279 **** _::Now supported as of 3.1 - *:More than one primary key per table, I can specify this with MySQL for example and SQLite returns me - an error: more than one primary key specified... - - *:UPDATE t1, t2 SET t1.f1 = value WHERE t1.f2 = t2.fa - - *:SHOW TABLES and DESCRIBE [tablename] would be nice - not sure if they're standard, but they are a - rather nice feature of MySQL... - -------- No, it's not standard. The standard says it should be a special database called - INFORMATION_SCHEMA, wich contains info about all databases, tables, columns, index, views, stored - procedures, etc. - - *:SELECT ... FOR UPDATE OF ... is not supported. This is understandable considering the mechanics of - SQLite in that row locking is redundant as the entire database is locked when updating any bit of it. - However, it would be good if a future version of SQLite supports it for SQL interchageability reasons if - nothing else. The only functionality required is to ensure a "RESERVED" lock is placed on the database - if not already there. - - *:DELETE from table ORDER BY column LIMIT x,y is not supported. I worked around - it by using a second query and deleting, eg: SELECT timestamp from table LIMIT x,1; DELETE from table - where timestamp < ..... - - *:The corollary to above, UPDATE table SET x WHERE y ORDER BY z is not supported. Haven't tried the - LIMIT addition to that form. - - *:Named parts of natural joins. For example: SELECT a.c1 FROM T1 a NATURAL JOIN T1 b. Because - sqlite reduces the number of columns kept, the name is lost. - *:The ALL and ANY keywords for testing subquery results aren't supported. =========== REMARK =========== --- 279,285 ----