Keluaran SQLite 3.35

Keluaran SQLite 3.35, DBMS ringan yang direka sebagai perpustakaan pemalam, telah diterbitkan. 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.

Perubahan utama:

  • Menambahkan fungsi matematik terbina dalam (log2(), cos(), tg(), exp(), ln(), pow(), dll.) yang boleh digunakan dalam SQL. Mendayakan fungsi terbina dalam memerlukan binaan dengan pilihan "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Melaksanakan sokongan untuk ungkapan "ALTER TABLE DROP COLUMN" untuk mengalih keluar lajur daripada jadual dan mengosongkan data yang disimpan sebelum ini dalam lajur tertentu.
  • Pelaksanaan operasi UPSERT (tambah-atau-ubah suai) telah diperluaskan, membenarkan melalui ungkapan seperti "INSERT ... ON CONFLICT DO NOTHING/UPDATE" untuk mengabaikan ralat atau melakukan kemas kini dan bukannya memasukkan jika mustahil untuk menambah data melalui β€œINSERT” (contohnya, jika rekod sudah wujud, bukannya INSERT anda boleh melakukan UPDATE). Versi baharu membolehkan anda menentukan berbilang blok ON CONFLICT, yang akan diproses mengikut urutan. Blok "ON CONFLICT" terakhir membenarkan parameter penentuan konflik ditinggalkan untuk menggunakan "DO UPDATE".
  • Operasi DELETE, INSERT dan UPDATE menyokong ungkapan RETURNING, yang boleh digunakan untuk memaparkan kandungan rekod yang dipadam, disisipkan atau diubah suai. Contohnya, ungkapan "masukkan ke ... id pemulangan" akan mengembalikan pengecam baris yang ditambahkan dan "kemas kini ... harga tetapkan = harga * 1.10 harga pemulangan" akan mengembalikan nilai harga yang diubah.
  • Untuk Ungkapan Jadual Biasa (CTE), yang membenarkan penggunaan set hasil nama sementara yang ditentukan menggunakan pernyataan WITH, pilihan mod "TERBAHAN" dan "TIDAK DIBENTUK" dibenarkan. "TERMATERIALIZED" membayangkan caching pertanyaan yang dinyatakan dalam paparan dalam jadual fizikal yang berasingan dan kemudian mengambil data daripada jadual ini, dan dengan "NOT MATERIALIZED" pertanyaan berulang akan dilakukan setiap kali paparan diakses. SQLite asalnya lalai kepada "NOT MATERIALIZED", tetapi kini telah bertukar kepada "MATERIALIZED" untuk CTE yang digunakan lebih daripada sekali.
  • Mengurangkan penggunaan memori apabila melakukan operasi VACUUM pada pangkalan data yang termasuk nilai TEKS atau BLOB yang sangat besar.
  • Kerja telah dilakukan untuk meningkatkan prestasi pengoptimum dan perancang pertanyaan:
    • Menambahkan pengoptimuman apabila menggunakan fungsi min dan maks dengan ungkapan "IN".
    • Pelaksanaan pernyataan EXISTS telah dipercepatkan.
    • Melaksanakan pengembangan subkueri daripada UNION ALL ungkapan yang digunakan sebagai sebahagian daripada JOIN.
    • Indeks digunakan untuk ungkapan IS NOT NULL.
    • Memastikan bahawa "x IS NULL" dan "x IS NOT NULL" ditukar kepada FALSE atau TRUE untuk lajur yang mempunyai atribut "NOT NULL".
    • Langkau menyemak kunci asing dalam KEMASKINI jika operasi tidak mengubah lajur yang dikaitkan dengan kunci asing.
    • Ia dibenarkan untuk memindahkan bahagian blok WHERE ke dalam subkueri yang mengandungi fungsi tetingkap, selagi bahagian tersebut terhad untuk bekerja dengan pemalar dan salinan ungkapan daripada blok PARTITION BY yang digunakan dalam fungsi tetingkap.
  • Perubahan dalam antara muka baris arahan:
    • Menambahkan arahan ".filectrl data_version".
    • Arahan ".sekali" dan ".output" kini menyokong penghantaran keluaran kepada pengendali yang dipanggil menggunakan paip yang tidak dinamakan ("|").
    • Argumen "stmt" dan "vmstep" telah ditambahkan pada perintah ".stats" untuk memaparkan statistik pada ekspresi dan pembilang mesin maya.

Sumber: opennet.ru

Tambah komen