發布 DBMS SQLite 3.31,支援生成列

發表 釋放 SQLite 3.31.0,一個設計為插件庫的輕量級 DBMS。 SQLite 程式碼以公共網域分發,即可以不受限制且免費用於任何目的。 對 SQLite 開發人員的財務支援由專門創建的聯盟提供,該聯盟包括 Adob​​e、Oracle、Mozilla、Bentley 和 Bloomberg 等公司。

主要的 變化:

  • 增加了支持 產生的列 (計算列),允許您在建立表時定義一個列,該表的值將根據另一列的內容自動計算。產生的列可以是虛擬的(每次存取時動態產生)或儲存在資料庫中(每次更新相關列時保存)。產生的列的內容僅在讀取模式下可用(僅透過修改參與計算的另一列中的值來進行變更)。例如:

    創建表 t1(
    一個整數主鍵,
    b 智力,
    文字,
    d INT 始終產生為 (a*abs(b)) VIRTUAL,
    e 文字產生始終為 (substr(c,b,b​​+1)) 存儲
    );

  • 添加了 PRAGMA 可信模式, 調音 SQLITE_DBCONFIG_TRUSTED_SCHEMA 以及組件選項“-DSQLITE_TRUSTED_SCHEMA”,它允許您控制包含的保護 攻擊 透過修改資料庫中的資料模式。主動保護限制在觸發器、檢視、CHECK 和 DEFAULT 語句、索引和產生欄位中使用 SQL 函數(未標記為 SQLITE_INNOCUOUS)。除非使用 SQLITE_VTAB_INNOCUOUS 標誌明確聲明虛擬表,否則也會停用觸發器和檢視中虛擬表的使用。
  • 實作了為應用程式中定義的 SQL 函數指派屬性的能力 SQLITE_INNOCUOUS (無害函數不依賴外部參數,不能用於執行惡意操作)和 SQLITE_DIRECTONLY (只能在SQL查詢中直接調用,不能在觸發器、視圖和資料結構圖中使用);
  • 添加模塊 uid 實現處理 UUID 的功能 (RFC-4122);
  • 添加了 PRAGMA 硬堆限制 和功能 sqlite3_hard_heap_limit64() 控制最大堆大小;
  • 在PRAGMA中 函數列表 新增了每個函數的類型、屬性和參數數量的輸出;
  • 到虛擬表 DBSTAT 添加 資料聚合模式;
  • sqlite3_open_v2() 實作了 SQLITE_OPEN_NOFOLLOW 選項,該選項可讓您停用符號連結的開啟;
  • 為了論證 路徑,傳遞給 JSON 函數,並添加了對“#-N”數組表示法的支援;
  • 在記憶體分配系統中 後備 實現了對兩個獨立記憶體池的支持,每個記憶體池可用於分配不同大小的區塊(分離允許您擴展lookaside系統的使用,同時將分配給每個連接的緩衝區大小從120減少到48知識庫);
  • PRAGMA 支援已停止 遺留文件格式,它與 VACUUM、生成列和降序索引不相容(可以透過 sqlite3_db_config() 中的 SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 標誌傳回舊格式支援)。

來源: opennet.ru

添加評論