انتشار DBMS SQLite 3.31 با پشتیبانی از ستون های تولید شده

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

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

  • پشتیبانی اضافه شد ستون های تولید شده (ستون های محاسبه شده)، که به شما امکان می دهد وقتی جدولی را ایجاد می کنید که مقدار آن به طور خودکار بر اساس محتویات یک ستون دیگر محاسبه می شود، یک ستون تعریف کنید. ستون‌های تولید شده می‌توانند مجازی باشند (با هر دسترسی ایجاد می‌شوند) یا در پایگاه داده ذخیره شوند (هر بار که ستون‌های مرتبط به‌روزرسانی می‌شوند ذخیره می‌شوند). محتویات ستون های تولید شده فقط در حالت خواندن در دسترس هستند (تغییرات فقط از طریق تغییر مقدار در ستون دیگری که در محاسبه وجود دارد ایجاد می شود). مثلا:

    ایجاد جدول t1(
    یک کلید اولیه صحیح،
    b INT،
    c متن،
    d ایجاد شده همیشه به عنوان (a*abs(b)) مجازی،
    e TEXT GENERATION ALWAYS AS (substr(c,b,b+1)) ذخیره شده
    );

  • PRAGMA اضافه شد trusted_schema، تنظیمات SQLITE_DBCONFIG_TRUSTED_SCHEMA و گزینه مونتاژ "-DSQLITE_TRUSTED_SCHEMA" که به شما امکان می دهد گنجاندن محافظت در برابر حملات از طریق اصلاح طرح داده در پایگاه داده. حفاظت فعال استفاده از توابع SQL (که SQLITE_INNOCUOUS مشخص نشده است) را در محرک‌ها، نماها، عبارت‌های CHECK و DEFAULT، فهرست‌ها و ستون‌های تولید شده محدود می‌کند. استفاده از جداول مجازی در تریگرها و نماها نیز غیرفعال است مگر اینکه جدول مجازی به صراحت با پرچم SQLITE_VTAB_INNOCUOUS اعلان شده باشد.
  • قابلیت تخصیص خصوصیات به توابع SQL تعریف شده در برنامه ها را پیاده سازی کرد SQLITE_INNOCUOUS (توابع بی ضرری که به پارامترهای خارجی وابسته نیستند و نمی توان از آنها برای انجام اقدامات مخرب استفاده کرد) و SQLITE_DIRECTONLY (فقط تماس مستقیم در پرس و جوهای SQL، بدون امکان استفاده در تریگرها، نماها و نمودارهای ساختار داده)؛
  • ماژول اضافه شد uuid با اجرای توابع برای پردازش UUID (RFC-4122)؛
  • PRAGMA اضافه شد hard_heap_limit و عملکرد sqlite3_hard_heap_limit64() برای کنترل حداکثر اندازه پشته؛
  • در PRAGMA function_list خروجی اضافه شده از نوع، ویژگی ها و تعداد آرگومان های هر تابع.
  • به جدول مجازی DBSTAT اضافه حالت تجمع داده ها؛
  • sqlite3_open_v2() گزینه SQLITE_OPEN_NOFOLLOW را پیاده سازی می کند که به شما امکان می دهد باز کردن پیوندهای نمادین را غیرفعال کنید.
  • برای استدلال PATH، به توابع JSON منتقل شد، پشتیبانی از نماد آرایه "#-N" را اضافه کرد.
  • در سیستم توزیع حافظه کنار نگاه پشتیبانی از دو استخر حافظه مجزا اجرا شده است، که هر کدام می توانند برای تخصیص بلوک هایی با اندازه های مختلف استفاده شوند (جداسازی به شما امکان می دهد استفاده از سیستم lookaside را گسترش دهید، در حالی که اندازه بافر اختصاص داده شده به هر اتصال را از 120 به 48 کاهش می دهد. KB)؛
  • پشتیبانی PRAGMA متوقف شده است legacy_file_format، که با VACUUM، ستون های تولید شده و نمایه های نزولی ناسازگار بود (پشتیبانی از قالب قدیمی را می توان از طریق پرچم SQLITE_DBCONFIG_LEGACY_FILE_FORMAT در sqlite3_db_config() برگرداند).

منبع: opennet.ru

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