Π Π΅Π»ΠΈΠ· Π‘Π£Π‘Π” SQLite 3.31 с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… столбцов

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· SQLite 3.31.0, лСгковСсной Π‘Π£Π‘Π”, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Код SQLite распространяСтся ΠΊΠ°ΠΊ общСствСнноС достояниС (public domain), Ρ‚.Π΅. ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎ Π² Π»ΡŽΠ±Ρ‹Ρ… цСлях. Π€ΠΈΠ½Π°Π½ΡΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² SQLite осущСствляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданный консорциум, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ входят Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ Adobe, Oracle, Mozilla, Bentley ΠΈ Bloomberg.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… столбцов (вычисляСмых столбцов), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ создании Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ столбСц, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ автоматичСски вычисляСтся Π½Π° основС содСрТимого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ столбца. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ столбцы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ (Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Π½Π° Π»Π΅Ρ‚Ρƒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ), Ρ‚Π°ΠΊ ΠΈ сохраняСмыми Π² Π‘Π” (ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ связанных столбцов). Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… столбцов доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чтСния (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ производится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ значСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ столбцС, задСйствованном ΠΏΡ€ΠΈ вычислСнии). НапримСр:

    CREATE TABLE t1(
    a INTEGER PRIMARY KEY,
    b INT,
    c TEXT,
    d INT GENERATED ALWAYS AS (a*abs(b)) VIRTUAL,
    e TEXT GENERATED ALWAYS AS (substr(c,b,b+1)) STORED
    );

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ PRAGMA trusted_schema, настройка SQLITE_DBCONFIG_TRUSTED_SCHEMA ΠΈ сборочная опция «-DSQLITE_TRUSTED_SCHEMA», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ схСмы Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”. ΠŸΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Π΅ ограничиваСтся использованиС SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ SQLITE_INNOCUOUS) Π² Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°Ρ…, прСдставлСниях, выраТСниях CHECK ΠΈ DEFAULT, индСксах ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… столбцах. Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ использованиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† Π² Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°Ρ… ΠΈ прСдставлСниях, Ссли Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° явно Π½Π΅ объявлСна с Ρ„Π»Π°Π³ΠΎΠΌ SQLITE_VTAB_INNOCUOUS.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ присвоСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Π² прилоТСниях SQL-функциям свойств SQLITE_INNOCUOUS (Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ зависят ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ врСдоносных дСйствий) ΠΈ SQLITE_DIRECTONLY (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прямой Π²Ρ‹Π·ΠΎΠ² Π² SQL-запросах, Π±Π΅Π· возмоТности примСнСния Π² Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°Ρ…, прСдставлСниях ΠΈ схСмах структуры Π΄Π°Π½Π½Ρ‹Ρ…);
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ uuid с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ UUID ( RFC-4122);
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° PRAGMA hard_heap_limit ΠΈ функция sqlite3_hard_heap_limit64() для управлСния ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΡƒΡ‡ΠΈ;
  • Π’ PRAGMA function_list Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π²Ρ‹Π²ΠΎΠ΄ Ρ‚ΠΈΠΏΠ°, свойств ΠΈ числа Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;
  • Π’ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ DBSTAT Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ агрСгирования Π΄Π°Π½Π½Ρ‹Ρ…;
  • Π’ sqlite3_open_v2() Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° опция SQLITE_OPEN_NOFOLLOW, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ символичСских ссылок;
  • Для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° PATH, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² JSON-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ массивов «#-N»;
  • Π’ систСмС распрСдСлСния памяти lookaside Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π²ΡƒΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΠ»ΠΎΠ² памяти, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для выдСлСния Π±Π»ΠΎΠΊΠΎΠ² Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ позволяСт Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ систСмы lookaside, ΠΏΡ€ΠΈ этом снизив Ρ€Π°Π·ΠΌΠ΅Ρ€ выдСляСмого Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ соСдинСниС Π±ΡƒΡ„Π΅Ρ€Π° со 120 Π΄ΠΎ 48 ΠšΠ‘);
  • ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° PRAGMA legacy_file_format, которая Π±Ρ‹Π»Π° нСсовмСстима с VACUUM, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ столбцами ΠΈ ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ индСксами (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ„Π»Π°Π³ SQLITE_DBCONFIG_LEGACY_FILE_FORMAT Π² sqlite3_db_config()).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