A liberazione di SQLite 3.35, un DBMS ligeru cuncepitu cum'è una biblioteca plug-in, hè stata publicata. U codice SQLite hè distribuitu in u duminiu publicu, i.e. pò esse usatu senza restrizioni è gratuitu per ogni scopu. U supportu finanziariu per i sviluppatori SQLite hè furnitu da un cunsorziu creatu apposta, chì include cumpagnie cum'è Adobe, Oracle, Mozilla, Bentley è Bloomberg.
I cambiamenti principali:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (log2(), cos(), tg(), exp(), ln(), pow() ΠΈ Ρ.ΠΏ.), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² SQL. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ±ΠΎΡΠΊΠ° Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ Β«-DSQLITE_ENABLE_MATH_FUNCTIONSΒ».
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Β«ALTER TABLE DROP COLUMNΒ» Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ°Π½Π΅Π΅ Ρ ΡΠ°Π½ΠΈΠ²ΡΠΈΡ ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π΄Π°Π½Π½ΡΡ .
- Π Π°ΡΡΠΈΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ UPSERT (Π΄ΠΎΠ±Π°Π²ΠΈΡΡ-ΠΈΠ»ΠΈ-ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π° Β«INSERT β¦ ON CONFLICT DO NOTHING/UPDATEΒ» ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΡΠ°Π²ΠΊΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· Β«INSERTΒ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ INSERT ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ UPDATE). Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² Β«ON CONFLICTΒ», ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ Β«ON CONFLICTΒ» ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Β«DO UPDATEΒ».
- Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ DELETE, INSERT ΠΈ UPDATE ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ RETURNING, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ, Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Β«insert into β¦ returning idΒ» Π²Π΅ΡΠ½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π° Β«update β¦ set price = price * 1.10 returning priceΒ» Π²Π΅ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ price.
- ΠΠ»Ρ ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Common Table Expression, CTE), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡΡ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° WITH, ΡΠ°Π·ΡΠ΅ΡΡΠ½ Π²ΡΠ±ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² Β«MATERIALIZEDΒ» ΠΈ Β«NOT MATERIALIZEDΒ». Β«MATERIALIZEDΒ» ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π° ΠΏΡΠΈ Β«NOT MATERIALIZEDΒ» ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π² SQLite ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠ΅ΠΆΠΈΠΌ Β«NOT MATERIALIZEDΒ», Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π»Ρ CTE, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°, ΠΈΠ·ΠΌΠ΅Π½ΡΠ½ Π½Π° Β«MATERIALIZEDΒ».
- Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ VACUUM Π΄Π»Ρ ΠΠ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ TEXT ΠΈΠ»ΠΈ BLOB.
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ²:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ min ΠΈ max Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Β«INΒ».
- Π£ΡΠΊΠΎΡΠ΅Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° EXISTS.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ UNION ALL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΠΎΡΡΠ°Π²Π΅ JOIN.
- ΠΠ°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ IS NOT NULL.
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«x IS NULLΒ» ΠΈ Β«x IS NOT NULLΒ» Π² FALSE ΠΈΠ»ΠΈ TRUE Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊ Β«NOT NULLΒ».
- ΠΡΠΎΠΏΡΡΠ΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π² UPDATE, Π΅ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠ΅ΠΉ Π±Π»ΠΎΠΊΠ° WHERE Π² ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΎΠΊΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠΈ ΡΠ°ΡΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠΏΠΈΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² Β«PARTITION BYΒ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ .
- ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«.filectrl data_versionΒ».
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ Β«.onceΒ» ΠΈ Β«.outputΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² (Β«|Β»).
- Π ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«.statsΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Β«stmtΒ» ΠΈ Β«vmstepΒ» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ ΠΈ ΡΡΡΡΡΠΈΠΊΠΎΠ² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ.
Source: opennet.ru