เปิดตัว SQLite 3.35 แล้ว และในตัวจัดการฐานข้อมูลรุ่นใหม่นี้ การเพิ่มฟังก์ชันทางคณิตศาสตร์จะถูกเน้น เช่นเดียวกับการสนับสนุนสำหรับนิพจน์ ALTER TABLE DROP COLUMN เพื่อดร็อปคอลัมน์จากตารางการปรับปรุงการดำเนินการและอื่น ๆ
สำหรับผู้ที่ไม่คุ้นเคยกับแพ็คเกจ SQLite เป็น DBMS ที่มีน้ำหนักเบาออกแบบเป็นไลบรารีปลั๊กอิน รหัส SQLite แจกจ่ายเป็นสาธารณสมบัติ นั่นคือสามารถใช้งานได้โดยไม่มีข้อ จำกัด และไม่มีค่าใช้จ่ายสำหรับวัตถุประสงค์ใด ๆ
คุณสมบัติใหม่หลักของ SQLite 3.35
ตามที่กล่าวไว้ตอนต้นในเวอร์ชันใหม่นี้ เพิ่มฟังก์ชันคณิตศาสตร์ในตัว (log2 (), cos (), tg (), exp (), ln (), ธาร () ฯลฯ ) ที่สามารถใช้ใน SQL ในการเปิดใช้งานฟังก์ชันในตัวจำเป็นต้องใช้ชุดประกอบที่มีตัวเลือก "-DSQLITE_ENABLE_MATH_FUNCTIONS"
การแสดงออก "ALTER TABLE DROP COLUMN" รองรับการวางคอลัมน์จากตารางแล้ว และลบข้อมูลที่เก็บไว้ก่อนหน้านี้ในคอลัมน์นี้
การดำเนินการของ UPSERT (เพิ่มหรือแก้ไข) ซึ่งช่วยให้คุณสามารถใช้นิพจน์เช่น "INSERT ON CONFLICT DO NOTHING / UPDATE" เพื่อละเว้นข้อผิดพลาดหรือทำการอัปเดตแทนการแทรกหากไม่สามารถเพิ่มข้อมูลผ่าน "INSERT" ได้ (ตัวอย่างเช่นหาก บันทึก, UPDATE สามารถทำได้แทน INSERT)
ในเวอร์ชันใหม่อนุญาตให้ระบุหลายบล็อก«ในความขัดแย้ง«ซึ่งจะดำเนินการตามลำดับ ในบล็อก "ON CONFLICT" สุดท้ายไม่อนุญาตให้ระบุพารามิเตอร์นิยามความขัดแย้งเพื่อใช้ "DO UPDATE"
การดำเนินงาน DELETE, INSERT และ UPDATE รองรับนิพจน์ RETURNINGที่สามารถใช้ได้ เพื่อแสดงเนื้อหาของบันทึกที่ถูกลบแทรกหรือแก้ไข ตัวอย่างเช่น "แทรกลงใน ... รหัสการส่งคืน" จะส่งคืนตัวระบุแถวที่เพิ่มและ "อัปเดต ... ราคาที่กำหนด = ราคา * 1.10 ราคาส่งคืน" จะส่งคืนค่าของราคาที่อัปเดต
สำหรับนิพจน์ตารางทั่วไป (Common Table Expression, CTE) ซึ่งอนุญาตให้ใช้ชุดผลลัพธ์ที่ตั้งชื่อทางโลกโดยใช้ด้วยขอให้โอเปอเรเตอร์อนุมัติการเลือกโหมด« MATERIALIZED »และ« NOT MATERIALIZED »
- "MATERIALIZED" หมายถึงการแคชแบบสอบถามที่ระบุในมุมมองในตารางทางกายภาพที่แยกต่างหากพร้อมกับการดึงข้อมูลจากตารางนี้ในภายหลัง
- และด้วย "NOT MATERIALIZED" ระบบจะดำเนินการสืบค้นซ้ำทุกครั้งที่มีการเข้าถึงข้อมูลพร็อพเพอร์ตี้ ในขั้นต้น SQLite มีค่าเริ่มต้นเป็น "NOT MATERIALIZED" แต่ตอนนี้ได้เปลี่ยนเป็น "MATERIALIZED" สำหรับ CTE ที่ใช้มากกว่าหนึ่งครั้ง
จากการเปลี่ยนแปลงอื่น ๆ ที่โดดเด่นกว่ารุ่นใหม่นี้:
- ลดการใช้หน่วยความจำเมื่อดำเนินการ VACUUM สำหรับฐานข้อมูลที่มีค่าขนาดใหญ่มากในประเภท TEXT หรือ BLOB
- ได้ดำเนินการเพื่อเพิ่มประสิทธิภาพของเครื่องมือเพิ่มประสิทธิภาพและตัวกำหนดตารางเวลาแบบสอบถาม
- เพิ่มการเพิ่มประสิทธิภาพเมื่อใช้ฟังก์ชันต่ำสุดและสูงสุดด้วยนิพจน์ "IN"
- การดำเนินการของคำสั่ง EXISTS ได้รับการเร่งขึ้น
- การขยายเคียวรีย่อยของนิพจน์ UNION ALL ที่ใช้ใน JOIN ถูกนำไปใช้
- ดัชนีที่ใช้สำหรับนิพจน์ IS NOT NULL
- การแปลง "x IS NULL" และ "x IS NOT NULL" เป็น FALSE หรือ TRUE มีไว้สำหรับคอลัมน์ที่มีค่าสถานะ "NOT NULL"
- การตรวจสอบคีย์ภายนอกใน UPDATE จะถูกข้ามไปหากการดำเนินการไม่เปลี่ยนคอลัมน์ที่เกี่ยวข้องกับคีย์ภายนอก
- การย้ายส่วนของคำสั่ง WHERE ไปยังแบบสอบถามย่อยที่มีฟังก์ชันหน้าต่างจะได้รับอนุญาตหากส่วนเหล่านี้ถูก จำกัด ให้ทำงานกับค่าคงที่และสำเนาของนิพจน์อนุประโยค "PARTITION BY" ที่ใช้ในฟังก์ชันหน้าต่าง
การเปลี่ยนแปลงอินเทอร์เฟซบรรทัดคำสั่ง:
- เพิ่มคำสั่ง ".filectrl data_version"
- คำสั่ง ".once" และ ".output" เพิ่มการรองรับสำหรับการส่งเอาต์พุตไปยังคอนโทรลเลอร์ที่เรียกว่าโดยใช้ท่อที่ไม่มีชื่อ ("|")
- คำสั่ง ".stats" เพิ่มอาร์กิวเมนต์ "stmt" และ "vmstep" เพื่อแสดงสถิติบนตัวนับและนิพจน์ของเครื่องเสมือน
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม เกี่ยวกับ SQLite เวอร์ชันใหม่นี้คุณสามารถตรวจสอบรายละเอียดได้ โดยไปที่ลิงค์ต่อไปนี้