周末两天我写了一个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实现)的更多相关文章

  1. 大家一起来找茬(BUG)

    大家一起来找茬(BUG) ----------目录---------- 一.上手体验 1.主界面 2.功能 二.程序的 BUG 三.必应词典的 BUG 1."每日一句"里的句子不能 ...

  2. 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

    今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...

  3. tyvj1013 找啊找啊找GF

    描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊..."七夕...七夕...七夕这个日子,对于sqybi这种单身的 ...

  4. BZOJ-1228 E&D 博弈SG+找啊找啊找规律

    讨厌博弈,找规律找半天还是错的.... 1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MB Submit: 666 Solv ...

  5. TYVJ P1013 找啊找啊找GF Label:动态规划

    做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊.. ...

  6. 找啊找啊找GF

    P1013 找啊找啊找GF 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手, ...

  7. Delphi下实现全屏快速找图找色

    前言 最近有好几个朋友都在问我找图找色的问题,奇怪?于是乎写了一个专门用于找图找色的单元文件“BitmapData.pas”.在这个单元文件中我实现了从文件中导入位图.屏幕截图.鼠标指针截图.在图片上 ...

  8. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  9. P1509 找啊找啊找GF

    P1509 找啊找啊找GF 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七 ...

随机推荐

  1. 第3周课后实践·程序阅读(4)-利用引用訪问私有数据成员

    /* * Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名:test.cpp * 作 者:刘畅 * 完毕日期:2015年 3 月 2 ...

  2. Arch Linux 下Android 源代码的下载以及编译

    之前把公司的开发环境由Ubuntu Kylin 换成了Arch Linux.而Arch 下由于种种问题公司的代码一直编只是去.搞定了之后也一直忘了写下来,希望能给相同在Arch 下做Android 开 ...

  3. The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF

    打开表单偶尔会出现这个提示,解决方法: web.config增加配置: <configuration> <system.net> <settings> <ht ...

  4. 1分钟看完 jQuery UI

    jQuery UI简介 jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的 ...

  5. Spring Security调研记录【七】--核心模型与实现

    网上有非常多关于Spring Security文章中,都觉得Spring Security(相对于shiro)过于复杂,个人觉得复杂的是Spring Security的官方文档而不是Spring Se ...

  6. Entity Framework底层操作封装V2版本号(3)

    如今是附加的,组合查询须要的扩展类.大家知道lanmda表达式的组合条件比較麻烦,所以就加了一样一个类,方便进行组合查询: using System; using System.Collections ...

  7. ABAP ODATA接口开发

    1.SE37 创建好 Remote-Enabled函数. 2.SEGW,新建项目 创建项目之后,展开,右键Data Model,Import 函数. 导入函数之后,创建mapping 3./IWFND ...

  8. (16)ServletContext详解

    1,作用: ServletContext对象 ,叫做Servlet的上下文对象.表示一个当前的web应用环境.一个web应用中只有一                                   ...

  9. 省市区三级-javabean和mybatis

    bean: package com.baiwang.moirai.model.sys; import com.fasterxml.jackson.annotation.JsonInclude; /** ...

  10. 关于树论【LCA树上倍增算法】

    补了一发LCA,表示这东西表面上好像简单,但是细节真挺多. 我学的是树上倍增,倍增思想很有趣~~(爸爸的爸爸叫奶奶.偶不,爷爷)有一个跟st表非常类似的东西,f[i][j]表示j的第2^i的祖先,就是 ...