Skip to content

Commit

Permalink
Merge pull request #1 from MyCATApache/1.6
Browse files Browse the repository at this point in the history
更新主分支代码到个人分支
  • Loading branch information
linhai123 authored Nov 26, 2019
2 parents c6b48d8 + 3e36f5f commit 4adb059
Show file tree
Hide file tree
Showing 20 changed files with 424 additions and 255 deletions.
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ MyCAT1.6不支持一个SQL包含多个语句,但是正在开发的2.0是支持

旧Mycat升级fastjson,把pom.xml中fastjson的版本更改即可

全局序列号语法

```sql
INSERT INTO `travelrecord` (`id`,user_id) VALUES ('next value for MYCATSEQ_GLOBAL',"xxx");
```

更新Druid 1.1.10版本的分支独立维护在
https://github.com/MyCATApache/Mycat-Server/tree/1.6.6-druid

Expand Down Expand Up @@ -177,7 +183,7 @@ wrapper.java.additional.1=-DMYCAT_HOME=.

wrapper.java.additional.2=-server

wrapper.java.additional.3=-XX:MaxPermSize=64M
#wrapper.java.additional.3=-XX:MaxPermSize=64M

wrapper.java.additional.4=-XX:+AggressiveOpts

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@
</systemProperties>
<extraArguments>
<extraArgument>-server </extraArgument>
<extraArgument>-XX:MaxPermSize=64M</extraArgument>
<!--<extraArgument>-XX:MaxPermSize=64M</extraArgument>-->
<extraArgument>-XX:+AggressiveOpts</extraArgument>
<extraArgument>-XX:MaxDirectMemorySize=2G</extraArgument>
<!-- 远程JMX -->
Expand Down
2 changes: 1 addition & 1 deletion src/main/assembly/bin/dataMigrate.bat
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ set "CURR_DIR=%cd%"
cd ..
set "MYCAT_HOME=%cd%"
cd %CURR_DIR%
"%JAVA_CMD%" -server -Xms1G -Xmx1G -XX:MaxPermSize=64M -XX:+AggressiveOpts -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.util.dataMigrator.DataMigrator -tempFileDir= -isAwaysUseMaster=true -mysqlBin= -cmdLength=3*1024 -charset=utf8 -deleteTempFileDir=true -threadCount= -delThreadCount= -queryPageSize=10000
"%JAVA_CMD%" -server -Xms1G -Xmx1G -XX:+AggressiveOpts -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.util.dataMigrator.DataMigrator -tempFileDir= -isAwaysUseMaster=true -mysqlBin= -cmdLength=3*1024 -charset=utf8 -deleteTempFileDir=true -threadCount= -delThreadCount= -queryPageSize=10000

