请大家帮我找一找bug —— 一个MySQL解析程序(JAVA实现)
周末两天我写了一个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实现)的更多相关文章
- 大家一起来找茬(BUG)
大家一起来找茬(BUG) ----------目录---------- 一.上手体验 1.主界面 2.功能 二.程序的 BUG 三.必应词典的 BUG 1."每日一句"里的句子不能 ...
- 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数
今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的 ...
- tyvj1013 找啊找啊找GF
描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊..."七夕...七夕...七夕这个日子,对于sqybi这种单身的 ...
- BZOJ-1228 E&D 博弈SG+找啊找啊找规律
讨厌博弈,找规律找半天还是错的.... 1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MB Submit: 666 Solv ...
- TYVJ P1013 找啊找啊找GF Label:动态规划
做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊.. ...
- 找啊找啊找GF
P1013 找啊找啊找GF 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手, ...
- Delphi下实现全屏快速找图找色
前言 最近有好几个朋友都在问我找图找色的问题,奇怪?于是乎写了一个专门用于找图找色的单元文件“BitmapData.pas”.在这个单元文件中我实现了从文件中导入位图.屏幕截图.鼠标指针截图.在图片上 ...
- MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。
1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...
- P1509 找啊找啊找GF
P1509 找啊找啊找GF 题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七 ...
随机推荐
- 辛星浅析一次ajax的实现过程
说到ajax,那绝对是一个老生常谈的话题,近些年ajax技术的使用颇为盛行. 以下我们就以jQuery为例来从一个真实的项目中看一下ajax的实例. 首先是前端页面,这个页面我们使用的是bootstr ...
- javascript闭包的应用
我印象中,javascript的闭包属于进阶的范畴,无非是用来在面试中装装逼而已.你看我身边的一个小伙子,有一天我装逼地问他什么是javascript的闭包,他居然连听都没听说过.但他做起前端的东西来 ...
- MYSQL之数据库初窥
mysql数据库 1.数据库简单介绍 数据库概念:是依照数据结构来组织.存储和管理数据的仓库. 2.经常使用术语 数据库:是一些关联表的集合 数据表:表是数据的矩阵,在数据库中看起来 ...
- Adding Security to an Existing Website
The procedure earlier in this article relies on using the Starter Site template as the basis for web ...
- 单点登录原理及实现sso
WEB的登录那些事 说道账户登录和注册,其实我们每天都在亲身感受着,像微博.知乎还有简书等等.我们总是需要定期的去重新登录一下,对于这种认证机制,我们都能说出来两个名词,Cookie.Session. ...
- 2.7 xargs和exec详解【转】
本文转载自:http://ask.apelearn.com/question/13323 常用在查找中exec主要是和find一起配合使用,而xargs就要比exec用的地方要多了. exec 应用 ...
- Activity并行网关和排他网关
说一说activiti中的排他网关和并行网关 activiti工作流中我们经常用到的网关有两种: 1. Exclusive Gateway 排他网关 排他网关.png 排他网关(也叫异或(XOR)网关 ...
- 解析javascript变量
//add by tim//提供解析javascript 脚本的变量集合 using System;using System.Collections.Generic;using System.Linq ...
- bzoj3995
线段树 额 计蒜客竟然把这个出成noip模拟题... 这个东西很像1018,只不过维护的东西不太一样 然后我参考了fuxey大神的代码,盗一波图 具体有这五种情况,合并请看代码,自己写了一个结果wa了 ...
- C++实现斐波那契第N项非递归与递归实现的时间比较
/* * 斐波那契数列.cpp * * Created on: 2018年4月9日 * Author: soyo */ #include<iostream> #include<cti ...