Keluaran DBMS SQLite 3.31 dengan sokongan untuk lajur yang dijana

diterbitkan melepaskan SQLite 3.31.0, DBMS ringan yang direka sebagai perpustakaan pemalam. Kod SQLite diedarkan sebagai domain awam, i.e. boleh digunakan tanpa sekatan dan percuma untuk sebarang tujuan. Sokongan kewangan untuk pembangun SQLite disediakan oleh konsortium yang dicipta khas, termasuk syarikat seperti Adobe, Oracle, Mozilla, Bentley dan Bloomberg.

Utama perubahan:

  • Menambah sokongan lajur yang dihasilkan (lajur yang dikira), yang membolehkan anda menentukan lajur apabila anda membuat jadual yang nilainya dikira secara automatik berdasarkan kandungan lajur lain. Lajur yang dijana boleh sama ada maya (dijana dengan cepat dengan setiap akses) atau disimpan dalam pangkalan data (disimpan setiap kali lajur berkaitan dikemas kini). Kandungan lajur yang dijana hanya tersedia dalam mod baca (perubahan dibuat hanya melalui pengubahsuaian nilai dalam lajur lain yang terlibat dalam pengiraan). Sebagai contoh:

    BUAT JADUAL t1(
    KUNCI UTAMA INTEGER,
    b INT,
    c TEKS,
    d INT DIJANA SENTIASA SEBAGAI (a*abs(b)) MAYA,
    e TEKS DIJANA SENTIASA SEBAGAI (substr(c,b,b+1)) DISIMPAN
    );

  • Ditambah PRAGMA skema_dipercayai, tetapan SQLITE_DBCONFIG_TRUSTED_SCHEMA dan pilihan pemasangan "-DSQLITE_TRUSTED_SCHEMA", yang membolehkan anda mengawal kemasukan perlindungan terhadap serang melalui pengubahsuaian skema data dalam pangkalan data. Perlindungan aktif mengehadkan penggunaan fungsi SQL (tidak bertanda SQLITE_INNOCUOUS) dalam pencetus, paparan, penyataan SEMAK dan LALAI, indeks dan lajur yang dijana. Penggunaan jadual maya dalam pencetus dan paparan juga dilumpuhkan melainkan jadual maya diisytiharkan secara eksplisit dengan bendera SQLITE_VTAB_INNOCUOUS.
  • Melaksanakan keupayaan untuk menetapkan sifat kepada fungsi SQL yang ditakrifkan dalam aplikasi SQLITE_INNOCUOUS (fungsi tidak berbahaya yang tidak bergantung pada parameter luaran dan tidak boleh digunakan untuk melakukan tindakan berniat jahat) dan SQLITE_DIRECTONLY (hanya panggilan terus dalam pertanyaan SQL, tanpa kemungkinan menggunakan dalam pencetus, pandangan dan gambar rajah struktur data);
  • Modul ditambah uuid dengan pelaksanaan fungsi untuk memproses UUID (RFC-4122);
  • Ditambah PRAGMA had_timbunan_keras dan fungsi sqlite3_hard_heap_limit64() untuk mengawal saiz timbunan maksimum;
  • Dalam PRAGMA senarai_fungsi menambah output jenis, sifat dan bilangan argumen bagi setiap fungsi;
  • Ke jadual maya DBSTAT tambah mod pengagregatan data;
  • sqlite3_open_v2() melaksanakan pilihan SQLITE_OPEN_NOFOLLOW, yang membolehkan anda melumpuhkan pembukaan pautan simbolik;
  • Untuk hujah PATH, diserahkan kepada fungsi JSON, menambah sokongan untuk tatatanda tatasusunan "#-N";
  • Dalam sistem pengedaran memori pandang sebelah sokongan untuk dua kumpulan memori berasingan telah dilaksanakan, setiap satunya boleh digunakan untuk memperuntukkan blok dengan saiz yang berbeza (pemisahan membolehkan anda mengembangkan penggunaan sistem lookaside, sambil mengurangkan saiz penimbal yang diperuntukkan kepada setiap sambungan daripada 120 kepada 48 KB);
  • Sokongan PRAGMA telah dihentikan format_fail_legacy, yang tidak serasi dengan VACUUM, lajur yang dijana dan indeks menurun (sokongan format lama boleh dikembalikan melalui bendera SQLITE_DBCONFIG_LEGACY_FILE_FORMAT dalam sqlite3_db_config()).

Sumber: opennet.ru

Tambah komen