การเปิดตัว DBMS SQLite 3.31 พร้อมการรองรับคอลัมน์ที่สร้างขึ้น

ที่ตีพิมพ์ ปล่อย SQLite3.31.0ซึ่งเป็น DBMS น้ำหนักเบาที่ออกแบบมาให้เป็นไลบรารีปลั๊กอิน รหัส SQLite ได้รับการเผยแพร่เป็นสาธารณสมบัติ เช่น อาจนำไปใช้ได้โดยไม่มีข้อจำกัดและไม่มีค่าใช้จ่ายสำหรับวัตถุประสงค์ใดๆ การสนับสนุนทางการเงินสำหรับนักพัฒนา SQLite นั้นมาจากกลุ่มความร่วมมือที่สร้างขึ้นเป็นพิเศษ ซึ่งรวมถึงบริษัทต่างๆ เช่น Adobe, Oracle, Mozilla, Bentley และ Bloomberg

หลัก การเปลี่ยนแปลง:

  • เพิ่มการสนับสนุน สร้างคอลัมน์ (คอลัมน์จากการคำนวณ) ซึ่งช่วยให้คุณสามารถกำหนดคอลัมน์เมื่อคุณสร้างตารางที่มีค่าจะถูกคำนวณโดยอัตโนมัติตามเนื้อหาของคอลัมน์อื่น คอลัมน์ที่สร้างขึ้นอาจเป็นแบบเสมือน (สร้างขึ้นทันทีด้วยการเข้าถึงแต่ละครั้ง) หรือจัดเก็บไว้ในฐานข้อมูล (บันทึกทุกครั้งที่มีการอัปเดตคอลัมน์ที่เกี่ยวข้อง) เนื้อหาของคอลัมน์ที่สร้างขึ้นจะมีให้ใช้งานในโหมดอ่านเท่านั้น (การเปลี่ยนแปลงจะเกิดขึ้นผ่านการแก้ไขค่าในคอลัมน์อื่นที่เกี่ยวข้องกับการคำนวณเท่านั้น) ตัวอย่างเช่น:

    สร้างตาราง t1(
    คีย์หลักจำนวนเต็ม
    ข ไอเอ็นที,
    ค ข้อความ,
    d INT สร้างขึ้นเสมอเหมือน (a*abs(b)) เสมือน
    e ข้อความที่สร้างขึ้นเสมอเหมือน (substr(c,b,b+1)) ถูกเก็บไว้
    );

  • เพิ่ม PRAGMA trust_schema, การตั้งค่า SQLITE_DBCONFIG_TRUSTED_SCHEMA และตัวเลือกการประกอบ "-DSQLITE_TRUSTED_SCHEMA" ซึ่งช่วยให้คุณควบคุมการรวมการป้องกัน การโจมตี โดยการปรับเปลี่ยนสคีมาข้อมูลในฐานข้อมูล การป้องกันที่ใช้งานอยู่จะจำกัดการใช้ฟังก์ชัน SQL (ไม่ได้ทำเครื่องหมาย SQLITE_INNOCUOUS) ในทริกเกอร์ มุมมอง คำสั่ง CHECK และ DEFAULT ดัชนี และคอลัมน์ที่สร้างขึ้น การใช้ตารางเสมือนในทริกเกอร์และมุมมองก็ถูกปิดใช้งานเช่นกัน เว้นแต่ว่าตารางเสมือนจะถูกประกาศอย่างชัดเจนด้วยแฟล็ก SQLITE_VTAB_INNOCUOUS
  • ใช้ความสามารถในการกำหนดคุณสมบัติให้กับฟังก์ชัน SQL ที่กำหนดไว้ในแอปพลิเคชัน SQLITE_INNOCUOUS (ฟังก์ชันที่ไม่เป็นอันตรายซึ่งไม่ได้ขึ้นอยู่กับพารามิเตอร์ภายนอกและไม่สามารถใช้เพื่อดำเนินการที่เป็นอันตรายได้) และ SQLITE_DIRECTONLY (เฉพาะการโทรโดยตรงในการสืบค้น SQL โดยไม่มีความเป็นไปได้ในการใช้ทริกเกอร์ มุมมอง และไดอะแกรมโครงสร้างข้อมูล)
  • เพิ่มโมดูลแล้ว ยูอิด ด้วยการใช้งานฟังก์ชั่นสำหรับการประมวลผล UUID (RFC-4122)
  • เพิ่ม PRAGMA hard_heap_limit และหน้าที่ sqlite3_hard_heap_limit64() เพื่อควบคุมขนาดฮีปสูงสุด
  • ในแพรกม่า function_list เพิ่มผลลัพธ์ประเภท คุณสมบัติ และจำนวนอาร์กิวเมนต์ของแต่ละฟังก์ชัน
  • ไปยังตารางเสมือน DBSTAT เพิ่ม โหมดการรวมข้อมูล
  • sqlite3_open_v2() ใช้ตัวเลือก SQLITE_OPEN_NOFOLLOW ซึ่งช่วยให้คุณปิดการใช้งานการเปิดลิงก์สัญลักษณ์
  • สำหรับการโต้แย้ง เส้นทางส่งผ่านไปยังฟังก์ชัน JSON เพิ่มการรองรับสัญลักษณ์อาร์เรย์ “#-N”
  • ในระบบกระจายหน่วยความจำ มองไปข้าง ๆ มีการนำการสนับสนุนพูลหน่วยความจำแยกกันสองสระ ซึ่งแต่ละอันสามารถใช้เพื่อจัดสรรบล็อกที่มีขนาดแตกต่างกัน (การแยกช่วยให้คุณสามารถขยายการใช้ระบบ lookaside ในขณะที่ลดขนาดของบัฟเฟอร์ที่จัดสรรให้กับแต่ละการเชื่อมต่อจาก 120 เป็น 48 เคบี);
  • การสนับสนุน PRAGMA ถูกยกเลิกแล้ว Legacy_file_formatซึ่งเข้ากันไม่ได้กับ VACUUM คอลัมน์ที่สร้างขึ้น และดัชนีจากมากไปน้อย (การสนับสนุนรูปแบบเดิมสามารถส่งคืนได้ผ่านทางแฟล็ก SQLITE_DBCONFIG_LEGACY_FILE_FORMAT ใน sqlite3_db_config())

ที่มา: opennet.ru

เพิ่มความคิดเห็น