mysql 函數在源碼中的定義

來源:互聯網
上載者:User

標籤:

大牛那海藍藍

 

MySQL提供了較為豐富的SQL語句,用以支援MySQL提供的主要功能。在資料庫內部,MySQL又是怎麼知道自己能夠處理哪些對象、處理哪些事情的?

如果我們輸入一條SQL語句,MySQL可能報告語法錯誤或對象不存在等錯誤提示,這些提示,大致可以分為2類,一類是針對解析使用者命令的如語法錯誤,一類是針對語義檢查如說對象不存在的。其實還有其他類型如許可權等檢查,只是這些與本文無關,且簡單故忽略莫執著於此處。

這2類錯誤提示,其實可以對應到MySQL的2個重要檔案上,這是從源碼的角度來看的。

首先,sql_yacc.yy檔案,幫MySQL解決了怎麼知道處理哪些事情。

其次,item.h這個檔案,幫MySQL解決了怎麼知道處理哪些對象。

本文從代碼的角度,簡單解析item.h這個檔案。

 

一 從檔案名稱看MySQL可以處理的對象

MySQL可以處理的各種對象、以及對象間的關係,可以從如下檔案認識。

1 item.h: 總的對象定義類,定義了‘Item‘類作為總的對象類,此後,本檔案中定義了許多子類,來豐富和發展MySQL可以處理的對象。但此類繼承自‘Parse_tree_node‘類,使得對象和詞法文法解析關聯起來,這個不細述。

2 item_cmpfunc.h:定義了‘Item_bool_func‘類,繼承自‘Item_int_func‘類,而Item_int_func繼承自Item_func,Item_func類繼承自Item類。‘Item_bool_func‘類主要用於支援比較操作,如等於、大於、小於、IN、BETWEEN、是否為NULL等。

3 item_create.h:使用者自訂函數的建立介面。

4 item_func.h:定義了 Item_func類,繼承自Item類,用以支援各種函數操作。如求絕對值、求長度、取餘等等。本檔案中也定義了許多子類,來豐富和發展MySQL可以處理的對象。

5 item_geofunc.h:空間對象處理相關函數。

6 item_inetfunc.h:定義IPv4、IP6的處理。

7 item_row.h:行值函數定義,用以支援類似如下操作:

(a, b, c) > (10, 10, 30)

(a, b, c) = (select c, d, e, from t1 where x=12)

(a, b, c) IN ((1,2,2), (3,4,5), (6,7,8)

(a, b, c) IN (select c, d, e, from t1)

8 item_strfunc.h:定義了字元類型的處理函數(主要是字元類型, 還有一些其他類型,如make_set函數的處理但傳回值是字元類型)。如一些字元集相關的處理、去左空格、字串替換等。

9 item_subselect.h:儘管子查詢可以被最佳化,即需要對子查詢內部的對象分解,但是,MySQL把子查詢當作一個對象,相關輔助處理子查詢的對象也在這個檔案中定義。

10 item_sum.h:定義聚集合函式的處理。包括MIN和MAX,但通常這2函數個是利用索引進行最佳化的。

11 item_timefunc.h:定義時間和日期的處理函數。

12 item_xmlfunc.h:定義XML類型資料的處理函數。

 

特別注意,本文中,說“定義時間和日期的處理函數”中的函數一詞,除了有編程中的函數的含義外,更多的指得是“功能”,即資料庫提供處理時間和日期的能力。其他類似。

mysql 函數在源碼中的定義

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.