Wydanie SGBD SQLite 3.31 z obsługą kolumn generowanych

Opublikowano wydanie SQLite 3.31.0, lekkiej DBMS, sformatowanej jako biblioteka dołączana. Kod SQLite jest rozpowszechniany jako własność publiczna, co oznacza, że może być wykorzystywany bez ograniczeń i bezpłatnie do wszelkich celów. Wsparcie finansowe dla twórców SQLite zapewnia specjalnie utworzony konsorcjum, do którego należą takie firmy jak Adobe, Oracle, Mozilla, Bentley i Bloomberg.

Podstawowe zmiany:

  • Dodano wsparcie dla generowanych kolumn (kolumn obliczanych), które pozwalają określić kolumnę przy tworzeniu tabeli, której wartość jest automatycznie obliczana na podstawie zawartości innej kolumny. Generowane kolumny mogą być zarówno wirtualne (tworzone na bieżąco przy każdym odwołaniu), jak i przechowywane w bazie danych (zapisywane przy każdej aktualizacji powiązanych kolumn). Zawartość generowanych kolumn jest dostępna tylko w trybie odczytu (zmiany dokonuje się tylko poprzez modyfikację wartości w innej kolumnie wykorzystanej do obliczeń). Na przykład:

    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
    );

  • Dodano PRAGMA trusted_schema, konfiguracja SQLITE_DBCONFIG_TRUSTED_SCHEMA i opcja kompilacji „-DSQLITE_TRUSTED_SCHEMA”, które umożliwiają zarządzanie włączeniem ochrony przed atakami modyfikacją schematu danych w bazie danych. Przy aktywnej ochronie ogranicza się użycie funkcji SQL (nieoznaczonych jako SQLITE_INNOCUOUS) w wyzwalaczach, widokach, wyrażeniach CHECK i DEFAULT, indeksach oraz generowanych kolumnach. Dodatkowo dezaktywowane jest użycie tabel wirtualnych w wyzwalaczach i widokach, jeśli tabela wirtualna nie została wyraźnie zadeklarowana z flagą SQLITE_VTAB_INNOCUOUS.
  • Zrealizowano możliwość przypisania określonym aplikacjom funkcji SQL właściwości SQLITE_INNOCUOUS (funkcje bezpieczne, które nie zależą od zewnętrznych parametrów i nie mogą być wykorzystywane do działań złośliwych) oraz SQLITE_DIRECTONLY (tylko bezpośrednie wywołanie w zapytaniach SQL, bez możliwości użycia w wyzwalaczach, widokach i schematach struktury danych);
  • Dodano moduł uuid z implementacją funkcji do przetwarzania UUID (RFC-4122);
  • Dodano PRAGMA hard_heap_limit i funkcję sqlite3_hard_heap_limit64() do zarządzania maksymalnym rozmiarem sterty;
  • W PRAGMA function_list dodano wyjście typu, właściwości i liczby argumentów każdej funkcji;
  • Wirtualna tabela DBSTAT dodano tryb agregacji danych;
  • W sqlite3_open_v2() zaimplementowano opcję SQLITE_OPEN_NOFOLLOW, która pozwala zabronić otwierania linków symbolicznych;
  • Dla argumentu ŚCIEŻKA, przekazywanego do funkcji JSON, dodano wsparcie dla notacji tablic „#-N”;
  • W systemie przydziału pamięci lookaside Wdrożono wsparcie dla dwóch oddzielnych pul pamięci, z których każda może być używana do przydzielania bloków różnej wielkości (podział pozwala rozszerzyć zastosowanie systemu lookaside, jednocześnie zmniejszając rozmiar przydzielanego na każde połączenie bufora z 120 do 48 KB);
  • Wsparcie dla PRAGMA zostało zakończone legacy_file_format, które było niekompatybilne z VACUUM, generowanymi kolumnami i malejącymi indeksami (wsparcie dla starszego formatu można przywrócić za pomocą flagi SQLITE_DBCONFIG_LEGACY_FILE_FORMAT w sqlite3_db_config()).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster