周末两天我写了一个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. HDFS集中式缓存管理(Centralized Cache Management)

    Hadoop从2.3.0版本号開始支持HDFS缓存机制,HDFS同意用户将一部分文件夹或文件缓存在HDFS其中.NameNode会通知拥有相应块的DataNodes将其缓存在DataNode的内存其中 ...

  2. 导入别人的Android项目,提示 /Libs/gen already exists but is not a source folder. Convert to a source folder or rename it

    解决方法: 遇到这个问题的解决方法: 1. 右键点击工程,选择 "Properties" 2. 选择左边的 "Java Build Path" 3. 打开 &q ...

  3. Cron Expression

    CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTr ...

  4. LEA指令与MOV指令的区别——发现一本汇编好书

    一.汇编语言中PTR的含义及作用mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD”mov ax,word ptr [bx];是把内存地址等于“B ...

  5. YTU 1009: University

    1009: University 时间限制: 1000 Sec  内存限制: 64 MB 提交: 44  解决: 24 题目描述 在大学里,很多单词都是一词多义,偶尔在文章里还要用引申义.这困扰Red ...

  6. 大话SEO网站优化|SEO优化入门技术详解

    网络营销 网络营销是借助一切被目标用户认可的网络应用服务平台开展的引导用户关注的行为或活动,目的是促进产品在线销售及扩大品牌影响力. web1.0时代有搜索引擎营销.BBS营销.邮件营销.病毒式营销. ...

  7. Hibernate、Spring和Struts2工作原理

    Hibernate.Spring和Struts2工作原理 博客分类: Java 基础 工作HibernateSpringMVCStruts  Hibernate.Spring和Struts2工作原理  ...

  8. Mac 中安装 Apache Ant

    1.下载Apache Ant:http://ant.apache.org/bindownload.cgi 2.解压apache-ant-1.9.6-bin.zip,把解压好的apache-ant-1. ...

  9. SPOJ:Just One Swap(统计&思维)

    You are given an array of size N. How many distinct arrays can you generate by swapping two numbers ...

  10. Synchronized的使用和注意事项

    synchronized: 1.取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁: 2.多个线程访问的必须是同一个对象. 3.当一个线程执行的代码出现异常时,其所持有的锁会自动释放 4.A线程 ...