[發明專利]語句塊執行計劃的生成方法、裝置、設備和存儲介質有效
| 申請號: | 202010634512.9 | 申請日: | 2020-07-02 |
| 公開(公告)號: | CN111813803B | 公開(公告)日: | 2023-07-21 |
| 發明(設計)人: | 望聲宜;孟正凌;韓朱忠 | 申請(專利權)人: | 上海達夢數據庫有限公司 |
| 主分類號: | G06F16/2453 | 分類號: | G06F16/2453;G06F16/2452 |
| 代理公司: | 北京品源專利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 201203 上海*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 語句 執行 計劃 生成 方法 裝置 設備 存儲 介質 | ||
本發明實施例公開了一種語句塊執行計劃的生成方法、裝置、設備和存儲介質。該方法包括:獲取當前語句塊;將所述當前語句塊中關聯有安全策略函數的第一語句改寫為第二語句,其中,所述第一語句為插入語句、更新語句、刪除語句或查詢語句,所述第二語句為動態執行語句;基于所述第一語句改寫后得到的目標語句塊生成所述當前語句塊的目標執行計劃。本發明實施例通過采用上述技術方案,能夠使得所生成的目標執行計劃在第一語句關聯任意安全策略函數以及在任意執行環境中都能夠返回正確的執行結果,實現包含關聯安全策略函數的第一語句的語句塊的目標執行計劃的重用。
技術領域
本發明涉及數據庫技術領域,尤其涉及一種語句塊執行計劃的生成方法、裝置、設備和存儲介質。
背景技術
為了保證數據庫中所存儲數據的安全性,越來越多的數據庫開始使用行級安全策略。
在執行結構化查詢語言(Structured?Query?Language,SQL)語句時,當SQL語句訪問的數據庫對象關聯安全策略函數時,現有技術會在語義分析階段對語句塊中包含的數據庫對象關聯有安全策略函數的SQL語句進行改寫,在SQL語句中增加謂詞,并基于改寫后的目標SQL語句生成目標執行計劃。例如,假設存在表T(ID?INT,PID?INT),表T存在安全策略函數P1,待執行原始SQL語句為“SELECT*FROM?T?OBJ,T?P_OBJ?WHERE?OBJ.PID=P_OBJ.ID”,則現有技術會在語義分析階段將該待執行原始SQL語句改寫為“SELECT*FROM(SELECT*FROM?T?WHERE“P1對應的謂詞”)OBJ,(SELECT*FROM?T?WHERE“P1對應的謂詞”)P_OBJ?WHERE?OBJ.PID=P_OBJ.ID”。
當SQL語句訪問的數據庫對象關聯安全策略函數時,下列三種情況可能導致安全策略函數的謂詞發生改變:第一,ALTER或者CREATE?OR?REPLACE語句修改安全策略函數的定義;第二,為數據庫對象添加新的安全策略函數,或者刪除數據庫對象已關聯的安全策略函數;第三,安全策略函數中存在IF或CASEWHEN等條件子句,或者,引用了數據庫運行環境中的信息或當前會話中的信息,即安全策略函數中引用了可能隨著數據庫服務器的運行時刻發生變化的信息。第三條比前兩條更容易引發數據庫對象的安全策略函數對應的謂詞發生變化,相同的SQL語句執行計劃可能會因為謂詞的不同而生成完全不同的執行計劃,錯誤使用相同SQL語句的執行計劃,會導致返回執行結果錯誤。因此,為了保證SQL語句結果正確性,一旦SQL語句訪問的數據庫對象關聯安全策略函數時,則SQL語句的執行計劃不能重用。
當在語句塊包含多條SQL時,如函數FUNCTION(或過程PROCEDURE)定義體或者包PACKAGE定義體中,在復雜的應用中一個定義體中可能包含成千上萬條SQL語句,如果只是其中一條或幾條SQL語句與安全策略函數相關就導致整個定義體的執行計劃不能重用的話,則定義體每次都需要重新解析整個語句塊獲取執行計劃,代價是相當巨大的,而且一個過程可能重復調用多次或者互相引用。在實際應用場景中發現,由于語句塊過于龐大且涉及了關聯安全策略函數的數據庫對象,導致整體計劃不能重用,多次重復解析語句塊耗費大量時間。
從上可知,為了確保執行結果的正確性,當語句塊中包含訪問的數據庫對象關聯有安全策略函數的SQL語句時,采用現有技術生成的語句塊的執行計劃是不可重復利用的。
發明內容
有鑒于此,本發明實施例提供一種語句塊執行計劃的生成方法、裝置、設備和存儲介質,從而當語句塊中包含訪問的數據庫對象關聯有安全策略函數的SQL語句時,生成能夠重復利用的執行計劃。
第一方面,本發明實施例提供了一種語句塊執行計劃的生成方法,包括:
獲取當前語句塊;
將所述當前語句塊中關聯有安全策略函數的第一語句改寫為第二語句,其中,所述第一語句為插入語句、更新語句、刪除語句或查詢語句,所述第二語句為動態執行語句;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海達夢數據庫有限公司,未經上海達夢數據庫有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010634512.9/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種智能制造柔性生產線的自動上料裝置
- 下一篇:一種復雜通風網絡火災模擬系統





