SQLite 3.35 versiyasi

Plagin kutubxonasi sifatida yaratilgan engil ma'lumotlar bazasi bo'lgan SQLite 3.35 versiyasi nashr etildi. SQLite kodi ommaviy domenda tarqatiladi, ya'ni. har qanday maqsadda cheklovlarsiz va bepul foydalanish mumkin. SQLite ishlab chiquvchilari uchun moliyaviy yordam Adobe, Oracle, Mozilla, Bentley va Bloomberg kabi kompaniyalarni o'z ichiga olgan maxsus yaratilgan konsorsium tomonidan amalga oshiriladi.

Asosiy o'zgarishlar:

  • SQL da qoʻllanilishi mumkin boʻlgan oʻrnatilgan matematik funksiyalar (log2(), cos(), tg(), exp(), ln(), pow() va h.k.) qoʻshildi. O'rnatilgan funksiyalarni yoqish uchun "-DSQLITE_ENABLE_MATH_FUNCTIONS" opsiyasi bilan qurish kerak.
  • Jadvaldagi ustunlarni olib tashlash va berilgan ustunda ilgari saqlangan ma'lumotlarni tozalash uchun "JADVAL TO'CHIRISH USTUNNI ALTER" iborasini qo'llab-quvvatlash amalga oshirildi.
  • UPSERT (qo‘shish yoki o‘zgartirish) amaliyotini amalga oshirish kengaytirildi, bu “INSERT ... ON FLICT HECH NARSA QILMAG/YANGILAMA” kabi iboralar orqali xatoga e’tibor bermaslik yoki qo‘shishning iloji bo‘lmasa, kiritish o‘rniga yangilashni amalga oshirish imkonini beradi. ma'lumotlarni "INSERT" orqali (masalan, agar yozuv allaqachon mavjud bo'lsa, INSERT o'rniga UPDATE qilishingiz mumkin). Yangi versiya bir nechta ON CONFLICT bloklarini belgilash imkonini beradi, ular tartibda qayta ishlanadi. Oxirgi "ON CONFLICT" bloki "DO UPDATE" dan foydalanish uchun ziddiyatni aniqlash parametrini o'tkazib yuborishga imkon beradi.
  • DELETE, INSERT va UPDATE operatsiyalari RETURNING ifodasini qo'llab-quvvatlaydi, bu o'chirilgan, kiritilgan yoki o'zgartirilgan yozuvning mazmunini ko'rsatish uchun ishlatilishi mumkin. Misol uchun, "insert into ... returning id" iborasi qo'shilgan qatorning identifikatorini qaytaradi va "yangilash ... o'rnatilgan narx = narx * 1.10 qaytariladigan narx" o'zgartirilgan narx qiymatini qaytaradi.
  • WITH bayonoti yordamida belgilangan vaqtinchalik nomlangan natijalar to'plamidan foydalanishga imkon beruvchi Umumiy jadval ifodalari (CTE) uchun "MATERIALIZALANGAN" va "MATRIALIZADIGAN" rejimlarni tanlashga ruxsat beriladi. "MATERIALIZALANGAN" ko'rinishda ko'rsatilgan so'rovni alohida jismoniy jadvalda keshlashni va keyin ushbu jadvaldan ma'lumotlarni olishni nazarda tutadi va "MATERIALIZALANMAGAN" ko'rinishga har safar kirishda takroriy so'rovlar bajariladi. SQLite dastlab sukut bo'yicha "MATERIALIZALANMAGAN" ga o'zgartirildi, ammo endi bir necha marta ishlatiladigan CTElar uchun "MATERIALIZALANGAN" ga o'zgartirildi.
  • Juda katta TEXT yoki BLOB qiymatlarini o'z ichiga olgan ma'lumotlar bazalarida VAKUUM operatsiyasini bajarishda xotira sarfini kamaytirish.
  • Optimallashtiruvchi va so'rovlarni rejalashtiruvchining ishlashini oshirish bo'yicha ishlar amalga oshirildi:
    • “IN” ifodasi bilan min va maksimal funksiyalardan foydalanishda optimallashtirish qo‘shildi.
    • EXISTS bayonotining bajarilishi tezlashtirildi.
    • JOIN qismi sifatida ishlatiladigan UNION ALL iboralaridan quyi so'rovlarni kengaytirish amalga oshirildi.
    • Indeks IS NOT NULL ifodalari uchun ishlatiladi.
    • “X IS NULL” va “x IS NOT NULL” “NOT NULL” atributiga ega bo‘lgan ustunlar uchun FALSE yoki TRUE ga aylantirilishini ta’minlaydi.
    • Agar operatsiya tashqi kalit bilan bog'langan ustunlarni o'zgartirmasa, UPDATE da xorijiy kalitlarni tekshirishni o'tkazib yuboring.
    • WHERE blokining qismlarini oyna funksiyalarini o'z ichiga olgan pastki so'rovlarga ko'chirishga ruxsat beriladi, agar bu qismlar oyna funksiyalarida qo'llaniladigan PARTITION BY bloklaridagi konstantalar va ifodalar nusxalari bilan ishlash bilan chegaralangan bo'lsa.
  • Buyruqlar qatori interfeysidagi o'zgarishlar:
    • ".filectrl data_version" buyrug'i qo'shildi.
    • ".once" va ".output" buyruqlari endi nomsiz quvurlar ("|") yordamida chaqirilgan ishlov beruvchiga chiqishni uzatishni qo'llab-quvvatlaydi.
    • Ifodalar va virtual mashina hisoblagichlari bo'yicha statistikani ko'rsatish uchun ".stats" buyrug'iga "stmt" va "vmstep" argumentlari qo'shildi.

Manba: opennet.ru

a Izoh qo'shish