請大家幫我找一找bug —— 一個MySQL解析程式(JAVA實現)

來源:互聯網
上載者:User

標籤:

周末兩天我寫了一個MySQLParser。寫這個東西的目的是:公司的一個項目中需要對資料打版本號碼(每個表的每條記錄要有一個版本號碼欄位,這個欄位需要由架構自動打上去,而不是由程式員來做)。

所以,我寫的這個程式是有專門的情境的,並非為通用情況而編寫(也就是說:有些東西並不影響工具對sql加欄位的,我在編寫的過程中故意的忽略了。比如:系統中只用到CRUD操作,所以我在寫SQL時就沒能支援DDL語句)。

我已經測試了項目系統中的所有SQL,都是可以處理的,同時我也自己寫了一些比較複雜的SQL,也可以正常處理。

但:因為我對MySQL的一些生僻文法不熟悉,在實現時參考MySQL源碼中的sql_yacc.yy檔案中的文法定義,發現有很多不懂的文法,雖然可以實現,但因為不懂,所以我也直接忽略掉了(如果有人用了這些文法就會直接報錯)。

在這裡面我很難定義什麼是“常規SQL文法”,什麼是“生僻SQL文法”,所以我目前的實現只是按我自己的理解來實現的,至少目前我所用到的所有MySQL的insert/delete/update/select語句的文法都是可以正確解析,並正確添加資料版本號碼欄位的。

如果大家對這個東西有興趣(如果同時又有需要,那就更好),就請大家到這裡【https://github.com/naturemickey/MySQLParser】clone這個工具的代碼試一下。

代碼說明:

1.clone出來之後的目錄就是一個eclipse工程,直接匯入即可。

2.src/test目錄中是所有的測試案例,可以直接運行(測試代碼中真正使用工具在sql中加欄位的地方只有一行代碼,非常簡單)。

3.代碼用java8編寫。

麻煩大家:

1.如果發現大家平時用到的SQL這裡無法解析或解析錯誤,那麼麻煩大家在github上把您的測試案例pull request給我。

2.如果您平時不用github,那麼麻煩您直接把您的測試SQL在本文章後面留言(https://github.com/naturemickey/MySQLParser這個地址也可以直接用SVN checkout)。

非常感謝!

請大家幫我找一找bug —— 一個MySQL解析程式(JAVA實現)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.