From 2fa4a835280620fe369411993c01033d62aa2fa7 Mon Sep 17 00:00:00 2001 From: codefairy08 Date: Sun, 23 Sep 2018 22:18:45 +0800 Subject: [PATCH] Add SQLServer DDL table related statements Parser --- .../SQLServerAdvancedAlterTableParser.java | 49 +++++++++++++++++++ .../SQLServerAdvancedCreateTableParser.java | 49 +++++++++++++++++++ .../SQLServerAdvancedDropTableParser.java | 49 +++++++++++++++++++ .../SQLServerAdvancedTruncateTableParser.java | 49 +++++++++++++++++++ 4 files changed, 196 insertions(+) create mode 100644 sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedAlterTableParser.java create mode 100644 sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedCreateTableParser.java create mode 100644 sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedDropTableParser.java create mode 100644 sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedTruncateTableParser.java diff --git a/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedAlterTableParser.java b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedAlterTableParser.java new file mode 100644 index 0000000000..21c9cb85a1 --- /dev/null +++ b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedAlterTableParser.java @@ -0,0 +1,49 @@ +package io.shardingsphere.core.parsing.antler.parser.sqlserver; + +import org.antlr.v4.runtime.CommonToken; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; + +import io.shardingsphere.core.parsing.antler.AdvancedErrorStrategy; +import io.shardingsphere.core.parsing.antler.AdvancedParserATNSimulator; +import io.shardingsphere.parser.antlr.sqlserver.SQLServerAlterTableParser; + +public class SQLServerAdvancedAlterTableParser extends SQLServerAlterTableParser { + + public SQLServerAdvancedAlterTableParser(TokenStream input) { + super(input); + _interp = new AdvancedParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache, ID); + this._errHandler = new AdvancedErrorStrategy(ID); + } + + public Token match(int ttype) throws RecognitionException { + Token t = getCurrentToken(); + + boolean compatID = false; + if (ID == ttype && ID > t.getType()) { + compatID = true; + } + + if (t.getType() == ttype || compatID) { + if (ttype == Token.EOF) { + matchedEOF = true; + } + + if (!matchedEOF && compatID && (t instanceof CommonToken)) { + CommonToken commonToken = (CommonToken) t; + commonToken.setType(ID); + } + _errHandler.reportMatch(this); + consume(); + } else { + t = _errHandler.recoverInline(this); + if (_buildParseTrees && t.getTokenIndex() == -1) { + // we must have conjured up a new token during single token insertion + // if it's not the current symbol + _ctx.addErrorNode(createErrorNode(_ctx, t)); + } + } + return t; + } +} diff --git a/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedCreateTableParser.java b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedCreateTableParser.java new file mode 100644 index 0000000000..db3c9e3ee1 --- /dev/null +++ b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedCreateTableParser.java @@ -0,0 +1,49 @@ +package io.shardingsphere.core.parsing.antler.parser.sqlserver; + +import org.antlr.v4.runtime.CommonToken; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; + +import io.shardingsphere.core.parsing.antler.AdvancedErrorStrategy; +import io.shardingsphere.core.parsing.antler.AdvancedParserATNSimulator; +import io.shardingsphere.parser.antlr.sqlserver.SQLServerCreateTableParser; + +public class SQLServerAdvancedCreateTableParser extends SQLServerCreateTableParser { + + public SQLServerAdvancedCreateTableParser(TokenStream input) { + super(input); + _interp = new AdvancedParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache, ID); + this._errHandler = new AdvancedErrorStrategy(ID); + } + + public Token match(int ttype) throws RecognitionException { + Token t = getCurrentToken(); + + boolean compatID = false; + if (ID == ttype && ID > t.getType()) { + compatID = true; + } + + if (t.getType() == ttype || compatID) { + if (ttype == Token.EOF) { + matchedEOF = true; + } + + if (!matchedEOF && compatID && (t instanceof CommonToken)) { + CommonToken commonToken = (CommonToken) t; + commonToken.setType(ID); + } + _errHandler.reportMatch(this); + consume(); + } else { + t = _errHandler.recoverInline(this); + if (_buildParseTrees && t.getTokenIndex() == -1) { + // we must have conjured up a new token during single token insertion + // if it's not the current symbol + _ctx.addErrorNode(createErrorNode(_ctx, t)); + } + } + return t; + } +} diff --git a/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedDropTableParser.java b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedDropTableParser.java new file mode 100644 index 0000000000..2587c38978 --- /dev/null +++ b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedDropTableParser.java @@ -0,0 +1,49 @@ +package io.shardingsphere.core.parsing.antler.parser.sqlserver; + +import org.antlr.v4.runtime.CommonToken; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; + +import io.shardingsphere.core.parsing.antler.AdvancedErrorStrategy; +import io.shardingsphere.core.parsing.antler.AdvancedParserATNSimulator; +import io.shardingsphere.parser.antlr.sqlserver.SQLServerDropTableParser; + +public class SQLServerAdvancedDropTableParser extends SQLServerDropTableParser { + + public SQLServerAdvancedDropTableParser(TokenStream input) { + super(input); + _interp = new AdvancedParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache, ID); + this._errHandler = new AdvancedErrorStrategy(ID); + } + + public Token match(int ttype) throws RecognitionException { + Token t = getCurrentToken(); + + boolean compatID = false; + if (ID == ttype && ID > t.getType()) { + compatID = true; + } + + if (t.getType() == ttype || compatID) { + if (ttype == Token.EOF) { + matchedEOF = true; + } + + if (!matchedEOF && compatID && (t instanceof CommonToken)) { + CommonToken commonToken = (CommonToken) t; + commonToken.setType(ID); + } + _errHandler.reportMatch(this); + consume(); + } else { + t = _errHandler.recoverInline(this); + if (_buildParseTrees && t.getTokenIndex() == -1) { + // we must have conjured up a new token during single token insertion + // if it's not the current symbol + _ctx.addErrorNode(createErrorNode(_ctx, t)); + } + } + return t; + } +} diff --git a/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedTruncateTableParser.java b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedTruncateTableParser.java new file mode 100644 index 0000000000..49e548f9f3 --- /dev/null +++ b/sharding-jdbc-ddl-parser/src/main/java/io/shardingsphere/core/parsing/antler/parser/sqlserver/SQLServerAdvancedTruncateTableParser.java @@ -0,0 +1,49 @@ +package io.shardingsphere.core.parsing.antler.parser.sqlserver; + +import org.antlr.v4.runtime.CommonToken; +import org.antlr.v4.runtime.RecognitionException; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; + +import io.shardingsphere.core.parsing.antler.AdvancedErrorStrategy; +import io.shardingsphere.core.parsing.antler.AdvancedParserATNSimulator; +import io.shardingsphere.parser.antlr.sqlserver.SQLServerTruncateTableParser; + +public class SQLServerAdvancedTruncateTableParser extends SQLServerTruncateTableParser { + + public SQLServerAdvancedTruncateTableParser(TokenStream input) { + super(input); + _interp = new AdvancedParserATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache, ID); + this._errHandler = new AdvancedErrorStrategy(ID); + } + + public Token match(int ttype) throws RecognitionException { + Token t = getCurrentToken(); + + boolean compatID = false; + if (ID == ttype && ID > t.getType()) { + compatID = true; + } + + if (t.getType() == ttype || compatID) { + if (ttype == Token.EOF) { + matchedEOF = true; + } + + if (!matchedEOF && compatID && (t instanceof CommonToken)) { + CommonToken commonToken = (CommonToken) t; + commonToken.setType(ID); + } + _errHandler.reportMatch(this); + consume(); + } else { + t = _errHandler.recoverInline(this); + if (_buildParseTrees && t.getTokenIndex() == -1) { + // we must have conjured up a new token during single token insertion + // if it's not the current symbol + _ctx.addErrorNode(createErrorNode(_ctx, t)); + } + } + return t; + } +} -- GitLab