pause
2 changes: 1 addition & 1 deletion src/main/assembly/bin/init_zk_data.bat
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ set "CURR_DIR=%cd%"
cd ..
set "MYCAT_HOME=%cd%"
cd %CURR_DIR%
%JAVA_CMD% -Xms256M -Xmx1G -XX:MaxPermSize=64M -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.config.loader.zkprocess.xmltozk.XmltoZkMain
%JAVA_CMD% -Xms256M -Xmx1G -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.config.loader.zkprocess.xmltozk.XmltoZkMain
4 changes: 2 additions & 2 deletions src/main/assembly/bin/rehash.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ if $noJavaHome ; then
fi
#==============================================================================
#set JAVA_OPTS
JAVA_OPTS="-server -Xms2G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G"
#JAVA_OPTS="-server -Xms4G -Xmx4G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=6G"
JAVA_OPTS="-server -Xms2G -Xmx2G -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G"
#JAVA_OPTS="-server -Xms4G -Xmx4G -XX:+AggressiveOpts -XX:MaxDirectMemorySize=6G"
#performance Options
#JAVA_OPTS="$JAVA_OPTS -Xss256k"
#JAVA_OPTS="$JAVA_OPTS -XX:+AggressiveOpts"
Expand Down
2 changes: 1 addition & 1 deletion src/main/assembly/bin/startup_nowrap.bat
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ set "CURR_DIR=%cd%"
cd ..
set "MYCAT_HOME=%cd%"
cd %CURR_DIR%
"%JAVA_CMD%" -server -Xms1G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.MycatStartup
"%JAVA_CMD%" -server -Xms1G -Xmx2G -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" io.mycat.MycatStartup
4 changes: 2 additions & 2 deletions src/main/assembly/bin/startup_nowrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ if $noJavaHome ; then
fi
#==============================================================================
#set JAVA_OPTS
JAVA_OPTS="-server -Xms2G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G"
#JAVA_OPTS="-server -Xms4G -Xmx4G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=6G"
JAVA_OPTS="-server -Xms2G -Xmx2G -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G"
#JAVA_OPTS="-server -Xms4G -Xmx4G -XX:+AggressiveOpts -XX:MaxDirectMemorySize=6G"
#performance Options
#JAVA_OPTS="$JAVA_OPTS -Xss256k"
#JAVA_OPTS="$JAVA_OPTS -XX:+AggressiveOpts"
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/mycat/config/Versions.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public abstract class Versions {
public static final byte PROTOCOL_VERSION = 10;

/**服务器版本**/
public static byte[] SERVER_VERSION = "5.6.29-mycat-1.6.7.4-test-20191114135626".getBytes();
public static byte[] SERVER_VERSION = "5.6.29-mycat-1.6.7.4-test-20191120142329".getBytes();

public static void setServerVersion(String version) {
byte[] mysqlVersionPart = version.getBytes();
Expand Down
10 changes: 9 additions & 1 deletion src/main/java/io/mycat/config/model/SystemConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public final class SystemConfig {

private int sequnceMySqlRetryCount = DEFAULT_SEQUNCE_MYSQL_RETRY_COUT;
private long sequnceMySqlWaitTime = DEFAULT_SEQUNCE_MYSQL_WATI_TIME;

private int ignoreUnknownCommand = 0;//io/mycat/net/handler/FrontendCommandHandler.java:忽略未知命令


/*
Expand Down Expand Up @@ -1024,4 +1024,12 @@ public String getSequenceHanlderClass() {
public void setSequenceHanlderClass(String value) {
sequenceHanlderClass = value;
}

public int getIgnoreUnknownCommand() {
return ignoreUnknownCommand;
}

public void setIgnoreUnknownCommand(int ignoreUnknownCommand) {
this.ignoreUnknownCommand = ignoreUnknownCommand;
}
}
17 changes: 12 additions & 5 deletions src/main/java/io/mycat/net/handler/FrontendCommandHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
*/
package io.mycat.net.handler;

import io.mycat.MycatServer;
import io.mycat.backend.mysql.MySQLMessage;
import io.mycat.config.ErrorCode;
import io.mycat.config.MycatConfig;
import io.mycat.net.FrontendConnection;
import io.mycat.net.NIOHandler;
import io.mycat.net.mysql.MySQLPacket;
Expand Down Expand Up @@ -113,11 +115,16 @@ public void handle(byte[] data)
source.fieldList(data);
break;
default:
commands.doOther();
LOGGER.error("Unknown command:{}",new String(data));
source.writeErrMessage(ErrorCode.ER_UNKNOWN_COM_ERROR,
"Unknown command");

commands.doOther();
MycatConfig config = MycatServer.getInstance().getConfig();
if( config.getSystem().getIgnoreUnknownCommand()==1){
LOGGER.warn("Unknown command:{}",data[4]);
source.ping();
}else {
LOGGER.error("Unknown command:{}",new String(data));
source.writeErrMessage(ErrorCode.ER_UNKNOWN_COM_ERROR,
"Unknown command");
}
}
}

Expand Down
65 changes: 45 additions & 20 deletions src/main/java/io/mycat/route/impl/DruidMycatRouteStrategy.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.regex.Matcher;

import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLObject;
Expand All @@ -39,6 +37,10 @@
import com.alibaba.druid.stat.TableStat.Relationship;
import com.google.common.base.Strings;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.mycat.MycatServer;
import io.mycat.backend.mysql.nio.handler.MiddlerQueryResultHandler;
import io.mycat.backend.mysql.nio.handler.MiddlerResultHandler;
Expand Down Expand Up @@ -68,6 +70,7 @@
import io.mycat.server.NonBlockingSession;
import io.mycat.server.ServerConnection;
import io.mycat.server.parser.ServerParse;
import io.mycat.server.util.SchemaUtil;

public class DruidMycatRouteStrategy extends AbstractRouteStrategy {

Expand Down Expand Up @@ -537,26 +540,48 @@ private void checkUnSupportedStatement(SQLStatement statement) throws SQLSyntaxE
public RouteResultset analyseShowSQL(SchemaConfig schema,
RouteResultset rrs, String stmt) throws SQLSyntaxErrorException {

String upStmt = stmt.toUpperCase();
int tabInd = upStmt.indexOf(" TABLES");
if (tabInd > 0) {// show tables
int[] nextPost = RouterUtil.getSpecPos(upStmt, 0);
if (nextPost[0] > 0) {// remove db info
int end = RouterUtil.getSpecEndPos(upStmt, tabInd);
if (upStmt.indexOf(" FULL") > 0) {
stmt = "SHOW FULL TABLES" + stmt.substring(end);
String[] fields = SchemaUtil.parseShowTable(stmt);
if ("1".equals(fields[0])) {// show tables
String relSchema = fields[3];
String tableName = fields[8];
//
if (relSchema != null && !relSchema.equalsIgnoreCase(schema.getName())) {
schema = MycatServer.getInstance().getConfig().getSchemas().get(relSchema);
if (schema == null) {
throw new SQLSyntaxErrorException("not found schema : " + relSchema);
}
}
if (StringUtils.isNotBlank(tableName) && tableName.indexOf("%") < 0) {
TableConfig tableConfig = schema.getTables().get(tableName.toUpperCase());
if (tableConfig == null) {
throw new SQLSyntaxErrorException(
"not found table : " + tableName + " in schema " + schema.getName());
}
String relSchemaTmp = RouterUtil.getAliveRandomDataNode(tableConfig);
if (StringUtils.isNotBlank(relSchema)) {
stmt = stmt.replaceAll(relSchema, relSchemaTmp);
}
return RouterUtil.routeToSingleNode(rrs, relSchemaTmp, stmt);
}
// remove db
if (StringUtils.isNotBlank(relSchema)) {
if(schema.getDataNode() !=null) {
stmt = stmt.replaceAll(relSchema, schema.getDataNode());
} else {
stmt = "SHOW TABLES" + stmt.substring(end);
if(fields[2] !=null ) {
stmt = stmt.replaceAll( fields[2] + "\\s*" + relSchema, "");
}
}
}
String defaultNode= schema.getDataNode();
if(!Strings.isNullOrEmpty(defaultNode))
{
return RouterUtil.routeToSingleNode(rrs, defaultNode, stmt);
}
return RouterUtil.routeToMultiNode(false, rrs, schema.getMetaDataNodes(), stmt);
}
//
String defaultNode = schema.getDataNode();
if (!Strings.isNullOrEmpty(defaultNode)) {
return RouterUtil.routeToSingleNode(rrs, defaultNode, stmt);
}
return RouterUtil.routeToMultiNode(false, rrs, schema.getMetaDataNodes(), stmt);
}


String upStmt = stmt.toUpperCase();
/**
* show index or column
*/
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/mycat/route/util/RouterUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -1004,7 +1004,7 @@ private static String getMetaReadDataNode(SchemaConfig schema,
* @param tc
* @return
*/
private static String getAliveRandomDataNode(TableConfig tc) {
public static String getAliveRandomDataNode(TableConfig tc) {
List<String> randomDns = (List<String>)tc.getDataNodes().clone();

MycatConfig mycatConfig = MycatServer.getInstance().getConfig();
Expand Down
Loading

0 comments on commit 4adb059

Please sign in to comment.