انتشار SQLite 3.35

انتشار SQLite 3.35، یک DBMS سبک که به عنوان یک کتابخانه پلاگین طراحی شده است، منتشر شده است. کد SQLite در دامنه عمومی توزیع می شود، یعنی. بدون محدودیت و رایگان برای هر منظوری قابل استفاده است. پشتیبانی مالی برای توسعه دهندگان SQLite توسط یک کنسرسیوم ایجاد شده ویژه ارائه می شود که شامل شرکت هایی مانند Adobe، Oracle، Mozilla، Bentley و Bloomberg است.

تغییرات اصلی:

  • توابع ریاضی داخلی (log2()، cos()، tg()، exp()، ln()، pow()، و غیره) اضافه شده است که می توانند در SQL استفاده شوند. فعال کردن توابع داخلی نیاز به ساخت با گزینه "-DSQLITE_ENABLE_MATH_FUNCTIONS" دارد.
  • پشتیبانی از عبارت «ALTER TABLE DROP COLUMN» برای حذف ستون‌ها از جدول و پاک کردن داده‌هایی که قبلاً در یک ستون داده شده ذخیره شده‌اند.
  • اجرای عملیات UPSERT (افزودن یا اصلاح) گسترش یافته است و از طریق عباراتی مانند "INSERT ... ON CONFLICT DO NOTHING/UPDATE" امکان نادیده گرفتن یک خطا یا انجام به روز رسانی به جای درج در صورت غیرممکن بودن را فراهم می کند. داده ها از طریق "INSERT" (به عنوان مثال، اگر یک رکورد از قبل وجود داشته باشد، می توانید به جای INSERT به روز رسانی را انجام دهید). نسخه جدید به شما امکان می دهد چندین بلوک ON CONFLICT را مشخص کنید که به ترتیب پردازش می شوند. آخرین بلوک "ON CONFLICT" اجازه می دهد تا پارامتر تعیین تضاد برای استفاده از "DO UPDATE" حذف شود.
  • عملیات DELETE، INSERT و UPDATE از عبارت RETURNING پشتیبانی می کند که می تواند برای نمایش محتویات یک رکورد حذف شده، درج شده یا اصلاح شده استفاده شود. به عنوان مثال، عبارت “insert into ... returning id” شناسه خط اضافه شده را برمی گرداند و “update ... set price = price * 1.10 returning price” مقدار قیمت تغییر یافته را برمی گرداند.
  • برای عبارات جدول مشترک (CTE)، که امکان استفاده از مجموعه‌های نتایج نام‌گذاری‌شده موقت مشخص‌شده با استفاده از عبارت WITH را می‌دهد، انتخاب حالت‌های «MATERIALIZED» و «NOT MATERIALIZED» مجاز است. "MATERIALIZED" به معنای ذخیره پرس و جو مشخص شده در نما در یک جدول فیزیکی جداگانه و سپس واکشی داده ها از این جدول است و با "NOT MATERIALIZED" هر بار که به نما دسترسی پیدا می شود، پرس و جوهای تکراری انجام می شود. SQLite در ابتدا روی "NOT MATERIALIZED" پیش‌فرض بود، اما اکنون برای CTEهایی که بیش از یک بار استفاده شده‌اند به "MATERIALIZED" تغییر کرده است.
  • کاهش مصرف حافظه هنگام انجام عملیات VACUUM روی پایگاه داده هایی که شامل مقادیر بسیار بزرگ TEXT یا BLOB هستند.
  • کار برای افزایش عملکرد بهینه ساز و برنامه ریز پرس و جو انجام شده است:
    • هنگام استفاده از توابع حداقل و حداکثر با عبارت "IN" بهینه سازی هایی اضافه شده است.
    • اجرای بیانیه EXISTS تسریع شده است.
    • بسط درخواست‌های فرعی از عبارات UNION ALL که به عنوان بخشی از JOIN استفاده می‌شوند، اجرا شد.
    • این شاخص برای عبارات IS NOT NULL استفاده می شود.
    • اطمینان حاصل می کند که "x IS NULL" و "x IS NOT NULL" برای ستون هایی که دارای ویژگی "NOT NULL" هستند به FALSE یا TRUE تبدیل می شوند.
    • اگر این عملیات ستون های مرتبط با کلید خارجی را تغییر نداد، از بررسی کلیدهای خارجی در UPDATE صرفنظر کنید.
    • تا زمانی که این قسمت ها محدود به کار با ثابت ها و کپی هایی از عبارات از بلوک های PARTITION BY مورد استفاده در توابع پنجره باشد، می توان بخش هایی از بلوک WHERE را به سوالات فرعی حاوی توابع پنجره منتقل کرد.
  • تغییرات در رابط خط فرمان:
    • دستور ".filectrl data_version" اضافه شد.
    • دستورات ".once" و ".output" اکنون از ارسال خروجی به کنترل کننده ای به نام با استفاده از لوله های بدون نام ("|") پشتیبانی می کنند.
    • آرگومان های "stmt" و "vmstep" به دستور "stats" اضافه شده اند تا آمار عبارات و شمارنده های ماشین مجازی را نمایش دهند.

منبع: opennet.ru

اضافه کردن نظر