1.一種用于分布式系統(tǒng)的執(zhí)行過程化SQL語(yǔ)句的方法,其中,所述方法包括:
A對(duì)過程化SQL語(yǔ)句進(jìn)行詞法分析和語(yǔ)法分析,以建立所述過程化SQL語(yǔ)句的中間表示;
B對(duì)所述中間表示進(jìn)行語(yǔ)義分析,以轉(zhuǎn)化為若干執(zhí)行塊,并逐塊執(zhí)行所述執(zhí)行塊。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述步驟B還包括:
記錄若干所述執(zhí)行塊之間的依賴關(guān)系;
基于所述依賴關(guān)系,從起始的執(zhí)行塊起,依次執(zhí)行所述執(zhí)行塊。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述過程化SQL語(yǔ)句包括若干非標(biāo)準(zhǔn)SQL語(yǔ)句。
4.根據(jù)權(quán)利要求1或2所述的方法,其中,所述過程化SQL語(yǔ)句包括若干非標(biāo)準(zhǔn)SQL語(yǔ)句和若干標(biāo)準(zhǔn)SQL語(yǔ)句。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述步驟B包括:
B1對(duì)所述過程化SQL語(yǔ)句進(jìn)行語(yǔ)義分析,將所述非標(biāo)準(zhǔn)SQL語(yǔ)句的中間表示轉(zhuǎn)化為待解釋執(zhí)行的執(zhí)行塊,將所述標(biāo)準(zhǔn)SQL語(yǔ)句的中間表示轉(zhuǎn)化為標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊;
B2解釋執(zhí)行所述待解釋執(zhí)行的執(zhí)行塊;
B3將所述標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊發(fā)送給分布式系統(tǒng)的計(jì)算引擎進(jìn)行執(zhí)行。
6.根據(jù)權(quán)利要求5所述的方法,其中,所述步驟B1包括:
根據(jù)所述過程化SQL語(yǔ)句的中間表示,分析并記錄所述中間表示的屬性,所述屬性包括參量、變量和類型;
所述步驟B2包括:
創(chuàng)建基于棧式的函數(shù)執(zhí)行框架;
在所述函數(shù)執(zhí)行框架的棧中分配所述中間表示的屬性;
利用所述函數(shù)執(zhí)行框架,逐塊執(zhí)行所述執(zhí)行塊。
7.根據(jù)權(quán)利要求5或6所述的方法,其中,所述步驟B3還包括:
分析所述標(biāo)準(zhǔn)SQL語(yǔ)句的中間表示是否用到其他中間表示的變量, 若用到,則記錄所述變量的名稱和在標(biāo)準(zhǔn)SQL語(yǔ)句中的位置,并在執(zhí)行到所述標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊時(shí),先獲取所述變量的值,將所述變量的值替換為常量后存入標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊。
8.根據(jù)權(quán)利要求5至7中任一項(xiàng)所述的方法,其中,所述B還包括:
將所述分布式系統(tǒng)的計(jì)算引擎所執(zhí)行的結(jié)果存儲(chǔ)于所述分布式系統(tǒng)的存儲(chǔ)裝置,以供后續(xù)執(zhí)行塊讀取使用。
9.根據(jù)權(quán)利要求5至8中任一項(xiàng)所述的方法,其中,所述待解釋執(zhí)行的執(zhí)行塊包括以下至少任一項(xiàng):
起止執(zhí)行塊、賦值語(yǔ)句執(zhí)行塊、控制語(yǔ)句執(zhí)行塊、讀取執(zhí)行塊、調(diào)用執(zhí)行塊。
10.一種用于分布式系統(tǒng)的執(zhí)行過程化SQL語(yǔ)句的設(shè)備,其中,所述設(shè)備包括:
第一裝置,用于對(duì)過程化SQL語(yǔ)句進(jìn)行詞法分析和語(yǔ)法分析,以建立所述過程化SQL語(yǔ)句的中間表示;
第二裝置,用于對(duì)所述中間表示進(jìn)行語(yǔ)義分析,以轉(zhuǎn)化為若干執(zhí)行塊,并逐塊執(zhí)行所述執(zhí)行塊。
11.根據(jù)權(quán)利要求10所述的設(shè)備,其中,所述第二裝置還用于:
記錄若干所述執(zhí)行塊之間的依賴關(guān)系;
基于所述依賴關(guān)系,從起始的執(zhí)行塊起,依次執(zhí)行所述執(zhí)行塊。
12.根據(jù)權(quán)利要求10或11所述的設(shè)備,其中,所述過程化SQL語(yǔ)句包括若干非標(biāo)準(zhǔn)SQL語(yǔ)句。
13.根據(jù)權(quán)利要求10或11所述的設(shè)備,其中,所述過程化SQL語(yǔ)句包括若干非標(biāo)準(zhǔn)SQL語(yǔ)句和若干標(biāo)準(zhǔn)SQL語(yǔ)句。
14.根據(jù)權(quán)利要求13所述的設(shè)備,其中,所述第二裝置包括:
第二一單元,用于對(duì)所述過程化SQL語(yǔ)句進(jìn)行語(yǔ)義分析,將所述非標(biāo)準(zhǔn)SQL語(yǔ)句轉(zhuǎn)化為待解釋執(zhí)行的執(zhí)行塊,將所述標(biāo)準(zhǔn)SQL語(yǔ)句轉(zhuǎn)化為標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊;
第二二單元,用于解釋執(zhí)行所述待解釋執(zhí)行的執(zhí)行塊;
第二三單元,用于將所述標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊發(fā)送給分布式系統(tǒng)的 計(jì)算引擎進(jìn)行執(zhí)行。
15.根據(jù)權(quán)利要求14所述的設(shè)備,其中,所述第二一單元用于:
根據(jù)所述過程化SQL語(yǔ)句的中間表示,分析并記錄所述中間表示的屬性,所述屬性包括參量、變量和類型;
所述第二二單元用于:
創(chuàng)建基于棧式的函數(shù)執(zhí)行框架;
在所述函數(shù)執(zhí)行框架的棧中分配所述中間表示的屬性;
利用所述函數(shù)執(zhí)行框架,逐塊執(zhí)行所述執(zhí)行塊。
16.根據(jù)權(quán)利要求14或15所述的設(shè)備,其中,所述第二三單元還用于:
分析所述標(biāo)準(zhǔn)SQL語(yǔ)句的中間表示是否用到其他中間表示的變量,若用到,則記錄所述變量的名稱和在標(biāo)準(zhǔn)SQL語(yǔ)句中的位置,并在執(zhí)行到所述標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊時(shí),先獲取所述變量的值,將所述變量的值替換為常量后存入標(biāo)準(zhǔn)SQL語(yǔ)句執(zhí)行塊。
17.根據(jù)權(quán)利要求14至15中任一項(xiàng)所述的設(shè)備,其中,所述第二裝置還包括:
第二五單元,用于將所述分布式系統(tǒng)的計(jì)算引擎所執(zhí)行的結(jié)果存儲(chǔ)于所述分布式系統(tǒng)的存儲(chǔ)裝置,以供后續(xù)執(zhí)行塊讀取使用。
18.根據(jù)權(quán)利要求14至17中任一項(xiàng)所述的設(shè)備,其中,所述待解釋執(zhí)行的執(zhí)行塊包括以下至少任一項(xiàng):
起止執(zhí)行塊、賦值語(yǔ)句執(zhí)行塊、控制語(yǔ)句執(zhí)行塊、讀取執(zhí)行塊、調(diào)用執(zhí)行塊。