ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· SQLite 3.46, Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΠΉ Π‘Π£ΠΠ, ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΠΎΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎΠ΄ SQLite ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π΄ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (public domain), Ρ.Π΅. ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΈ Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎ Π² Π»ΡΠ±ΡΡ ΡΠ΅Π»ΡΡ . Π€ΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² SQLite ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠΎΡΡΠΈΡΠΌ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΈΡΠ»Π°Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ «_» Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1_234_567).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° SQL-ΡΡΠ½ΠΊΡΠΈΡ json_pretty() Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON, ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ c ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ.
- Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «PRAGMA optimize», Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΠ ΠΈ Π²ΡΠ΅Ρ ΡΡ Π΅ΠΌ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ². Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π»ΠΈΠΌΠΈΡ Π½Π° Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΠ, ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΠ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ Π±ΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ° «PRAGMA optimize(0x10000)» Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΠ°Ρ . ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ°Π±Π»ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ sqlite_stat1.
- Π SQL-ΡΡΠ½ΠΊΡΠΈΡ strftime() Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ %G, %g, %U ΠΈ %V.
- Π SQL-ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°ΡΠ°ΠΌΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ceiling ΠΈ floor Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΡ Π΄Π°Ρ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΡΠ΄Π²ΠΈΠ³Π° Π΄Π°Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΌΠ΅ΡΡΡΠ΅Π² ΠΈΠ»ΠΈ Π»Π΅Ρ. ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² utc ΠΈ localtime, Π΅ΡΠ»ΠΈ SQLite ΠΈΠΌΠ΅Π΅Ρ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΆΠ΅ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ UTC ΠΈΠ»ΠΈ localtime.
- ΠΠ½Π΅ΡΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΠ»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ INSERT, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡΡΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ΅ΠΊΡΠΈΠΈ VALUES, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ «VALUES-as-coroutine», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² Π΄Π²Π° ΡΠ°Π·Π° ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π·Π±ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π² Π΄Π²Π° ΡΠ°Π·Π° ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΠΈΠ΄Π° «SELECT count(DISTINCT col) FROM …» ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅. Π£Π»ΡΡΡΠ΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ SQL-ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ push-down Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ WHERE, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΡ.
- ΠΠ·ΠΌΠ΅Π½Π΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅ΠΊΠ° — ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΡΠ΅ΠΊΠ° ΠΏΠ°ΡΡΠ΅Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈΠ· ΠΊΡΡΠΈ, Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ «parser stack overflow».
- Π JSON ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»Π°Ρ JSON5. ΠΠ·ΠΌΠ΅Π½Π΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² «->» ΠΈ «->>», ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΡ (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ PostgreSQL ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ°).
- Π Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ DEFAULT Π² ΡΡΠΎΠ»Π±ΡΠ°Ρ ΡΠ°Π±Π»ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru