package io.candice.parser.recognizer.mysql.syntax;
import static io.candice.parser.recognizer.mysql.MySQLToken.EOF;
import static io.candice.parser.recognizer.mysql.MySQLToken.IDENTIFIER;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_AS;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_BINARY;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_CHARACTER;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_COLLATE;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_COLUMN;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_DEFAULT;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_EXISTS;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_IF;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_IGNORE;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_INDEX;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_KEY;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_KEYS;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_NOT;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_ON;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_SET;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_TABLE;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_TO;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_UNSIGNED;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_USING;
import static io.candice.parser.recognizer.mysql.MySQLToken.KW_ZEROFILL;
import static io.candice.parser.recognizer.mysql.MySQLToken.LITERAL_NULL;
import static io.candice.parser.recognizer.mysql.MySQLToken.LITERAL_NUM_PURE_DIGIT;
import static io.candice.parser.recognizer.mysql.MySQLToken.OP_EQUALS;
import static io.candice.parser.recognizer.mysql.MySQLToken.PUNC_COMMA;
import static io.candice.parser.recognizer.mysql.MySQLToken.PUNC_LEFT_PAREN;
import static io.candice.parser.recognizer.mysql.MySQLToken.PUNC_RIGHT_PAREN;
import java.sql.SQLSyntaxErrorException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import io.candice.parser.ast.expression.Expression;
import io.candice.parser.ast.expression.primary.Identifier;
import io.candice.parser.ast.expression.primary.literal.Literal;
import io.candice.parser.ast.expression.primary.literal.LiteralString;
import io.candice.parser.ast.fragment.ddl.ColumnDefinition;
import io.candice.parser.ast.fragment.ddl.TableOptions;
import io.candice.parser.ast.fragment.ddl.datatype.DataType;
import io.candice.parser.ast.fragment.ddl.index.IndexColumnName;
import io.candice.parser.ast.fragment.ddl.index.IndexDefinition;
import io.candice.parser.ast.fragment.ddl.index.IndexOption;
import io.candice.parser.ast.stmt.ddl.DDLAlterTableStatement;
import io.candice.parser.ast.stmt.ddl.DDLCreateIndexStatement;
import io.candice.parser.ast.stmt.ddl.DDLCreateTableStatement;
import io.candice.parser.ast.stmt.ddl.DDLDropIndexStatement;
import io.candice.parser.ast.stmt.ddl.DDLDropTableStatement;
import io.candice.parser.ast.stmt.ddl.DDLRenameTableStatement;
import io.candice.parser.ast.stmt.ddl.DDLStatement;
import io.candice.parser.ast.stmt.ddl.DDLTruncateStatement;
import io.candice.parser.ast.stmt.dml.DMLSelectStatement;
import io.candice.parser.ast.stmt.extension.ExtDDLCreatePolicy;
import io.candice.parser.ast.stmt.extension.ExtDDLDropPolicy;
import io.candice.parser.recognizer.mysql.lexer.MySQLLexer;
import io.candice.parser.util.Pair;
public class MySQLDDLParser extends MySQLParser {
protected MySQLExprParser exprParser;
public MySQLDDLParser(MySQLLexer lexer, MySQLExprParser exprParser) {
super(lexer);
this.exprParser = exprParser;
}
private static enum SpecialIdentifier {
TRUNCATE,
TEMPORARY,
DEFINER,
KEY_BLOCK_SIZE,
COMMENT,
DYNAMIC,
FIXED,
BIT,
DATE,
TIME,
TIMESTAMP,
DATETIME,
YEAR,
TEXT,
ENUM,
ENGINE,
AUTO_INCREMENT,
AVG_ROW_LENGTH,
CHECKSUM,
CONNECTION,
DATA,
DELAY_KEY_WRITE,
INSERT_METHOD,
MAX_ROWS,
MIN_ROWS,
PACK_KEYS,
PASSWORD,
ROW_FORMAT,
COMPRESSED,
REDUNDANT,
COMPACT,
MODIFY,
DISABLE,
ENABLE,
DISCARD,
IMPORT,
/** MySQL 5.1 legacy syntax */
CHARSET,
/** EXTENSION syntax */
POLICY
}
private static final Map<String, SpecialIdentifier> specialIdentifiers = new HashMap<String, SpecialIdentifier>(
1,
1);
static {
specialIdentifiers.put("TRUNCATE", SpecialIdentifier.TRUNCATE);
specialIdentifiers.put("TEMPORARY", SpecialIdentifier.TEMPORARY);
specialIdentifiers.put("DEFINER", SpecialIdentifier.DEFINER);
specialIdentifiers.put("KEY_BLOCK_SIZE", SpecialIdentifier.KEY_BLOCK_SIZE);
specialIdentifiers.put("COMMENT", SpecialIdentifier.COMMENT);
specialIdentifiers.put("DYNAMIC", SpecialIdentifier.DYNAMIC);
specialIdentifiers.put("FIXED", SpecialIdentifier.FIXED);
specialIdentifiers.put("BIT", SpecialIdentifier.BIT);
specialIdentifiers.put("DATE", SpecialIdentifier.DATE);
specialIdentifiers.put("TIME", SpecialIdentifier.TIME);
specialIdentifiers.put("TIMESTAMP", SpecialIdentifier.TIMESTAMP);
specialIdentifiers.put("DATETIME", SpecialIdentifier.DATETIME);
specialIdentifiers.put("YEAR", SpecialIdentifier.YEAR);
specialIdentifiers.put("TEXT", SpecialIdentifier.TEXT);
specialIdentifiers.put("ENUM", SpecialIdentifier.ENUM);
specialIdentifiers.put("ENGINE", SpecialIdentifier.ENGINE);
specialIdentifiers.put("AUTO_INCREMENT", SpecialIdentifier.AUTO_INCREMENT);
specialIdentifiers.put("AVG_ROW_LENGTH", SpecialIdentifier.AVG_ROW_LENGTH);
specialIdentifiers.put("CHECKSUM", SpecialIdentifier.CHECKSUM);
specialIdentifiers.put("CONNECTION", SpecialIdentifier.CONNECTION);
specialIdentifiers.put("DATA", SpecialIdentifier.DATA);
specialIdentifiers.put("DELAY_KEY_WRITE", SpecialIdentifier.DELAY_KEY_WRITE);
specialIdentifiers.put("INSERT_METHOD", SpecialIdentifier.INSERT_METHOD);
specialIdentifiers.put("MAX_ROWS", SpecialIdentifier.MAX_ROWS);
specialIdentifiers.put("MIN_ROWS", SpecialIdentifier.MIN_ROWS);
specialIdentifiers.put("PACK_KEYS", SpecialIdentifier.PACK_KEYS);
specialIdentifiers.put("PASSWORD", SpecialIdentifier.PASSWORD);
specialIdentifiers.put("ROW_FORMAT", SpecialIdentifier.ROW_FORMAT);
specialIdentifiers.put("COMPRESSED", SpecialIdentifier.COMPRESSED);
specialIdentifiers.put("REDUNDANT", SpecialIdentifier.REDUNDANT);
specialIdentifiers.put("COMPACT", SpecialIdentifier.COMPACT);
specialIdentifiers.put("MODIFY", SpecialIdentifier.MODIFY);
specialIdentifiers.put("DISABLE", SpecialIdentifier.DISABLE);
specialIdentifiers.put("ENABLE", SpecialIdentifier.ENABLE);
specialIdentifiers.put("DISCARD", SpecialIdentifier.DISCARD);
specialIdentifiers.put("IMPORT", SpecialIdentifier.IMPORT);
specialIdentifiers.put("CHARSET", SpecialIdentifier.CHARSET);
specialIdentifiers.put("POLICY", SpecialIdentifier.POLICY);
}
public DDLTruncateStatement truncate() throws SQLSyntaxErrorException {
matchIdentifier("TRUNCATE");
if (lexer.token() == KW_TABLE) {
lexer.nextToken();
}
Identifier tb = identifier();
return new DDLTruncateStatement(tb);
}
/**
* nothing has been pre-consumed
*/
public DDLStatement ddlStmt() throws SQLSyntaxErrorException {
Identifier idTemp1;
Identifier idTemp2;
SpecialIdentifier s
没有合适的资源?快使用搜索试试~ 我知道了~
mysql分库分表中间件-candice.zip
共536个文件
java:527个
xml:4个
sql:3个
需积分: 0 0 下载量 23 浏览量
2023-11-06
23:10:15
上传
评论
收藏 475KB ZIP 举报
温馨提示
mysql分库分表中间件-candice
资源推荐
资源详情
资源评论
收起资源包目录
mysql分库分表中间件-candice.zip (536个子文件)
MySQLDDLParser.java 71KB
MySQLOutputASTVisitor.java 59KB
MySQLExprParser.java 57KB
PartitionKeyVisitor.java 44KB
MySQLDALParser.java 39KB
MySQLLexer.java 35KB
ErrorCode.java 29KB
HPartitionVisitor.java 28KB
ServerParseSet.java 25KB
MySQLFunctionManager.java 18KB
MySQLToken.java 18KB
MySQLDMLParser.java 17KB
EmptySQLASTVisitor.java 17KB
ServerParse.java 15KB
DDLAlterTableStatement.java 15KB
XMLSchemaLoader.java 15KB
ServerParseSelect.java 14KB
StringUtil.java 14KB
StringUtil.java 13KB
CandiceServerRouter.java 13KB
ParseUtil.java 10KB
MySQLParser.java 10KB
MultiNodeQueryHandler.java 9KB
MySQLConnection.java 9KB
MySQLMessage.java 9KB
SplitUtil.java 9KB
FrontendAuthenticatorHandler.java 8KB
SystemConfig.java 8KB
SQLASTVisitor.java 7KB
MySQLConnectionPool.java 7KB
SingleNodeHandler.java 7KB
FrontendConnection.java 7KB
MySQLDMLSelectParser.java 7KB
DateUtil.java 7KB
ReflectionProvider.java 7KB
NonBlockingSession.java 7KB
XMLServerLoader.java 7KB
MySQLDMLInsertParser.java 6KB
KeyPairGen.java 6KB
ExprEvalUtils.java 6KB
ParameterMapping.java 6KB
SQLParserDelegate.java 6KB
SqlUtil.java 6KB
BackendMySQLConnectionHandler.java 6KB
CandiceConfig.java 6KB
ConfigUtil.java 6KB
VelocityUtil.java 6KB
ServerParseShow.java 6KB
FieldDictionary.java 6KB
TableOptions.java 5KB
CharacterSet.java 5KB
ObjectUtil.java 5KB
CharsetUtil.java 5KB
JVMInfo.java 5KB
DMLSelectStatement.java 5KB
XMLRuleLoader.java 5KB
ConfigInitializer.java 5KB
Identifier.java 5KB
DDLCreateTableStatement.java 5KB
MySQLDMLReplaceParser.java 4KB
MySQLDataNode.java 4KB
DataType.java 4KB
MultiNodeHandler.java 4KB
MySQLDMLDeleteParser.java 4KB
ClusterConfig.java 4KB
MySQLMTSParser.java 4KB
CommitNodeHandler.java 4KB
CommandPacket.java 4KB
ExplainHandler.java 4KB
MySQLPacket.java 4KB
TableRuleConfig.java 4KB
DataNodeConfig.java 4KB
DMLDeleteStatement.java 4KB
RollbackNodeHandler.java 4KB
ServerConnection.java 4KB
ParseString.java 4KB
BufferUtil.java 4KB
BackendMySQLAuthenticatorHandler.java 4KB
FieldPacket.java 4KB
FormatUtil.java 4KB
CandiceServer.java 3KB
SmallSet.java 3KB
SchemaConfig.java 3KB
IntegerUtil.java 3KB
Capabilities.java 3KB
MySQLDMLUpdateParser.java 3KB
DMLStatement.java 3KB
BeanConfig.java 3KB
AuthPacket.java 3KB
CandiceStartup.java 3KB
LiteralString.java 3KB
SelectHandler.java 3KB
SetHandler.java 3KB
MetaRouter.java 3KB
BackendConnection.java 3KB
ByteUtil.java 3KB
ShowDatabases.java 3KB
ArithmeticSubtractExpression.java 3KB
OkPacket.java 2KB
DataSourceConfig.java 2KB
共 536 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
武昌库里写JAVA
- 粉丝: 3136
- 资源: 1872
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功