mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add sql parser testcases
This commit is contained in:
@@ -16,6 +16,27 @@
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
public enum SQLObjectType {
|
||||
TABLE, FUNCTION, PROCEDURE, USER, DATABASE, //
|
||||
ROLE, PROJECT, PACKAGE, RESOURCE, INSTANCE, JOB, VOLUME, OfflineModel, XFLOW // for odps
|
||||
TABLE("TABLE"), //
|
||||
FUNCTION("FUNCTION"), //
|
||||
PROCEDURE("PROCEDURE"), //
|
||||
USER("USER"), //
|
||||
DATABASE("DATABASE"), //
|
||||
ROLE("ROLE"), //
|
||||
PROJECT("PROJECT"), //
|
||||
PACKAGE("PACKAGE"), //
|
||||
RESOURCE("RESOURCE"), //
|
||||
INSTANCE("INSTANCE"), //
|
||||
JOB("JOB"), //
|
||||
VOLUME("VOLUME"), //
|
||||
OfflineModel("OFFLINEMODEL"), //
|
||||
XFLOW("XFLOW") // for odps
|
||||
;
|
||||
|
||||
public final String name;
|
||||
public final String name_lcase;
|
||||
|
||||
SQLObjectType(String name) {
|
||||
this.name = name;
|
||||
this.name_lcase = name.toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,23 +98,44 @@ public class MysqlForeignKey extends SQLForeignKeyImpl {
|
||||
|
||||
RESTRICT("RESTRICT"), CASCADE("CASCADE"), SET_NULL("SET NULL"), NO_ACTION("NO ACTION");
|
||||
|
||||
private String text;
|
||||
public final String name;
|
||||
public final String name_lcase;
|
||||
|
||||
Option(String text){
|
||||
this.text = text;
|
||||
Option(String name){
|
||||
this.name = name;
|
||||
this.name_lcase = name.toLowerCase();
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static enum Match {
|
||||
FULL, PARTIAL, SIMPLE;
|
||||
FULL("FULL"),
|
||||
PARTIAL("PARTIAL"),
|
||||
SIMPLE("SIMPLE");
|
||||
|
||||
public final String name;
|
||||
public final String name_lcase;
|
||||
|
||||
Match(String name) {
|
||||
this.name = name;
|
||||
this.name_lcase = name.toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
public static enum On {
|
||||
DELETE, UPDATE;
|
||||
DELETE("DELETE"), //
|
||||
UPDATE("UPDATE");
|
||||
|
||||
public final String name;
|
||||
public final String name_lcase;
|
||||
|
||||
On(String name) {
|
||||
this.name = name;
|
||||
this.name_lcase = name.toLowerCase();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUnique;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MySqlUseIndexHint;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.MysqlForeignKey.Option;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlCaseStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlCaseStatement.MySqlWhenStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.clause.MySqlCursorDeclareStatement;
|
||||
@@ -605,7 +606,6 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
if (x.getIndexType() != null) {
|
||||
print0(ucase ? " USING " : " using ");
|
||||
;
|
||||
print0(x.getIndexType());
|
||||
}
|
||||
|
||||
@@ -2810,17 +2810,20 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
printAndAccept(x.getReferencedColumns(), ", ");
|
||||
print(')');
|
||||
|
||||
if (x.getReferenceMatch() != null) {
|
||||
MysqlForeignKey.Match match = x.getReferenceMatch();
|
||||
if (match != null) {
|
||||
print0(ucase ? " MATCH " : " match ");
|
||||
print0(x.getReferenceMatch().name());
|
||||
print0(ucase ? match.name : match.name_lcase);
|
||||
}
|
||||
|
||||
if (x.getReferenceOn() != null) {
|
||||
MysqlForeignKey.On on = x.getReferenceOn();
|
||||
if (on != null) {
|
||||
print0(ucase ? " ON " : " on ");
|
||||
print0(x.getReferenceOn().name());
|
||||
print0(ucase ? on.name : on.name_lcase);
|
||||
print(' ');
|
||||
if (x.getReferenceOption() != null) {
|
||||
print0(x.getReferenceOption().getText());
|
||||
Option option = x.getReferenceOption();
|
||||
if (option != null) {
|
||||
print0(ucase ? option.name : option.name_lcase);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -2055,8 +2055,9 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
if (x.getOn() != null) {
|
||||
print0(ucase ? " ON " : " on ");
|
||||
|
||||
if (x.getObjectType() != null) {
|
||||
print0(x.getObjectType().name());
|
||||
SQLObjectType objectType = x.getObjectType();
|
||||
if (objectType != null) {
|
||||
print0(ucase ? objectType.name : objectType.name_lcase);
|
||||
print(' ');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user