Showing preview only (5,447K chars total). Download the full file or copy to clipboard to get everything.
Repository: MyCATApache/Mycat-Server
Branch: main
Commit: 243539fb74bb
Files: 1154
Total size: 4.9 MB
Directory structure:
gitextract_61vp_fxc/
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── bug-report.md
│ ├── new_feture.md
│ └── others.md
├── .gitignore
├── .travis.yml
├── .vscode/
│ ├── launch.json
│ └── settings.json
├── Dockerfile
├── LICENSE
├── README.md
├── README_Chinese.md
├── catlet/
│ └── readme.txt
├── eclipse-java-google-style.xml
├── intellij-java-google-style.xml
├── pom.xml
├── src/
│ ├── main/
│ │ ├── assembly/
│ │ │ ├── assembly-linux.xml
│ │ │ ├── assembly-mac.xml
│ │ │ ├── assembly-solaris.xml
│ │ │ ├── assembly-testtool.xml
│ │ │ ├── assembly-unix.xml
│ │ │ ├── assembly-win.xml
│ │ │ ├── conf/
│ │ │ │ └── log4j2.xml
│ │ │ └── testtool/
│ │ │ ├── test_globalseq_insert_perf.bat
│ │ │ ├── test_globaltable_insert_perf.bat
│ │ │ ├── test_globaltable_insert_perf.sh
│ │ │ ├── test_stand_insert_perf.bat
│ │ │ ├── test_stand_insert_perf.sh
│ │ │ ├── test_stand_merge_sel_perf.bat
│ │ │ ├── test_stand_merge_sel_perf.sh
│ │ │ ├── test_stand_select_perf.bat
│ │ │ ├── test_stand_select_perf.sh
│ │ │ ├── test_stand_update_perf.bat
│ │ │ └── test_stand_update_perf.sh
│ │ ├── java/
│ │ │ └── io/
│ │ │ └── mycat/
│ │ │ ├── MycatServer.java
│ │ │ ├── MycatShutdown.java
│ │ │ ├── MycatStartup.java
│ │ │ ├── backend/
│ │ │ │ ├── BackendConnection.java
│ │ │ │ ├── ConMap.java
│ │ │ │ ├── ConQueue.java
│ │ │ │ ├── ConnectionMeta.java
│ │ │ │ ├── datasource/
│ │ │ │ │ ├── PhysicalDBNode.java
│ │ │ │ │ ├── PhysicalDBPool.java
│ │ │ │ │ └── PhysicalDatasource.java
│ │ │ │ ├── heartbeat/
│ │ │ │ │ ├── ConsistenCollectHandler.java
│ │ │ │ │ ├── DBHeartbeat.java
│ │ │ │ │ ├── MySQLConsistencyChecker.java
│ │ │ │ │ ├── MySQLConsistencyCheckerHandler.java
│ │ │ │ │ ├── MySQLConsistencyHelper.java
│ │ │ │ │ ├── MySQLDetector.java
│ │ │ │ │ ├── MySQLHeartbeat.java
│ │ │ │ │ └── zkprocess/
│ │ │ │ │ ├── ManageHeartBeatChange.java
│ │ │ │ │ ├── MycatLeaderLatch.java
│ │ │ │ │ └── SwitchStatueToZK.java
│ │ │ │ ├── jdbc/
│ │ │ │ │ ├── JDBCConnection.java
│ │ │ │ │ ├── JDBCDatasource.java
│ │ │ │ │ ├── JDBCHeartbeat.java
│ │ │ │ │ ├── ShowVariables.java
│ │ │ │ │ ├── mongodb/
│ │ │ │ │ │ ├── DriverPropertyInfoHelper.java
│ │ │ │ │ │ ├── MongoClientPropertyHelper.java
│ │ │ │ │ │ ├── MongoConnection.java
│ │ │ │ │ │ ├── MongoData.java
│ │ │ │ │ │ ├── MongoDriver.java
│ │ │ │ │ │ ├── MongoEmbeddedObjectProcessor.java
│ │ │ │ │ │ ├── MongoPreparedStatement.java
│ │ │ │ │ │ ├── MongoResultSet.java
│ │ │ │ │ │ ├── MongoResultSetMetaData.java
│ │ │ │ │ │ ├── MongoSQLException.java
│ │ │ │ │ │ ├── MongoSQLParser.java
│ │ │ │ │ │ ├── MongoStatement.java
│ │ │ │ │ │ └── StringUtils.java
│ │ │ │ │ └── sequoiadb/
│ │ │ │ │ ├── DriverPropertyInfoHelper.java
│ │ │ │ │ ├── SequoiaConnection.java
│ │ │ │ │ ├── SequoiaData.java
│ │ │ │ │ ├── SequoiaDriver.java
│ │ │ │ │ ├── SequoiaPreparedStatement.java
│ │ │ │ │ ├── SequoiaResultSet.java
│ │ │ │ │ ├── SequoiaResultSetMetaData.java
│ │ │ │ │ ├── SequoiaSQLException.java
│ │ │ │ │ ├── SequoiaSQLParser.java
│ │ │ │ │ ├── SequoiaStatement.java
│ │ │ │ │ └── StringUtils.java
│ │ │ │ ├── loadbalance/
│ │ │ │ │ ├── LeastActiveLoadBalance.java
│ │ │ │ │ ├── LoadBalance.java
│ │ │ │ │ ├── RandomLoadBalance.java
│ │ │ │ │ └── WeightedRoundRobinLoadBalance.java
│ │ │ │ ├── mysql/
│ │ │ │ │ ├── BindValue.java
│ │ │ │ │ ├── BindValueUtil.java
│ │ │ │ │ ├── BufferUtil.java
│ │ │ │ │ ├── ByteUtil.java
│ │ │ │ │ ├── CharsetUtil.java
│ │ │ │ │ ├── DataType.java
│ │ │ │ │ ├── LoadDataUtil.java
│ │ │ │ │ ├── MySQLMessage.java
│ │ │ │ │ ├── PacketUtil.java
│ │ │ │ │ ├── PreparedStatement.java
│ │ │ │ │ ├── SecurityUtil.java
│ │ │ │ │ ├── StreamUtil.java
│ │ │ │ │ ├── listener/
│ │ │ │ │ │ ├── DefaultSqlExecuteStageListener.java
│ │ │ │ │ │ ├── SqlExecuteStage.java
│ │ │ │ │ │ └── SqlExecuteStageListener.java
│ │ │ │ │ ├── nio/
│ │ │ │ │ │ ├── MySQLConnection.java
│ │ │ │ │ │ ├── MySQLConnectionAuthenticator.java
│ │ │ │ │ │ ├── MySQLConnectionFactory.java
│ │ │ │ │ │ ├── MySQLConnectionHandler.java
│ │ │ │ │ │ ├── MySQLDataSource.java
│ │ │ │ │ │ └── handler/
│ │ │ │ │ │ ├── CommitNodeHandler.java
│ │ │ │ │ │ ├── ConnectionHeartBeatHandler.java
│ │ │ │ │ │ ├── DelegateResponseHandler.java
│ │ │ │ │ │ ├── FetchStoreNodeOfChildTableHandler.java
│ │ │ │ │ │ ├── GetConnectionHandler.java
│ │ │ │ │ │ ├── JDBCFetchStoreNodeOfChildTableHandler.java
│ │ │ │ │ │ ├── KillConnectionHandler.java
│ │ │ │ │ │ ├── LoadDataResponseHandler.java
│ │ │ │ │ │ ├── LockTablesHandler.java
│ │ │ │ │ │ ├── MiddlerQueryResultHandler.java
│ │ │ │ │ │ ├── MiddlerResultHandler.java
│ │ │ │ │ │ ├── MultiNodeCoordinator.java
│ │ │ │ │ │ ├── MultiNodeHandler.java
│ │ │ │ │ │ ├── MultiNodeQueryHandler.java
│ │ │ │ │ │ ├── NewConnectionRespHandler.java
│ │ │ │ │ │ ├── PrepareRequestHandler.java
│ │ │ │ │ │ ├── ResponseHandler.java
│ │ │ │ │ │ ├── RollbackNodeHandler.java
│ │ │ │ │ │ ├── RollbackReleaseHandler.java
│ │ │ │ │ │ ├── SecondHandler.java
│ │ │ │ │ │ ├── SecondQueryHandler.java
│ │ │ │ │ │ ├── SimpleLogHandler.java
│ │ │ │ │ │ ├── SingleNodeHandler.java
│ │ │ │ │ │ ├── Terminatable.java
│ │ │ │ │ │ └── UnLockTablesHandler.java
│ │ │ │ │ └── xa/
│ │ │ │ │ ├── CoordinatorLogEntry.java
│ │ │ │ │ ├── Deserializer.java
│ │ │ │ │ ├── LogFileLock.java
│ │ │ │ │ ├── ParticipantLogEntry.java
│ │ │ │ │ ├── Serializer.java
│ │ │ │ │ ├── TxState.java
│ │ │ │ │ ├── VersionedFile.java
│ │ │ │ │ ├── XACommitCallback.java
│ │ │ │ │ ├── XARollbackCallback.java
│ │ │ │ │ └── recovery/
│ │ │ │ │ ├── DeserialisationException.java
│ │ │ │ │ ├── LogException.java
│ │ │ │ │ ├── LogReadException.java
│ │ │ │ │ ├── LogWriteException.java
│ │ │ │ │ ├── Repository.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── FileSystemRepository.java
│ │ │ │ │ └── InMemoryRepository.java
│ │ │ │ └── postgresql/
│ │ │ │ ├── PostgreSQLBackendConnection.java
│ │ │ │ ├── PostgreSQLBackendConnectionFactory.java
│ │ │ │ ├── PostgreSQLBackendConnectionHandler.java
│ │ │ │ ├── PostgreSQLDataSource.java
│ │ │ │ ├── heartbeat/
│ │ │ │ │ ├── PostgreSQLDetector.java
│ │ │ │ │ └── PostgreSQLHeartbeat.java
│ │ │ │ ├── package-info.java
│ │ │ │ ├── packet/
│ │ │ │ │ ├── AuthenticationPacket.java
│ │ │ │ │ ├── BackendKeyData.java
│ │ │ │ │ ├── Bind.java
│ │ │ │ │ ├── BindComplete.java
│ │ │ │ │ ├── CancelRequest.java
│ │ │ │ │ ├── CommandComplete.java
│ │ │ │ │ ├── CopyInResponse.java
│ │ │ │ │ ├── CopyOutResponse.java
│ │ │ │ │ ├── DataRow.java
│ │ │ │ │ ├── EmptyQueryResponse.java
│ │ │ │ │ ├── ErrorResponse.java
│ │ │ │ │ ├── NoticeResponse.java
│ │ │ │ │ ├── NotificationResponse.java
│ │ │ │ │ ├── ParameterDescription.java
│ │ │ │ │ ├── ParameterStatus.java
│ │ │ │ │ ├── Parse.java
│ │ │ │ │ ├── ParseComplete.java
│ │ │ │ │ ├── PasswordMessage.java
│ │ │ │ │ ├── PostgreSQLPacket.java
│ │ │ │ │ ├── Query.java
│ │ │ │ │ ├── ReadyForQuery.java
│ │ │ │ │ ├── RowDescription.java
│ │ │ │ │ ├── SSLRequest.java
│ │ │ │ │ ├── StartupMessage.java
│ │ │ │ │ └── Terminate.java
│ │ │ │ └── utils/
│ │ │ │ ├── MD5Digest.java
│ │ │ │ ├── PIOUtils.java
│ │ │ │ ├── PacketUtils.java
│ │ │ │ ├── PgPacketApaterUtils.java
│ │ │ │ └── PgSqlApaterUtils.java
│ │ │ ├── buffer/
│ │ │ │ ├── BufferArray.java
│ │ │ │ ├── BufferPool.java
│ │ │ │ ├── ByteBufferArena.java
│ │ │ │ ├── ByteBufferChunk.java
│ │ │ │ ├── ByteBufferChunkList.java
│ │ │ │ ├── ByteBufferPage.java
│ │ │ │ ├── DirectByteBufferPool.java
│ │ │ │ ├── MyCatMemoryAllocator.java
│ │ │ │ └── NettyBufferPool.java
│ │ │ ├── cache/
│ │ │ │ ├── CachePool.java
│ │ │ │ ├── CachePoolFactory.java
│ │ │ │ ├── CacheService.java
│ │ │ │ ├── CacheStatic.java
│ │ │ │ ├── DefaultLayedCachePool.java
│ │ │ │ ├── LayerCachePool.java
│ │ │ │ ├── MysqlDataSetCache.java
│ │ │ │ ├── MysqlDataSetService.java
│ │ │ │ ├── impl/
│ │ │ │ │ ├── EnchachePooFactory.java
│ │ │ │ │ ├── EnchachePool.java
│ │ │ │ │ ├── LevelDBCachePooFactory.java
│ │ │ │ │ ├── LevelDBPool.java
│ │ │ │ │ ├── MapDBCachePooFactory.java
│ │ │ │ │ └── MapDBCachePool.java
│ │ │ │ └── index/
│ │ │ │ └── Shard.java
│ │ │ ├── catlets/
│ │ │ │ ├── Catlet.java
│ │ │ │ ├── JoinParser.java
│ │ │ │ ├── ShareJoin.java
│ │ │ │ └── TableFilter.java
│ │ │ ├── config/
│ │ │ │ ├── Alarms.java
│ │ │ │ ├── Capabilities.java
│ │ │ │ ├── ConfigInitializer.java
│ │ │ │ ├── ErrorCode.java
│ │ │ │ ├── Fields.java
│ │ │ │ ├── Isolations.java
│ │ │ │ ├── MycatCluster.java
│ │ │ │ ├── MycatConfig.java
│ │ │ │ ├── MycatNode.java
│ │ │ │ ├── MycatPrivileges.java
│ │ │ │ ├── Versions.java
│ │ │ │ ├── Versions.template
│ │ │ │ ├── classloader/
│ │ │ │ │ ├── DynaClassLoader.java
│ │ │ │ │ └── JarLoader.java
│ │ │ │ ├── loader/
│ │ │ │ │ ├── ConfigLoader.java
│ │ │ │ │ ├── SchemaLoader.java
│ │ │ │ │ ├── console/
│ │ │ │ │ │ └── ZookeeperPath.java
│ │ │ │ │ ├── xml/
│ │ │ │ │ │ ├── XMLConfigLoader.java
│ │ │ │ │ │ ├── XMLRuleLoader.java
│ │ │ │ │ │ ├── XMLSchemaLoader.java
│ │ │ │ │ │ └── XMLServerLoader.java
│ │ │ │ │ └── zkprocess/
│ │ │ │ │ ├── comm/
│ │ │ │ │ │ ├── NotiflyService.java
│ │ │ │ │ │ ├── ZkConfig.java
│ │ │ │ │ │ ├── ZkParamCfg.java
│ │ │ │ │ │ └── ZookeeperProcessListen.java
│ │ │ │ │ ├── console/
│ │ │ │ │ │ ├── ParseParamEnum.java
│ │ │ │ │ │ └── ZkNofiflyCfg.java
│ │ │ │ │ ├── entity/
│ │ │ │ │ │ ├── Named.java
│ │ │ │ │ │ ├── Propertied.java
│ │ │ │ │ │ ├── Property.java
│ │ │ │ │ │ ├── Rules.java
│ │ │ │ │ │ ├── Schemas.java
│ │ │ │ │ │ ├── Server.java
│ │ │ │ │ │ ├── cache/
│ │ │ │ │ │ │ ├── CacheInfo.java
│ │ │ │ │ │ │ └── Ehcache.java
│ │ │ │ │ │ ├── package-info.java
│ │ │ │ │ │ ├── rule/
│ │ │ │ │ │ │ ├── function/
│ │ │ │ │ │ │ │ └── Function.java
│ │ │ │ │ │ │ └── tablerule/
│ │ │ │ │ │ │ ├── Rule.java
│ │ │ │ │ │ │ └── TableRule.java
│ │ │ │ │ │ ├── schema/
│ │ │ │ │ │ │ ├── datahost/
│ │ │ │ │ │ │ │ ├── DataHost.java
│ │ │ │ │ │ │ │ ├── ReadHost.java
│ │ │ │ │ │ │ │ └── WriteHost.java
│ │ │ │ │ │ │ ├── datanode/
│ │ │ │ │ │ │ │ └── DataNode.java
│ │ │ │ │ │ │ └── schema/
│ │ │ │ │ │ │ ├── ChildTable.java
│ │ │ │ │ │ │ ├── Schema.java
│ │ │ │ │ │ │ └── Table.java
│ │ │ │ │ │ └── server/
│ │ │ │ │ │ ├── System.java
│ │ │ │ │ │ └── user/
│ │ │ │ │ │ └── User.java
│ │ │ │ │ ├── parse/
│ │ │ │ │ │ ├── JsonProcessBase.java
│ │ │ │ │ │ ├── ParseJsonServiceInf.java
│ │ │ │ │ │ ├── ParseXmlServiceInf.java
│ │ │ │ │ │ ├── XmlProcessBase.java
│ │ │ │ │ │ └── entryparse/
│ │ │ │ │ │ ├── cache/
│ │ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ │ └── EhcacheJsonParse.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── EhcacheParseXmlImpl.java
│ │ │ │ │ │ ├── rule/
│ │ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ │ ├── FunctionJsonParse.java
│ │ │ │ │ │ │ │ └── TableRuleJsonParse.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── RuleParseXmlImpl.java
│ │ │ │ │ │ ├── schema/
│ │ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ │ ├── DataHostJsonParse.java
│ │ │ │ │ │ │ │ ├── DataNodeJsonParse.java
│ │ │ │ │ │ │ │ └── SchemaJsonParse.java
│ │ │ │ │ │ │ └── xml/
│ │ │ │ │ │ │ └── SchemasParseXmlImpl.java
│ │ │ │ │ │ └── server/
│ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ ├── SystemJsonParse.java
│ │ │ │ │ │ │ └── UserJsonParse.java
│ │ │ │ │ │ └── xml/
│ │ │ │ │ │ └── ServerParseXmlImpl.java
│ │ │ │ │ ├── xmltozk/
│ │ │ │ │ │ ├── BindataToZK.java
│ │ │ │ │ │ ├── XmltoZkMain.java
│ │ │ │ │ │ └── listen/
│ │ │ │ │ │ ├── EcachesxmlTozkLoader.java
│ │ │ │ │ │ ├── OthermsgTozkLoader.java
│ │ │ │ │ │ ├── RulesxmlTozkLoader.java
│ │ │ │ │ │ ├── SchemasxmlTozkLoader.java
│ │ │ │ │ │ ├── SequenceTozkLoader.java
│ │ │ │ │ │ └── ServerxmlTozkLoader.java
│ │ │ │ │ ├── zktoxml/
│ │ │ │ │ │ ├── ZktoXmlMain.java
│ │ │ │ │ │ ├── command/
│ │ │ │ │ │ │ └── CommandPathListener.java
│ │ │ │ │ │ └── listen/
│ │ │ │ │ │ ├── BinDataPathChildrenCacheListener.java
│ │ │ │ │ │ ├── EcacheszkToxmlLoader.java
│ │ │ │ │ │ ├── RuleDataPathChildrenCacheListener.java
│ │ │ │ │ │ ├── RuleFunctionCacheListener.java
│ │ │ │ │ │ ├── RuleszkToxmlLoader.java
│ │ │ │ │ │ ├── SchemaszkToxmlLoader.java
│ │ │ │ │ │ ├── SequenceTopropertiesLoader.java
│ │ │ │ │ │ └── ServerzkToxmlLoader.java
│ │ │ │ │ └── zookeeper/
│ │ │ │ │ ├── ClusterInfo.java
│ │ │ │ │ ├── DataInf.java
│ │ │ │ │ ├── DiretoryInf.java
│ │ │ │ │ └── process/
│ │ │ │ │ ├── ZkDataImpl.java
│ │ │ │ │ ├── ZkDirectoryImpl.java
│ │ │ │ │ └── ZkMultLoader.java
│ │ │ │ ├── model/
│ │ │ │ │ ├── ClusterConfig.java
│ │ │ │ │ ├── DBHostConfig.java
│ │ │ │ │ ├── DataHostConfig.java
│ │ │ │ │ ├── DataNodeConfig.java
│ │ │ │ │ ├── FirewallConfig.java
│ │ │ │ │ ├── MycatNodeConfig.java
│ │ │ │ │ ├── SchemaConfig.java
│ │ │ │ │ ├── SystemConfig.java
│ │ │ │ │ ├── TableConfig.java
│ │ │ │ │ ├── TableConfigMap.java
│ │ │ │ │ ├── TableRuleConfig.java
│ │ │ │ │ ├── UserConfig.java
│ │ │ │ │ ├── UserPrivilegesConfig.java
│ │ │ │ │ └── rule/
│ │ │ │ │ ├── RuleAlgorithm.java
│ │ │ │ │ ├── RuleConfig.java
│ │ │ │ │ └── TableRuleConfig.java
│ │ │ │ ├── table/
│ │ │ │ │ └── structure/
│ │ │ │ │ ├── MySQLTableStructureDetector.java
│ │ │ │ │ └── TableStructureProcessor.java
│ │ │ │ └── util/
│ │ │ │ ├── BeanConfig.java
│ │ │ │ ├── ConfigException.java
│ │ │ │ ├── ConfigUtil.java
│ │ │ │ ├── DnPropertyUtil.java
│ │ │ │ ├── FieldDictionary.java
│ │ │ │ ├── Initializable.java
│ │ │ │ ├── JVMInfo.java
│ │ │ │ ├── ObjectAccessException.java
│ │ │ │ ├── OrderRetainingMap.java
│ │ │ │ ├── ParameterMapping.java
│ │ │ │ ├── ReflectionProvider.java
│ │ │ │ └── Visitor.java
│ │ │ ├── manager/
│ │ │ │ ├── ManagerConnection.java
│ │ │ │ ├── ManagerConnectionFactory.java
│ │ │ │ ├── ManagerQueryHandler.java
│ │ │ │ ├── handler/
│ │ │ │ │ ├── ClearHandler.java
│ │ │ │ │ ├── ConfFileHandler.java
│ │ │ │ │ ├── ReloadHandler.java
│ │ │ │ │ ├── RollbackHandler.java
│ │ │ │ │ ├── SelectHandler.java
│ │ │ │ │ ├── ShowHandler.java
│ │ │ │ │ ├── ShowServerLog.java
│ │ │ │ │ ├── StopHandler.java
│ │ │ │ │ ├── SwitchHandler.java
│ │ │ │ │ └── ZKHandler.java
│ │ │ │ └── response/
│ │ │ │ ├── CheckGlobalTable.java
│ │ │ │ ├── ClearSlow.java
│ │ │ │ ├── KillConnection.java
│ │ │ │ ├── Offline.java
│ │ │ │ ├── Online.java
│ │ │ │ ├── ReloadConfig.java
│ │ │ │ ├── ReloadQueryCf.java
│ │ │ │ ├── ReloadSqlSlowTime.java
│ │ │ │ ├── ReloadSqlStat.java
│ │ │ │ ├── ReloadUser.java
│ │ │ │ ├── ReloadUserStat.java
│ │ │ │ ├── ReloadZktoXml.java
│ │ │ │ ├── RollbackConfig.java
│ │ │ │ ├── RollbackUser.java
│ │ │ │ ├── SelectSessionAutoIncrement.java
│ │ │ │ ├── SelectSessionTxReadOnly.java
│ │ │ │ ├── SelectVersionComment.java
│ │ │ │ ├── ShowBackend.java
│ │ │ │ ├── ShowBackendOld.java
│ │ │ │ ├── ShowCollation.java
│ │ │ │ ├── ShowCommand.java
│ │ │ │ ├── ShowConnection.java
│ │ │ │ ├── ShowConnectionSQL.java
│ │ │ │ ├── ShowDataNode.java
│ │ │ │ ├── ShowDataSource.java
│ │ │ │ ├── ShowDatabase.java
│ │ │ │ ├── ShowDatasourceCluster.java
│ │ │ │ ├── ShowDatasourceSyn.java
│ │ │ │ ├── ShowDatasourceSynDetail.java
│ │ │ │ ├── ShowDirectMemory.java
│ │ │ │ ├── ShowHeartbeat.java
│ │ │ │ ├── ShowHeartbeatDetail.java
│ │ │ │ ├── ShowHelp.java
│ │ │ │ ├── ShowParser.java
│ │ │ │ ├── ShowProcessor.java
│ │ │ │ ├── ShowRouter.java
│ │ │ │ ├── ShowSQL.java
│ │ │ │ ├── ShowSQLCondition.java
│ │ │ │ ├── ShowSQLDetail.java
│ │ │ │ ├── ShowSQLExecute.java
│ │ │ │ ├── ShowSQLHigh.java
│ │ │ │ ├── ShowSQLLarge.java
│ │ │ │ ├── ShowSQLSlow.java
│ │ │ │ ├── ShowSQLSumTable.java
│ │ │ │ ├── ShowSQLSumUser.java
│ │ │ │ ├── ShowServer.java
│ │ │ │ ├── ShowSession.java
│ │ │ │ ├── ShowSqlResultSet.java
│ │ │ │ ├── ShowSysLog.java
│ │ │ │ ├── ShowSysParam.java
│ │ │ │ ├── ShowThreadPool.java
│ │ │ │ ├── ShowTime.java
│ │ │ │ ├── ShowVariables.java
│ │ │ │ ├── ShowVersion.java
│ │ │ │ ├── ShowWhiteHost.java
│ │ │ │ ├── StopHeartbeat.java
│ │ │ │ └── SwitchDataSource.java
│ │ │ ├── memory/
│ │ │ │ ├── MyCatMemory.java
│ │ │ │ ├── environment/
│ │ │ │ │ ├── EnvironmentInformation.java
│ │ │ │ │ ├── Hardware.java
│ │ │ │ │ ├── HardwareDescription.java
│ │ │ │ │ └── OperatingSystem.java
│ │ │ │ └── unsafe/
│ │ │ │ ├── KVIterator.java
│ │ │ │ ├── Platform.java
│ │ │ │ ├── array/
│ │ │ │ │ ├── ByteArrayMethods.java
│ │ │ │ │ ├── CharArray.java
│ │ │ │ │ └── LongArray.java
│ │ │ │ ├── bitset/
│ │ │ │ │ └── BitSetMethods.java
│ │ │ │ ├── hash/
│ │ │ │ │ └── Murmur3_x86_32.java
│ │ │ │ ├── map/
│ │ │ │ │ ├── BytesToBytesMap.java
│ │ │ │ │ ├── HashMapGrowthStrategy.java
│ │ │ │ │ └── UnsafeFixedWidthAggregationMap.java
│ │ │ │ ├── memory/
│ │ │ │ │ ├── HeapMemoryAllocator.java
│ │ │ │ │ ├── MemoryAllocator.java
│ │ │ │ │ ├── MemoryBlock.java
│ │ │ │ │ ├── MemoryLocation.java
│ │ │ │ │ ├── UnsafeMemoryAllocator.java
│ │ │ │ │ └── mm/
│ │ │ │ │ ├── DataNodeMemoryManager.java
│ │ │ │ │ ├── MemoryConsumer.java
│ │ │ │ │ ├── MemoryManager.java
│ │ │ │ │ ├── MemoryMode.java
│ │ │ │ │ ├── MemoryPool.java
│ │ │ │ │ ├── ResultMergeMemoryManager.java
│ │ │ │ │ └── ResultSetMemoryPool.java
│ │ │ │ ├── ringbuffer/
│ │ │ │ │ ├── RingBuffer.java
│ │ │ │ │ ├── common/
│ │ │ │ │ │ ├── Cursored.java
│ │ │ │ │ │ ├── DataProvider.java
│ │ │ │ │ │ ├── Sequenced.java
│ │ │ │ │ │ ├── barrier/
│ │ │ │ │ │ │ └── SequenceBarrier.java
│ │ │ │ │ │ ├── event/
│ │ │ │ │ │ │ ├── EventFactory.java
│ │ │ │ │ │ │ ├── EventSequencer.java
│ │ │ │ │ │ │ ├── EventSink.java
│ │ │ │ │ │ │ ├── EventTranslator.java
│ │ │ │ │ │ │ ├── EventTranslatorOneArg.java
│ │ │ │ │ │ │ ├── EventTranslatorThreeArg.java
│ │ │ │ │ │ │ ├── EventTranslatorTwoArg.java
│ │ │ │ │ │ │ └── EventTranslatorVararg.java
│ │ │ │ │ │ ├── sequence/
│ │ │ │ │ │ │ ├── Sequence.java
│ │ │ │ │ │ │ └── SequenceGroups.java
│ │ │ │ │ │ └── waitStrategy/
│ │ │ │ │ │ ├── WaitStrategy.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── BlockingWaitStrategy.java
│ │ │ │ │ │ ├── BusySpinWaitStrategy.java
│ │ │ │ │ │ └── SleepingWaitStrategy.java
│ │ │ │ │ ├── exception/
│ │ │ │ │ │ ├── AlertException.java
│ │ │ │ │ │ ├── InsufficientCapacityException.java
│ │ │ │ │ │ └── TimeoutException.java
│ │ │ │ │ ├── producer/
│ │ │ │ │ │ ├── AbstractSequencer.java
│ │ │ │ │ │ ├── MultiProducerSequencer.java
│ │ │ │ │ │ ├── Sequencer.java
│ │ │ │ │ │ └── SingleProducerSequencer.java
│ │ │ │ │ └── utils/
│ │ │ │ │ └── Util.java
│ │ │ │ ├── row/
│ │ │ │ │ ├── BufferHolder.java
│ │ │ │ │ ├── StructType.java
│ │ │ │ │ ├── UnsafeRow.java
│ │ │ │ │ └── UnsafeRowWriter.java
│ │ │ │ ├── storage/
│ │ │ │ │ ├── ConnectionId.java
│ │ │ │ │ ├── DataNodeDiskManager.java
│ │ │ │ │ ├── DataNodeFileManager.java
│ │ │ │ │ ├── DeserializationStream.java
│ │ │ │ │ ├── DiskRowWriter.java
│ │ │ │ │ ├── DummySerializerInstance.java
│ │ │ │ │ ├── SerializationStream.java
│ │ │ │ │ ├── SerializerInstance.java
│ │ │ │ │ ├── SerializerManager.java
│ │ │ │ │ ├── TempDataNodeId.java
│ │ │ │ │ └── TimeTrackingOutputStream.java
│ │ │ │ ├── types/
│ │ │ │ │ ├── ByteArray.java
│ │ │ │ │ ├── CalendarInterval.java
│ │ │ │ │ └── UTF8String.java
│ │ │ │ └── utils/
│ │ │ │ ├── ByteUnit.java
│ │ │ │ ├── BytesTools.java
│ │ │ │ ├── JavaUtils.java
│ │ │ │ ├── MycatPropertyConf.java
│ │ │ │ └── sort/
│ │ │ │ ├── AbstractScalaRowIterator.java
│ │ │ │ ├── PrefixComparator.java
│ │ │ │ ├── PrefixComparators.java
│ │ │ │ ├── RadixSort.java
│ │ │ │ ├── RecordComparator.java
│ │ │ │ ├── RecordPointerAndKeyPrefix.java
│ │ │ │ ├── RowPrefixComputer.java
│ │ │ │ ├── SortDataFormat.java
│ │ │ │ ├── SortPrefixUtils.java
│ │ │ │ ├── Sorter.java
│ │ │ │ ├── TestSorter.java
│ │ │ │ ├── TimSort.java
│ │ │ │ ├── UnsafeExternalRowSorter.java
│ │ │ │ ├── UnsafeExternalSorter.java
│ │ │ │ ├── UnsafeInMemorySorter.java
│ │ │ │ ├── UnsafeKVExternalSorter.java
│ │ │ │ ├── UnsafeKeyValueSorter.java
│ │ │ │ ├── UnsafeRowsMerger.java
│ │ │ │ ├── UnsafeSortDataFormat.java
│ │ │ │ ├── UnsafeSorterIterator.java
│ │ │ │ ├── UnsafeSorterSpillMerger.java
│ │ │ │ ├── UnsafeSorterSpillReader.java
│ │ │ │ └── UnsafeSorterSpillWriter.java
│ │ │ ├── migrate/
│ │ │ │ ├── BinlogIdleCheck.java
│ │ │ │ ├── BinlogStream.java
│ │ │ │ ├── BinlogStreamHoder.java
│ │ │ │ ├── MigrateDumpRunner.java
│ │ │ │ ├── MigrateMainRunner.java
│ │ │ │ ├── MigrateTask.java
│ │ │ │ ├── MigrateTaskWatch.java
│ │ │ │ ├── MigrateUtils.java
│ │ │ │ ├── SqlExecuteListener.java
│ │ │ │ ├── SwitchCleanListener.java
│ │ │ │ ├── SwitchCommitListener.java
│ │ │ │ ├── SwitchPrepareCheckRunner.java
│ │ │ │ ├── SwitchPrepareListener.java
│ │ │ │ ├── TaskNode.java
│ │ │ │ └── TaskStatus.java
│ │ │ ├── net/
│ │ │ │ ├── AIOAcceptor.java
│ │ │ │ ├── AIOConnector.java
│ │ │ │ ├── AIOSocketWR.java
│ │ │ │ ├── AbstractConnection.java
│ │ │ │ ├── BIOConnection.java
│ │ │ │ ├── BackendAIOConnection.java
│ │ │ │ ├── ClosableConnection.java
│ │ │ │ ├── ConnectionException.java
│ │ │ │ ├── FrontendConnection.java
│ │ │ │ ├── NIOAcceptor.java
│ │ │ │ ├── NIOConnection.java
│ │ │ │ ├── NIOConnector.java
│ │ │ │ ├── NIOHandler.java
│ │ │ │ ├── NIOProcessor.java
│ │ │ │ ├── NIOReactor.java
│ │ │ │ ├── NIOReactorPool.java
│ │ │ │ ├── NIOSocketWR.java
│ │ │ │ ├── SocketAcceptor.java
│ │ │ │ ├── SocketConnector.java
│ │ │ │ ├── SocketWR.java
│ │ │ │ ├── WriteEventCheckRunner.java
│ │ │ │ ├── factory/
│ │ │ │ │ ├── BackendConnectionFactory.java
│ │ │ │ │ └── FrontendConnectionFactory.java
│ │ │ │ ├── handler/
│ │ │ │ │ ├── BackendAsyncHandler.java
│ │ │ │ │ ├── FrontendAuthenticator.java
│ │ │ │ │ ├── FrontendCommandHandler.java
│ │ │ │ │ ├── FrontendPrepareHandler.java
│ │ │ │ │ ├── FrontendPrivileges.java
│ │ │ │ │ ├── FrontendQueryHandler.java
│ │ │ │ │ └── LoadDataInfileHandler.java
│ │ │ │ ├── mysql/
│ │ │ │ │ ├── AuthPacket.java
│ │ │ │ │ ├── AuthSwitchPacket.java
│ │ │ │ │ ├── BinaryPacket.java
│ │ │ │ │ ├── BinaryRowDataPacket.java
│ │ │ │ │ ├── CommandPacket.java
│ │ │ │ │ ├── EOFPacket.java
│ │ │ │ │ ├── EmptyPacket.java
│ │ │ │ │ ├── ErrorPacket.java
│ │ │ │ │ ├── ExecutePacket.java
│ │ │ │ │ ├── FieldPacket.java
│ │ │ │ │ ├── HandshakePacket.java
│ │ │ │ │ ├── HandshakeV10Packet.java
│ │ │ │ │ ├── HeartbeatPacket.java
│ │ │ │ │ ├── LongDataPacket.java
│ │ │ │ │ ├── MySQLPacket.java
│ │ │ │ │ ├── OkPacket.java
│ │ │ │ │ ├── PingPacket.java
│ │ │ │ │ ├── PreparedOkPacket.java
│ │ │ │ │ ├── QuitPacket.java
│ │ │ │ │ ├── Reply323Packet.java
│ │ │ │ │ ├── RequestFilePacket.java
│ │ │ │ │ ├── ResetPacket.java
│ │ │ │ │ ├── ResultSetHeaderPacket.java
│ │ │ │ │ ├── RowDataPacket.java
│ │ │ │ │ └── StatusFlags.java
│ │ │ │ └── postgres/
│ │ │ │ ├── AuthenticationCleartextPassword.java
│ │ │ │ ├── AuthenticationGSS.java
│ │ │ │ ├── AuthenticationGSSContinue.java
│ │ │ │ ├── AuthenticationKerberosV5.java
│ │ │ │ ├── AuthenticationMD5Password.java
│ │ │ │ ├── AuthenticationOk.java
│ │ │ │ ├── AuthenticationSCMCredential.java
│ │ │ │ ├── AuthenticationSSPI.java
│ │ │ │ ├── BackendKeyData.java
│ │ │ │ ├── Bind.java
│ │ │ │ ├── BindComplete.java
│ │ │ │ ├── CancelRequest.java
│ │ │ │ ├── Close.java
│ │ │ │ ├── CloseComplete.java
│ │ │ │ ├── CommandComplete.java
│ │ │ │ ├── CopyBothResponse.java
│ │ │ │ ├── CopyData.java
│ │ │ │ ├── CopyDone.java
│ │ │ │ ├── CopyFail.java
│ │ │ │ ├── CopyInResponse.java
│ │ │ │ ├── CopyOutResponse.java
│ │ │ │ ├── DataRow.java
│ │ │ │ ├── Describe.java
│ │ │ │ ├── EmptyQueryResponse.java
│ │ │ │ ├── ErrorResponse.java
│ │ │ │ ├── Execute.java
│ │ │ │ ├── Flush.java
│ │ │ │ ├── FunctionCall.java
│ │ │ │ ├── FunctionCallResponse.java
│ │ │ │ ├── NoData.java
│ │ │ │ ├── NoticeResponse.java
│ │ │ │ ├── NotificationResponse.java
│ │ │ │ ├── ParameterDescription.java
│ │ │ │ ├── ParameterStatus.java
│ │ │ │ ├── Parse.java
│ │ │ │ ├── ParseComplete.java
│ │ │ │ ├── PasswordMessage.java
│ │ │ │ ├── PortalSuspended.java
│ │ │ │ ├── PostgresPacket.java
│ │ │ │ ├── Query.java
│ │ │ │ ├── ReadyForQuery.java
│ │ │ │ ├── RowDescription.java
│ │ │ │ ├── SSLRequest.java
│ │ │ │ ├── StartupMessage.java
│ │ │ │ ├── Sync.java
│ │ │ │ └── Terminate.java
│ │ │ ├── route/
│ │ │ │ ├── MyCATSequnceProcessor.java
│ │ │ │ ├── Procedure.java
│ │ │ │ ├── ProcedureParameter.java
│ │ │ │ ├── RouteCheckRule.java
│ │ │ │ ├── RouteResultset.java
│ │ │ │ ├── RouteResultsetNode.java
│ │ │ │ ├── RouteService.java
│ │ │ │ ├── RouteStrategy.java
│ │ │ │ ├── SQLMerge.java
│ │ │ │ ├── SessionSQLPair.java
│ │ │ │ ├── factory/
│ │ │ │ │ └── RouteStrategyFactory.java
│ │ │ │ ├── function/
│ │ │ │ │ ├── AbstractPartitionAlgorithm.java
│ │ │ │ │ ├── AutoPartitionByLong.java
│ │ │ │ │ ├── LatestMonthPartion.java
│ │ │ │ │ ├── NumberParseUtil.java
│ │ │ │ │ ├── PartitionByCRC32PreSlot.java
│ │ │ │ │ ├── PartitionByDate.java
│ │ │ │ │ ├── PartitionByFileMap.java
│ │ │ │ │ ├── PartitionByHashMod.java
│ │ │ │ │ ├── PartitionByHotDate.java
│ │ │ │ │ ├── PartitionByJumpConsistentHash.java
│ │ │ │ │ ├── PartitionByLong.java
│ │ │ │ │ ├── PartitionByMod.java
│ │ │ │ │ ├── PartitionByMonth.java
│ │ │ │ │ ├── PartitionByMonthAndHistory.java
│ │ │ │ │ ├── PartitionByMurmurHash.java
│ │ │ │ │ ├── PartitionByPattern.java
│ │ │ │ │ ├── PartitionByPrefixPattern.java
│ │ │ │ │ ├── PartitionByRangeDateHash.java
│ │ │ │ │ ├── PartitionByRangeMod.java
│ │ │ │ │ ├── PartitionByString.java
│ │ │ │ │ ├── PartitionDirectBySubString.java
│ │ │ │ │ ├── PureJavaCrc32.java
│ │ │ │ │ ├── ReloadFunction.java
│ │ │ │ │ ├── SlotFunction.java
│ │ │ │ │ └── TableRuleAware.java
│ │ │ │ ├── handler/
│ │ │ │ │ ├── HintCatletHandler.java
│ │ │ │ │ ├── HintDataNodeHandler.java
│ │ │ │ │ ├── HintHandler.java
│ │ │ │ │ ├── HintHandlerFactory.java
│ │ │ │ │ ├── HintMasterDBHandler.java
│ │ │ │ │ ├── HintSQLHandler.java
│ │ │ │ │ └── HintSchemaHandler.java
│ │ │ │ ├── impl/
│ │ │ │ │ ├── AbstractRouteStrategy.java
│ │ │ │ │ ├── DruidMycatRouteStrategy.java
│ │ │ │ │ └── middlerResultStrategy/
│ │ │ │ │ ├── BinaryOpResultHandler.java
│ │ │ │ │ ├── InSubQueryResultHandler.java
│ │ │ │ │ ├── RouteMiddlerReaultHandler.java
│ │ │ │ │ ├── SQLAllResultHandler.java
│ │ │ │ │ ├── SQLExistsResultHandler.java
│ │ │ │ │ └── SQLQueryResultHandler.java
│ │ │ │ ├── parser/
│ │ │ │ │ ├── ManagerParse.java
│ │ │ │ │ ├── ManagerParseClear.java
│ │ │ │ │ ├── ManagerParseHeartbeat.java
│ │ │ │ │ ├── ManagerParseKill.java
│ │ │ │ │ ├── ManagerParseReload.java
│ │ │ │ │ ├── ManagerParseRollback.java
│ │ │ │ │ ├── ManagerParseSelect.java
│ │ │ │ │ ├── ManagerParseShow.java
│ │ │ │ │ ├── ManagerParseStop.java
│ │ │ │ │ ├── ManagerParseSwitch.java
│ │ │ │ │ ├── druid/
│ │ │ │ │ │ ├── DruidParser.java
│ │ │ │ │ │ ├── DruidParserFactory.java
│ │ │ │ │ │ ├── DruidSequenceHandler.java
│ │ │ │ │ │ ├── DruidShardingParseInfo.java
│ │ │ │ │ │ ├── LoadDataOutputVisitor.java
│ │ │ │ │ │ ├── LoadDataStatement.java
│ │ │ │ │ │ ├── MycatExprParser.java
│ │ │ │ │ │ ├── MycatLexer.java
│ │ │ │ │ │ ├── MycatSchemaStatVisitor.java
│ │ │ │ │ │ ├── MycatSelectParser.java
│ │ │ │ │ │ ├── MycatStatementParser.java
│ │ │ │ │ │ ├── MycatSubQueryVisitor.java
│ │ │ │ │ │ ├── RouteCalculateUnit.java
│ │ │ │ │ │ ├── SchemaStatVisitorFactory.java
│ │ │ │ │ │ ├── SqlMethodInvocationHandler.java
│ │ │ │ │ │ ├── SqlMethodInvocationHandlerFactory.java
│ │ │ │ │ │ ├── WhereUnit.java
│ │ │ │ │ │ └── impl/
│ │ │ │ │ │ ├── DefaultDruidParser.java
│ │ │ │ │ │ ├── DruidAlterTableParser.java
│ │ │ │ │ │ ├── DruidCreateTableParser.java
│ │ │ │ │ │ ├── DruidDeleteParser.java
│ │ │ │ │ │ ├── DruidInsertParser.java
│ │ │ │ │ │ ├── DruidLockTableParser.java
│ │ │ │ │ │ ├── DruidSelectDb2Parser.java
│ │ │ │ │ │ ├── DruidSelectOracleParser.java
│ │ │ │ │ │ ├── DruidSelectParser.java
│ │ │ │ │ │ ├── DruidSelectPostgresqlParser.java
│ │ │ │ │ │ ├── DruidSelectSqlServerParser.java
│ │ │ │ │ │ ├── DruidUpdateParser.java
│ │ │ │ │ │ ├── MysqlMethodInvocationHandler.java
│ │ │ │ │ │ ├── OracleMethodInvocationHandler.java
│ │ │ │ │ │ └── PgsqlMethodInvocationHandler.java
│ │ │ │ │ ├── primitive/
│ │ │ │ │ │ ├── FunctionParser.java
│ │ │ │ │ │ └── Model/
│ │ │ │ │ │ ├── Commons.java
│ │ │ │ │ │ ├── Field.java
│ │ │ │ │ │ ├── Function.java
│ │ │ │ │ │ └── Identifier.java
│ │ │ │ │ └── util/
│ │ │ │ │ ├── ArrayUtil.java
│ │ │ │ │ ├── CharTypes.java
│ │ │ │ │ ├── PageSQLUtil.java
│ │ │ │ │ ├── Pair.java
│ │ │ │ │ ├── PairUtil.java
│ │ │ │ │ ├── ParseString.java
│ │ │ │ │ ├── ParseUtil.java
│ │ │ │ │ ├── SQLParserUtils.java
│ │ │ │ │ └── WildcardUtil.java
│ │ │ │ ├── sequence/
│ │ │ │ │ ├── BatchInsertSequence.java
│ │ │ │ │ └── handler/
│ │ │ │ │ ├── DistributedSequenceHandler.java
│ │ │ │ │ ├── HttpIncrSequenceHandler.java
│ │ │ │ │ ├── IncrSequenceBDBHandler.java
│ │ │ │ │ ├── IncrSequenceHandler.java
│ │ │ │ │ ├── IncrSequenceMySQLHandler.java
│ │ │ │ │ ├── IncrSequencePropHandler.java
│ │ │ │ │ ├── IncrSequenceTimeHandler.java
│ │ │ │ │ ├── IncrSequenceZKHandler.java
│ │ │ │ │ ├── SequenceHandler.java
│ │ │ │ │ ├── SequenceVal.java
│ │ │ │ │ ├── SnowflakeIdSequenceHandler.java
│ │ │ │ │ └── ThirftClientSequenceHandler.java
│ │ │ │ └── util/
│ │ │ │ ├── CacheUtil.java
│ │ │ │ ├── PartitionUtil.java
│ │ │ │ ├── PropertiesUtil.java
│ │ │ │ └── RouterUtil.java
│ │ │ ├── server/
│ │ │ │ ├── NonBlockingSession.java
│ │ │ │ ├── ServerConnection.java
│ │ │ │ ├── ServerConnectionFactory.java
│ │ │ │ ├── ServerQueryHandler.java
│ │ │ │ ├── Session.java
│ │ │ │ ├── handler/
│ │ │ │ │ ├── BeginHandler.java
│ │ │ │ │ ├── CommandHandler.java
│ │ │ │ │ ├── Explain2Handler.java
│ │ │ │ │ ├── ExplainHandler.java
│ │ │ │ │ ├── KillHandler.java
│ │ │ │ │ ├── MigrateHandler.java
│ │ │ │ │ ├── MysqlInformationSchemaHandler.java
│ │ │ │ │ ├── MysqlProcHandler.java
│ │ │ │ │ ├── SavepointHandler.java
│ │ │ │ │ ├── SelectHandler.java
│ │ │ │ │ ├── ServerLoadDataInfileHandler.java
│ │ │ │ │ ├── ServerPrepareHandler.java
│ │ │ │ │ ├── SetHandler.java
│ │ │ │ │ ├── ShowCache.java
│ │ │ │ │ ├── ShowHandler.java
│ │ │ │ │ ├── StartHandler.java
│ │ │ │ │ └── UseHandler.java
│ │ │ │ ├── interceptor/
│ │ │ │ │ ├── SQLInterceptor.java
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── DefaultSqlInterceptor.java
│ │ │ │ │ ├── GlobalTableUtil.java
│ │ │ │ │ ├── StatSqlInterceptor.java
│ │ │ │ │ └── StatisticsSqlInterceptor.java
│ │ │ │ ├── parser/
│ │ │ │ │ ├── ServerParse.java
│ │ │ │ │ ├── ServerParseSelect.java
│ │ │ │ │ ├── ServerParseSet.java
│ │ │ │ │ ├── ServerParseShow.java
│ │ │ │ │ └── ServerParseStart.java
│ │ │ │ ├── response/
│ │ │ │ │ ├── CharacterSet.java
│ │ │ │ │ ├── ClientHeartbeatResponse.java
│ │ │ │ │ ├── Heartbeat.java
│ │ │ │ │ ├── InformationSchemaProfiling.java
│ │ │ │ │ ├── InformationSchemaProfilingSqlyog.java
│ │ │ │ │ ├── Ping.java
│ │ │ │ │ ├── PreparedStmtResponse.java
│ │ │ │ │ ├── SelectConnnectID.java
│ │ │ │ │ ├── SelectDatabase.java
│ │ │ │ │ ├── SelectIdentity.java
│ │ │ │ │ ├── SelectLastInsertId.java
│ │ │ │ │ ├── SelectTxReadOnly.java
│ │ │ │ │ ├── SelectUser.java
│ │ │ │ │ ├── SelectVariables.java
│ │ │ │ │ ├── SelectVersion.java
│ │ │ │ │ ├── SelectVersionComment.java
│ │ │ │ │ ├── SessionIncrement.java
│ │ │ │ │ ├── SessionIsolation.java
│ │ │ │ │ ├── ShowCobarCluster.java
│ │ │ │ │ ├── ShowCobarStatus.java
│ │ │ │ │ ├── ShowDatabases.java
│ │ │ │ │ ├── ShowFullTables.java
│ │ │ │ │ ├── ShowMyCATCluster.java
│ │ │ │ │ ├── ShowMyCatStatus.java
│ │ │ │ │ └── ShowTables.java
│ │ │ │ ├── sqlcmd/
│ │ │ │ │ ├── CommitCommand.java
│ │ │ │ │ ├── SQLCmdConstant.java
│ │ │ │ │ └── SQLCtrlCommand.java
│ │ │ │ └── util/
│ │ │ │ └── SchemaUtil.java
│ │ │ ├── sqlengine/
│ │ │ │ ├── AllJobFinishedListener.java
│ │ │ │ ├── BatchSQLJob.java
│ │ │ │ ├── EngineCtx.java
│ │ │ │ ├── MultiRowSQLQueryResultHandler.java
│ │ │ │ ├── OneRawSQLQueryResultHandler.java
│ │ │ │ ├── SQLJob.java
│ │ │ │ ├── SQLJobHandler.java
│ │ │ │ ├── SQLQueryResult.java
│ │ │ │ ├── SQLQueryResultListener.java
│ │ │ │ └── mpp/
│ │ │ │ ├── AbstractDataNodeMerge.java
│ │ │ │ ├── ColMeta.java
│ │ │ │ ├── ColumnRoutePair.java
│ │ │ │ ├── DataMergeService.java
│ │ │ │ ├── DataNodeMergeManager.java
│ │ │ │ ├── HavingCols.java
│ │ │ │ ├── LoadData.java
│ │ │ │ ├── MergeCol.java
│ │ │ │ ├── OrderCol.java
│ │ │ │ ├── PackWraper.java
│ │ │ │ ├── RangRowDataPacketSorter.java
│ │ │ │ ├── RangeValue.java
│ │ │ │ ├── RowDataPacketGrouper.java
│ │ │ │ ├── RowDataPacketSorter.java
│ │ │ │ ├── UnsafeRowGrouper.java
│ │ │ │ └── model/
│ │ │ │ ├── NodeRowDataPacket.java
│ │ │ │ └── RangRowDataPacket.java
│ │ │ ├── statistic/
│ │ │ │ ├── CommandCount.java
│ │ │ │ ├── DataSourceSyncRecorder.java
│ │ │ │ ├── HeartbeatRecorder.java
│ │ │ │ ├── SQLRecord.java
│ │ │ │ ├── SQLRecorder.java
│ │ │ │ └── stat/
│ │ │ │ ├── Histogram.java
│ │ │ │ ├── HostStatAnalyzer.java
│ │ │ │ ├── QueryConditionAnalyzer.java
│ │ │ │ ├── QueryResult.java
│ │ │ │ ├── QueryResultDispatcher.java
│ │ │ │ ├── QueryResultListener.java
│ │ │ │ ├── SqlFrequency.java
│ │ │ │ ├── SqlResultSet.java
│ │ │ │ ├── SqlResultSizeRecorder.java
│ │ │ │ ├── TableStat.java
│ │ │ │ ├── TableStatAnalyzer.java
│ │ │ │ ├── UserSqlHighStat.java
│ │ │ │ ├── UserSqlLargeStat.java
│ │ │ │ ├── UserSqlLastStat.java
│ │ │ │ ├── UserSqlRWStat.java
│ │ │ │ ├── UserStat.java
│ │ │ │ └── UserStatAnalyzer.java
│ │ │ └── util/
│ │ │ ├── ByteBufferUtil.java
│ │ │ ├── ByteUtil.java
│ │ │ ├── CircularArrayList.java
│ │ │ ├── CollectionUtil.java
│ │ │ ├── CompareUtil.java
│ │ │ ├── CompressUtil.java
│ │ │ ├── DateUtil.java
│ │ │ ├── DecryptUtil.java
│ │ │ ├── ExecutorUtil.java
│ │ │ ├── FastByteOperations.java
│ │ │ ├── FormatUtil.java
│ │ │ ├── HexFormatUtil.java
│ │ │ ├── IntegerUtil.java
│ │ │ ├── LogUtil.java
│ │ │ ├── LongUtil.java
│ │ │ ├── MysqlDefs.java
│ │ │ ├── NameableExecutor.java
│ │ │ ├── NameableThreadFactory.java
│ │ │ ├── ObjectUtil.java
│ │ │ ├── ProcessUtil.java
│ │ │ ├── RandomUtil.java
│ │ │ ├── ResultSetUtil.java
│ │ │ ├── SelectorUtil.java
│ │ │ ├── SetIgnoreUtil.java
│ │ │ ├── SmallSet.java
│ │ │ ├── SplitUtil.java
│ │ │ ├── StreamGobble.java
│ │ │ ├── StringUtil.java
│ │ │ ├── TimeUtil.java
│ │ │ ├── ZKUtils.java
│ │ │ ├── cmd/
│ │ │ │ └── CmdArgs.java
│ │ │ ├── dataMigrator/
│ │ │ │ ├── ConfigComparer.java
│ │ │ │ ├── DataClearRunner.java
│ │ │ │ ├── DataIO.java
│ │ │ │ ├── DataIOFactory.java
│ │ │ │ ├── DataMigrateRunner.java
│ │ │ │ ├── DataMigrator.java
│ │ │ │ ├── DataMigratorArgs.java
│ │ │ │ ├── DataMigratorUtil.java
│ │ │ │ ├── DataNode.java
│ │ │ │ ├── DataNodeClearGroup.java
│ │ │ │ ├── DataNodeMigrateInfo.java
│ │ │ │ ├── MigratorConditonFilesMaker.java
│ │ │ │ ├── TableMigrateInfo.java
│ │ │ │ └── dataIOImpl/
│ │ │ │ └── MysqlDataIO.java
│ │ │ ├── exception/
│ │ │ │ ├── DataMigratorException.java
│ │ │ │ ├── ErrorPacketException.java
│ │ │ │ ├── HeartbeatException.java
│ │ │ │ ├── MurmurHashException.java
│ │ │ │ ├── RehashException.java
│ │ │ │ ├── UnknownCharsetException.java
│ │ │ │ ├── UnknownDataNodeException.java
│ │ │ │ ├── UnknownPacketException.java
│ │ │ │ └── UnknownTxIsolationException.java
│ │ │ └── rehasher/
│ │ │ ├── HashType.java
│ │ │ ├── RehashCmdArgs.java
│ │ │ └── RehashLauncher.java
│ │ └── resources/
│ │ ├── auto-sharding-long.txt
│ │ ├── auto-sharding-rang-mod.txt
│ │ ├── autopartition-long.txt
│ │ ├── cacheservice.properties
│ │ ├── dbseq - utf8mb4.sql
│ │ ├── dbseq.sql
│ │ ├── ehcache.xml
│ │ ├── index_to_charset.properties
│ │ ├── log4j2.xml
│ │ ├── migrateTables.properties
│ │ ├── myid.properties
│ │ ├── partition-hash-int.txt
│ │ ├── partition-range-mod.txt
│ │ ├── rule.dtd
│ │ ├── rule.xml
│ │ ├── schema.dtd
│ │ ├── schema.xml
│ │ ├── sequence_conf.properties
│ │ ├── sequence_db_conf.properties
│ │ ├── sequence_distributed_conf.properties
│ │ ├── sequence_http_conf.properties
│ │ ├── sequence_time_conf.properties
│ │ ├── server.dtd
│ │ ├── server.xml
│ │ ├── sharding-by-enum.txt
│ │ ├── zkconf/
│ │ │ ├── auto-sharding-long.txt
│ │ │ ├── auto-sharding-rang-mod.txt
│ │ │ ├── autopartition-long.txt
│ │ │ ├── cacheservice.properties
│ │ │ ├── ehcache.xml
│ │ │ ├── index_to_charset.properties
│ │ │ ├── partition-hash-int.txt
│ │ │ ├── partition-range-mod.txt
│ │ │ ├── rule.xml
│ │ │ ├── schema.xml
│ │ │ ├── sequence_conf.properties
│ │ │ ├── sequence_db_conf.properties
│ │ │ ├── sequence_distributed_conf-mycat_fz_01.properties
│ │ │ ├── sequence_distributed_conf.properties
│ │ │ ├── sequence_time_conf-mycat_fz_01.properties
│ │ │ ├── sequence_time_conf.properties
│ │ │ ├── server-mycat_fz_01.xml
│ │ │ ├── server.xml
│ │ │ └── sharding-by-enum.txt
│ │ └── zkdownload/
│ │ └── auto-sharding-long.txt
│ └── test/
│ ├── java/
│ │ ├── demo/
│ │ │ ├── catlets/
│ │ │ │ └── MyHellowJoin.java
│ │ │ └── test/
│ │ │ ├── ByteArrayToHexArray.java
│ │ │ └── TestClass1.java
│ │ └── io/
│ │ └── mycat/
│ │ ├── BufferPerformanceMain.java
│ │ ├── ConfigInitializerTest.java
│ │ ├── EchoBioServer.java
│ │ ├── ExecutorTestMain.java
│ │ ├── SimpleCachePool.java
│ │ ├── VolatileTest.java
│ │ ├── backend/
│ │ │ └── jdbc/
│ │ │ └── mongodb/
│ │ │ ├── MongoClientPropertyHelperTest.java
│ │ │ └── MongoEmbeddedObjectProcessorTest.java
│ │ ├── buffer/
│ │ │ ├── TestByteBufferArena.java
│ │ │ ├── TestDirectByteBufferPool.java
│ │ │ └── TestMycatMemoryAlloctor.java
│ │ ├── cache/
│ │ │ ├── DefaultLayedCachePoolTest.java
│ │ │ ├── EnCachePoolTest.java
│ │ │ └── TestCachePoolPerformance.java
│ │ ├── classload/
│ │ │ └── TestDynClassLoad.java
│ │ ├── config/
│ │ │ └── ConfigTest.java
│ │ ├── heartbeat/
│ │ │ ├── HeartbeatConfigForTest.java
│ │ │ ├── HeartbeatContext.java
│ │ │ └── HeartbeatStartup.java
│ │ ├── memory/
│ │ │ └── unsafe/
│ │ │ ├── PlatformUtilSuite.java
│ │ │ ├── array/
│ │ │ │ └── LongArraySuite.java
│ │ │ ├── hash/
│ │ │ │ └── Murmur3_x86_32Suite.java
│ │ │ ├── map/
│ │ │ │ ├── AbstractBytesToBytesMapSuite.java
│ │ │ │ ├── BytesToBytesMapOffHeapSuite.java
│ │ │ │ ├── BytesToBytesMapOnHeapSuite.java
│ │ │ │ ├── MapSorterByValueTest.java
│ │ │ │ └── UnsafeFixedWidthAggregationMapSuite.java
│ │ │ ├── memory/
│ │ │ │ ├── MemoryManagerSuite.java
│ │ │ │ ├── MycatMemoryTest.java
│ │ │ │ ├── TaskMemoryManagerSuite.java
│ │ │ │ ├── TestMemoryConsumer.java
│ │ │ │ └── TestMemoryManager.java
│ │ │ ├── row/
│ │ │ │ ├── UnsafeRowListTest.java
│ │ │ │ └── UnsafeRowSuite.java
│ │ │ ├── sort/
│ │ │ │ ├── HashPartitioner.java
│ │ │ │ ├── TestTimSort.java
│ │ │ │ ├── UnsafeExternalRowSorterTest.java
│ │ │ │ ├── UnsafeExternalSorterRadixSortSuite.java
│ │ │ │ ├── UnsafeExternalSorterSuite.java
│ │ │ │ ├── UnsafeInMemorySorterRadixSortSuite.java
│ │ │ │ └── UnsafeInMemorySorterSuite.java
│ │ │ ├── storage/
│ │ │ │ ├── BlockManagerTest.java
│ │ │ │ └── SerializerManagerTest.java
│ │ │ └── types/
│ │ │ ├── CalendarIntervalSuite.java
│ │ │ └── UTF8StringSuite.java
│ │ ├── migrate/
│ │ │ └── MigrateUtilsTest.java
│ │ ├── model/
│ │ │ ├── M1.java
│ │ │ ├── M1Main.java
│ │ │ ├── M2.java
│ │ │ ├── M2Main.java
│ │ │ └── TransferObject.java
│ │ ├── mpp/
│ │ │ └── TestSorter.java
│ │ ├── mysql/
│ │ │ ├── MySQLMessageTest.java
│ │ │ └── ResultSetPacketParse.java
│ │ ├── parser/
│ │ │ ├── ManagerParserTest.java
│ │ │ ├── ManagerParserTestPerf.java
│ │ │ ├── Performance.java
│ │ │ ├── ServerParseTest.java
│ │ │ ├── ServerParserTest.java
│ │ │ ├── ServerParserTestPerf.java
│ │ │ ├── TestEscapeProcess.java
│ │ │ ├── druid/
│ │ │ │ ├── DruidSelectParserTest.java
│ │ │ │ ├── DruidSequenceHandlerTest.java
│ │ │ │ ├── DruidUpdateParserTest.java
│ │ │ │ └── MycatSchemaStatVisitorTest.java
│ │ │ ├── primitive/
│ │ │ │ └── TestFunctionParser.java
│ │ │ └── util/
│ │ │ └── PairUtilTest.java
│ │ ├── performance/
│ │ │ ├── AbstractMultiTreadBatchTester.java
│ │ │ ├── GoodsInsertJob.java
│ │ │ ├── RandomDataValueUtil.java
│ │ │ ├── SimpleConPool.java
│ │ │ ├── TestGlobalTableInsertPerf.java
│ │ │ ├── TestInsertGlobalSeqPerf.java
│ │ │ ├── TestInsertPerf.java
│ │ │ ├── TestMaxConnection.java
│ │ │ ├── TestMergeSelectPerf.java
│ │ │ ├── TestMergeSorter.java
│ │ │ ├── TestRandomDataUtil.java
│ │ │ ├── TestSelectPerf.java
│ │ │ ├── TestUpdatePerf.java
│ │ │ ├── TravelRecordGlobalSeqInsertJob.java
│ │ │ ├── TravelRecordInsertJob.java
│ │ │ ├── TravelRecordMergeJob.java
│ │ │ ├── TravelRecordSelectJob.java
│ │ │ ├── TravelRecordUpdateJob.java
│ │ │ ├── UserTableInsertJob.java
│ │ │ └── UserTableSelectJob.java
│ │ ├── postgres/
│ │ │ └── PostgresTest.java
│ │ ├── queue/
│ │ │ ├── FixedQueue.java
│ │ │ ├── Queue.java
│ │ │ ├── QueuePerfMain.java
│ │ │ └── QueueSimpleMain.java
│ │ ├── route/
│ │ │ ├── .gitignore
│ │ │ ├── DDLRouteTest.java
│ │ │ ├── DQLRouteTest.java
│ │ │ ├── DeleteSqlParseTest.java
│ │ │ ├── DruidDb2SqlParserTest.java
│ │ │ ├── DruidMysqlCreateTableTest.java
│ │ │ ├── DruidMysqlHavingTest.java
│ │ │ ├── DruidMysqlRouteStrategyTest.java
│ │ │ ├── DruidMysqlSqlParserTest.java
│ │ │ ├── DruidMysqlSqlSubqueriesParserTest.java
│ │ │ ├── DruidOracleSqlParserTest.java
│ │ │ ├── DruidPostgresqlSqlParserTest.java
│ │ │ ├── DruidSqlServerSqlParserTest.java
│ │ │ ├── HintDBTypeTest.java
│ │ │ ├── HintTest.java
│ │ │ ├── TestSelectBetweenSqlParser.java
│ │ │ ├── function/
│ │ │ │ ├── AutoPartitionByLongTest.java
│ │ │ │ ├── PartitionByCRC32PreSlotTest.java
│ │ │ │ ├── PartitionByDateTest.java
│ │ │ │ ├── PartitionByHashModTest.java
│ │ │ │ ├── PartitionByHotDateTest.java
│ │ │ │ ├── PartitionByJumpConsistentHashTest.java
│ │ │ │ ├── PartitionByMonthTest.java
│ │ │ │ ├── PartitionByPatternTest.java
│ │ │ │ ├── PartitionByPrefixPatternTest.java
│ │ │ │ ├── PartitionByRangeDateHashTest.java
│ │ │ │ ├── PartitionByRangeModTest.java
│ │ │ │ ├── PartitionByStringTest.java
│ │ │ │ ├── RuleFunctionSuitTableTest.java
│ │ │ │ ├── TestLatestMonthPartion.java
│ │ │ │ └── TestNumberParseUtil.java
│ │ │ ├── parser/
│ │ │ │ └── druid/
│ │ │ │ └── impl/
│ │ │ │ └── DefaultDruidParserTest.java
│ │ │ ├── perf/
│ │ │ │ ├── NoShardingSpace.java
│ │ │ │ ├── ShardingDefaultSpace.java
│ │ │ │ └── ShardingMultiTableSpace.java
│ │ │ └── util/
│ │ │ ├── PartitionForSingle.java
│ │ │ ├── PartitionUtilTest.java
│ │ │ └── RouterUtilTest.java
│ │ ├── sequence/
│ │ │ ├── DistributedSequenceHandlerTest.java
│ │ │ ├── IncrSequenceZKHandlerTest.java
│ │ │ ├── SequenceHandlerTest.java
│ │ │ └── SequenceTest.java
│ │ ├── server/
│ │ │ ├── handler/
│ │ │ │ └── ServerHandlerTest.java
│ │ │ └── interceptor/
│ │ │ └── impl/
│ │ │ └── GlobalTableUtilTest.java
│ │ ├── sqlexecute/
│ │ │ ├── BaseSQLExeTest.java
│ │ │ ├── MultiThreadSelectTest.java
│ │ │ ├── MultiThreadSequnceTest.java
│ │ │ ├── MycatMulitJdbcVersionTest.java
│ │ │ ├── RollbackTest.java
│ │ │ ├── ServerPrepareTest.java
│ │ │ ├── StandBatchInsertTest.java
│ │ │ ├── TestJdbc.java
│ │ │ └── TestPrepareSql.java
│ │ ├── statistic/
│ │ │ ├── SQLStatisticsMain.java
│ │ │ └── TestConcurrentSafety.java
│ │ └── util/
│ │ ├── ArrayPerformanceMain.java
│ │ ├── BitTest.java
│ │ ├── ConcurrentHashMapMain.java
│ │ ├── HashMapMain.java
│ │ ├── HexFormatUtilMain.java
│ │ ├── HexFormatUtilTest.java
│ │ ├── LockPerfMain.java
│ │ ├── MapPerfMain.java
│ │ ├── SchemaUtilTest.java
│ │ ├── SmallSetTest.java
│ │ ├── SplitUtilTest.java
│ │ ├── StringHashPerfMain.java
│ │ ├── StringUtilTest.java
│ │ └── SyncPerfMain.java
│ └── resources/
│ ├── autopartition-long-dupl.txt
│ ├── autopartition-long.txt
│ ├── autopartition-long2.txt
│ ├── config/
│ │ ├── rule.xml
│ │ └── schema.xml
│ ├── ehcache.xml
│ ├── log4j2.xml
│ ├── partition-pattern.txt
│ ├── partition-range-mod.txt
│ ├── partition_prefix_pattern.txt
│ ├── route/
│ │ ├── rule.xml
│ │ └── schema.xml
│ ├── rule.xml
│ ├── schema.xml
│ ├── sequence_conf.properties
│ ├── server.xml
│ ├── sharding.txt
│ └── zk-create-test.yaml
├── test-output/
│ ├── Default suite/
│ │ ├── Default test.html
│ │ └── Default test.xml
│ ├── emailable-report.html
│ ├── index.html
│ ├── old/
│ │ ├── Default suite/
│ │ │ ├── Default test.properties
│ │ │ ├── classes.html
│ │ │ ├── groups.html
│ │ │ ├── index.html
│ │ │ ├── main.html
│ │ │ ├── methods-alphabetical.html
│ │ │ ├── methods-not-run.html
│ │ │ ├── methods.html
│ │ │ ├── reporter-output.html
│ │ │ ├── testng.xml.html
│ │ │ └── toc.html
│ │ └── index.html
│ ├── testng-reports.css
│ ├── testng-reports.js
│ ├── testng-results.xml
│ └── testng.css
├── tmlogs/
│ └── tmlog-1.log
├── version.txt
└── version.txt.template
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.md
================================================
---
name: Bug report(默认)
about: Create a report to help us improve
title: ''
labels: bug
assignees: funnyAnt
---
**1、bug描述**
简单清晰描述下bug现象.
**2、版本号(非常重要)**
v 1.6.*.*
**3、相关表的配置信息**
schema.xml (需包含表的配置信息,mysql的连接驱动是JDBC还是native方式)
rule.xml (涉及到的路由函数)
server.xml(可选)
**4、操作步骤**
1. '...'
2. '....'
3. ...
**5、期望结果**
A clear and concise description of what you expected to happen.
**6、实际结果**
A clear and concise description of what actually happened.
**7、额外信息**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/new_feture.md
================================================
---
name: 功能建议
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: funnyAnt, junwen12221
---
**问题描述**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**描述您想要的结果及解决方案**
A clear and concise description of what you want to happen.
**额外内容**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/others.md
================================================
---
name: 其他(如使用方法,配置参数等)
about: Describe this issue template's purpose here.
title: ''
labels: help wanted
assignees: ''
---
**描述你使用过程中遇到的问题: **
================================================
FILE: .gitignore
================================================
### Eclipse template
*.pydevproject
.metadata
.gradle
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
# Eclipse Core
.project
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Java annotation processor (APT)
.factorypath
# PDT-specific
.buildpath
# sbteclipse plugin
.target
# TeXlipse plugin
.texlipse
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion
*.iml
## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:
# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries
# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml
# Gradle:
# .idea/gradle.xml
# .idea/libraries
# Mongo Explorer plugin:
# .idea/mongoSettings.xml
## File-based project format:
*.ipr
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
### Java template
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
/project/project/
/project/target/
/project/activator-*
/logs/
/RUNNING_PID
.DS_Store
/target/
/conf/
================================================
FILE: .travis.yml
================================================
language: java
jdk:
- openjdk7
- oraclejdk7
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Launch)-MycatStartup<Mycat-server>",
"request": "launch",
"mainClass": "io.mycat.MycatStartup",
"projectName": "Mycat-server",
"vmArgs": "-server -Xms2G -Xmx2G -XX:MaxMetaspaceSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G -DMYCAT_HOME=${workspaceFolder} ",
"args": "$"
},
]
}
================================================
FILE: .vscode/settings.json
================================================
{
"java.format.settings.url": "${workspaceFolder}/eclipse-java-google-style.xml"
}
================================================
FILE: Dockerfile
================================================
FROM docker.io/adoptopenjdk/openjdk8:latest
ADD http://dl.mycat.io/1.6.6.1/Mycat-server-1.6.6.1-release-20180908155252-linux.tar.gz /usr/local
RUN cd /usr/local && tar -zxvf Mycat-server-1.6.6.1-release-20180908155252-linux.tar.gz && ls -lna
VOLUME /usr/local/mycat/conf
VOLUME /usr/local/mycat/logs
EXPOSE 8066 9066
CMD ["/usr/local/mycat/bin/mycat", "console"]
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: README.md
================================================
# Mycat1
官网: http://mycatone.top
[gitee](https://gitee.com/MycatOne/Mycat-Server)
[github](https://github.com/MyCATApache/Mycat-Server)
提交代码,可以开issue,写清楚代码改动或者联系qq:1019100252
mycat1.6权威指南
[yuque](https://www.yuque.com/books/share/0576de75-ffc4-4c34-8586-952ae4636944)
[pdf](http://mycat.org.cn/document/mycat-definitive-guide.pdf)
客户端连接配置
[gitee](https://gitee.com/MycatOne/Mycat-Server/wiki/%E5%BC%80%E5%8F%91%E7%AF%87%EF%BC%9A1.0-%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E9%85%8D%E7%BD%AE)
[github](https://github.com/MyCATApache/Mycat-Server/wiki/%E5%BC%80%E5%8F%91%E7%AF%87%EF%BC%9A1.0-%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E9%85%8D%E7%BD%AE)
[](https://starchart.cc/MyCATApache/Mycat-Server)
Mycat志愿者开发群:332702697,106088787
[](https://github.com/MyCATApache/Mycat-Server/issues)
[](https://github.com/MyCATApache/Mycat-Server/network)
[](https://github.com/MyCATApache/Mycat-Server/stargazers)
[](http://mycat.io/)
MyCAT is an Open-Source software, “a large database cluster” oriented to enterprises. MyCAT is an enforced database which is a replacement for MySQL and supports transaction and ACID. Regarded as MySQL cluster of enterprise database, MyCAT can take the place of expensive Oracle cluster. MyCAT is also a new type of database, which seems like a SQL Server integrated with the memory cache technology, NoSQL technology and HDFS big data. And as a new modern enterprise database product, MyCAT is combined with the traditional database and new distributed data warehouse. In a word, MyCAT is a fresh new middleware of database.
Mycat’s target is to smoothly migrate the current stand-alone database and applications to cloud side with low cost and to solve the bottleneck problem caused by the rapid growth of data storage and business scale.
2020年1月1日合拼了一个PR,优化PartionByLong的分片算法,数据不均衡的问题,所以该分片算法与此前的PartionByLong的数据分布不一致,即1.675之后与之前的版本不兼容
MyCAT1.6不支持一个SQL包含多个语句
旧Mycat升级fastjson,把pom.xml中fastjson的版本更改即可
1.6的bug:
批处理插入,多语句,堆外合拼,请大家要避开这些功能
全局序列号语法
```sql
INSERT INTO `travelrecord` (`id`,user_id) VALUES ('next value for MYCATSEQ_GLOBAL',"xxx");
```
更新Druid 1.1.10版本的分支独立维护在
[gitee](https://gitee.com/MycatOne/Mycat-Server/tree/1.6.6-druid)
[github](https://github.com/MyCATApache/Mycat-Server/tree/1.6.6-druid)
* Getting Started
* [gitee](https://gitee.com/mirrors_MyCATApache/Mycat-doc/tree/master/en)
* [github](https://github.com/MyCATApache/Mycat-doc/tree/master/en)
* 尝试 MyCAT
* [gitee](https://gitee.com/mirrors_MyCATApache/Mycat-doc/tree/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97)
* [github](https://github.com/MyCATApache/Mycat-doc/tree/master/%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97)
## Features
* Supports SQL 92 standard
* Supports MySQL cluster, used as a Proxy
* Supports JDBC connection with ORACLE, DB2, SQL Server, simulated as normal MySQL Server connection
* Supports MySQL cluster, percona cluster or mariadb cluster, providing high availability of data fragmentation clusters
* Supports automatic failover and high availability
* Supports separation of read and write, dual-master with multi-slave, single-master with multi-master of MySQL model
* Supports global table, automatically fragment data into multiple nodes for efficient relational query
* Supports the unique fragmentation strategy based on ER-relation for efficient relational query
* Supports multiple platforms, easy deployment and implementation
## Advantage
* Based on Alibaba's open-source project Cobar [github](https://github.com/alibaba/cobar),[gitee](https://gitee.com/mirrors_alibaba/cobar), whose stability, reliability, excellent architecture and performance, as well as many mature use-cases make MyCAT have a good starting. Standing on the shoulders of giants, MyCAT feels confident enough to go farther.
* Extensively drawing on the best open-source projects and innovative ideas, which are integrated into the Mycat’s gene, make MyCAT be ahead of the other current similar open-source projects, even beyond some commercial products.
* MyCAT behind a strong technical team whose participants are experienced more than five years including some senior software engineer, architect, DBA, etc. Excellent technical team to ensure the product quality of Mycat.
* MyCAT does not rely on any commercial company. It’s unlike some open-source projects whose important features is enclosed in its commercial products and making open-source projects like a decoration.
## Roadmap
* On the basis of MySQL’s support, MyCAT add more support of commercial open-source database, including native support of PostgreSQL, FireBird and other open-source databases, as well as indirect support via JDBC of other non-open-source databases such as Oracle, DB2, SQL Server etc.
* More intelligent self-regulating properties, such as automatic statistical analysis of SQL, automatic creating and adjusting indexes. Based on the frequency of read and write, MyCAT automatically optimizes caching and backup strategies
* Achieve a more comprehensive monitoring and management
* Integrated with HDFS, provide SQL commands, load databases into HDFS for rapid analysis
* Integrated excellent open-source reporting tools to make MyCAT have data analysis capability
## Download
There are some compiled binary installation packages in Mycat-download project on github at [Mycat-download](http://dl.mycat.org.cn/1.6.7.6/).
## Document
There are some documents in Mycat-doc project on github at [Mycat-doc]
[gitee](https://gitee.com/mirrors_MyCATApache/Mycat-doc)
[github](https://github.com/MyCATApache/Mycat-doc)
Mycat 简单demo,具体参考Mycat权威指南
# Mycat前世今生
2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,及其使用限制,经过Mycat发起人第一次改良,第一代改良版——Mycat诞生。 Mycat开源以后,一些Cobar的用户参与了Mycat的开发,最终Mycat发展成为一个由众多软件公司的实力派架构师和资深开发人员维护的社区型开源软件。
2014年Mycat首次在上海的《中华架构师》大会上对外宣讲,更多的人参与进来,随后越来越多的项目采用了Mycat。
2015年5月,由核心参与者们一起编写的第一本官方权威指南《Mycat权威指南》电子版发布,累计超过500本,成为开源项目中的首创。
2015年10月为止,Mycat项目总共有16个Committer。
截至2015年11月,超过300个项目采用Mycat,涵盖银行、电信、电子商务、物流、移动应用、O2O的众多领域和公司。
截至2015年12月,超过4000名用户加群或研究讨论或测试或使用Mycat。
Mycat是基于开源cobar演变而来,我们对cobar的代码进行了彻底的重构,使用NIO重构了网络模块,并且优化了Buffer内核,增强了聚合,Join等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。1.4 版本以后 完全的脱离基本cobar内核,结合Mycat集群管理、自动扩容、智能优化,成为高性能的中间件。我们致力于开发高性能数据库中间而努力。永不收费,永不闭源,持续推动开源社区的发展。
Mycat吸引和聚集了一大批业内大数据和云计算方面的资深工程师,Mycat的发展壮大基于开源社区志愿者的持续努力,感谢社区志愿者的努力让Mycat更加强大,同时我们也欢迎社区更多的志愿者,特别是公司能够参与进来,参与Mycat的开发,一起推动社区的发展,为社区提供更好的开源中间件。
Mycat还不够强大,Mycat还有很多不足,欢迎社区志愿者的持续优化改进。
# 关键特性
支持SQL92标准
遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
基于Nio实现,有效管理线程,高并发问题。
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。
支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
支持多租户方案。
支持分布式事务(弱xa)。
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的web,命令行监控。
支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
支持密码加密
支持服务降级
支持IP白名单
支持SQL黑名单、sql注入攻击拦截
支持分表(1.6)
集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。
# Mycat安装与使用
## 下载:
具体下载哪个版本以发布为准,推荐1.67.
## 安装:
下载的文件直接解压即可。
## 运行:
### linux:
./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mycat install 添加到系统自动启动(暂未实现)
./mycat remove 取消随系统自动启动(暂未实现)
./mycat restart 重启服务
./mycat pause 暂停
./mycat status 查看启动状态
### win:
直接运行startup_nowrap.bat,如果出现闪退,在cmd 命令行运行,查看出错原因。
## 内存配置:
启动前,一般需要修改JVM配置参数,打开conf/wrapper.conf文件,如下行的内容为2G和2048,可根据本机配置情况修改为512M或其它值。
以下配置跟jvm参数完全一致,可以根据自己的jvm参数调整。
Java Additional Parameters
wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
#wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
wrapper.java.additional.5=-XX:MaxDirectMemorySize=100m
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Xmx100m
wrapper.java.additional.11=-Xms100m
wrapper.java.additional.12=-XX:+UseParNewGC
wrapper.java.additional.13=-XX:+UseConcMarkSweepGC
wrapper.java.additional.14=-XX:+UseCMSCompactAtFullCollection
wrapper.java.additional.15=-XX:CMSFullGCsBeforeCompaction=0
wrapper.java.additional.16=-XX:CMSInitiatingOccupancyFraction=70
以下配置作废:
wrapper.java.initmemory=3
wrapper.java.maxmemory=64
### Mycat连接测试:
测试mycat与测试mysql完全一致,mysql怎么连接,mycat就怎么连接。
推荐先采用命令行测试:
mysql -uroot -proot -P8066 -h127.0.0.1
如果采用工具连接,1.4,1.3目前部分工具无法连接,会提示database not selected,建议采用高版本,navicat测试。1.5已经修复了部分工具连接。
# Mycat配置入门
## 配置:
--bin 启动目录
--conf 配置目录存放配置文件:
--server.xml:是Mycat服务器参数调整和用户授权的配置文件。
--schema.xml:是逻辑库定义和表以及分片定义的配置文件。
--rule.xml: 是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改需要重启MyCAT。
--log4j.xml: 日志存放在logs/log中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要可以调整输出级别为debug debug级别下,会输出更多的信息,方便排查问题。
--autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相关的id分片规则配置文件
--lib MyCAT自身的jar包或依赖的jar包的存放目录。
--logs MyCAT日志的存放目录。日志存放在logs/log中,每天一个文件
下面图片描述了Mycat最重要的3大配置文件:
<p>
<img src="http://songwie.com/attached/image/20160205/20160205164558_154.png" alt="">
</p>
## 逻辑库配置:
### 配置server.xml
添加两个mycat逻辑库:user,pay
system 参数是所有的mycat参数配置,比如添加解析器:defaultSqlParser,其他类推
user 是用户参数。
<system>
<property name="defaultSqlParser">druidparser</property>
</system>
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">user,pay</property>
</user>
### 编辑schema.xml
修改dataHost和schema对应的连接信息,user,pay 垂直切分后的配置如下所示:
schema 是实际逻辑库的配置,user,pay分别对应两个逻辑库,多个schema代表多个逻辑库。
dataNode是逻辑库对应的分片,如果配置多个分片只需要多个dataNode即可。
dataHost是实际的物理库配置地址,可以配置多主主从等其他配置,多个dataHost代表分片对应的物理库地址,下面的writeHost、readHost代表该分片是否配置多写,主从,读写分离等高级特性。
以下例子配置了两个writeHost为主从。
<schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="user" />
<schema name="pay" checkSQLschema="false" sqlMaxLimit="100" dataNode="pay" >
<table name="order" dataNode="pay1,pay2" rule="rule1"/>
</schema>
<dataNode name="user" dataHost="host" database="user" />
<dataNode name="pay1" dataHost="host" database="pay1" />
<dataNode name="pay2" dataHost="host" database="pay2" />
<dataHost name="host" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select 1</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="root" />
<writeHost host="hostM2" url="192.168.0.3:3306" user="root" password="root" />
</dataHost>
# Mycat逻辑库、系统参数配置
## 配置Mycat环境参数
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
</system>
</mycat:server>
如例子中配置的所有的Mycat参数变量都是配置在server.xml 文件中,system标签下配置所有的参数,如果需要配置某个变量添加相应的配置即可,例如添加启动端口8066,默认为8066:
<property name="serverPort">8066</property>
其他所有变量类似。
## 配置Mycat逻辑库与用户
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">TESTDB</property>
</user>
</mycat:server>
如例子中配置的所有的Mycat连接的用户与逻辑库映射都是配置在server.xml 文件中,user标签下配置所有的参数,例如例子中配置了一个mycat用户供应用连接到mycat,同时mycat 在schema.xml中配置后了一个逻辑库TESTDB,配置好逻辑库与用户的映射关系。
# 逻辑库、表分片配置
## 配置逻辑库(schema)
Mycat作为一个中间件,实现mysql协议,那么对前端应用连接来说就是一个数据库,也就有数据库的配置,mycat的数据库配置是在schema.xml中配置,配置好后映射到server.xml里面的用户就可以了。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
<table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>
<table name="ht_jy_login_log" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-date_jylog"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
<dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>
<dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native">
<heartbeat>show status like 'wsrep%'</heartbeat>
<writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" >
</writeHost>
</dataHost>
</mycat:schema >
上面例子配置了一个逻辑库TESTDB,同时配置了t_user,ht_jy_login_log两个分片表。
### 逻辑表配置
<table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>
table 标签 是逻辑表的配置 其中
name代表表名,
dataNode代表表对应的分片,
Mycat默认采用分库方式,也就是一个表映射到不同的库上,
rule代表表要采用的数据切分方式,名称对应到rule.xml中的对应配置,如果要分片必须配置。
## 配置分片(dataNode)
<dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
<dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>
表切分后需要配置映射到哪几个数据库中,Mycat的分片实际上就是库的别名,例如上面例子配置了两个分片dn1,dn2 分别对应到物理机映射dataHost
localhost1 的两个库上。
## 配置物理库分片映射(dataHost)
<dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native">
<heartbeat>show status like 'wsrep%'</heartbeat>
<writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" >
</writeHost>
</dataHost>
Mycat作为数据库代理需要逻辑库,逻辑用户,表切分后需要配置分片,分片也就需要映射到真实的物理主机上,至于是映射到一台还是一台的多个实例上,Mycat并不关心,只需要配置好映射即可,例如例子中:
配置了一个名为localhost1的物理主机(dataHost)映射。
heartbeat 标签代表Mycat需要对物理库心跳检测的语句,正常情况下生产案例可能配置主从,或者多写 或者单库,无论哪种情况Mycat都需要维持到数据库的数据源连接,因此需要定时检查后端连接可以性,心跳语句就是来作为心跳检测。
writeHost 此标签代表 一个逻辑主机(dataHost)对应的后端的物理主机映射,例如例子中写库hostM1 映射到127.0.0.1:3306。如果后端需要做读写分离或者多写 或者主从则通过配置 多个writeHost 或者readHost即可。
dataHost 标签中的 writeType balance 等标签则是不同的策略,具体参考指南。
# Mycat 表切分规则配置
## 表切分规则
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
<tableRule name="sharding-by-hour">
<rule>
<columns>createTime</columns>
<algorithm>sharding-by-hour</algorithm>
</rule>
</tableRule>
<function name="sharding-by-hour" class="org.opencloudb.route.function.LatestMonthPartion">
<property name="splitOneDay">24</property>
</function>
</mycat:rule >
数据切分中作为表切分规则中最重要的配置,表的切分方式决定了数据切分后的性能好坏,因此也是最重要的配置。
如上面例子配置了一个切分规则,名为sharding-by-hour 对应的切分方式(function )是按日期切分,该配置中:
### tableRule
name 为schema.xml 中table 标签中对应的 rule="sharding-by-hour" ,也就是配置表的分片规则,
columns 是表的切分字段: createTime 创建日期。
algorithm 是规则对应的切分规则:映射到function 的name。
### function
function 配置是分片规则的配置。
name 为切分规则的名称,名字任意取,但是需要与tableRule 中匹配。
class 是切分规则对应的切分类,写死,需要哪种规则则配置哪种,例如本例子是按小时分片:org.opencloudb.route.function.LatestMonthPartion
property 标签是切分规则对应的不同属性,不同的切分规则配置不同。
================================================
FILE: README_Chinese.md
================================================
### Mycat介绍
### 官网:[http://www.mycat.org.cn](http://www.mycat.org.cn)
### github:[https://github.com/MyCATApache](https://github.com/MyCATApache)
##### 入门: [zh-CN: https://github.com/MyCATApache/Mycat-doc/blob/master/history/MyCat_In_Action_%E4%B8%AD%E6%96%87%E7%89%88.doc] [English:https://github.com/MyCATApache/Mycat-doc/tree/master/en]
什么是Mycat?简单的说,Mycat就是:
* 一个彻底开源的,面向企业应用开发的“大数据库集群”
* 支持事务、ACID、可以替代MySQL的加强版数据库
* 一个可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群
* 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
* 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
* 一个新颖的数据库中间件产品
##### Mycat的目标是:
低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
##### Mycat的关键特性:
* 支持 SQL 92标准
* 支持MySQL集群,可以作为Proxy使用
* 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用
* 支持galera for MySQL集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群
* 自动故障切换,高可用性
* 支持读写分离,支持MySQL双主多从,以及一主多从的模式
* 支持全局表,数据自动分片到多个节点,用于高效表关联查询
* 支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
* 多平台支持,部署和实施简单
##### Mycat的优势:
* 基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能,以及众多成熟的使用案例使得Mycat一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。
* 广泛吸取业界优秀的开源项目和创新思路,将其融入到Mycat的基因中,使得Mycat在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。
* Mycat背后有一只强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了Mycat的产品质量。
* Mycat并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。
##### Mycat的长期路线规划:
* 在支持MySQL的基础上,后端增加更多的开源数据库和商业数据库的支持,包括原生支持PosteSQL、FireBird等开源数据库,以及通过JDBC等方式间接支持其他非开源的数据库如Oracle、DB2、SQL Server等
* 实现更为智能的自我调节特性,如自动统计分析SQL,自动创建和调整索引,根据数据表的读写频率,自动优化缓存和备份策略等
* 实现更全面的监控管理功能
* 与HDFS集成,提供SQL命令,将数据库装入HDFS中并能够快速分析
* 集成优秀的开源报表工具,使之具备一定的数据分析的能力
##### 下载:
github上面的Mycat-download项目是编译好的二进制安装包 [https://github.com/MyCATApache/Mycat-download](https://github.com/MyCATApache/Mycat-download)
##### 文档:
github上面的Mycat-doc项目是相关文档 [https://github.com/MyCATApache/Mycat-doc](https://github.com/MyCATApache/Mycat-doc)
================================================
FILE: catlet/readme.txt
================================================
put your customer Catlet class files in this dir
================================================
FILE: eclipse-java-google-style.xml
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="13">
<profile kind="CodeFormatterProfile" name="GoogleStyle" version="13">
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_cascading_method_invocation_with_arguments.count_dependent" value="16|-1|16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_prefer_two_fragments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_comment_inline_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_local_variable_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter" value="1040"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type.count_dependent" value="1585|-1|1585"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields.count_dependent" value="16|-1|16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression.count_dependent" value="16|4|80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration.count_dependent" value="16|4|48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration.count_dependent" value="16|4|49"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_cascading_method_invocation_with_arguments" value="16"/>
<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration.count_dependent" value="16|4|48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_non_simple_local_variable_annotation" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants.count_dependent" value="16|5|48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="100"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation.count_dependent" value="16|4|48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package" value="1585"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="16"/>
<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_non_simple_type_annotation" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_field_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_generic_type_arguments" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment_new_line_at_start_of_html_paragraph" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comment_prefix" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_non_simple_parameter_annotation" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method" value="1585"/>
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation.count_dependent" value="16|5|80"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter.count_dependent" value="1040|-1|1040"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package.count_dependent" value="1585|-1|1585"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.force_if_else_statement_brace" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="3"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_non_simple_package_annotation" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation.count_dependent" value="16|-1|16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type" value="1585"/>
<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_new_anonymous_class" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable.count_dependent" value="1585|-1|1585"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent" value="1585|-1|1585"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration.count_dependent" value="16|5|80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant.count_dependent" value="16|-1|16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="100"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field" value="1585"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer.count_dependent" value="16|5|80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration.count_dependent" value="16|4|48"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method.count_dependent" value="1585|-1|1585"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression.count_dependent" value="16|-1|16"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_non_simple_member_annotation" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable" value="1585"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call.count_dependent" value="16|5|80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_generic_type_arguments.count_dependent" value="16|-1|16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression.count_dependent" value="16|5|80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration.count_dependent" value="16|5|80"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_for_statement" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
</profile>
</profiles>
================================================
FILE: intellij-java-google-style.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<code_scheme name="GoogleStyle">
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</value>
</option>
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="" withSubpackages="true" static="true" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
</value>
</option>
<option name="RIGHT_MARGIN" value="100" />
<option name="JD_ALIGN_PARAM_COMMENTS" value="false" />
<option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" />
<option name="JD_P_AT_EMPTY_LINES" value="false" />
<option name="JD_KEEP_EMPTY_PARAMETER" value="false" />
<option name="JD_KEEP_EMPTY_EXCEPTION" value="false" />
<option name="JD_KEEP_EMPTY_RETURN" value="false" />
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="WRAP_COMMENTS" value="true" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<AndroidXmlCodeStyleSettings>
<option name="USE_CUSTOM_SETTINGS" value="true" />
<option name="LAYOUT_SETTINGS">
<value>
<option name="INSERT_BLANK_LINE_BEFORE_TAG" value="false" />
</value>
</option>
</AndroidXmlCodeStyleSettings>
<JSCodeStyleSettings>
<option name="INDENT_CHAINED_CALLS" value="false" />
</JSCodeStyleSettings>
<Python>
<option name="USE_CONTINUATION_INDENT_FOR_ARGUMENTS" value="true" />
</Python>
<TypeScriptCodeStyleSettings>
<option name="INDENT_CHAINED_CALLS" value="false" />
</TypeScriptCodeStyleSettings>
<XML>
<option name="XML_ALIGN_ATTRIBUTES" value="false" />
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="CSS">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="ECMA Script Level 4">
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
</codeStyleSettings>
<codeStyleSettings language="HTML">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_RESOURCES" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="WRAP_COMMENTS" value="true" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JSON">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JavaScript">
<option name="RIGHT_MARGIN" value="80" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="PROTO">
<option name="RIGHT_MARGIN" value="80" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="protobuf">
<option name="RIGHT_MARGIN" value="80" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="Python">
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="RIGHT_MARGIN" value="80" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="PARENT_SETTINGS_INSTALLED" value="true" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="SASS">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="SCSS">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="TypeScript">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="XML">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:.*Style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_width</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_height</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_weight</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_margin</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_marginTop</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_marginBottom</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_marginStart</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_marginEnd</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_marginLeft</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_marginRight</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:padding</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:paddingTop</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:paddingBottom</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:paddingStart</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:paddingEnd</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:paddingLeft</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:paddingRight</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res-auto</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/tools</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<Objective-C>
<option name="INDENT_NAMESPACE_MEMBERS" value="0" />
<option name="INDENT_C_STRUCT_MEMBERS" value="2" />
<option name="INDENT_CLASS_MEMBERS" value="2" />
<option name="INDENT_VISIBILITY_KEYWORDS" value="1" />
<option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
<option name="KEEP_STRUCTURES_IN_ONE_LINE" value="true" />
<option name="FUNCTION_PARAMETERS_WRAP" value="5" />
<option name="FUNCTION_CALL_ARGUMENTS_WRAP" value="5" />
<option name="TEMPLATE_CALL_ARGUMENTS_WRAP" value="5" />
<option name="TEMPLATE_CALL_ARGUMENTS_ALIGN_MULTILINE" value="true" />
<option name="ALIGN_INIT_LIST_IN_COLUMNS" value="false" />
<option name="SPACE_BEFORE_SUPERCLASS_COLON" value="false" />
</Objective-C>
<Objective-C-extensions>
<option name="GENERATE_INSTANCE_VARIABLES_FOR_PROPERTIES" value="ASK" />
<option name="RELEASE_STYLE" value="IVAR" />
<option name="TYPE_QUALIFIERS_PLACEMENT" value="BEFORE" />
<file>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
</file>
<class>
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
</class>
<extensions>
<pair source="cc" header="h" />
<pair source="c" header="h" />
</extensions>
</Objective-C-extensions>
<codeStyleSettings language="ObjectiveC">
<option name="RIGHT_MARGIN" value="80" />
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
<option name="BLANK_LINES_BEFORE_IMPORTS" value="0" />
<option name="BLANK_LINES_AFTER_IMPORTS" value="0" />
<option name="BLANK_LINES_AROUND_CLASS" value="0" />
<option name="BLANK_LINES_AROUND_METHOD" value="0" />
<option name="BLANK_LINES_AROUND_METHOD_IN_INTERFACE" value="0" />
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="false" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ASSIGNMENT_WRAP" value="1" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
================================================
FILE: pom.xml
================================================
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.mycat</groupId>
<artifactId>Mycat-server</artifactId>
<version>1.6.7.6-release</version>
<packaging>jar</packaging>
<name>Mycat-server</name>
<description>The project of Mycat-server</description>
<url>http://io.mycat</url>
<properties>
<app.encoding>UTF-8</app.encoding>
<!-- maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>
<buildNumber>${maven.build.timestamp}</buildNumber -->
<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
<version.template.file>version.txt.template</version.template.file>
<version.file>version.txt</version.file>
</properties>
<scm>
<connection>scm:git:ssh://apachemycat@github.com/MyCATApache/Mycat-Server.git</connection>
<developerConnection>scm:git:ssh://apachemycat@github.com/MyCATApache/Mycat-Server.git</developerConnection>
<url>scm:git:ssh://apachemycat@github.com/MyCATApache/Mycat-Server.git</url>
</scm>
<!-- repositories>
<repository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://nexus.mycat.io/content/groups/public</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://nexus.mycat.io/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Internal Snapshots</name>
<url>http://nexus.mycat.io/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement -->
<dependencies>
<!-- <dependency> <groupId>com.google.guava</groupId> <artifactId>guava-parent</artifactId>
<version>18.0</version> </dependency> -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.iq80.leveldb</groupId>
<artifactId>leveldb</artifactId>
<version>0.7</version>
</dependency>
<dependency>
<groupId>org.iq80.leveldb</groupId>
<artifactId>leveldb-api</artifactId>
<version>0.7</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-jre</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.11</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.mapdb</groupId>
<artifactId>mapdb</artifactId>
<version>1.0.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.codehaus.jsr166-mirror</groupId>
<artifactId>jsr166y</artifactId>
<version>1.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>com.univocity</groupId>
<artifactId>univocity-parsers</artifactId>
<version>2.8.4</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.sequoiadb</groupId>
<artifactId>sequoiadb-driver</artifactId>
<version>1.12</version>
</dependency>
<!--DOM4J FOR XML -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-test</artifactId>
<version>4.0.1</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
<!-- joda日期处理工具 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.github.shyiko</groupId>
<artifactId>mysql-binlog-connector-java</artifactId>
<version>0.16.1</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>com.esotericsoftware.kryo</groupId>
<artifactId>kryo</artifactId>
<version>2.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.netty/netty-buffer -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>4.1.9.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.2.2</version>
</dependency>
</dependencies>
<issueManagement>
<system>JIRA</system>
<url>http://io.mycat</url>
</issueManagement>
<build>
<!-- finalName>${artifactId}-${version}-${buildNumber}</finalName -->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/.svn/**</exclude>
</excludes>
</resource>
<resource>
<directory>${basedir}</directory>
<includes>
<include>${version.file}</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<excludes>
<exclude>**/.svn/**</exclude>
</excludes>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>replace</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<id>version</id>
<phase>process-sources</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<file>${project.basedir}/${version.template.file}</file>
<outputFile>${project.basedir}/${version.file}</outputFile>
<replacements>
<replacement>
<token>@buildnumber@</token>
<value>${buildNumber}</value>
</replacement>
<replacement>
<token>@buildtime@</token>
<value>${maven.build.timestamp}</value>
</replacement>
<replacement>
<token>@pomversion@</token>
<value>${project.version}</value>
</replacement>
<replacement>
<token>@giturl@</token>
<value>https://github.com/MyCATApache/Mycat-Server.git</value>
</replacement>
<replacement>
<token>@mycatsite@</token>
<value>http://www.mycat.org.cn</value>
</replacement>
<replacement>
<token>@qqgroup@</token>
<value>106088787</value>
</replacement>
</replacements>
</configuration>
</execution>
<execution>
<id>version2</id>
<phase>process-sources</phase>
<goals>
<goal>replace</goal>
</goals>
<configuration>
<file>${project.basedir}/src/main/java/io/mycat/config/Versions.template</file>
<outputFile>${project.basedir}/src/main/java/io/mycat/config/Versions.java</outputFile>
<replacements>
<replacement>
<token>@server-version@</token>
<value>5.6.29-mycat-${project.version}-${timestamp}</value>
</replacement>
</replacements>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>${app.encoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<configuration>
<encoding>${app.encoding}</encoding>
<attach>true</attach>
</configuration>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/.svn/**</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<!-- configuration> <finalName>${project.build.finalName}-${buildNumber}</finalName>
</configuration -->
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<sourceExcludes>
<sourceExclude>**/.svn/**</sourceExclude>
</sourceExcludes>
<downloadSources>true</downloadSources>
<outputDirectory>classes</outputDirectory>
<additionalConfig>
<file>
<name>.settings/org.eclipse.core.resources.prefs</name>
<content>
<![CDATA[eclipse.preferences.version=1${line.separator}encoding/<project>=${app.encoding}${line.separator}]]>
</content>
</file>
</additionalConfig>
</configuration>
</plugin>
<!-- -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<configurationDirectory>conf</configurationDirectory>
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
<repositoryLayout>flat</repositoryLayout>
<useWildcardClassPath>true</useWildcardClassPath>
<daemons>
<daemon>
<id>mycat</id>
<mainClass>io.mycat.MycatStartup</mainClass>
<commandLineArguments>
<commandLineArgument>start</commandLineArgument>
</commandLineArguments>
<platforms>
<platform>jsw</platform>
</platforms>
<jvmSettings>
<!-- 启动内存配置 -->
<maxStackSize>128</maxStackSize>
<systemProperties>
<systemProperty>MYCAT_HOME=.</systemProperty>
</systemProperties>
<extraArguments>
<extraArgument>-server </extraArgument>
<!--<extraArgument>-XX:MaxPermSize=64M</extraArgument>-->
<extraArgument>-XX:+AggressiveOpts</extraArgument>
<extraArgument>-XX:MaxDirectMemorySize=2G</extraArgument>
<!-- 远程JMX -->
<extraArgument>-Dcom.sun.management.jmxremote </extraArgument>
<extraArgument>-Dcom.sun.management.jmxremote.port=1984</extraArgument>
<extraArgument>-Dcom.sun.management.jmxremote.authenticate=false </extraArgument>
<extraArgument>-Dcom.sun.management.jmxremote.ssl=false </extraArgument>
<extraArgument>-Xmx4G</extraArgument>
<extraArgument>-Xms1G</extraArgument>
</extraArguments>
</jvmSettings>
<generatorConfigurations>
<generatorConfiguration>
<generator>jsw</generator>
<includes>
<include>aix-ppc-32</include>
<include>aix-ppc-64</include>
<include>hpux-parisc-64</include>
<include>linux-x86-32</include>
<include>linux-x86-64</include>
<include>linux-ppc-64</include>
<include>macosx-ppc-32</include>
<include>macosx-x86-universal-32</include>
<include>macosx-universal-32</include>
<include>macosx-universal-64</include>
<include>solaris-sparc-32</include>
<include>solaris-sparc-64</include>
<include>solaris-x86-32</include>
<include>windows-x86-32</include>
<include>windows-x86-64</include>
</includes>
<configuration>
<property>
<name>configuration.directory.in.classpath.first</name>
<value>conf</value>
</property>
<property>
<name>wrapper.ping.timeout</name>
<value>120</value>
</property>
<property>
<name>set.default.REPO_DIR</name>
<value>lib</value>
</property>
<property>
<name>wrapper.logfile.maxsize</name>
<value>512m</value>
</property>
<property>
<name>wrapper.logfile.maxfiles</name>
<value>30</value>
</property>
<property>
<name>wrapper.logfile</name>
<value>logs/wrapper.log</value>
</property>
</configuration>
</generatorConfiguration>
</generatorConfigurations>
</daemon>
</daemons>
</configuration>
<executions>
<execution>
<id>generate-jsw</id>
<phase>package</phase>
<goals>
<goal>generate-daemons</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly-win.xml</descriptor>
<descriptor>src/main/assembly/assembly-linux.xml</descriptor>
<descriptor>src/main/assembly/assembly-mac.xml</descriptor>
<descriptor>src/main/assembly/assembly-solaris.xml</descriptor>
<descriptor>src/main/assembly/assembly-unix.xml</descriptor>
<descriptor>src/main/assembly/assembly-testtool.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.11.2</version>
<configuration>
<providerImplementations>
<git>jgit</git>
</providerImplementations>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-jgit</artifactId>
<version>1.11.2</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<format>{1}</format>
<items>
<item>timestamp</item>
<item>scmVersion</item>
</items>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<timestampFormat>{0,date,yyyyMMddHHmmss}</timestampFormat>
<providerImplementations>
<git>git</git>
</providerImplementations>
</configuration>
<!-- dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId>
<artifactId>svnkit</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies -->
</plugin>
</plugins>
</build>
</project>
================================================
FILE: src/main/assembly/assembly-linux.xml
================================================
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>${timestamp}-linux</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>mycat</include>
<include>wrapper-linux*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/lib</directory>
<outputDirectory>mycat/lib</outputDirectory>
<includes>
<include>*.jar</include>
<include>libwrapper-linux*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>mycat/conf</outputDirectory>
<excludes>
<exclude>*.dtd</exclude>
<exclude>log4j*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>mycat/</outputDirectory>
<includes>
<include>version.txt</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/logs</directory>
<outputDirectory>mycat/logs</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>${basedir}/catlet</directory>
<outputDirectory>mycat/catlet</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
================================================
FILE: src/main/assembly/assembly-mac.xml
================================================
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>${timestamp}-mac</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>mycat</include>
<include>wrapper-macosx*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/lib</directory>
<outputDirectory>mycat/lib</outputDirectory>
<includes>
<include>*.jar</include>
<include>libwrapper-macosx*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>mycat/conf</outputDirectory>
<excludes>
<exclude>*.dtd</exclude>
<exclude>log4j*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
</fileSet>
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>mycat/</outputDirectory>
<includes>
<include>version.txt</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/logs</directory>
<outputDirectory>mycat/logs</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>${basedir}/catlet</directory>
<outputDirectory>mycat/catlet</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
================================================
FILE: src/main/assembly/assembly-solaris.xml
================================================
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>${timestamp}-solaris</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>mycat</include>
<include>wrapper-solaris*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/lib</directory>
<outputDirectory>mycat/lib</outputDirectory>
<includes>
<include>*.jar</include>
<include>libwrapper-solaris*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>mycat/conf</outputDirectory>
<excludes>
<exclude>*.dtd</exclude>
<exclude>log4j*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
</fileSet>
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>mycat/</outputDirectory>
<includes>
<include>version.txt</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/logs</directory>
<outputDirectory>mycat/logs</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>${basedir}/catlet</directory>
<outputDirectory>mycat/catlet</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
================================================
FILE: src/main/assembly/assembly-testtool.xml
================================================
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"
>
<includeBaseDirectory>false</includeBaseDirectory>
<id>${timestamp}-testtool</id>
<formats>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/assembly/testtool</directory>
<outputDirectory>mycat/bin</outputDirectory>
<includes>
<include>**/*</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>mycat/</outputDirectory>
<includes>
<include>version.txt</include>
</includes>
</fileSet>
<fileSet>
<directory>target</directory>
<outputDirectory>mycat/lib</outputDirectory>
<includes>
<include>**tests.jar</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<scope>test</scope>
<outputDirectory>mycat/lib</outputDirectory>
<includes>
<include>mysql-con*</include>
<include>junit*</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
================================================
FILE: src/main/assembly/assembly-unix.xml
================================================
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>${timestamp}-unix</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>mycat</include>
<include>wrapper-aix*</include>
<include>wrapper-hpux*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/lib</directory>
<outputDirectory>mycat/lib</outputDirectory>
<includes>
<include>*.jar</include>
<include>libwrapper-linux*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>mycat/conf</outputDirectory>
<excludes>
<exclude>*.dtd</exclude>
<exclude>log4j*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
</fileSet>
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>mycat/</outputDirectory>
<includes>
<include>version.txt</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/logs</directory>
<outputDirectory>mycat/logs</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>${basedir}/catlet</directory>
<outputDirectory>mycat/catlet</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
================================================
FILE: src/main/assembly/assembly-win.xml
================================================
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>${timestamp}-win</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>tar.gz</format>
</formats>
<fileSets>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>mycat.bat</include>
<include>wrapper-windows*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/lib</directory>
<outputDirectory>mycat/lib</outputDirectory>
<includes>
<include>*.jar</include>
<include>wrapper-windows*</include>
</includes>
</fileSet>
<fileSet>
<directory>target/generated-resources/appassembler/jsw/mycat/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>mycat/conf</outputDirectory>
<excludes>
<exclude>*.dtd</exclude>
<exclude>log4j*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>mycat/conf</outputDirectory>
</fileSet>
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>mycat/</outputDirectory>
<includes>
<include>version.txt</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>mycat/bin</outputDirectory>
<fileMode>0755</fileMode>
<includes>
<include>*.bat</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/logs</directory>
<outputDirectory>mycat/logs</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
<fileSet>
<directory>${basedir}/catlet</directory>
<outputDirectory>mycat/catlet</outputDirectory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
================================================
FILE: src/main/assembly/conf/log4j2.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d [%-5p][%t] %m %throwable{full} (%C:%F:%L) %n"/>
</Console>
<RollingFile name="RollingFile" fileName="${sys:MYCAT_HOME}/logs/mycat.log"
filePattern="${sys:MYCAT_HOME}/logs/$${date:yyyy-MM}/mycat-%d{MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] (%l) - %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="250 MB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!--<AsyncLogger name="io.mycat" level="info" includeLocation="true" additivity="false">-->
<!--<AppenderRef ref="Console"/>-->
<!--<AppenderRef ref="RollingFile"/>-->
<!--</AsyncLogger>-->
<asyncRoot level="info" includeLocation="true">
<!--<AppenderRef ref="Console" />-->
<AppenderRef ref="RollingFile"/>
</asyncRoot>
</Loggers>
</Configuration>
================================================
FILE: src/main/assembly/testtool/test_globalseq_insert_perf.bat
================================================
REM check JAVA_HOME & java
set "JAVA_CMD="%JAVA_HOME%/bin/java""
if "%JAVA_HOME%" == "" goto noJavaHome
if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
:noJavaHome
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
set "JAVA_CMD=java"
:mainEntry
REM set HOME_DIR
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.performance.TestInsertPerf %1 %2 %3 %4 %5
================================================
FILE: src/main/assembly/testtool/test_globaltable_insert_perf.bat
================================================
REM check JAVA_HOME & java
set "JAVA_CMD=%JAVA_HOME%/bin/java"
if "%JAVA_HOME%" == "" goto noJavaHome
if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
:noJavaHome
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
set "JAVA_CMD=java"
:mainEntry
REM set HOME_DIR
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.performance.TestGlobalTableInsertPerf %1 %2 %3 %4 %5
================================================
FILE: src/main/assembly/testtool/test_globaltable_insert_perf.sh
================================================
#!/bin/bash
echo "check JAVA_HOME & java"
JAVA_CMD=$JAVA_HOME/bin/java
MAIN_CLASS=io.mycat.performance.TestGlobalTableInsertPerf
if [ ! -d "$JAVA_HOME" ]; then
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
JAVA_CMD=java
fi
echo "---------set HOME_DIR------------"
CURR_DIR=`pwd`
cd ..
MYCAT_HOME=`pwd`
cd $CURR_DIR
$JAVA_CMD -Xms256M -Xmx1G -XX:MaxPermSize=64M -DMYCAT_HOME=$MYCAT_HOME -cp "$MYCAT_HOME/conf:$MYCAT_HOME/lib/*" $MAIN_CLASS $1 $2 $3 $4 $5
================================================
FILE: src/main/assembly/testtool/test_stand_insert_perf.bat
================================================
REM check JAVA_HOME & java
set "JAVA_CMD=%JAVA_HOME%/bin/java"
if "%JAVA_HOME%" == "" goto noJavaHome
if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
:noJavaHome
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
set "JAVA_CMD=java"
:mainEntry
REM set HOME_DIR
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.performance.TestInsertPerf %1 %2 %3 %4 %5
================================================
FILE: src/main/assembly/testtool/test_stand_insert_perf.sh
================================================
#!/bin/bash
echo "check JAVA_HOME & java"
JAVA_CMD=$JAVA_HOME/bin/java
MAIN_CLASS=io.mycat.performance.TestInsertPerf
if [ ! -d "$JAVA_HOME" ]; then
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
JAVA_CMD=java
fi
echo "---------set HOME_DIR------------"
CURR_DIR=`pwd`
cd ..
MYCAT_HOME=`pwd`
cd $CURR_DIR
$JAVA_CMD -Xms256M -Xmx1G -XX:MaxPermSize=64M -DMYCAT_HOME=$MYCAT_HOME -cp "$MYCAT_HOME/conf:$MYCAT_HOME/lib/*" $MAIN_CLASS $1 $2 $3 $4 $5
================================================
FILE: src/main/assembly/testtool/test_stand_merge_sel_perf.bat
================================================
REM check JAVA_HOME & java
set "JAVA_CMD=%JAVA_HOME%/bin/java"
if "%JAVA_HOME%" == "" goto noJavaHome
if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
:noJavaHome
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
set "JAVA_CMD=java"
:mainEntry
REM set HOME_DIR
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.performance.TestMergeSelectPerf %1 %2 %3 %4 %5 %6 %7
================================================
FILE: src/main/assembly/testtool/test_stand_merge_sel_perf.sh
================================================
#!/bin/bash
echo "check JAVA_HOME & java"
JAVA_CMD=$JAVA_HOME/bin/java
MAIN_CLASS=io.mycat.performance.TestMergeSelectPerf
if [ ! -d "$JAVA_HOME" ]; then
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
JAVA_CMD=java
fi
echo "---------set HOME_DIR------------"
CURR_DIR=`pwd`
cd ..
MYCAT_HOME=`pwd`
cd $CURR_DIR
$JAVA_CMD -Xms256M -Xmx1G -XX:MaxPermSize=64M -DMYCAT_HOME=$MYCAT_HOME -cp "$MYCAT_HOME/conf:$MYCAT_HOME/lib/*" $MAIN_CLASS $1 $2 $3 $4 $5 $6 $7
================================================
FILE: src/main/assembly/testtool/test_stand_select_perf.bat
================================================
REM check JAVA_HOME & java
set "JAVA_CMD=%JAVA_HOME%/bin/java"
if "%JAVA_HOME%" == "" goto noJavaHome
if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
:noJavaHome
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
set "JAVA_CMD=java"
:mainEntry
REM set HOME_DIR
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.performance.TestSelectPerf %1 %2 %3 %4 %5 %6 %7 %8 %9
================================================
FILE: src/main/assembly/testtool/test_stand_select_perf.sh
================================================
#!/bin/bash
echo "check JAVA_HOME & java"
JAVA_CMD=$JAVA_HOME/bin/java
MAIN_CLASS=io.mycat.performance.TestSelectPerf
if [ ! -d "$JAVA_HOME" ]; then
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
JAVA_CMD=java
fi
echo "---------set HOME_DIR------------"
CURR_DIR=`pwd`
cd ..
MYCAT_HOME=`pwd`
cd $CURR_DIR
$JAVA_CMD -Xms256M -Xmx1G -XX:MaxPermSize=64M -DMYCAT_HOME=$MYCAT_HOME -cp "$MYCAT_HOME/conf:$MYCAT_HOME/lib/*" $MAIN_CLASS $1 $2 $3 $4 $5 $6 $7 $8 $9
================================================
FILE: src/main/assembly/testtool/test_stand_update_perf.bat
================================================
REM check JAVA_HOME & java
set "JAVA_CMD=%JAVA_HOME%/bin/java"
if "%JAVA_HOME%" == "" goto noJavaHome
if exist "%JAVA_HOME%\bin\java.exe" goto mainEntry
:noJavaHome
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
set "JAVA_CMD=java"
:mainEntry
REM set HOME_DIR
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.performance.TestUpdatePerf %1 %2 %3 %4 %5 %6 %7 %8 %9
================================================
FILE: src/main/assembly/testtool/test_stand_update_perf.sh
================================================
#!/bin/bash
echo "check JAVA_HOME & java"
JAVA_CMD=$JAVA_HOME/bin/java
MAIN_CLASS=io.mycat.performance.TestUpdatePerf
if [ ! -d "$JAVA_HOME" ]; then
echo ---------------------------------------------------
echo WARN: JAVA_HOME environment variable is not set.
echo ---------------------------------------------------
JAVA_CMD=java
fi
echo "---------set HOME_DIR------------"
CURR_DIR=`pwd`
cd ..
MYCAT_HOME=`pwd`
cd $CURR_DIR
$JAVA_CMD -Xms256M -Xmx1G -XX:MaxPermSize=64M -DMYCAT_HOME=$MYCAT_HOME -cp "$MYCAT_HOME/conf:$MYCAT_HOME/lib/*" $MAIN_CLASS $1 $2 $3 $4 $5 $6 $7 $8 $9
================================================
FILE: src/main/java/io/mycat/MycatServer.java
================================================
/*
* Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software;Designed and Developed mainly by many Chinese
* opensource volunteers. you can redistribute it and/or modify it under the
* terms of the GNU General Public License version 2 only, as published by the
* Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Any questions about this component can be directed to it's project Web address
* https://code.google.com/p/opencloudb/.
*
*/
package io.mycat;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.AsynchronousChannelGroup;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.locks.InterProcessMutex;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.io.Files;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import io.mycat.backend.BackendConnection;
import io.mycat.backend.datasource.PhysicalDBNode;
import io.mycat.backend.datasource.PhysicalDBPool;
import io.mycat.backend.datasource.PhysicalDatasource;
import io.mycat.backend.heartbeat.zkprocess.MycatLeaderLatch;
import io.mycat.backend.mysql.nio.handler.MultiNodeCoordinator;
import io.mycat.backend.mysql.xa.CoordinatorLogEntry;
import io.mycat.backend.mysql.xa.ParticipantLogEntry;
import io.mycat.backend.mysql.xa.TxState;
import io.mycat.backend.mysql.xa.XACommitCallback;
import io.mycat.backend.mysql.xa.XARollbackCallback;
import io.mycat.backend.mysql.xa.recovery.Repository;
import io.mycat.backend.mysql.xa.recovery.impl.FileSystemRepository;
import io.mycat.buffer.BufferPool;
import io.mycat.buffer.DirectByteBufferPool;
import io.mycat.buffer.NettyBufferPool;
import io.mycat.cache.CacheService;
import io.mycat.config.MycatConfig;
import io.mycat.config.classloader.DynaClassLoader;
import io.mycat.config.loader.zkprocess.comm.ZkConfig;
import io.mycat.config.loader.zkprocess.comm.ZkParamCfg;
import io.mycat.config.model.SchemaConfig;
import io.mycat.config.model.SystemConfig;
import io.mycat.config.model.TableConfig;
import io.mycat.config.table.structure.MySQLTableStructureDetector;
import io.mycat.manager.ManagerConnectionFactory;
import io.mycat.memory.MyCatMemory;
import io.mycat.net.AIOAcceptor;
import io.mycat.net.AIOConnector;
import io.mycat.net.NIOAcceptor;
import io.mycat.net.NIOConnector;
import io.mycat.net.NIOProcessor;
import io.mycat.net.NIOReactorPool;
import io.mycat.net.SocketAcceptor;
import io.mycat.net.SocketConnector;
import io.mycat.route.MyCATSequnceProcessor;
import io.mycat.route.RouteService;
import io.mycat.route.factory.RouteStrategyFactory;
import io.mycat.route.sequence.handler.SequenceHandler;
import io.mycat.server.ServerConnectionFactory;
import io.mycat.server.interceptor.SQLInterceptor;
import io.mycat.server.interceptor.impl.GlobalTableUtil;
import io.mycat.sqlengine.OneRawSQLQueryResultHandler;
import io.mycat.sqlengine.SQLJob;
import io.mycat.statistic.SQLRecorder;
import io.mycat.statistic.stat.SqlResultSizeRecorder;
import io.mycat.statistic.stat.UserStat;
import io.mycat.statistic.stat.UserStatAnalyzer;
import io.mycat.util.ExecutorUtil;
import io.mycat.util.NameableExecutor;
import io.mycat.util.TimeUtil;
import io.mycat.util.ZKUtils;
/**
* @author mycat
*/
public class MycatServer {
public static final String NAME = "MyCat";
private static final long LOG_WATCH_DELAY = 60000L;
private static final long TIME_UPDATE_PERIOD = 20L;
private static final long DEFAULT_SQL_STAT_RECYCLE_PERIOD = 5 * 1000L;
private static final long DEFAULT_OLD_CONNECTION_CLEAR_PERIOD = 5 * 1000L;
private static final long DEFAULT_DATANODE_CALC_ACTIVECOUNT = 1000L;
private static final MycatServer INSTANCE = new MycatServer();
private static final Logger LOGGER = LoggerFactory.getLogger("MycatServer");
private static final Repository fileRepository = new FileSystemRepository();
private final RouteService routerService;
private final CacheService cacheService;
private Properties dnIndexProperties;
//AIO连接群组
private AsynchronousChannelGroup[] asyncChannelGroups;
private volatile int channelIndex = 0;
//全局序列号
// private final MyCATSequnceProcessor sequnceProcessor = new MyCATSequnceProcessor();
private final DynaClassLoader catletClassLoader;
private final SQLInterceptor sqlInterceptor;
private volatile int nextProcessor;
// System Buffer Pool Instance
private BufferPool bufferPool;
private boolean aio = false;
//XA事务全局ID生成
private final AtomicLong xaIDInc = new AtomicLong();
//sequence处理对象
private SequenceHandler sequenceHandler;
/**
* Mycat 内存管理类
*/
private MyCatMemory myCatMemory = null;
public static final MycatServer getInstance() {
return INSTANCE;
}
private final MycatConfig config;
private final ScheduledExecutorService scheduler;
private final ScheduledExecutorService heartbeatScheduler;
private final SQLRecorder sqlRecorder;
private final AtomicBoolean isOnline;
private final long startupTime;
private NIOProcessor[] processors;
private SocketConnector connector;
private NameableExecutor businessExecutor;
private NameableExecutor sequenceExecutor;
private NameableExecutor timerExecutor;
private ListeningExecutorService listeningExecutorService;
private InterProcessMutex dnindexLock;
private long totalNetWorkBufferSize = 0;
private volatile MycatLeaderLatch leaderLatch;
private final AtomicBoolean startup = new AtomicBoolean(false);
private ScheduledFuture<?> recycleSqlStatFuture = null;
private MycatServer() {
//读取文件配置
this.config = new MycatConfig();
//定时线程池,单线程线程池
scheduler = Executors.newSingleThreadScheduledExecutor();
//心跳调度独立出来,避免被其他任务影响
heartbeatScheduler = Executors.newSingleThreadScheduledExecutor();
//SQL记录器
this.sqlRecorder = new SQLRecorder(config.getSystem().getSqlRecordCount());
/**
* 是否在线,MyCat manager中有命令控制
* | offline | Change MyCat status to OFF |
* | online | Change MyCat status to ON |
*/
this.isOnline = new AtomicBoolean(true);
//缓存服务初始化
cacheService = new CacheService();
//路由计算初始化
routerService = new RouteService(cacheService);
// load datanode active index from properties
dnIndexProperties = loadDnIndexProps();
try {
//SQL解析器
sqlInterceptor = (SQLInterceptor) Class.forName(
config.getSystem().getSqlInterceptor()).newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
//catlet加载器
catletClassLoader = new DynaClassLoader(SystemConfig.getHomePath()
+ File.separator + "catlet", config.getSystem().getCatletClassCheckSeconds());
//记录启动时间
this.startupTime = TimeUtil.currentTimeMillis();
if (isUseZkSwitch()) {
String path = ZKUtils.getZKBasePath() + "lock/dnindex.lock";
dnindexLock = new InterProcessMutex(ZKUtils.getConnection(), path);
}
}
public AtomicBoolean getStartup() {
return startup;
}
public long getTotalNetWorkBufferSize() {
return totalNetWorkBufferSize;
}
public BufferPool getBufferPool() {
return bufferPool;
}
public NameableExecutor getTimerExecutor() {
return timerExecutor;
}
public DynaClassLoader getCatletClassLoader() {
return catletClassLoader;
}
public MyCATSequnceProcessor getSequnceProcessor() {
return MyCATSequnceProcessor.getInstance();
}
public SQLInterceptor getSqlInterceptor() {
return sqlInterceptor;
}
public ScheduledExecutorService getScheduler() {
return scheduler;
}
public String genXATXID() {
long seq = this.xaIDInc.incrementAndGet();
if (seq < 0) {
synchronized (xaIDInc) {
if (xaIDInc.get() < 0) {
xaIDInc.set(0);
}
seq = xaIDInc.incrementAndGet();
}
}
return "'Mycat." + this.getConfig().getSystem().getMycatNodeId() + "." + seq + "'";
}
public String getXATXIDGLOBAL() {
return "'" + getUUID() + "'";
}
public static String getUUID() {
String s = UUID.randomUUID().toString();
//去掉“-”符号
return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
}
public MyCatMemory getMyCatMemory() {
return myCatMemory;
}
/**
* get next AsynchronousChannel ,first is exclude if multi
* AsynchronousChannelGroups
*
* @return
*/
public AsynchronousChannelGroup getNextAsyncChannelGroup() {
if (asyncChannelGroups.length == 1) {
return asyncChannelGroups[0];
} else {
int index = (++channelIndex) % asyncChannelGroups.length;
if (index == 0) {
++channelIndex;
return asyncChannelGroups[1];
} else {
return asyncChannelGroups[index];
}
}
}
public MycatConfig getConfig() {
return config;
}
public void beforeStart() {
String home = SystemConfig.getHomePath();
//ZkConfig.instance().initZk();
}
public void startup() throws IOException {
SystemConfig system = config.getSystem();
int processorCount = system.getProcessors();
//init RouteStrategyFactory first
RouteStrategyFactory.init();
// server startup
LOGGER.info(NAME + " is ready to startup ...");
String inf = "Startup processors ...,total processors:"
+ system.getProcessors() + ",aio thread pool size:"
+ system.getProcessorExecutor()
+ " \r\n each process allocated socket buffer pool "
+ " bytes ,a page size:"
+ system.getBufferPoolPageSize()
+ " a page's chunk number(PageSize/ChunkSize) is:"
+ (system.getBufferPoolPageSize()
/ system.getBufferPoolChunkSize())
+ " buffer page's number is:"
+ system.getBufferPoolPageNumber();
LOGGER.info(inf);
LOGGER.info("sysconfig params:" + system.toString());
// startup manager
ManagerConnectionFactory mf = new ManagerConnectionFactory();
ServerConnectionFactory sf = new ServerConnectionFactory();
SocketAcceptor manager = null;
SocketAcceptor server = null;
aio = (system.getUsingAIO() == 1);
// startup processors
int threadPoolSize = system.getProcessorExecutor();
processors = new NIOProcessor[processorCount];
// a page size
int bufferPoolPageSize = system.getBufferPoolPageSize();
// total page number
short bufferPoolPageNumber = system.getBufferPoolPageNumber();
//minimum allocation unit
short bufferPoolChunkSize = system.getBufferPoolChunkSize();
int socketBufferLocalPercent = system.getProcessorBufferLocalPercent();
int bufferPoolType = system.getProcessorBufferPoolType();
switch (bufferPoolType) {
case 0:
bufferPool = new DirectByteBufferPool(bufferPoolPageSize, bufferPoolChunkSize,
bufferPoolPageNumber, system.getFrontSocketSoRcvbuf());
totalNetWorkBufferSize = bufferPoolPageSize * bufferPoolPageNumber;
break;
case 1:
/**
* todo 对应权威指南修改:
*
* bytebufferarena由6个bytebufferlist组成,这六个list有减少内存碎片的机制
* 每个bytebufferlist由多个bytebufferchunk组成,每个list也有减少内存碎片的机制
* 每个bytebufferchunk由多个page组成,平衡二叉树管理内存使用状态,计算灵活
* 设置的pagesize对应bytebufferarena里面的每个bytebufferlist的每个bytebufferchunk的buffer长度
* bufferPoolChunkSize对应每个bytebufferchunk的每个page的长度
* bufferPoolPageNumber对应每个bytebufferlist有多少个bytebufferchunk
*/
totalNetWorkBufferSize = 6 * bufferPoolPageSize * bufferPoolPageNumber;
break;
case 2:
bufferPool = new NettyBufferPool(bufferPoolChunkSize);
LOGGER.info("Use Netty Buffer Pool");
break;
default:
bufferPool = new DirectByteBufferPool(bufferPoolPageSize, bufferPoolChunkSize,
bufferPoolPageNumber, system.getFrontSocketSoRcvbuf());
;
totalNetWorkBufferSize = bufferPoolPageSize * bufferPoolPageNumber;
}
/**
* Off Heap For Merge/Order/Group/Limit 初始化
*/
if (system.getUseOffHeapForMerge() == 1) {
try {
myCatMemory = new MyCatMemory(system, totalNetWorkBufferSize);
} catch (NoSuchFieldException e) {
LOGGER.error("NoSuchFieldException", e);
} catch (IllegalAccessException e) {
LOGGER.error("Error", e);
}
}
businessExecutor = ExecutorUtil.create("BusinessExecutor",
threadPoolSize);
sequenceExecutor = ExecutorUtil.create("SequenceExecutor", threadPoolSize);
timerExecutor = ExecutorUtil.create("Timer", system.getTimerExecutor());
listeningExecutorService = MoreExecutors.listeningDecorator(businessExecutor);
for (int i = 0; i < processors.length; i++) {
processors[i] = new NIOProcessor("Processor" + i, bufferPool,
businessExecutor);
}
if (aio) {
LOGGER.info("using aio network handler ");
asyncChannelGroups = new AsynchronousChannelGroup[processorCount];
// startup connector
connector = new AIOConnector();
for (int i = 0; i < processors.length; i++) {
asyncChannelGroups[i] = AsynchronousChannelGroup.withFixedThreadPool(processorCount,
new ThreadFactory() {
private int inx = 1;
@Override
public Thread newThread(Runnable r) {
Thread th = new Thread(r);
//TODO
th.setName(DirectByteBufferPool.LOCAL_BUF_THREAD_PREX + "AIO" + (inx++));
LOGGER.info("created new AIO thread " + th.getName());
return th;
}
}
);
}
manager = new AIOAcceptor(NAME + "Manager", system.getBindIp(),
system.getManagerPort(), system.getServerBacklog(), mf, this.asyncChannelGroups[0]);
// startup server
server = new AIOAcceptor(NAME + "Server", system.getBindIp(),
system.getServerPort(), system.getServerBacklog(), sf, this.asyncChannelGroups[0]);
} else {
LOGGER.info("using nio network handler ");
NIOReactorPool reactorPool = new NIOReactorPool(
DirectByteBufferPool.LOCAL_BUF_THREAD_PREX + "NIOREACTOR",
processors.length);
connector = new NIOConnector(DirectByteBufferPool.LOCAL_BUF_THREAD_PREX + "NIOConnector", reactorPool);
((NIOConnector) connector).start();
manager = new NIOAcceptor(DirectByteBufferPool.LOCAL_BUF_THREAD_PREX + NAME
+ "Manager", system.getBindIp(), system.getManagerPort(), system.getServerBacklog(), mf, reactorPool);
server = new NIOAcceptor(DirectByteBufferPool.LOCAL_BUF_THREAD_PREX + NAME
+ "Server", system.getBindIp(), system.getServerPort(), system.getServerBacklog(), sf, reactorPool);
}
// manager start
manager.start();
LOGGER.info(manager.getName() + " is started and listening on " + manager.getPort());
server.start();
// server started
LOGGER.info(server.getName() + " is started and listening on " + server.getPort());
LOGGER.info("===============================================");
// init datahost
Map<String, PhysicalDBPool> dataHosts = config.getDataHosts();
LOGGER.info("Initialize dataHost ...");
for (PhysicalDBPool node : dataHosts.values()) {
String index = dnIndexProperties.getProperty(node.getHostName(), "0");
if (!"0".equals(index)) {
LOGGER.info("init datahost: " + node.getHostName() + " to use datasource index:" + index);
}
node.init(Integer.parseInt(index));
node.startHeartbeat();
}
long dataNodeIldeCheckPeriod = system.getDataNodeIdleCheckPeriod();
heartbeatScheduler.scheduleAtFixedRate(updateTime(), 0L, TIME_UPDATE_PERIOD, TimeUnit.MILLISECONDS);
heartbeatScheduler.scheduleAtFixedRate(processorCheck(), 0L, system.getProcessorCheckPeriod(), TimeUnit.MILLISECONDS);
heartbeatScheduler.scheduleAtFixedRate(dataNodeConHeartBeatCheck(dataNodeIldeCheckPeriod), 0L, dataNodeIldeCheckPeriod, TimeUnit.MILLISECONDS);
heartbeatScheduler.scheduleAtFixedRate(dataNodeHeartbeat(), 0L, system.getDataNodeHeartbeatPeriod(), TimeUnit.MILLISECONDS);
heartbeatScheduler.scheduleAtFixedRate(dataSourceOldConsClear(), 0L, DEFAULT_OLD_CONNECTION_CLEAR_PERIOD, TimeUnit.MILLISECONDS);
heartbeatScheduler.scheduleAtFixedRate(dataNodeCalcActiveCons(), 0L, DEFAULT_DATANODE_CALC_ACTIVECOUNT, TimeUnit.MILLISECONDS);
//
scheduler.schedule(catletClassClear(), 30000, TimeUnit.MILLISECONDS);
if (system.getCheckTableConsistency() == 1) {
scheduler.scheduleAtFixedRate(tableStructureCheck(), 0L, system.getCheckTableConsistencyPeriod(), TimeUnit.MILLISECONDS);
}
ensureSqlstatRecycleFuture();
if (system.getUseGlobleTableCheck() == 1) { // 全局表一致性检测是否开启
// scheduler.scheduleAtFixedRate(glableTableConsistencyCheck(), 0L, system.getGlableTableCheckPeriod(), TimeUnit.MILLISECONDS);
}
//定期清理结果集排行榜,控制拒绝策略
scheduler.scheduleAtFixedRate(resultSetMapClear(), 0L, system.getClearBigSqLResultSetMapMs(), TimeUnit.MILLISECONDS);
//xa 事务定时检查 是否全部提交 或者部分提交 部分回滚, 进行补充提交补充回滚.
scheduler.scheduleAtFixedRate(xaTaskCheck(), 0L, 10 * 1000, TimeUnit.MILLISECONDS);
// new Thread(tableStructureCheck()).start();
//XA Init recovery Log
LOGGER.info("===============================================");
LOGGER.info("Perform XA recovery log ...");
CoordinatorLogEntry[] coordinatorLogEntries = getCoordinatorLogEntries();
putXARecoveryLogToMemory(coordinatorLogEntries);
performXARecoveryLog(coordinatorLogEntries);
LOGGER.info("Perform XA recovery log end...");
if (isUseZkSwitch()) {
//首次启动如果发现zk上dnindex为空,则将本地初始化上zk
initZkDnindex();
leaderLatch = new MycatLeaderLatch("heartbeat/leader");
try {
leaderLatch.start();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
e.printStackTrace();
}
}
initRuleData();
startup.set(true);
}
public void ensureSqlstatRecycleFuture() {
if (config.getSystem().getUseSqlStat() == 1) {
if(recycleSqlStatFuture == null){
recycleSqlStatFuture = scheduler
.scheduleAtFixedRate(recycleSqlStat(), 0L, DEFAULT_SQL_STAT_RECYCLE_PERIOD, TimeUnit.MILLISECONDS);
}
} else {
if (recycleSqlStatFuture != null) {
recycleSqlStatFuture.cancel(false);
recycleSqlStatFuture = null;
}
}
}
public void initRuleData() {
if (!isUseZk()) return;
InterProcessMutex ruleDataLock = null;
try {
File file = new File(SystemConfig.getHomePath(), "conf" + File.separator + "ruledata");
if (!file.exists()) {
file.mkdir();
}
String path = ZKUtils.getZKBasePath() + "lock/ruledata.lock";
ruleDataLock = new InterProcessMutex(ZKUtils.getConnection(), path);
ruleDataLock.acquire(30, TimeUnit.SECONDS);
File[] childFiles = file.listFiles();
if (childFiles != null && childFiles.length > 0) {
String basePath = ZKUtils.getZKBasePath() + "ruledata/";
for (File childFile : childFiles) {
CuratorFramework zk = ZKUtils.getConnection();
if (zk.checkExists().forPath(basePath + childFile.getName()) == null) {
zk.create().creatingParentsIfNeeded().forPath(basePath + childFile.getName(), Files.toByteArray(childFile));
}
}
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
try {
if (ruleDataLock != null)
ruleDataLock.release();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
private void initZkDnindex() {
try {
File file = new File(SystemConfig.getHomePath(), "conf" + File.separator + "dnindex.properties");
dnindexLock.acquire(30, TimeUnit.SECONDS);
String path = ZKUtils.getZKBasePath() + "bindata/dnindex.properties";
CuratorFramework zk = ZKUtils.getConnection();
if (zk.checkExists().forPath(path) == null) {
zk.create().creatingParentsIfNeeded().forPath(path, Files.toByteArray(file));
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
try {
dnindexLock.release();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
public void reloadDnIndex() {
if (MycatServer.getInstance().getProcessors() == null) return;
// load datanode active index from properties
dnIndexProperties = loadDnIndexProps();
// init datahost
Map<String, PhysicalDBPool> dataHosts = config.getDataHosts();
LOGGER.info("reInitialize dataHost ...");
for (PhysicalDBPool node : dataHosts.values()) {
String index = dnIndexProperties.getProperty(node.getHostName(), "0");
if (!"0".equals(index)) {
LOGGER.info("reinit datahost: " + node.getHostName() + " to use datasource index:" + index);
}
node.switchSource(Integer.parseInt(index), true, "reload dnindex");
}
}
private Runnable catletClassClear() {
return new Runnable() {
@Override
public void run() {
try {
catletClassLoader.clearUnUsedClass();
} catch (Exception e) {
LOGGER.warn("catletClassClear err " + e);
}
}
;
};
}
/**
* 清理 reload @@config_all 后,老的 connection 连接
*
* @return
*/
private Runnable dataSourceOldConsClear() {
return new Runnable() {
@Override
public void run() {
timerExecutor.execute(new Runnable() {
@Override
public void run() {
long sqlTimeout = MycatServer.getInstance().getConfig().getSystem().getSqlExecuteTimeout() * 1000L;
//根据 lastTime 确认事务的执行, 超过 sqlExecuteTimeout 阀值 close connection
long currentTime = TimeUtil.currentTimeMillis();
Iterator<BackendConnection> iter = NIOProcessor.backends_old.iterator();
while (iter.hasNext()) {
BackendConnection con = iter.next();
long lastTime = con.getLastTime();
if (currentTime - lastTime > sqlTimeout) {
con.close("clear old backend connection ...");
iter.remove();
}
}
}
});
}
;
};
}
/**
* 在bufferpool使用率大于使用率阈值时不清理
* 在bufferpool使用率小于使用率阈值时清理大结果集清单内容
*/
private Runnable resultSetMapClear() {
return new Runnable() {
@Override
public void run() {
try {
BufferPool bufferPool = getBufferPool();
long bufferSize = bufferPool.size();
long bufferCapacity = bufferPool.capacity();
long bufferUsagePercent = (bufferCapacity - bufferSize) * 100 / bufferCapacity;
if (bufferUsagePercent < config.getSystem().getBufferUsagePercent()) {
Map<String, UserStat> map = UserStatAnalyzer.getInstance().getUserStatMap();
Set<String> userSet = config.getUsers().keySet();
for (String user : userSet) {
UserStat userStat = map.get(user);
if (userStat != null) {
SqlResultSizeRecorder recorder = userStat.getSqlResultSizeRecorder();
//System.out.println(recorder.getSqlResultSet().size());
recorder.clearSqlResultSet();
}
}
}
} catch (Exception e) {
LOGGER.warn("resultSetMapClear err " + e);
}
}
;
};
}
private Properties loadDnIndexProps() {
Properties prop = new Properties();
File file = new File(SystemConfig.getHomePath(), "conf" + File.separator + "dnindex.properties");
if (!file.exists()) {
return prop;
}
FileInputStream filein = null;
try {
filein = new FileInputStream(file);
prop.load(filein);
} catch (Exception e) {
LOGGER.warn("load DataNodeIndex err:" + e);
} finally {
if (filein != null) {
try {
filein.close();
} catch (IOException e) {
}
}
}
return prop;
}
public synchronized boolean saveDataHostIndexToZk(String dataHost, int curIndex) {
boolean result = false;
try {
try {
dnindexLock.acquire(30, TimeUnit.SECONDS);
String path = ZKUtils.getZKBasePath() + "bindata/dnindex.properties";
Map<String, String> propertyMap = new HashMap<>();
propertyMap.put(dataHost, String.valueOf(curIndex));
result = ZKUtils.writeProperty(path, propertyMap);
} finally {
dnindexLock.release();
}
} catch (Exception e) {
LOGGER.warn("saveDataHostIndexToZk err:", e);
}
return result;
}
/**
* save cur datanode index to properties file
*
* @param
* @param curIndex
*/
public synchronized void saveDataHostIndex(String dataHost, int curIndex) {
File file = new File(SystemConfig.getHomePath(), "conf" + File.separator + "dnindex.properties");
FileOutputStream fileOut = null;
try {
String oldIndex = dnIndexProperties.getProperty(dataHost);
String newIndex = String.valueOf(curIndex);
if (newIndex.equals(oldIndex)) {
return;
}
dnIndexProperties.setProperty(dataHost, newIndex);
LOGGER.info("save DataHost index " + dataHost + " cur index " + curIndex);
File parent = file.getParentFile();
if (parent != null && !parent.exists()) {
parent.mkdirs();
}
fileOut = new FileOutputStream(file);
dnIndexProperties.store(fileOut, "update");
// if(isUseZkSwitch()) {
// // save to zk
// try {
// dnindexLock.acquire(30,TimeUnit.SECONDS) ;
// String path = ZKUtils.getZKBasePath() + "bindata/dnindex.properties";
// CuratorFramework zk = ZKUtils.getConnection();
// if(zk.checkExists().forPath(path)==null) {
// zk.create().creatingParentsIfNeeded().forPath(path, Files.toByteArray(file));
// } else{
// byte[] data= zk.getData().forPath(path);
// ByteArrayOutputStream out=new ByteArrayOutputStream();
// Properties properties=new Properties();
// properties.load(new ByteArrayInputStream(data));
// if(!String.valueOf(curIndex).equals(properties.getProperty(dataHost))) {
// properties.setProperty(dataHost, String.valueOf(curIndex));
// properties.store(out, "update");
// zk.setData().forPath(path, out.toByteArray());
// }
// }
//
// }finally {
// dnindexLock.release();
// }
// }
} catch (Exception e) {
LOGGER.warn("saveDataNodeIndex err:", e);
} finally {
if (fileOut != null) {
try {
fileOut.close();
} catch (IOException e) {
}
}
}
}
private boolean isUseZk() {
String loadZk = ZkConfig.getInstance().getValue(ZkParamCfg.ZK_CFG_FLAG);
return "true".equalsIgnoreCase(loadZk);
}
public boolean isUseZkSwitch() {
MycatConfig mycatConfig = config;
boolean isUseZkSwitch = mycatConfig.getSystem().isUseZKSwitch();
String loadZk = ZkConfig.getInstance().getValue(ZkParamCfg.ZK_CFG_FLAG);
return (isUseZkSwitch && "true".equalsIgnoreCase(loadZk));
}
public RouteService getRouterService() {
return routerService;
}
public CacheService getCacheService() {
return cacheService;
}
public NameableExecutor getBusinessExecutor() {
return businessExecutor;
}
public RouteService getRouterservice() {
return routerService;
}
public NIOProcessor nextProcessor() {
int i = ++nextProcessor;
if (i >= processors.length) {
i = nextProcessor = 0;
}
return processors[i];
}
public NIOProcessor[] getProcessors() {
return processors;
}
public SocketConnector getConnector() {
return connector;
}
public SQLRecorder getSqlRecorder() {
return sqlRecorder;
}
public long getStartupTime() {
return startupTime;
}
public boolean isOnline() {
return isOnline.get();
}
public void offline() {
isOnline.set(false);
}
public void online() {
isOnline.set(true);
}
// 系统时间定时更新任务
private Runnable updateTime() {
return new Runnable() {
@Override
public void run() {
TimeUtil.update();
}
};
}
// 处理器定时检查任务
private Runnable processorCheck() {
return new Runnable() {
@Override
public void run() {
timerExecutor.execute(new Runnable() {
@Override
public void run() {
try {
for (NIOProcessor p : processors) {
p.checkBackendCons();
}
} catch (Exception e) {
LOGGER.warn("checkBackendCons caught err:" + e);
}
}
});
timerExecutor.execute(new Runnable() {
@Override
public void run() {
try {
for (NIOProcessor p : processors) {
p.checkFrontCons();
}
} catch (Exception e) {
LOGGER.warn("checkFrontCons caught err:" + e);
}
}
});
}
};
}
// 数据节点定时连接空闲超时检查任务
private Runnable dataNodeConHeartBeatCheck(final long heartPeriod) {
return new Runnable() {
@Override
public void run() {
timerExecutor.execute(new Runnable() {
@Override
public void run() {
Map<String, PhysicalDBPool> nodes = config.getDataHosts();
for (PhysicalDBPool node : nodes.values()) {
node.heartbeatCheck(heartPeriod);
}
/*
Map<String, PhysicalDBPool> _nodes = config.getBackupDataHosts();
if (_nodes != null) {
for (PhysicalDBPool node : _nodes.values()) {
node.heartbeatCheck(heartPeriod);
}
}*/
}
});
}
};
}
// 数据节点定时心跳任务
private Runnable dataNodeHeartbeat() {
return new Runnable() {
@Override
public void run() {
timerExecutor.execute(new Runnable() {
@Override
public void run() {
Map<String, PhysicalDBPool> nodes = config.getDataHosts();
for (PhysicalDBPool node : nodes.values()) {
node.doHeartbeat();
}
}
});
}
};
}
//by kaiz : 定时计算datanode active connection
private Runnable dataNodeCalcActiveCons() {
return new Runnable() {
@Override
public void run() {
timerExecutor.execute(new Runnable() {
@Override
public void run() {
Map<String, PhysicalDBPool> nodes = config.getDataHosts();
for (PhysicalDBPool node : nodes.values()) {
Collection<PhysicalDatasource> dataSources = node.getAllDataSources();
for(PhysicalDatasource ds : dataSources) {
ds.calcTotalCount();
}
}
}
});
}
};
}
//定时清理保存SqlStat中的数据
private Runnable recycleSqlStat() {
return new Runnable() {
@Override
public void run() {
Map<String, UserStat> statMap = UserStatAnalyzer.getInstance().getUserStatMap();
for (UserStat userStat : statMap.values()) {
userStat.getSqlLastStat().recycle();
userStat.getSqlRecorder().recycle();
userStat.getSqlHigh().recycle();
userStat.getSqlLargeRowStat().recycle();
}
}
};
}
//定时清理xa任务 对超过阈值的xa任务回滚或者提交
private Runnable xaTaskCheck() {
return new Runnable() {
@Override
public void run() {
Collection<CoordinatorLogEntry> coordinatorLogEntries = MultiNodeCoordinator.inMemoryRepository.getAllCoordinatorLogEntries();
long sqlTimeout = MycatServer.getInstance().getConfig().getSystem().getSqlExecuteTimeout() * 1000L;
List<CoordinatorLogEntry> CoordinatorLogEntryList = null;
long currentTime = TimeUtil.currentTimeMillis();
for(CoordinatorLogEntry coordinatorLogEntry : coordinatorLogEntries) {
//超过执行时间20秒 进行重试
if(currentTime > sqlTimeout + 20 * 1000 + coordinatorLogEntry.createTime){
if(CoordinatorLogEntryList == null) {
CoordinatorLogEntryList = new ArrayList<CoordinatorLogEntry>();
}
CoordinatorLogEntryList.add(coordinatorLogEntry);
}
}
if(CoordinatorLogEntryList != null) {
performXARecoveryLog((CoordinatorLogEntry[])CoordinatorLogEntryList.toArray());
}
}
};
}
//定时检查不同分片表结构一致性
private Runnable tableStructureCheck() {
return new MySQLTableStructureDetector();
}
// 全局表一致性检查任务
private Runnable glableTableConsistencyCheck() {
return new Runnable() {
@Override
public void run() {
timerExecutor.execute(new Runnable() {
@Override
public void run() {
GlobalTableUtil.consistencyCheck();
}
});
}
};
}
private void putXARecoveryLogToMemory(CoordinatorLogEntry[] coordinatorLogEntries) {
//init into in memory cached
for (int i = 0; i < coordinatorLogEntries.length; i++) {
MultiNodeCoordinator.inMemoryRepository.put(coordinatorLogEntries[i].id, coordinatorLogEntries[i]);
//discard the recovery log
MultiNodeCoordinator.fileRepository.writeCheckpoint(coordinatorLogEntries[i].id, MultiNodeCoordinator.inMemoryRepository.getAllCoordinatorLogEntries());
}
}
//XA recovery log check
private void performXARecoveryLog(CoordinatorLogEntry[] coordinatorLogEntries) {
//fetch the recovery log
for (int i = 0; i < coordinatorLogEntries.length; i++) {
CoordinatorLogEntry coordinatorLogEntry = coordinatorLogEntries[i];
boolean needRollback = false;
boolean hasCommit = false;
//检查xa事务是否完成 ,处于部分commit 或者部分prepare中
for (int j = 0; j < coordinatorLogEntry.participants.length; j++) {
ParticipantLogEntry participantLogEntry = coordinatorLogEntry.participants[j];
if (participantLogEntry.txState == TxState.TX_PREPARED_STATE || participantLogEntry.txState == TxState.TX_STARTED_STATE) {
needRollback = true;
}
if (participantLogEntry.txState == TxState.TX_COMMITED_STATE) {
hasCommit = true;
}
}
//补充提交 prepare 状态的提交, xa commit or xa rollback
if (needRollback) {
//1 can rollback
if(!hasCommit) {
for (int j = 0; j < coordinatorLogEntry.participants.length; j++) {
ParticipantLogEntry participantLogEntry = coordinatorLogEntry.participants[j];
if (participantLogEntry.txState == TxState.TX_COMMITED_STATE || participantLogEntry.txState == TxState.TX_ROLLBACKED_STATE) {
continue;
} //XA rollback
String xacmd = "XA ROLLBACK " + coordinatorLogEntry.id +",'"+ participantLogEntry.resourceName+"'" + ';';
LOGGER.debug("send xaCmd : {}", xacmd);
OneRawSQLQueryResultHandler resultHandler = new OneRawSQLQueryResultHandler(new String[0], new XARollbackCallback(coordinatorLogEntry.id,
participantLogEntry
));
//xa cmd send
sendXaCmd(participantLogEntry, xacmd, resultHandler);
}
} else {
LOGGER.debug( "some has commit in {}",coordinatorLogEntry);
for (int j = 0; j < coordinatorLogEntry.participants.length; j++) {
ParticipantLogEntry participantLogEntry = coordinatorLogEntry.participants[j];
if (participantLogEntry.txState == TxState.TX_COMMITED_STATE || participantLogEntry.txState == TxState.TX_ROLLBACKED_STATE) {
continue;
}
//XA commit
String xacmd = "XA COMMIT " + coordinatorLogEntry.id +",'"+ participantLogEntry.resourceName+"'" + ';';
LOGGER.debug("send xaCmd : {}", xacmd);
OneRawSQLQueryResultHandler resultHandler = new OneRawSQLQueryResultHandler(new String[0], new XACommitCallback(coordinatorLogEntry.id,
participantLogEntry
));
//xa cmd send
sendXaCmd(participantLogEntry, xacmd, resultHandler);
}
}
}
}
}
private void sendXaCmd(ParticipantLogEntry participantLogEntry, String xacmd,
OneRawSQLQueryResultHandler resultHandler) {
for (SchemaConfig schema : MycatServer.getInstance().getConfig().getSchemas().values()) {
for (TableConfig table : schema.getTables().values()) {
for (String dataNode : table.getDataNodes()) {
PhysicalDBNode dn = MycatServer.getInstance().getConfig().getDataNodes().get(dataNode);
if (dn.getDbPool().getSource().getConfig().getIp().equals(participantLogEntry.uri)
&& dn.getDatabase().equals(participantLogEntry.resourceName)) {
//XA STATE ROLLBACK
SQLJob sqlJob = new SQLJob(xacmd, dn.getDatabase(), resultHandler, dn.getDbPool().getSource());
sqlJob.run();
LOGGER.debug(String.format("[XA cmd] [%s] Host:[%s] schema:[%s]", xacmd, dn.getName(), dn.getDatabase()));
// break outloop;
return;
}
}
}
}
}
/**
* covert the collection to array
**/
private CoordinatorLogEntry[] getCoordinatorLogEntries() {
Collection<CoordinatorLogEntry> allCoordinatorLogEntries = fileRepository.getAllCoordinatorLogEntries();
if (allCoordinatorLogEntries == null) {
return new CoordinatorLogEntry[0];
}
if (allCoordinatorLogEntries.size() == 0) {
return new CoordinatorLogEntry[0];
}
return allCoordinatorLogEntries.toArray(new CoordinatorLogEntry[allCoordinatorLogEntries.size()]);
}
public NameableExecutor getSequenceExecutor() {
return sequenceExecutor;
}
//huangyiming add
public DirectByteBufferPool getDirectByteBufferPool() {
return (DirectByteBufferPool) bufferPool;
}
public boolean isAIO() {
return aio;
}
public ListeningExecutorService getListeningExecutorService() {
return listeningExecutorService;
}
public ScheduledExecutorService getHeartbeatScheduler() {
return heartbeatScheduler;
}
public MycatLeaderLatch getLeaderLatch() {
return leaderLatch;
}
public static void main(String[] args) throws Exception {
String path = ZKUtils.getZKBasePath() + "bindata";
CuratorFramework zk = ZKUtils.getConnection();
if (zk.checkExists().forPath(path) == null) ;
byte[] data = zk.getData().forPath(path);
System.out.println(data.length);
}
}
================================================
FILE: src/main/java/io/mycat/MycatShutdown.java
================================================
/*
* Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software;Designed and Developed mainly by many Chinese
* opensource volunteers. you can redistribute it and/or modify it under the
* terms of the GNU General Public License version 2 only, as published by the
* Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Any questions about this component can be directed to it's project Web address
* https://code.google.com/p/opencloudb/.
*
*/
package io.mycat;
import java.util.Date;
/**
* @author mycat
*/
public final class MycatShutdown {
public static void main(String[] args) {
System.out.println(new Date() + ",server shutdown!");
}
}
================================================
FILE: src/main/java/io/mycat/MycatStartup.java
================================================
/*
* Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software;Designed and Developed mainly by many Chinese
* opensource volunteers. you can redistribute it and/or modify it under the
* terms of the GNU General Public License version 2 only, as published by the
* Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Any questions about this component can be directed to it's project Web address
* https://code.google.com/p/opencloudb/.
*
*/
package io.mycat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.mycat.config.loader.zkprocess.comm.ZkConfig;
import io.mycat.config.model.SystemConfig;
/**
* @author mycat
*/
public final class MycatStartup {
private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";
private static final Logger LOGGER = LoggerFactory.getLogger(MycatStartup.class);
public static void main(String[] args) {
//use zk ?
ZkConfig.getInstance().initZk();
try {
String home = SystemConfig.getHomePath();
if (home == null) {
System.out.println(SystemConfig.SYS_HOME + " is not set.");
System.exit(-1);
}
// init
MycatServer server = MycatServer.getInstance();
//这个方法执行的代码,上面SystemConfig.getHomePath()已经执行过了,建议注释掉。
//server.beforeStart();
// startup
server.startup();
System.out.println("MyCAT Server startup successfully. see logs in logs/mycat.log");
} catch (Exception e) {
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
LOGGER.error(sdf.format(new Date()) + " startup error", e);
System.exit(-1);
}
}
}
================================================
FILE: src/main/java/io/mycat/backend/BackendConnection.java
================================================
package io.mycat.backend;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import io.mycat.backend.mysql.nio.handler.ResponseHandler;
import io.mycat.net.ClosableConnection;
import io.mycat.route.RouteResultsetNode;
import io.mycat.server.ServerConnection;
public interface BackendConnection extends ClosableConnection {
public boolean isModifiedSQLExecuted();
public boolean isFromSlaveDB();
public String getSchema();
public void setSchema(String newSchema);
public long getLastTime();
public boolean isClosedOrQuit();
public void setAttachment(Object attachment);
public void quit();
public void setLastTime(long currentTimeMillis);
public void release();
public boolean setResponseHandler(ResponseHandler commandHandler);
public void commit();
public void query(String sql) throws UnsupportedEncodingException;
public Object getAttachment();
public void closeWithoutRsp(String reason);
// public long getThreadId();
public void execute(RouteResultsetNode node, ServerConnection source,
boolean autocommit) throws IOException;
public void recordSql(String host, String schema, String statement);
public boolean syncAndExcute();
public void rollback();
public boolean isBorrowed();
public void setBorrowed(boolean borrowed);
public int getTxIsolation();
public boolean isAutocommit();
public boolean isTxReadonly();
public int getSqlSelectLimit();
public long getId();
public void discardClose(String reason);
public void query(String sql, int charsetIndex);
public boolean checkAlive();
public void disableRead();
public void enableRead();
}
================================================
FILE: src/main/java/io/mycat/backend/ConMap.java
================================================
package io.mycat.backend;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import io.mycat.MycatServer;
import io.mycat.backend.datasource.PhysicalDatasource;
import io.mycat.backend.jdbc.JDBCConnection;
import io.mycat.backend.mysql.nio.MySQLConnection;
import io.mycat.net.NIOProcessor;
public class ConMap {
// key -schema
private final ConcurrentHashMap<String, ConQueue> items = new ConcurrentHashMap<String, ConQueue>();
public ConQueue getSchemaConQueue(String schema) {
ConQueue queue = items.get(schema);
if (queue == null) {
ConQueue newQueue = new ConQueue();
queue = items.putIfAbsent(schema, newQueue);
return (queue == null) ? newQueue : queue;
}
return queue;
}
public BackendConnection tryTakeCon(final String schema, boolean autoCommit) {
final ConQueue queue = items.get(schema);
BackendConnection con = tryTakeCon(queue, autoCommit);
if (con != null) {
return con;
} else {
for (ConQueue queue2 : items.values()) {
if (queue != queue2) {
con = tryTakeCon(queue2, autoCommit);
if (con != null) {
return con;
}
}
}
}
return null;
}
private BackendConnection tryTakeCon(ConQueue queue, boolean autoCommit) {
BackendConnection con = null;
if (queue != null && ((con = queue.takeIdleCon(autoCommit)) != null)) {
return con;
} else {
return null;
}
}
public Collection<ConQueue> getAllConQueue() {
return items.values();
}
public int getActiveCountForSchema(String schema,
PhysicalDatasource dataSouce) {
int total = 0;
for (NIOProcessor processor : MycatServer.getInstance().getProcessors()) {
for (BackendConnection con : processor.getBackends().values()) {
if (con instanceof MySQLConnection) {
MySQLConnection mysqlCon = (MySQLConnection) con;
if (mysqlCon.getSchema().equals(schema)
&& mysqlCon.getPool() == dataSouce
&& mysqlCon.isBorrowed()) {
total++;
}
}else if (con instanceof JDBCConnection) {
JDBCConnection jdbcCon = (JDBCConnection) con;
if (jdbcCon.getSchema().equals(schema) && jdbcCon.getPool() == dataSouce
&& jdbcCon.isBorrowed()) {
total++;
}
}
}
}
return total;
}
public int getActiveCountForDs(PhysicalDatasource dataSouce) {
int total = 0;
for (NIOProcessor processor : MycatServer.getInstance().getProcessors()) {
for (BackendConnection con : processor.getBackends().values()) {
if (con instanceof MySQLConnection) {
MySQLConnection mysqlCon = (MySQLConnection) con;
if (mysqlCon.getPool() == dataSouce
&& mysqlCon.isBorrowed() && !mysqlCon.isClosed()) {
total++;
}
} else if (con instanceof JDBCConnection) {
JDBCConnection jdbcCon = (JDBCConnection) con;
if (jdbcCon.getPool() == dataSouce
&& jdbcCon.isBorrowed() && !jdbcCon.isClosed()) {
total++;
}
}
}
}
return total;
}
public int getTotalCountForDs(PhysicalDatasource dataSouce) {
int total = 0;
for (NIOProcessor processor : MycatServer.getInstance().getProcessors()) {
for (BackendConnection con : processor.getBackends().values()) {
if (con instanceof MySQLConnection) {
MySQLConnection mysqlCon = (MySQLConnection) con;
if (mysqlCon.getPool() == dataSouce && !mysqlCon.isClosed()) {
total++;
}
} else if (con instanceof JDBCConnection) {
JDBCConnection jdbcCon = (JDBCConnection) con;
if (jdbcCon.getPool() == dataSouce && !jdbcCon.isClosed()) {
total++;
}
}
}
}
return total;
}
public void clearConnections(String reason, PhysicalDatasource dataSouce) {
for (NIOProcessor processor : MycatServer.getInstance().getProcessors()) {
ConcurrentMap<Long, BackendConnection> map = processor.getBackends();
Iterator<Entry<Long, BackendConnection>> itor = map.entrySet().iterator();
while (itor.hasNext()) {
Entry<Long, BackendConnection> entry = itor.next();
BackendConnection con = entry.getValue();
if (con instanceof MySQLConnection) {
if (((MySQLConnection) con).getPool() == dataSouce) {
con.close(reason);
itor.remove();
}
} else if((con instanceof JDBCConnection)
&& (((JDBCConnection) con).getPool() == dataSouce)){
con.close(reason);
itor.remove();
}
}
}
items.clear();
}
}
================================================
FILE: src/main/java/io/mycat/backend/ConQueue.java
================================================
package io.mycat.backend;
import java.util.ArrayList;
import java.util.concurrent.ConcurrentLinkedQueue;
public class ConQueue {
private final ConcurrentLinkedQueue<BackendConnection> autoCommitCons = new ConcurrentLinkedQueue<BackendConnection>();
private final ConcurrentLinkedQueue<BackendConnection> manCommitCons = new ConcurrentLinkedQueue<BackendConnection>();
private long executeCount;
public BackendConnection takeIdleCon(boolean autoCommit) {
ConcurrentLinkedQueue<BackendConnection> f1 = autoCommitCons;
ConcurrentLinkedQueue<BackendConnection> f2 = manCommitCons;
if (!autoCommit) {
f1 = manCommitCons;
f2 = autoCommitCons;
}
BackendConnection con = f1.poll();
while (con != null && !con.checkAlive()){
con.close("channel is closed");
con = f1.poll();
}
if (con == null || con.isClosedOrQuit()) {
con = f2.poll();
}
if (con == null || con.isClosedOrQuit()) {
return null;
} else {
return con;
}
}
public long getExecuteCount() {
return executeCount;
}
public void incExecuteC
gitextract_61vp_fxc/ ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── bug-report.md │ ├── new_feture.md │ └── others.md ├── .gitignore ├── .travis.yml ├── .vscode/ │ ├── launch.json │ └── settings.json ├── Dockerfile ├── LICENSE ├── README.md ├── README_Chinese.md ├── catlet/ │ └── readme.txt ├── eclipse-java-google-style.xml ├── intellij-java-google-style.xml ├── pom.xml ├── src/ │ ├── main/ │ │ ├── assembly/ │ │ │ ├── assembly-linux.xml │ │ │ ├── assembly-mac.xml │ │ │ ├── assembly-solaris.xml │ │ │ ├── assembly-testtool.xml │ │ │ ├── assembly-unix.xml │ │ │ ├── assembly-win.xml │ │ │ ├── conf/ │ │ │ │ └── log4j2.xml │ │ │ └── testtool/ │ │ │ ├── test_globalseq_insert_perf.bat │ │ │ ├── test_globaltable_insert_perf.bat │ │ │ ├── test_globaltable_insert_perf.sh │ │ │ ├── test_stand_insert_perf.bat │ │ │ ├── test_stand_insert_perf.sh │ │ │ ├── test_stand_merge_sel_perf.bat │ │ │ ├── test_stand_merge_sel_perf.sh │ │ │ ├── test_stand_select_perf.bat │ │ │ ├── test_stand_select_perf.sh │ │ │ ├── test_stand_update_perf.bat │ │ │ └── test_stand_update_perf.sh │ │ ├── java/ │ │ │ └── io/ │ │ │ └── mycat/ │ │ │ ├── MycatServer.java │ │ │ ├── MycatShutdown.java │ │ │ ├── MycatStartup.java │ │ │ ├── backend/ │ │ │ │ ├── BackendConnection.java │ │ │ │ ├── ConMap.java │ │ │ │ ├── ConQueue.java │ │ │ │ ├── ConnectionMeta.java │ │ │ │ ├── datasource/ │ │ │ │ │ ├── PhysicalDBNode.java │ │ │ │ │ ├── PhysicalDBPool.java │ │ │ │ │ └── PhysicalDatasource.java │ │ │ │ ├── heartbeat/ │ │ │ │ │ ├── ConsistenCollectHandler.java │ │ │ │ │ ├── DBHeartbeat.java │ │ │ │ │ ├── MySQLConsistencyChecker.java │ │ │ │ │ ├── MySQLConsistencyCheckerHandler.java │ │ │ │ │ ├── MySQLConsistencyHelper.java │ │ │ │ │ ├── MySQLDetector.java │ │ │ │ │ ├── MySQLHeartbeat.java │ │ │ │ │ └── zkprocess/ │ │ │ │ │ ├── ManageHeartBeatChange.java │ │ │ │ │ ├── MycatLeaderLatch.java │ │ │ │ │ └── SwitchStatueToZK.java │ │ │ │ ├── jdbc/ │ │ │ │ │ ├── JDBCConnection.java │ │ │ │ │ ├── JDBCDatasource.java │ │ │ │ │ ├── JDBCHeartbeat.java │ │ │ │ │ ├── ShowVariables.java │ │ │ │ │ ├── mongodb/ │ │ │ │ │ │ ├── DriverPropertyInfoHelper.java │ │ │ │ │ │ ├── MongoClientPropertyHelper.java │ │ │ │ │ │ ├── MongoConnection.java │ │ │ │ │ │ ├── MongoData.java │ │ │ │ │ │ ├── MongoDriver.java │ │ │ │ │ │ ├── MongoEmbeddedObjectProcessor.java │ │ │ │ │ │ ├── MongoPreparedStatement.java │ │ │ │ │ │ ├── MongoResultSet.java │ │ │ │ │ │ ├── MongoResultSetMetaData.java │ │ │ │ │ │ ├── MongoSQLException.java │ │ │ │ │ │ ├── MongoSQLParser.java │ │ │ │ │ │ ├── MongoStatement.java │ │ │ │ │ │ └── StringUtils.java │ │ │ │ │ └── sequoiadb/ │ │ │ │ │ ├── DriverPropertyInfoHelper.java │ │ │ │ │ ├── SequoiaConnection.java │ │ │ │ │ ├── SequoiaData.java │ │ │ │ │ ├── SequoiaDriver.java │ │ │ │ │ ├── SequoiaPreparedStatement.java │ │ │ │ │ ├── SequoiaResultSet.java │ │ │ │ │ ├── SequoiaResultSetMetaData.java │ │ │ │ │ ├── SequoiaSQLException.java │ │ │ │ │ ├── SequoiaSQLParser.java │ │ │ │ │ ├── SequoiaStatement.java │ │ │ │ │ └── StringUtils.java │ │ │ │ ├── loadbalance/ │ │ │ │ │ ├── LeastActiveLoadBalance.java │ │ │ │ │ ├── LoadBalance.java │ │ │ │ │ ├── RandomLoadBalance.java │ │ │ │ │ └── WeightedRoundRobinLoadBalance.java │ │ │ │ ├── mysql/ │ │ │ │ │ ├── BindValue.java │ │ │ │ │ ├── BindValueUtil.java │ │ │ │ │ ├── BufferUtil.java │ │ │ │ │ ├── ByteUtil.java │ │ │ │ │ ├── CharsetUtil.java │ │ │ │ │ ├── DataType.java │ │ │ │ │ ├── LoadDataUtil.java │ │ │ │ │ ├── MySQLMessage.java │ │ │ │ │ ├── PacketUtil.java │ │ │ │ │ ├── PreparedStatement.java │ │ │ │ │ ├── SecurityUtil.java │ │ │ │ │ ├── StreamUtil.java │ │ │ │ │ ├── listener/ │ │ │ │ │ │ ├── DefaultSqlExecuteStageListener.java │ │ │ │ │ │ ├── SqlExecuteStage.java │ │ │ │ │ │ └── SqlExecuteStageListener.java │ │ │ │ │ ├── nio/ │ │ │ │ │ │ ├── MySQLConnection.java │ │ │ │ │ │ ├── MySQLConnectionAuthenticator.java │ │ │ │ │ │ ├── MySQLConnectionFactory.java │ │ │ │ │ │ ├── MySQLConnectionHandler.java │ │ │ │ │ │ ├── MySQLDataSource.java │ │ │ │ │ │ └── handler/ │ │ │ │ │ │ ├── CommitNodeHandler.java │ │ │ │ │ │ ├── ConnectionHeartBeatHandler.java │ │ │ │ │ │ ├── DelegateResponseHandler.java │ │ │ │ │ │ ├── FetchStoreNodeOfChildTableHandler.java │ │ │ │ │ │ ├── GetConnectionHandler.java │ │ │ │ │ │ ├── JDBCFetchStoreNodeOfChildTableHandler.java │ │ │ │ │ │ ├── KillConnectionHandler.java │ │ │ │ │ │ ├── LoadDataResponseHandler.java │ │ │ │ │ │ ├── LockTablesHandler.java │ │ │ │ │ │ ├── MiddlerQueryResultHandler.java │ │ │ │ │ │ ├── MiddlerResultHandler.java │ │ │ │ │ │ ├── MultiNodeCoordinator.java │ │ │ │ │ │ ├── MultiNodeHandler.java │ │ │ │ │ │ ├── MultiNodeQueryHandler.java │ │ │ │ │ │ ├── NewConnectionRespHandler.java │ │ │ │ │ │ ├── PrepareRequestHandler.java │ │ │ │ │ │ ├── ResponseHandler.java │ │ │ │ │ │ ├── RollbackNodeHandler.java │ │ │ │ │ │ ├── RollbackReleaseHandler.java │ │ │ │ │ │ ├── SecondHandler.java │ │ │ │ │ │ ├── SecondQueryHandler.java │ │ │ │ │ │ ├── SimpleLogHandler.java │ │ │ │ │ │ ├── SingleNodeHandler.java │ │ │ │ │ │ ├── Terminatable.java │ │ │ │ │ │ └── UnLockTablesHandler.java │ │ │ │ │ └── xa/ │ │ │ │ │ ├── CoordinatorLogEntry.java │ │ │ │ │ ├── Deserializer.java │ │ │ │ │ ├── LogFileLock.java │ │ │ │ │ ├── ParticipantLogEntry.java │ │ │ │ │ ├── Serializer.java │ │ │ │ │ ├── TxState.java │ │ │ │ │ ├── VersionedFile.java │ │ │ │ │ ├── XACommitCallback.java │ │ │ │ │ ├── XARollbackCallback.java │ │ │ │ │ └── recovery/ │ │ │ │ │ ├── DeserialisationException.java │ │ │ │ │ ├── LogException.java │ │ │ │ │ ├── LogReadException.java │ │ │ │ │ ├── LogWriteException.java │ │ │ │ │ ├── Repository.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── FileSystemRepository.java │ │ │ │ │ └── InMemoryRepository.java │ │ │ │ └── postgresql/ │ │ │ │ ├── PostgreSQLBackendConnection.java │ │ │ │ ├── PostgreSQLBackendConnectionFactory.java │ │ │ │ ├── PostgreSQLBackendConnectionHandler.java │ │ │ │ ├── PostgreSQLDataSource.java │ │ │ │ ├── heartbeat/ │ │ │ │ │ ├── PostgreSQLDetector.java │ │ │ │ │ └── PostgreSQLHeartbeat.java │ │ │ │ ├── package-info.java │ │ │ │ ├── packet/ │ │ │ │ │ ├── AuthenticationPacket.java │ │ │ │ │ ├── BackendKeyData.java │ │ │ │ │ ├── Bind.java │ │ │ │ │ ├── BindComplete.java │ │ │ │ │ ├── CancelRequest.java │ │ │ │ │ ├── CommandComplete.java │ │ │ │ │ ├── CopyInResponse.java │ │ │ │ │ ├── CopyOutResponse.java │ │ │ │ │ ├── DataRow.java │ │ │ │ │ ├── EmptyQueryResponse.java │ │ │ │ │ ├── ErrorResponse.java │ │ │ │ │ ├── NoticeResponse.java │ │ │ │ │ ├── NotificationResponse.java │ │ │ │ │ ├── ParameterDescription.java │ │ │ │ │ ├── ParameterStatus.java │ │ │ │ │ ├── Parse.java │ │ │ │ │ ├── ParseComplete.java │ │ │ │ │ ├── PasswordMessage.java │ │ │ │ │ ├── PostgreSQLPacket.java │ │ │ │ │ ├── Query.java │ │ │ │ │ ├── ReadyForQuery.java │ │ │ │ │ ├── RowDescription.java │ │ │ │ │ ├── SSLRequest.java │ │ │ │ │ ├── StartupMessage.java │ │ │ │ │ └── Terminate.java │ │ │ │ └── utils/ │ │ │ │ ├── MD5Digest.java │ │ │ │ ├── PIOUtils.java │ │ │ │ ├── PacketUtils.java │ │ │ │ ├── PgPacketApaterUtils.java │ │ │ │ └── PgSqlApaterUtils.java │ │ │ ├── buffer/ │ │ │ │ ├── BufferArray.java │ │ │ │ ├── BufferPool.java │ │ │ │ ├── ByteBufferArena.java │ │ │ │ ├── ByteBufferChunk.java │ │ │ │ ├── ByteBufferChunkList.java │ │ │ │ ├── ByteBufferPage.java │ │ │ │ ├── DirectByteBufferPool.java │ │ │ │ ├── MyCatMemoryAllocator.java │ │ │ │ └── NettyBufferPool.java │ │ │ ├── cache/ │ │ │ │ ├── CachePool.java │ │ │ │ ├── CachePoolFactory.java │ │ │ │ ├── CacheService.java │ │ │ │ ├── CacheStatic.java │ │ │ │ ├── DefaultLayedCachePool.java │ │ │ │ ├── LayerCachePool.java │ │ │ │ ├── MysqlDataSetCache.java │ │ │ │ ├── MysqlDataSetService.java │ │ │ │ ├── impl/ │ │ │ │ │ ├── EnchachePooFactory.java │ │ │ │ │ ├── EnchachePool.java │ │ │ │ │ ├── LevelDBCachePooFactory.java │ │ │ │ │ ├── LevelDBPool.java │ │ │ │ │ ├── MapDBCachePooFactory.java │ │ │ │ │ └── MapDBCachePool.java │ │ │ │ └── index/ │ │ │ │ └── Shard.java │ │ │ ├── catlets/ │ │ │ │ ├── Catlet.java │ │ │ │ ├── JoinParser.java │ │ │ │ ├── ShareJoin.java │ │ │ │ └── TableFilter.java │ │ │ ├── config/ │ │ │ │ ├── Alarms.java │ │ │ │ ├── Capabilities.java │ │ │ │ ├── ConfigInitializer.java │ │ │ │ ├── ErrorCode.java │ │ │ │ ├── Fields.java │ │ │ │ ├── Isolations.java │ │ │ │ ├── MycatCluster.java │ │ │ │ ├── MycatConfig.java │ │ │ │ ├── MycatNode.java │ │ │ │ ├── MycatPrivileges.java │ │ │ │ ├── Versions.java │ │ │ │ ├── Versions.template │ │ │ │ ├── classloader/ │ │ │ │ │ ├── DynaClassLoader.java │ │ │ │ │ └── JarLoader.java │ │ │ │ ├── loader/ │ │ │ │ │ ├── ConfigLoader.java │ │ │ │ │ ├── SchemaLoader.java │ │ │ │ │ ├── console/ │ │ │ │ │ │ └── ZookeeperPath.java │ │ │ │ │ ├── xml/ │ │ │ │ │ │ ├── XMLConfigLoader.java │ │ │ │ │ │ ├── XMLRuleLoader.java │ │ │ │ │ │ ├── XMLSchemaLoader.java │ │ │ │ │ │ └── XMLServerLoader.java │ │ │ │ │ └── zkprocess/ │ │ │ │ │ ├── comm/ │ │ │ │ │ │ ├── NotiflyService.java │ │ │ │ │ │ ├── ZkConfig.java │ │ │ │ │ │ ├── ZkParamCfg.java │ │ │ │ │ │ └── ZookeeperProcessListen.java │ │ │ │ │ ├── console/ │ │ │ │ │ │ ├── ParseParamEnum.java │ │ │ │ │ │ └── ZkNofiflyCfg.java │ │ │ │ │ ├── entity/ │ │ │ │ │ │ ├── Named.java │ │ │ │ │ │ ├── Propertied.java │ │ │ │ │ │ ├── Property.java │ │ │ │ │ │ ├── Rules.java │ │ │ │ │ │ ├── Schemas.java │ │ │ │ │ │ ├── Server.java │ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ │ ├── CacheInfo.java │ │ │ │ │ │ │ └── Ehcache.java │ │ │ │ │ │ ├── package-info.java │ │ │ │ │ │ ├── rule/ │ │ │ │ │ │ │ ├── function/ │ │ │ │ │ │ │ │ └── Function.java │ │ │ │ │ │ │ └── tablerule/ │ │ │ │ │ │ │ ├── Rule.java │ │ │ │ │ │ │ └── TableRule.java │ │ │ │ │ │ ├── schema/ │ │ │ │ │ │ │ ├── datahost/ │ │ │ │ │ │ │ │ ├── DataHost.java │ │ │ │ │ │ │ │ ├── ReadHost.java │ │ │ │ │ │ │ │ └── WriteHost.java │ │ │ │ │ │ │ ├── datanode/ │ │ │ │ │ │ │ │ └── DataNode.java │ │ │ │ │ │ │ └── schema/ │ │ │ │ │ │ │ ├── ChildTable.java │ │ │ │ │ │ │ ├── Schema.java │ │ │ │ │ │ │ └── Table.java │ │ │ │ │ │ └── server/ │ │ │ │ │ │ ├── System.java │ │ │ │ │ │ └── user/ │ │ │ │ │ │ └── User.java │ │ │ │ │ ├── parse/ │ │ │ │ │ │ ├── JsonProcessBase.java │ │ │ │ │ │ ├── ParseJsonServiceInf.java │ │ │ │ │ │ ├── ParseXmlServiceInf.java │ │ │ │ │ │ ├── XmlProcessBase.java │ │ │ │ │ │ └── entryparse/ │ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ │ ├── json/ │ │ │ │ │ │ │ │ └── EhcacheJsonParse.java │ │ │ │ │ │ │ └── xml/ │ │ │ │ │ │ │ └── EhcacheParseXmlImpl.java │ │ │ │ │ │ ├── rule/ │ │ │ │ │ │ │ ├── json/ │ │ │ │ │ │ │ │ ├── FunctionJsonParse.java │ │ │ │ │ │ │ │ └── TableRuleJsonParse.java │ │ │ │ │ │ │ └── xml/ │ │ │ │ │ │ │ └── RuleParseXmlImpl.java │ │ │ │ │ │ ├── schema/ │ │ │ │ │ │ │ ├── json/ │ │ │ │ │ │ │ │ ├── DataHostJsonParse.java │ │ │ │ │ │ │ │ ├── DataNodeJsonParse.java │ │ │ │ │ │ │ │ └── SchemaJsonParse.java │ │ │ │ │ │ │ └── xml/ │ │ │ │ │ │ │ └── SchemasParseXmlImpl.java │ │ │ │ │ │ └── server/ │ │ │ │ │ │ ├── json/ │ │ │ │ │ │ │ ├── SystemJsonParse.java │ │ │ │ │ │ │ └── UserJsonParse.java │ │ │ │ │ │ └── xml/ │ │ │ │ │ │ └── ServerParseXmlImpl.java │ │ │ │ │ ├── xmltozk/ │ │ │ │ │ │ ├── BindataToZK.java │ │ │ │ │ │ ├── XmltoZkMain.java │ │ │ │ │ │ └── listen/ │ │ │ │ │ │ ├── EcachesxmlTozkLoader.java │ │ │ │ │ │ ├── OthermsgTozkLoader.java │ │ │ │ │ │ ├── RulesxmlTozkLoader.java │ │ │ │ │ │ ├── SchemasxmlTozkLoader.java │ │ │ │ │ │ ├── SequenceTozkLoader.java │ │ │ │ │ │ └── ServerxmlTozkLoader.java │ │ │ │ │ ├── zktoxml/ │ │ │ │ │ │ ├── ZktoXmlMain.java │ │ │ │ │ │ ├── command/ │ │ │ │ │ │ │ └── CommandPathListener.java │ │ │ │ │ │ └── listen/ │ │ │ │ │ │ ├── BinDataPathChildrenCacheListener.java │ │ │ │ │ │ ├── EcacheszkToxmlLoader.java │ │ │ │ │ │ ├── RuleDataPathChildrenCacheListener.java │ │ │ │ │ │ ├── RuleFunctionCacheListener.java │ │ │ │ │ │ ├── RuleszkToxmlLoader.java │ │ │ │ │ │ ├── SchemaszkToxmlLoader.java │ │ │ │ │ │ ├── SequenceTopropertiesLoader.java │ │ │ │ │ │ └── ServerzkToxmlLoader.java │ │ │ │ │ └── zookeeper/ │ │ │ │ │ ├── ClusterInfo.java │ │ │ │ │ ├── DataInf.java │ │ │ │ │ ├── DiretoryInf.java │ │ │ │ │ └── process/ │ │ │ │ │ ├── ZkDataImpl.java │ │ │ │ │ ├── ZkDirectoryImpl.java │ │ │ │ │ └── ZkMultLoader.java │ │ │ │ ├── model/ │ │ │ │ │ ├── ClusterConfig.java │ │ │ │ │ ├── DBHostConfig.java │ │ │ │ │ ├── DataHostConfig.java │ │ │ │ │ ├── DataNodeConfig.java │ │ │ │ │ ├── FirewallConfig.java │ │ │ │ │ ├── MycatNodeConfig.java │ │ │ │ │ ├── SchemaConfig.java │ │ │ │ │ ├── SystemConfig.java │ │ │ │ │ ├── TableConfig.java │ │ │ │ │ ├── TableConfigMap.java │ │ │ │ │ ├── TableRuleConfig.java │ │ │ │ │ ├── UserConfig.java │ │ │ │ │ ├── UserPrivilegesConfig.java │ │ │ │ │ └── rule/ │ │ │ │ │ ├── RuleAlgorithm.java │ │ │ │ │ ├── RuleConfig.java │ │ │ │ │ └── TableRuleConfig.java │ │ │ │ ├── table/ │ │ │ │ │ └── structure/ │ │ │ │ │ ├── MySQLTableStructureDetector.java │ │ │ │ │ └── TableStructureProcessor.java │ │ │ │ └── util/ │ │ │ │ ├── BeanConfig.java │ │ │ │ ├── ConfigException.java │ │ │ │ ├── ConfigUtil.java │ │ │ │ ├── DnPropertyUtil.java │ │ │ │ ├── FieldDictionary.java │ │ │ │ ├── Initializable.java │ │ │ │ ├── JVMInfo.java │ │ │ │ ├── ObjectAccessException.java │ │ │ │ ├── OrderRetainingMap.java │ │ │ │ ├── ParameterMapping.java │ │ │ │ ├── ReflectionProvider.java │ │ │ │ └── Visitor.java │ │ │ ├── manager/ │ │ │ │ ├── ManagerConnection.java │ │ │ │ ├── ManagerConnectionFactory.java │ │ │ │ ├── ManagerQueryHandler.java │ │ │ │ ├── handler/ │ │ │ │ │ ├── ClearHandler.java │ │ │ │ │ ├── ConfFileHandler.java │ │ │ │ │ ├── ReloadHandler.java │ │ │ │ │ ├── RollbackHandler.java │ │ │ │ │ ├── SelectHandler.java │ │ │ │ │ ├── ShowHandler.java │ │ │ │ │ ├── ShowServerLog.java │ │ │ │ │ ├── StopHandler.java │ │ │ │ │ ├── SwitchHandler.java │ │ │ │ │ └── ZKHandler.java │ │ │ │ └── response/ │ │ │ │ ├── CheckGlobalTable.java │ │ │ │ ├── ClearSlow.java │ │ │ │ ├── KillConnection.java │ │ │ │ ├── Offline.java │ │ │ │ ├── Online.java │ │ │ │ ├── ReloadConfig.java │ │ │ │ ├── ReloadQueryCf.java │ │ │ │ ├── ReloadSqlSlowTime.java │ │ │ │ ├── ReloadSqlStat.java │ │ │ │ ├── ReloadUser.java │ │ │ │ ├── ReloadUserStat.java │ │ │ │ ├── ReloadZktoXml.java │ │ │ │ ├── RollbackConfig.java │ │ │ │ ├── RollbackUser.java │ │ │ │ ├── SelectSessionAutoIncrement.java │ │ │ │ ├── SelectSessionTxReadOnly.java │ │ │ │ ├── SelectVersionComment.java │ │ │ │ ├── ShowBackend.java │ │ │ │ ├── ShowBackendOld.java │ │ │ │ ├── ShowCollation.java │ │ │ │ ├── ShowCommand.java │ │ │ │ ├── ShowConnection.java │ │ │ │ ├── ShowConnectionSQL.java │ │ │ │ ├── ShowDataNode.java │ │ │ │ ├── ShowDataSource.java │ │ │ │ ├── ShowDatabase.java │ │ │ │ ├── ShowDatasourceCluster.java │ │ │ │ ├── ShowDatasourceSyn.java │ │ │ │ ├── ShowDatasourceSynDetail.java │ │ │ │ ├── ShowDirectMemory.java │ │ │ │ ├── ShowHeartbeat.java │ │ │ │ ├── ShowHeartbeatDetail.java │ │ │ │ ├── ShowHelp.java │ │ │ │ ├── ShowParser.java │ │ │ │ ├── ShowProcessor.java │ │ │ │ ├── ShowRouter.java │ │ │ │ ├── ShowSQL.java │ │ │ │ ├── ShowSQLCondition.java │ │ │ │ ├── ShowSQLDetail.java │ │ │ │ ├── ShowSQLExecute.java │ │ │ │ ├── ShowSQLHigh.java │ │ │ │ ├── ShowSQLLarge.java │ │ │ │ ├── ShowSQLSlow.java │ │ │ │ ├── ShowSQLSumTable.java │ │ │ │ ├── ShowSQLSumUser.java │ │ │ │ ├── ShowServer.java │ │ │ │ ├── ShowSession.java │ │ │ │ ├── ShowSqlResultSet.java │ │ │ │ ├── ShowSysLog.java │ │ │ │ ├── ShowSysParam.java │ │ │ │ ├── ShowThreadPool.java │ │ │ │ ├── ShowTime.java │ │ │ │ ├── ShowVariables.java │ │ │ │ ├── ShowVersion.java │ │ │ │ ├── ShowWhiteHost.java │ │ │ │ ├── StopHeartbeat.java │ │ │ │ └── SwitchDataSource.java │ │ │ ├── memory/ │ │ │ │ ├── MyCatMemory.java │ │ │ │ ├── environment/ │ │ │ │ │ ├── EnvironmentInformation.java │ │ │ │ │ ├── Hardware.java │ │ │ │ │ ├── HardwareDescription.java │ │ │ │ │ └── OperatingSystem.java │ │ │ │ └── unsafe/ │ │ │ │ ├── KVIterator.java │ │ │ │ ├── Platform.java │ │ │ │ ├── array/ │ │ │ │ │ ├── ByteArrayMethods.java │ │ │ │ │ ├── CharArray.java │ │ │ │ │ └── LongArray.java │ │ │ │ ├── bitset/ │ │ │ │ │ └── BitSetMethods.java │ │ │ │ ├── hash/ │ │ │ │ │ └── Murmur3_x86_32.java │ │ │ │ ├── map/ │ │ │ │ │ ├── BytesToBytesMap.java │ │ │ │ │ ├── HashMapGrowthStrategy.java │ │ │ │ │ └── UnsafeFixedWidthAggregationMap.java │ │ │ │ ├── memory/ │ │ │ │ │ ├── HeapMemoryAllocator.java │ │ │ │ │ ├── MemoryAllocator.java │ │ │ │ │ ├── MemoryBlock.java │ │ │ │ │ ├── MemoryLocation.java │ │ │ │ │ ├── UnsafeMemoryAllocator.java │ │ │ │ │ └── mm/ │ │ │ │ │ ├── DataNodeMemoryManager.java │ │ │ │ │ ├── MemoryConsumer.java │ │ │ │ │ ├── MemoryManager.java │ │ │ │ │ ├── MemoryMode.java │ │ │ │ │ ├── MemoryPool.java │ │ │ │ │ ├── ResultMergeMemoryManager.java │ │ │ │ │ └── ResultSetMemoryPool.java │ │ │ │ ├── ringbuffer/ │ │ │ │ │ ├── RingBuffer.java │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── Cursored.java │ │ │ │ │ │ ├── DataProvider.java │ │ │ │ │ │ ├── Sequenced.java │ │ │ │ │ │ ├── barrier/ │ │ │ │ │ │ │ └── SequenceBarrier.java │ │ │ │ │ │ ├── event/ │ │ │ │ │ │ │ ├── EventFactory.java │ │ │ │ │ │ │ ├── EventSequencer.java │ │ │ │ │ │ │ ├── EventSink.java │ │ │ │ │ │ │ ├── EventTranslator.java │ │ │ │ │ │ │ ├── EventTranslatorOneArg.java │ │ │ │ │ │ │ ├── EventTranslatorThreeArg.java │ │ │ │ │ │ │ ├── EventTranslatorTwoArg.java │ │ │ │ │ │ │ └── EventTranslatorVararg.java │ │ │ │ │ │ ├── sequence/ │ │ │ │ │ │ │ ├── Sequence.java │ │ │ │ │ │ │ └── SequenceGroups.java │ │ │ │ │ │ └── waitStrategy/ │ │ │ │ │ │ ├── WaitStrategy.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── BlockingWaitStrategy.java │ │ │ │ │ │ ├── BusySpinWaitStrategy.java │ │ │ │ │ │ └── SleepingWaitStrategy.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── AlertException.java │ │ │ │ │ │ ├── InsufficientCapacityException.java │ │ │ │ │ │ └── TimeoutException.java │ │ │ │ │ ├── producer/ │ │ │ │ │ │ ├── AbstractSequencer.java │ │ │ │ │ │ ├── MultiProducerSequencer.java │ │ │ │ │ │ ├── Sequencer.java │ │ │ │ │ │ └── SingleProducerSequencer.java │ │ │ │ │ └── utils/ │ │ │ │ │ └── Util.java │ │ │ │ ├── row/ │ │ │ │ │ ├── BufferHolder.java │ │ │ │ │ ├── StructType.java │ │ │ │ │ ├── UnsafeRow.java │ │ │ │ │ └── UnsafeRowWriter.java │ │ │ │ ├── storage/ │ │ │ │ │ ├── ConnectionId.java │ │ │ │ │ ├── DataNodeDiskManager.java │ │ │ │ │ ├── DataNodeFileManager.java │ │ │ │ │ ├── DeserializationStream.java │ │ │ │ │ ├── DiskRowWriter.java │ │ │ │ │ ├── DummySerializerInstance.java │ │ │ │ │ ├── SerializationStream.java │ │ │ │ │ ├── SerializerInstance.java │ │ │ │ │ ├── SerializerManager.java │ │ │ │ │ ├── TempDataNodeId.java │ │ │ │ │ └── TimeTrackingOutputStream.java │ │ │ │ ├── types/ │ │ │ │ │ ├── ByteArray.java │ │ │ │ │ ├── CalendarInterval.java │ │ │ │ │ └── UTF8String.java │ │ │ │ └── utils/ │ │ │ │ ├── ByteUnit.java │ │ │ │ ├── BytesTools.java │ │ │ │ ├── JavaUtils.java │ │ │ │ ├── MycatPropertyConf.java │ │ │ │ └── sort/ │ │ │ │ ├── AbstractScalaRowIterator.java │ │ │ │ ├── PrefixComparator.java │ │ │ │ ├── PrefixComparators.java │ │ │ │ ├── RadixSort.java │ │ │ │ ├── RecordComparator.java │ │ │ │ ├── RecordPointerAndKeyPrefix.java │ │ │ │ ├── RowPrefixComputer.java │ │ │ │ ├── SortDataFormat.java │ │ │ │ ├── SortPrefixUtils.java │ │ │ │ ├── Sorter.java │ │ │ │ ├── TestSorter.java │ │ │ │ ├── TimSort.java │ │ │ │ ├── UnsafeExternalRowSorter.java │ │ │ │ ├── UnsafeExternalSorter.java │ │ │ │ ├── UnsafeInMemorySorter.java │ │ │ │ ├── UnsafeKVExternalSorter.java │ │ │ │ ├── UnsafeKeyValueSorter.java │ │ │ │ ├── UnsafeRowsMerger.java │ │ │ │ ├── UnsafeSortDataFormat.java │ │ │ │ ├── UnsafeSorterIterator.java │ │ │ │ ├── UnsafeSorterSpillMerger.java │ │ │ │ ├── UnsafeSorterSpillReader.java │ │ │ │ └── UnsafeSorterSpillWriter.java │ │ │ ├── migrate/ │ │ │ │ ├── BinlogIdleCheck.java │ │ │ │ ├── BinlogStream.java │ │ │ │ ├── BinlogStreamHoder.java │ │ │ │ ├── MigrateDumpRunner.java │ │ │ │ ├── MigrateMainRunner.java │ │ │ │ ├── MigrateTask.java │ │ │ │ ├── MigrateTaskWatch.java │ │ │ │ ├── MigrateUtils.java │ │ │ │ ├── SqlExecuteListener.java │ │ │ │ ├── SwitchCleanListener.java │ │ │ │ ├── SwitchCommitListener.java │ │ │ │ ├── SwitchPrepareCheckRunner.java │ │ │ │ ├── SwitchPrepareListener.java │ │ │ │ ├── TaskNode.java │ │ │ │ └── TaskStatus.java │ │ │ ├── net/ │ │ │ │ ├── AIOAcceptor.java │ │ │ │ ├── AIOConnector.java │ │ │ │ ├── AIOSocketWR.java │ │ │ │ ├── AbstractConnection.java │ │ │ │ ├── BIOConnection.java │ │ │ │ ├── BackendAIOConnection.java │ │ │ │ ├── ClosableConnection.java │ │ │ │ ├── ConnectionException.java │ │ │ │ ├── FrontendConnection.java │ │ │ │ ├── NIOAcceptor.java │ │ │ │ ├── NIOConnection.java │ │ │ │ ├── NIOConnector.java │ │ │ │ ├── NIOHandler.java │ │ │ │ ├── NIOProcessor.java │ │ │ │ ├── NIOReactor.java │ │ │ │ ├── NIOReactorPool.java │ │ │ │ ├── NIOSocketWR.java │ │ │ │ ├── SocketAcceptor.java │ │ │ │ ├── SocketConnector.java │ │ │ │ ├── SocketWR.java │ │ │ │ ├── WriteEventCheckRunner.java │ │ │ │ ├── factory/ │ │ │ │ │ ├── BackendConnectionFactory.java │ │ │ │ │ └── FrontendConnectionFactory.java │ │ │ │ ├── handler/ │ │ │ │ │ ├── BackendAsyncHandler.java │ │ │ │ │ ├── FrontendAuthenticator.java │ │ │ │ │ ├── FrontendCommandHandler.java │ │ │ │ │ ├── FrontendPrepareHandler.java │ │ │ │ │ ├── FrontendPrivileges.java │ │ │ │ │ ├── FrontendQueryHandler.java │ │ │ │ │ └── LoadDataInfileHandler.java │ │ │ │ ├── mysql/ │ │ │ │ │ ├── AuthPacket.java │ │ │ │ │ ├── AuthSwitchPacket.java │ │ │ │ │ ├── BinaryPacket.java │ │ │ │ │ ├── BinaryRowDataPacket.java │ │ │ │ │ ├── CommandPacket.java │ │ │ │ │ ├── EOFPacket.java │ │ │ │ │ ├── EmptyPacket.java │ │ │ │ │ ├── ErrorPacket.java │ │ │ │ │ ├── ExecutePacket.java │ │ │ │ │ ├── FieldPacket.java │ │ │ │ │ ├── HandshakePacket.java │ │ │ │ │ ├── HandshakeV10Packet.java │ │ │ │ │ ├── HeartbeatPacket.java │ │ │ │ │ ├── LongDataPacket.java │ │ │ │ │ ├── MySQLPacket.java │ │ │ │ │ ├── OkPacket.java │ │ │ │ │ ├── PingPacket.java │ │ │ │ │ ├── PreparedOkPacket.java │ │ │ │ │ ├── QuitPacket.java │ │ │ │ │ ├── Reply323Packet.java │ │ │ │ │ ├── RequestFilePacket.java │ │ │ │ │ ├── ResetPacket.java │ │ │ │ │ ├── ResultSetHeaderPacket.java │ │ │ │ │ ├── RowDataPacket.java │ │ │ │ │ └── StatusFlags.java │ │ │ │ └── postgres/ │ │ │ │ ├── AuthenticationCleartextPassword.java │ │ │ │ ├── AuthenticationGSS.java │ │ │ │ ├── AuthenticationGSSContinue.java │ │ │ │ ├── AuthenticationKerberosV5.java │ │ │ │ ├── AuthenticationMD5Password.java │ │ │ │ ├── AuthenticationOk.java │ │ │ │ ├── AuthenticationSCMCredential.java │ │ │ │ ├── AuthenticationSSPI.java │ │ │ │ ├── BackendKeyData.java │ │ │ │ ├── Bind.java │ │ │ │ ├── BindComplete.java │ │ │ │ ├── CancelRequest.java │ │ │ │ ├── Close.java │ │ │ │ ├── CloseComplete.java │ │ │ │ ├── CommandComplete.java │ │ │ │ ├── CopyBothResponse.java │ │ │ │ ├── CopyData.java │ │ │ │ ├── CopyDone.java │ │ │ │ ├── CopyFail.java │ │ │ │ ├── CopyInResponse.java │ │ │ │ ├── CopyOutResponse.java │ │ │ │ ├── DataRow.java │ │ │ │ ├── Describe.java │ │ │ │ ├── EmptyQueryResponse.java │ │ │ │ ├── ErrorResponse.java │ │ │ │ ├── Execute.java │ │ │ │ ├── Flush.java │ │ │ │ ├── FunctionCall.java │ │ │ │ ├── FunctionCallResponse.java │ │ │ │ ├── NoData.java │ │ │ │ ├── NoticeResponse.java │ │ │ │ ├── NotificationResponse.java │ │ │ │ ├── ParameterDescription.java │ │ │ │ ├── ParameterStatus.java │ │ │ │ ├── Parse.java │ │ │ │ ├── ParseComplete.java │ │ │ │ ├── PasswordMessage.java │ │ │ │ ├── PortalSuspended.java │ │ │ │ ├── PostgresPacket.java │ │ │ │ ├── Query.java │ │ │ │ ├── ReadyForQuery.java │ │ │ │ ├── RowDescription.java │ │ │ │ ├── SSLRequest.java │ │ │ │ ├── StartupMessage.java │ │ │ │ ├── Sync.java │ │ │ │ └── Terminate.java │ │ │ ├── route/ │ │ │ │ ├── MyCATSequnceProcessor.java │ │ │ │ ├── Procedure.java │ │ │ │ ├── ProcedureParameter.java │ │ │ │ ├── RouteCheckRule.java │ │ │ │ ├── RouteResultset.java │ │ │ │ ├── RouteResultsetNode.java │ │ │ │ ├── RouteService.java │ │ │ │ ├── RouteStrategy.java │ │ │ │ ├── SQLMerge.java │ │ │ │ ├── SessionSQLPair.java │ │ │ │ ├── factory/ │ │ │ │ │ └── RouteStrategyFactory.java │ │ │ │ ├── function/ │ │ │ │ │ ├── AbstractPartitionAlgorithm.java │ │ │ │ │ ├── AutoPartitionByLong.java │ │ │ │ │ ├── LatestMonthPartion.java │ │ │ │ │ ├── NumberParseUtil.java │ │ │ │ │ ├── PartitionByCRC32PreSlot.java │ │ │ │ │ ├── PartitionByDate.java │ │ │ │ │ ├── PartitionByFileMap.java │ │ │ │ │ ├── PartitionByHashMod.java │ │ │ │ │ ├── PartitionByHotDate.java │ │ │ │ │ ├── PartitionByJumpConsistentHash.java │ │ │ │ │ ├── PartitionByLong.java │ │ │ │ │ ├── PartitionByMod.java │ │ │ │ │ ├── PartitionByMonth.java │ │ │ │ │ ├── PartitionByMonthAndHistory.java │ │ │ │ │ ├── PartitionByMurmurHash.java │ │ │ │ │ ├── PartitionByPattern.java │ │ │ │ │ ├── PartitionByPrefixPattern.java │ │ │ │ │ ├── PartitionByRangeDateHash.java │ │ │ │ │ ├── PartitionByRangeMod.java │ │ │ │ │ ├── PartitionByString.java │ │ │ │ │ ├── PartitionDirectBySubString.java │ │ │ │ │ ├── PureJavaCrc32.java │ │ │ │ │ ├── ReloadFunction.java │ │ │ │ │ ├── SlotFunction.java │ │ │ │ │ └── TableRuleAware.java │ │ │ │ ├── handler/ │ │ │ │ │ ├── HintCatletHandler.java │ │ │ │ │ ├── HintDataNodeHandler.java │ │ │ │ │ ├── HintHandler.java │ │ │ │ │ ├── HintHandlerFactory.java │ │ │ │ │ ├── HintMasterDBHandler.java │ │ │ │ │ ├── HintSQLHandler.java │ │ │ │ │ └── HintSchemaHandler.java │ │ │ │ ├── impl/ │ │ │ │ │ ├── AbstractRouteStrategy.java │ │ │ │ │ ├── DruidMycatRouteStrategy.java │ │ │ │ │ └── middlerResultStrategy/ │ │ │ │ │ ├── BinaryOpResultHandler.java │ │ │ │ │ ├── InSubQueryResultHandler.java │ │ │ │ │ ├── RouteMiddlerReaultHandler.java │ │ │ │ │ ├── SQLAllResultHandler.java │ │ │ │ │ ├── SQLExistsResultHandler.java │ │ │ │ │ └── SQLQueryResultHandler.java │ │ │ │ ├── parser/ │ │ │ │ │ ├── ManagerParse.java │ │ │ │ │ ├── ManagerParseClear.java │ │ │ │ │ ├── ManagerParseHeartbeat.java │ │ │ │ │ ├── ManagerParseKill.java │ │ │ │ │ ├── ManagerParseReload.java │ │ │ │ │ ├── ManagerParseRollback.java │ │ │ │ │ ├── ManagerParseSelect.java │ │ │ │ │ ├── ManagerParseShow.java │ │ │ │ │ ├── ManagerParseStop.java │ │ │ │ │ ├── ManagerParseSwitch.java │ │ │ │ │ ├── druid/ │ │ │ │ │ │ ├── DruidParser.java │ │ │ │ │ │ ├── DruidParserFactory.java │ │ │ │ │ │ ├── DruidSequenceHandler.java │ │ │ │ │ │ ├── DruidShardingParseInfo.java │ │ │ │ │ │ ├── LoadDataOutputVisitor.java │ │ │ │ │ │ ├── LoadDataStatement.java │ │ │ │ │ │ ├── MycatExprParser.java │ │ │ │ │ │ ├── MycatLexer.java │ │ │ │ │ │ ├── MycatSchemaStatVisitor.java │ │ │ │ │ │ ├── MycatSelectParser.java │ │ │ │ │ │ ├── MycatStatementParser.java │ │ │ │ │ │ ├── MycatSubQueryVisitor.java │ │ │ │ │ │ ├── RouteCalculateUnit.java │ │ │ │ │ │ ├── SchemaStatVisitorFactory.java │ │ │ │ │ │ ├── SqlMethodInvocationHandler.java │ │ │ │ │ │ ├── SqlMethodInvocationHandlerFactory.java │ │ │ │ │ │ ├── WhereUnit.java │ │ │ │ │ │ └── impl/ │ │ │ │ │ │ ├── DefaultDruidParser.java │ │ │ │ │ │ ├── DruidAlterTableParser.java │ │ │ │ │ │ ├── DruidCreateTableParser.java │ │ │ │ │ │ ├── DruidDeleteParser.java │ │ │ │ │ │ ├── DruidInsertParser.java │ │ │ │ │ │ ├── DruidLockTableParser.java │ │ │ │ │ │ ├── DruidSelectDb2Parser.java │ │ │ │ │ │ ├── DruidSelectOracleParser.java │ │ │ │ │ │ ├── DruidSelectParser.java │ │ │ │ │ │ ├── DruidSelectPostgresqlParser.java │ │ │ │ │ │ ├── DruidSelectSqlServerParser.java │ │ │ │ │ │ ├── DruidUpdateParser.java │ │ │ │ │ │ ├── MysqlMethodInvocationHandler.java │ │ │ │ │ │ ├── OracleMethodInvocationHandler.java │ │ │ │ │ │ └── PgsqlMethodInvocationHandler.java │ │ │ │ │ ├── primitive/ │ │ │ │ │ │ ├── FunctionParser.java │ │ │ │ │ │ └── Model/ │ │ │ │ │ │ ├── Commons.java │ │ │ │ │ │ ├── Field.java │ │ │ │ │ │ ├── Function.java │ │ │ │ │ │ └── Identifier.java │ │ │ │ │ └── util/ │ │ │ │ │ ├── ArrayUtil.java │ │ │ │ │ ├── CharTypes.java │ │ │ │ │ ├── PageSQLUtil.java │ │ │ │ │ ├── Pair.java │ │ │ │ │ ├── PairUtil.java │ │ │ │ │ ├── ParseString.java │ │ │ │ │ ├── ParseUtil.java │ │ │ │ │ ├── SQLParserUtils.java │ │ │ │ │ └── WildcardUtil.java │ │ │ │ ├── sequence/ │ │ │ │ │ ├── BatchInsertSequence.java │ │ │ │ │ └── handler/ │ │ │ │ │ ├── DistributedSequenceHandler.java │ │ │ │ │ ├── HttpIncrSequenceHandler.java │ │ │ │ │ ├── IncrSequenceBDBHandler.java │ │ │ │ │ ├── IncrSequenceHandler.java │ │ │ │ │ ├── IncrSequenceMySQLHandler.java │ │ │ │ │ ├── IncrSequencePropHandler.java │ │ │ │ │ ├── IncrSequenceTimeHandler.java │ │ │ │ │ ├── IncrSequenceZKHandler.java │ │ │ │ │ ├── SequenceHandler.java │ │ │ │ │ ├── SequenceVal.java │ │ │ │ │ ├── SnowflakeIdSequenceHandler.java │ │ │ │ │ └── ThirftClientSequenceHandler.java │ │ │ │ └── util/ │ │ │ │ ├── CacheUtil.java │ │ │ │ ├── PartitionUtil.java │ │ │ │ ├── PropertiesUtil.java │ │ │ │ └── RouterUtil.java │ │ │ ├── server/ │ │ │ │ ├── NonBlockingSession.java │ │ │ │ ├── ServerConnection.java │ │ │ │ ├── ServerConnectionFactory.java │ │ │ │ ├── ServerQueryHandler.java │ │ │ │ ├── Session.java │ │ │ │ ├── handler/ │ │ │ │ │ ├── BeginHandler.java │ │ │ │ │ ├── CommandHandler.java │ │ │ │ │ ├── Explain2Handler.java │ │ │ │ │ ├── ExplainHandler.java │ │ │ │ │ ├── KillHandler.java │ │ │ │ │ ├── MigrateHandler.java │ │ │ │ │ ├── MysqlInformationSchemaHandler.java │ │ │ │ │ ├── MysqlProcHandler.java │ │ │ │ │ ├── SavepointHandler.java │ │ │ │ │ ├── SelectHandler.java │ │ │ │ │ ├── ServerLoadDataInfileHandler.java │ │ │ │ │ ├── ServerPrepareHandler.java │ │ │ │ │ ├── SetHandler.java │ │ │ │ │ ├── ShowCache.java │ │ │ │ │ ├── ShowHandler.java │ │ │ │ │ ├── StartHandler.java │ │ │ │ │ └── UseHandler.java │ │ │ │ ├── interceptor/ │ │ │ │ │ ├── SQLInterceptor.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── DefaultSqlInterceptor.java │ │ │ │ │ ├── GlobalTableUtil.java │ │ │ │ │ ├── StatSqlInterceptor.java │ │ │ │ │ └── StatisticsSqlInterceptor.java │ │ │ │ ├── parser/ │ │ │ │ │ ├── ServerParse.java │ │ │ │ │ ├── ServerParseSelect.java │ │ │ │ │ ├── ServerParseSet.java │ │ │ │ │ ├── ServerParseShow.java │ │ │ │ │ └── ServerParseStart.java │ │ │ │ ├── response/ │ │ │ │ │ ├── CharacterSet.java │ │ │ │ │ ├── ClientHeartbeatResponse.java │ │ │ │ │ ├── Heartbeat.java │ │ │ │ │ ├── InformationSchemaProfiling.java │ │ │ │ │ ├── InformationSchemaProfilingSqlyog.java │ │ │ │ │ ├── Ping.java │ │ │ │ │ ├── PreparedStmtResponse.java │ │ │ │ │ ├── SelectConnnectID.java │ │ │ │ │ ├── SelectDatabase.java │ │ │ │ │ ├── SelectIdentity.java │ │ │ │ │ ├── SelectLastInsertId.java │ │ │ │ │ ├── SelectTxReadOnly.java │ │ │ │ │ ├── SelectUser.java │ │ │ │ │ ├── SelectVariables.java │ │ │ │ │ ├── SelectVersion.java │ │ │ │ │ ├── SelectVersionComment.java │ │ │ │ │ ├── SessionIncrement.java │ │ │ │ │ ├── SessionIsolation.java │ │ │ │ │ ├── ShowCobarCluster.java │ │ │ │ │ ├── ShowCobarStatus.java │ │ │ │ │ ├── ShowDatabases.java │ │ │ │ │ ├── ShowFullTables.java │ │ │ │ │ ├── ShowMyCATCluster.java │ │ │ │ │ ├── ShowMyCatStatus.java │ │ │ │ │ └── ShowTables.java │ │ │ │ ├── sqlcmd/ │ │ │ │ │ ├── CommitCommand.java │ │ │ │ │ ├── SQLCmdConstant.java │ │ │ │ │ └── SQLCtrlCommand.java │ │ │ │ └── util/ │ │ │ │ └── SchemaUtil.java │ │ │ ├── sqlengine/ │ │ │ │ ├── AllJobFinishedListener.java │ │ │ │ ├── BatchSQLJob.java │ │ │ │ ├── EngineCtx.java │ │ │ │ ├── MultiRowSQLQueryResultHandler.java │ │ │ │ ├── OneRawSQLQueryResultHandler.java │ │ │ │ ├── SQLJob.java │ │ │ │ ├── SQLJobHandler.java │ │ │ │ ├── SQLQueryResult.java │ │ │ │ ├── SQLQueryResultListener.java │ │ │ │ └── mpp/ │ │ │ │ ├── AbstractDataNodeMerge.java │ │ │ │ ├── ColMeta.java │ │ │ │ ├── ColumnRoutePair.java │ │ │ │ ├── DataMergeService.java │ │ │ │ ├── DataNodeMergeManager.java │ │ │ │ ├── HavingCols.java │ │ │ │ ├── LoadData.java │ │ │ │ ├── MergeCol.java │ │ │ │ ├── OrderCol.java │ │ │ │ ├── PackWraper.java │ │ │ │ ├── RangRowDataPacketSorter.java │ │ │ │ ├── RangeValue.java │ │ │ │ ├── RowDataPacketGrouper.java │ │ │ │ ├── RowDataPacketSorter.java │ │ │ │ ├── UnsafeRowGrouper.java │ │ │ │ └── model/ │ │ │ │ ├── NodeRowDataPacket.java │ │ │ │ └── RangRowDataPacket.java │ │ │ ├── statistic/ │ │ │ │ ├── CommandCount.java │ │ │ │ ├── DataSourceSyncRecorder.java │ │ │ │ ├── HeartbeatRecorder.java │ │ │ │ ├── SQLRecord.java │ │ │ │ ├── SQLRecorder.java │ │ │ │ └── stat/ │ │ │ │ ├── Histogram.java │ │ │ │ ├── HostStatAnalyzer.java │ │ │ │ ├── QueryConditionAnalyzer.java │ │ │ │ ├── QueryResult.java │ │ │ │ ├── QueryResultDispatcher.java │ │ │ │ ├── QueryResultListener.java │ │ │ │ ├── SqlFrequency.java │ │ │ │ ├── SqlResultSet.java │ │ │ │ ├── SqlResultSizeRecorder.java │ │ │ │ ├── TableStat.java │ │ │ │ ├── TableStatAnalyzer.java │ │ │ │ ├── UserSqlHighStat.java │ │ │ │ ├── UserSqlLargeStat.java │ │ │ │ ├── UserSqlLastStat.java │ │ │ │ ├── UserSqlRWStat.java │ │ │ │ ├── UserStat.java │ │ │ │ └── UserStatAnalyzer.java │ │ │ └── util/ │ │ │ ├── ByteBufferUtil.java │ │ │ ├── ByteUtil.java │ │ │ ├── CircularArrayList.java │ │ │ ├── CollectionUtil.java │ │ │ ├── CompareUtil.java │ │ │ ├── CompressUtil.java │ │ │ ├── DateUtil.java │ │ │ ├── DecryptUtil.java │ │ │ ├── ExecutorUtil.java │ │ │ ├── FastByteOperations.java │ │ │ ├── FormatUtil.java │ │ │ ├── HexFormatUtil.java │ │ │ ├── IntegerUtil.java │ │ │ ├── LogUtil.java │ │ │ ├── LongUtil.java │ │ │ ├── MysqlDefs.java │ │ │ ├── NameableExecutor.java │ │ │ ├── NameableThreadFactory.java │ │ │ ├── ObjectUtil.java │ │ │ ├── ProcessUtil.java │ │ │ ├── RandomUtil.java │ │ │ ├── ResultSetUtil.java │ │ │ ├── SelectorUtil.java │ │ │ ├── SetIgnoreUtil.java │ │ │ ├── SmallSet.java │ │ │ ├── SplitUtil.java │ │ │ ├── StreamGobble.java │ │ │ ├── StringUtil.java │ │ │ ├── TimeUtil.java │ │ │ ├── ZKUtils.java │ │ │ ├── cmd/ │ │ │ │ └── CmdArgs.java │ │ │ ├── dataMigrator/ │ │ │ │ ├── ConfigComparer.java │ │ │ │ ├── DataClearRunner.java │ │ │ │ ├── DataIO.java │ │ │ │ ├── DataIOFactory.java │ │ │ │ ├── DataMigrateRunner.java │ │ │ │ ├── DataMigrator.java │ │ │ │ ├── DataMigratorArgs.java │ │ │ │ ├── DataMigratorUtil.java │ │ │ │ ├── DataNode.java │ │ │ │ ├── DataNodeClearGroup.java │ │ │ │ ├── DataNodeMigrateInfo.java │ │ │ │ ├── MigratorConditonFilesMaker.java │ │ │ │ ├── TableMigrateInfo.java │ │ │ │ └── dataIOImpl/ │ │ │ │ └── MysqlDataIO.java │ │ │ ├── exception/ │ │ │ │ ├── DataMigratorException.java │ │ │ │ ├── ErrorPacketException.java │ │ │ │ ├── HeartbeatException.java │ │ │ │ ├── MurmurHashException.java │ │ │ │ ├── RehashException.java │ │ │ │ ├── UnknownCharsetException.java │ │ │ │ ├── UnknownDataNodeException.java │ │ │ │ ├── UnknownPacketException.java │ │ │ │ └── UnknownTxIsolationException.java │ │ │ └── rehasher/ │ │ │ ├── HashType.java │ │ │ ├── RehashCmdArgs.java │ │ │ └── RehashLauncher.java │ │ └── resources/ │ │ ├── auto-sharding-long.txt │ │ ├── auto-sharding-rang-mod.txt │ │ ├── autopartition-long.txt │ │ ├── cacheservice.properties │ │ ├── dbseq - utf8mb4.sql │ │ ├── dbseq.sql │ │ ├── ehcache.xml │ │ ├── index_to_charset.properties │ │ ├── log4j2.xml │ │ ├── migrateTables.properties │ │ ├── myid.properties │ │ ├── partition-hash-int.txt │ │ ├── partition-range-mod.txt │ │ ├── rule.dtd │ │ ├── rule.xml │ │ ├── schema.dtd │ │ ├── schema.xml │ │ ├── sequence_conf.properties │ │ ├── sequence_db_conf.properties │ │ ├── sequence_distributed_conf.properties │ │ ├── sequence_http_conf.properties │ │ ├── sequence_time_conf.properties │ │ ├── server.dtd │ │ ├── server.xml │ │ ├── sharding-by-enum.txt │ │ ├── zkconf/ │ │ │ ├── auto-sharding-long.txt │ │ │ ├── auto-sharding-rang-mod.txt │ │ │ ├── autopartition-long.txt │ │ │ ├── cacheservice.properties │ │ │ ├── ehcache.xml │ │ │ ├── index_to_charset.properties │ │ │ ├── partition-hash-int.txt │ │ │ ├── partition-range-mod.txt │ │ │ ├── rule.xml │ │ │ ├── schema.xml │ │ │ ├── sequence_conf.properties │ │ │ ├── sequence_db_conf.properties │ │ │ ├── sequence_distributed_conf-mycat_fz_01.properties │ │ │ ├── sequence_distributed_conf.properties │ │ │ ├── sequence_time_conf-mycat_fz_01.properties │ │ │ ├── sequence_time_conf.properties │ │ │ ├── server-mycat_fz_01.xml │ │ │ ├── server.xml │ │ │ └── sharding-by-enum.txt │ │ └── zkdownload/ │ │ └── auto-sharding-long.txt │ └── test/ │ ├── java/ │ │ ├── demo/ │ │ │ ├── catlets/ │ │ │ │ └── MyHellowJoin.java │ │ │ └── test/ │ │ │ ├── ByteArrayToHexArray.java │ │ │ └── TestClass1.java │ │ └── io/ │ │ └── mycat/ │ │ ├── BufferPerformanceMain.java │ │ ├── ConfigInitializerTest.java │ │ ├── EchoBioServer.java │ │ ├── ExecutorTestMain.java │ │ ├── SimpleCachePool.java │ │ ├── VolatileTest.java │ │ ├── backend/ │ │ │ └── jdbc/ │ │ │ └── mongodb/ │ │ │ ├── MongoClientPropertyHelperTest.java │ │ │ └── MongoEmbeddedObjectProcessorTest.java │ │ ├── buffer/ │ │ │ ├── TestByteBufferArena.java │ │ │ ├── TestDirectByteBufferPool.java │ │ │ └── TestMycatMemoryAlloctor.java │ │ ├── cache/ │ │ │ ├── DefaultLayedCachePoolTest.java │ │ │ ├── EnCachePoolTest.java │ │ │ └── TestCachePoolPerformance.java │ │ ├── classload/ │ │ │ └── TestDynClassLoad.java │ │ ├── config/ │ │ │ └── ConfigTest.java │ │ ├── heartbeat/ │ │ │ ├── HeartbeatConfigForTest.java │ │ │ ├── HeartbeatContext.java │ │ │ └── HeartbeatStartup.java │ │ ├── memory/ │ │ │ └── unsafe/ │ │ │ ├── PlatformUtilSuite.java │ │ │ ├── array/ │ │ │ │ └── LongArraySuite.java │ │ │ ├── hash/ │ │ │ │ └── Murmur3_x86_32Suite.java │ │ │ ├── map/ │ │ │ │ ├── AbstractBytesToBytesMapSuite.java │ │ │ │ ├── BytesToBytesMapOffHeapSuite.java │ │ │ │ ├── BytesToBytesMapOnHeapSuite.java │ │ │ │ ├── MapSorterByValueTest.java │ │ │ │ └── UnsafeFixedWidthAggregationMapSuite.java │ │ │ ├── memory/ │ │ │ │ ├── MemoryManagerSuite.java │ │ │ │ ├── MycatMemoryTest.java │ │ │ │ ├── TaskMemoryManagerSuite.java │ │ │ │ ├── TestMemoryConsumer.java │ │ │ │ └── TestMemoryManager.java │ │ │ ├── row/ │ │ │ │ ├── UnsafeRowListTest.java │ │ │ │ └── UnsafeRowSuite.java │ │ │ ├── sort/ │ │ │ │ ├── HashPartitioner.java │ │ │ │ ├── TestTimSort.java │ │ │ │ ├── UnsafeExternalRowSorterTest.java │ │ │ │ ├── UnsafeExternalSorterRadixSortSuite.java │ │ │ │ ├── UnsafeExternalSorterSuite.java │ │ │ │ ├── UnsafeInMemorySorterRadixSortSuite.java │ │ │ │ └── UnsafeInMemorySorterSuite.java │ │ │ ├── storage/ │ │ │ │ ├── BlockManagerTest.java │ │ │ │ └── SerializerManagerTest.java │ │ │ └── types/ │ │ │ ├── CalendarIntervalSuite.java │ │ │ └── UTF8StringSuite.java │ │ ├── migrate/ │ │ │ └── MigrateUtilsTest.java │ │ ├── model/ │ │ │ ├── M1.java │ │ │ ├── M1Main.java │ │ │ ├── M2.java │ │ │ ├── M2Main.java │ │ │ └── TransferObject.java │ │ ├── mpp/ │ │ │ └── TestSorter.java │ │ ├── mysql/ │ │ │ ├── MySQLMessageTest.java │ │ │ └── ResultSetPacketParse.java │ │ ├── parser/ │ │ │ ├── ManagerParserTest.java │ │ │ ├── ManagerParserTestPerf.java │ │ │ ├── Performance.java │ │ │ ├── ServerParseTest.java │ │ │ ├── ServerParserTest.java │ │ │ ├── ServerParserTestPerf.java │ │ │ ├── TestEscapeProcess.java │ │ │ ├── druid/ │ │ │ │ ├── DruidSelectParserTest.java │ │ │ │ ├── DruidSequenceHandlerTest.java │ │ │ │ ├── DruidUpdateParserTest.java │ │ │ │ └── MycatSchemaStatVisitorTest.java │ │ │ ├── primitive/ │ │ │ │ └── TestFunctionParser.java │ │ │ └── util/ │ │ │ └── PairUtilTest.java │ │ ├── performance/ │ │ │ ├── AbstractMultiTreadBatchTester.java │ │ │ ├── GoodsInsertJob.java │ │ │ ├── RandomDataValueUtil.java │ │ │ ├── SimpleConPool.java │ │ │ ├── TestGlobalTableInsertPerf.java │ │ │ ├── TestInsertGlobalSeqPerf.java │ │ │ ├── TestInsertPerf.java │ │ │ ├── TestMaxConnection.java │ │ │ ├── TestMergeSelectPerf.java │ │ │ ├── TestMergeSorter.java │ │ │ ├── TestRandomDataUtil.java │ │ │ ├── TestSelectPerf.java │ │ │ ├── TestUpdatePerf.java │ │ │ ├── TravelRecordGlobalSeqInsertJob.java │ │ │ ├── TravelRecordInsertJob.java │ │ │ ├── TravelRecordMergeJob.java │ │ │ ├── TravelRecordSelectJob.java │ │ │ ├── TravelRecordUpdateJob.java │ │ │ ├── UserTableInsertJob.java │ │ │ └── UserTableSelectJob.java │ │ ├── postgres/ │ │ │ └── PostgresTest.java │ │ ├── queue/ │ │ │ ├── FixedQueue.java │ │ │ ├── Queue.java │ │ │ ├── QueuePerfMain.java │ │ │ └── QueueSimpleMain.java │ │ ├── route/ │ │ │ ├── .gitignore │ │ │ ├── DDLRouteTest.java │ │ │ ├── DQLRouteTest.java │ │ │ ├── DeleteSqlParseTest.java │ │ │ ├── DruidDb2SqlParserTest.java │ │ │ ├── DruidMysqlCreateTableTest.java │ │ │ ├── DruidMysqlHavingTest.java │ │ │ ├── DruidMysqlRouteStrategyTest.java │ │ │ ├── DruidMysqlSqlParserTest.java │ │ │ ├── DruidMysqlSqlSubqueriesParserTest.java │ │ │ ├── DruidOracleSqlParserTest.java │ │ │ ├── DruidPostgresqlSqlParserTest.java │ │ │ ├── DruidSqlServerSqlParserTest.java │ │ │ ├── HintDBTypeTest.java │ │ │ ├── HintTest.java │ │ │ ├── TestSelectBetweenSqlParser.java │ │ │ ├── function/ │ │ │ │ ├── AutoPartitionByLongTest.java │ │ │ │ ├── PartitionByCRC32PreSlotTest.java │ │ │ │ ├── PartitionByDateTest.java │ │ │ │ ├── PartitionByHashModTest.java │ │ │ │ ├── PartitionByHotDateTest.java │ │ │ │ ├── PartitionByJumpConsistentHashTest.java │ │ │ │ ├── PartitionByMonthTest.java │ │ │ │ ├── PartitionByPatternTest.java │ │ │ │ ├── PartitionByPrefixPatternTest.java │ │ │ │ ├── PartitionByRangeDateHashTest.java │ │ │ │ ├── PartitionByRangeModTest.java │ │ │ │ ├── PartitionByStringTest.java │ │ │ │ ├── RuleFunctionSuitTableTest.java │ │ │ │ ├── TestLatestMonthPartion.java │ │ │ │ └── TestNumberParseUtil.java │ │ │ ├── parser/ │ │ │ │ └── druid/ │ │ │ │ └── impl/ │ │ │ │ └── DefaultDruidParserTest.java │ │ │ ├── perf/ │ │ │ │ ├── NoShardingSpace.java │ │ │ │ ├── ShardingDefaultSpace.java │ │ │ │ └── ShardingMultiTableSpace.java │ │ │ └── util/ │ │ │ ├── PartitionForSingle.java │ │ │ ├── PartitionUtilTest.java │ │ │ └── RouterUtilTest.java │ │ ├── sequence/ │ │ │ ├── DistributedSequenceHandlerTest.java │ │ │ ├── IncrSequenceZKHandlerTest.java │ │ │ ├── SequenceHandlerTest.java │ │ │ └── SequenceTest.java │ │ ├── server/ │ │ │ ├── handler/ │ │ │ │ └── ServerHandlerTest.java │ │ │ └── interceptor/ │ │ │ └── impl/ │ │ │ └── GlobalTableUtilTest.java │ │ ├── sqlexecute/ │ │ │ ├── BaseSQLExeTest.java │ │ │ ├── MultiThreadSelectTest.java │ │ │ ├── MultiThreadSequnceTest.java │ │ │ ├── MycatMulitJdbcVersionTest.java │ │ │ ├── RollbackTest.java │ │ │ ├── ServerPrepareTest.java │ │ │ ├── StandBatchInsertTest.java │ │ │ ├── TestJdbc.java │ │ │ └── TestPrepareSql.java │ │ ├── statistic/ │ │ │ ├── SQLStatisticsMain.java │ │ │ └── TestConcurrentSafety.java │ │ └── util/ │ │ ├── ArrayPerformanceMain.java │ │ ├── BitTest.java │ │ ├── ConcurrentHashMapMain.java │ │ ├── HashMapMain.java │ │ ├── HexFormatUtilMain.java │ │ ├── HexFormatUtilTest.java │ │ ├── LockPerfMain.java │ │ ├── MapPerfMain.java │ │ ├── SchemaUtilTest.java │ │ ├── SmallSetTest.java │ │ ├── SplitUtilTest.java │ │ ├── StringHashPerfMain.java │ │ ├── StringUtilTest.java │ │ └── SyncPerfMain.java │ └── resources/ │ ├── autopartition-long-dupl.txt │ ├── autopartition-long.txt │ ├── autopartition-long2.txt │ ├── config/ │ │ ├── rule.xml │ │ └── schema.xml │ ├── ehcache.xml │ ├── log4j2.xml │ ├── partition-pattern.txt │ ├── partition-range-mod.txt │ ├── partition_prefix_pattern.txt │ ├── route/ │ │ ├── rule.xml │ │ └── schema.xml │ ├── rule.xml │ ├── schema.xml │ ├── sequence_conf.properties │ ├── server.xml │ ├── sharding.txt │ └── zk-create-test.yaml ├── test-output/ │ ├── Default suite/ │ │ ├── Default test.html │ │ └── Default test.xml │ ├── emailable-report.html │ ├── index.html │ ├── old/ │ │ ├── Default suite/ │ │ │ ├── Default test.properties │ │ │ ├── classes.html │ │ │ ├── groups.html │ │ │ ├── index.html │ │ │ ├── main.html │ │ │ ├── methods-alphabetical.html │ │ │ ├── methods-not-run.html │ │ │ ├── methods.html │ │ │ ├── reporter-output.html │ │ │ ├── testng.xml.html │ │ │ └── toc.html │ │ └── index.html │ ├── testng-reports.css │ ├── testng-reports.js │ ├── testng-results.xml │ └── testng.css ├── tmlogs/ │ └── tmlog-1.log ├── version.txt └── version.txt.template
Showing preview only (767K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (9277 symbols across 1033 files)
FILE: src/main/java/io/mycat/MycatServer.java
class MycatServer (line 112) | public class MycatServer {
method getInstance (line 152) | public static final MycatServer getInstance() {
method MycatServer (line 177) | private MycatServer() {
method getStartup (line 228) | public AtomicBoolean getStartup() {
method getTotalNetWorkBufferSize (line 232) | public long getTotalNetWorkBufferSize() {
method getBufferPool (line 236) | public BufferPool getBufferPool() {
method getTimerExecutor (line 240) | public NameableExecutor getTimerExecutor() {
method getCatletClassLoader (line 244) | public DynaClassLoader getCatletClassLoader() {
method getSequnceProcessor (line 248) | public MyCATSequnceProcessor getSequnceProcessor() {
method getSqlInterceptor (line 252) | public SQLInterceptor getSqlInterceptor() {
method getScheduler (line 256) | public ScheduledExecutorService getScheduler() {
method genXATXID (line 260) | public String genXATXID() {
method getXATXIDGLOBAL (line 273) | public String getXATXIDGLOBAL() {
method getUUID (line 277) | public static String getUUID() {
method getMyCatMemory (line 283) | public MyCatMemory getMyCatMemory() {
method getNextAsyncChannelGroup (line 293) | public AsynchronousChannelGroup getNextAsyncChannelGroup() {
method getConfig (line 308) | public MycatConfig getConfig() {
method beforeStart (line 312) | public void beforeStart() {
method startup (line 319) | public void startup() throws IOException {
method ensureSqlstatRecycleFuture (line 539) | public void ensureSqlstatRecycleFuture() {
method initRuleData (line 553) | public void initRuleData() {
method initZkDnindex (line 587) | private void initZkDnindex() {
method reloadDnIndex (line 608) | public void reloadDnIndex() {
method catletClassClear (line 625) | private Runnable catletClassClear() {
method dataSourceOldConsClear (line 646) | private Runnable dataSourceOldConsClear() {
method resultSetMapClear (line 680) | private Runnable resultSetMapClear() {
method loadDnIndexProps (line 710) | private Properties loadDnIndexProps() {
method saveDataHostIndexToZk (line 734) | public synchronized boolean saveDataHostIndexToZk(String dataHost, int...
method saveDataHostIndex (line 760) | public synchronized void saveDataHostIndex(String dataHost, int curInd...
method isUseZk (line 819) | private boolean isUseZk() {
method isUseZkSwitch (line 824) | public boolean isUseZkSwitch() {
method getRouterService (line 831) | public RouteService getRouterService() {
method getCacheService (line 835) | public CacheService getCacheService() {
method getBusinessExecutor (line 839) | public NameableExecutor getBusinessExecutor() {
method getRouterservice (line 843) | public RouteService getRouterservice() {
method nextProcessor (line 847) | public NIOProcessor nextProcessor() {
method getProcessors (line 855) | public NIOProcessor[] getProcessors() {
method getConnector (line 859) | public SocketConnector getConnector() {
method getSqlRecorder (line 863) | public SQLRecorder getSqlRecorder() {
method getStartupTime (line 867) | public long getStartupTime() {
method isOnline (line 871) | public boolean isOnline() {
method offline (line 875) | public void offline() {
method online (line 879) | public void online() {
method updateTime (line 884) | private Runnable updateTime() {
method processorCheck (line 894) | private Runnable processorCheck() {
method dataNodeConHeartBeatCheck (line 928) | private Runnable dataNodeConHeartBeatCheck(final long heartPeriod) {
method dataNodeHeartbeat (line 955) | private Runnable dataNodeHeartbeat() {
method dataNodeCalcActiveCons (line 973) | private Runnable dataNodeCalcActiveCons() {
method recycleSqlStat (line 994) | private Runnable recycleSqlStat() {
method xaTaskCheck (line 1010) | private Runnable xaTaskCheck() {
method tableStructureCheck (line 1036) | private Runnable tableStructureCheck() {
method glableTableConsistencyCheck (line 1041) | private Runnable glableTableConsistencyCheck() {
method putXARecoveryLogToMemory (line 1055) | private void putXARecoveryLogToMemory(CoordinatorLogEntry[] coordinato...
method performXARecoveryLog (line 1065) | private void performXARecoveryLog(CoordinatorLogEntry[] coordinatorLog...
method sendXaCmd (line 1119) | private void sendXaCmd(ParticipantLogEntry participantLogEntry, String...
method getCoordinatorLogEntries (line 1142) | private CoordinatorLogEntry[] getCoordinatorLogEntries() {
method getSequenceExecutor (line 1153) | public NameableExecutor getSequenceExecutor() {
method getDirectByteBufferPool (line 1158) | public DirectByteBufferPool getDirectByteBufferPool() {
method isAIO (line 1162) | public boolean isAIO() {
method getListeningExecutorService (line 1167) | public ListeningExecutorService getListeningExecutorService() {
method getHeartbeatScheduler (line 1171) | public ScheduledExecutorService getHeartbeatScheduler() {
method getLeaderLatch (line 1175) | public MycatLeaderLatch getLeaderLatch() {
method main (line 1179) | public static void main(String[] args) throws Exception {
FILE: src/main/java/io/mycat/MycatShutdown.java
class MycatShutdown (line 31) | public final class MycatShutdown {
method main (line 33) | public static void main(String[] args) {
FILE: src/main/java/io/mycat/MycatStartup.java
class MycatStartup (line 40) | public final class MycatStartup {
method main (line 43) | public static void main(String[] args) {
FILE: src/main/java/io/mycat/backend/BackendConnection.java
type BackendConnection (line 11) | public interface BackendConnection extends ClosableConnection {
method isModifiedSQLExecuted (line 12) | public boolean isModifiedSQLExecuted();
method isFromSlaveDB (line 14) | public boolean isFromSlaveDB();
method getSchema (line 16) | public String getSchema();
method setSchema (line 18) | public void setSchema(String newSchema);
method getLastTime (line 20) | public long getLastTime();
method isClosedOrQuit (line 22) | public boolean isClosedOrQuit();
method setAttachment (line 24) | public void setAttachment(Object attachment);
method quit (line 26) | public void quit();
method setLastTime (line 28) | public void setLastTime(long currentTimeMillis);
method release (line 30) | public void release();
method setResponseHandler (line 32) | public boolean setResponseHandler(ResponseHandler commandHandler);
method commit (line 34) | public void commit();
method query (line 36) | public void query(String sql) throws UnsupportedEncodingException;
method getAttachment (line 38) | public Object getAttachment();
method closeWithoutRsp (line 40) | public void closeWithoutRsp(String reason);
method execute (line 46) | public void execute(RouteResultsetNode node, ServerConnection source,
method recordSql (line 49) | public void recordSql(String host, String schema, String statement);
method syncAndExcute (line 51) | public boolean syncAndExcute();
method rollback (line 53) | public void rollback();
method isBorrowed (line 55) | public boolean isBorrowed();
method setBorrowed (line 57) | public void setBorrowed(boolean borrowed);
method getTxIsolation (line 59) | public int getTxIsolation();
method isAutocommit (line 61) | public boolean isAutocommit();
method isTxReadonly (line 63) | public boolean isTxReadonly();
method getSqlSelectLimit (line 64) | public int getSqlSelectLimit();
method getId (line 66) | public long getId();
method discardClose (line 68) | public void discardClose(String reason);
method query (line 70) | public void query(String sql, int charsetIndex);
method checkAlive (line 72) | public boolean checkAlive();
method disableRead (line 74) | public void disableRead();
method enableRead (line 76) | public void enableRead();
FILE: src/main/java/io/mycat/backend/ConMap.java
class ConMap (line 15) | public class ConMap {
method getSchemaConQueue (line 20) | public ConQueue getSchemaConQueue(String schema) {
method tryTakeCon (line 30) | public BackendConnection tryTakeCon(final String schema, boolean autoC...
method tryTakeCon (line 49) | private BackendConnection tryTakeCon(ConQueue queue, boolean autoCommi...
method getAllConQueue (line 60) | public Collection<ConQueue> getAllConQueue() {
method getActiveCountForSchema (line 64) | public int getActiveCountForSchema(String schema,
method getActiveCountForDs (line 90) | public int getActiveCountForDs(PhysicalDatasource dataSouce) {
method getTotalCountForDs (line 114) | public int getTotalCountForDs(PhysicalDatasource dataSouce) {
method clearConnections (line 135) | public void clearConnections(String reason, PhysicalDatasource dataSou...
FILE: src/main/java/io/mycat/backend/ConQueue.java
class ConQueue (line 6) | public class ConQueue {
method takeIdleCon (line 11) | public BackendConnection takeIdleCon(boolean autoCommit) {
method getExecuteCount (line 38) | public long getExecuteCount() {
method incExecuteCount (line 42) | public void incExecuteCount() {
method removeCon (line 46) | public boolean removeCon(BackendConnection con) {
method isSameCon (line 54) | public boolean isSameCon(BackendConnection con) {
method getAutoCommitCons (line 63) | public ConcurrentLinkedQueue<BackendConnection> getAutoCommitCons() {
method getManCommitCons (line 67) | public ConcurrentLinkedQueue<BackendConnection> getManCommitCons() {
method getIdleConsToClose (line 71) | public ArrayList<BackendConnection> getIdleConsToClose(int count) {
FILE: src/main/java/io/mycat/backend/ConnectionMeta.java
class ConnectionMeta (line 32) | public class ConnectionMeta {
method ConnectionMeta (line 38) | public ConnectionMeta(String schema, String charset, int txIsolation,
method getSchema (line 47) | public String getSchema() {
method isSameSchema (line 63) | public boolean isSameSchema(BackendConnection theCon)
method getMetaSimilarity (line 74) | public int getMetaSimilarity(BackendConnection theCon) {
method toString (line 91) | @Override
FILE: src/main/java/io/mycat/backend/datasource/PhysicalDBNode.java
class PhysicalDBNode (line 33) | public class PhysicalDBNode {
method PhysicalDBNode (line 41) | public PhysicalDBNode(String hostName, String database,
method getName (line 48) | public String getName() {
method getDbPool (line 52) | public PhysicalDBPool getDbPool() {
method getDatabase (line 56) | public String getDatabase() {
method getConnectionFromSameSource (line 66) | public void getConnectionFromSameSource(String schema,boolean autocommit,
method checkRequest (line 80) | private void checkRequest(String schema){
method getConnection (line 93) | public void getConnection(String schema,boolean autoCommit, RouteResul...
FILE: src/main/java/io/mycat/backend/datasource/PhysicalDBPool.java
class PhysicalDBPool (line 54) | public class PhysicalDBPool {
method PhysicalDBPool (line 93) | public PhysicalDBPool(String name, DataHostConfig conf,
method getWriteType (line 132) | public int getWriteType() {
method setDataSourceProps (line 136) | private void setDataSourceProps() {
method findDatasouce (line 142) | public PhysicalDatasource findDatasouce(BackendConnection exitsCon) {
method getSlaveIDs (line 154) | public String getSlaveIDs() {
method setSlaveIDs (line 158) | public void setSlaveIDs(String slaveIDs) {
method getHostName (line 162) | public String getHostName() {
method getSources (line 170) | public PhysicalDatasource[] getSources() {
method getSource (line 174) | public PhysicalDatasource getSource() {
method getActivedIndex (line 219) | public int getActivedIndex() {
method isInitSuccess (line 223) | public boolean isInitSuccess() {
method next (line 227) | public int next(int i) {
method switchSourceVoted (line 235) | private boolean switchSourceVoted(int newIndex, boolean isAlarm, Strin...
method switchSourceOrVoted (line 259) | public boolean switchSourceOrVoted(int newIndex, boolean isAlarm, Stri...
method notSwitchSource (line 266) | public boolean notSwitchSource(int newIndex){
method switchSource (line 270) | public boolean switchSource(int newIndex, boolean isAlarm, String reas...
method switchMessage (line 327) | private String switchMessage(int current, int newIndex, boolean alarm,...
method loop (line 337) | private int loop(int i) {
method init (line 341) | public void init(int index) {
method init (line 345) | public void init(int index, String reason) {
method checkIndex (line 383) | private boolean checkIndex(int i) {
method getMessage (line 387) | private String getMessage(int index, String info) {
method initSource (line 391) | private boolean initSource(int index, PhysicalDatasource ds) {
method doHeartbeat (line 426) | public void doHeartbeat() {
method heartbeatCheck (line 449) | public void heartbeatCheck(long ildCheckPeriod) {
method startHeartbeat (line 466) | public void startHeartbeat() {
method stopHeartbeat (line 472) | public void stopHeartbeat() {
method clearDataSources (line 482) | public void clearDataSources(String reason) {
method genAllDataSources (line 491) | public Collection<PhysicalDatasource> genAllDataSources() {
method getAllDataSources (line 510) | public Collection<PhysicalDatasource> getAllDataSources() {
method getRWBanlanceCon (line 522) | public void getRWBanlanceCon(String schema, boolean autocommit,
method getReadBanlanceCon (line 572) | public void getReadBanlanceCon(String schema, boolean autocommit, Resp...
method getReadCon (line 593) | public boolean getReadCon(String schema, boolean autocommit, ResponseH...
method checkSlaveSynStatus (line 639) | private boolean checkSlaveSynStatus() {
method randomSelect (line 653) | public PhysicalDatasource randomSelect(ArrayList<PhysicalDatasource> o...
method getBalance (line 695) | public int getBalance() {
method isAlive (line 699) | private boolean isAlive(PhysicalDatasource theSource) {
method canSelectAsReadNode (line 703) | private boolean canSelectAsReadNode(PhysicalDatasource theSource) {
method getAllActiveRWSources (line 725) | private ArrayList<PhysicalDatasource> getAllActiveRWSources(
method getSchemas (line 805) | public String[] getSchemas() {
method setSchemas (line 809) | public void setSchemas(String[] mySchemas) {
FILE: src/main/java/io/mycat/backend/datasource/PhysicalDatasource.java
class PhysicalDatasource (line 55) | public abstract class PhysicalDatasource {
method PhysicalDatasource (line 101) | public PhysicalDatasource(DBHostConfig config, DataHostConfig hostConfig,
method isMyConnection (line 111) | public boolean isMyConnection(BackendConnection con) {
method getReadCount (line 120) | public long getReadCount() {
method setReadCount (line 124) | public void setReadCount() {
method getWriteCount (line 128) | public long getWriteCount() {
method setWriteCount (line 132) | public void setWriteCount() {
method getHostConfig (line 136) | public DataHostConfig getHostConfig() {
method isReadNode (line 140) | public boolean isReadNode() {
method getSize (line 144) | public int getSize() {
method setDbPool (line 148) | public void setDbPool(PhysicalDBPool dbPool) {
method getDbPool (line 152) | public PhysicalDBPool getDbPool() {
method createHeartBeat (line 156) | public abstract DBHeartbeat createHeartBeat();
method getName (line 158) | public String getName() {
method getExecuteCount (line 162) | public long getExecuteCount() {
method getExecuteCountForSchema (line 171) | public long getExecuteCountForSchema(String schema) {
method getActiveCountForSchema (line 176) | public int getActiveCountForSchema(String schema) {
method getIdleCountForSchema (line 180) | public int getIdleCountForSchema(String schema) {
method getHeartbeat (line 188) | public DBHeartbeat getHeartbeat() {
method getIdleCount (line 192) | public int getIdleCount() {
method validSchema (line 217) | private boolean validSchema(String schema) {
method checkIfNeedHeartBeat (line 223) | private void checkIfNeedHeartBeat(
method getIndex (line 257) | public int getIndex() {
method isSalveOrRead (line 269) | public boolean isSalveOrRead() {
method heatBeatCheck (line 277) | public void heatBeatCheck(long timeout, long conHeartBeatPeriod) {
method closeByIdleMany (line 342) | private void closeByIdleMany(int ildeCloseCount) {
method createByIdleLitte (line 396) | private void createByIdleLitte(int idleCons, int createCount) {
method getActiveCount (line 421) | public int getActiveCount() {
method getTotalCount (line 425) | public long getTotalCount() {
method calcTotalCount (line 429) | public void calcTotalCount() {
method clearCons (line 444) | public void clearCons(String reason) {
method startHeartbeat (line 448) | public void startHeartbeat() {
method stopHeartbeat (line 452) | public void stopHeartbeat() {
method doHeartbeat (line 456) | public void doHeartbeat() {
method takeCon (line 471) | private BackendConnection takeCon(BackendConnection conn,
method createNewConnection (line 494) | private void createNewConnection(final ResponseHandler handler,
method getConnection (line 529) | public void getConnection(String schema, boolean autocommit,
method returnCon (line 605) | private void returnCon(BackendConnection c) {
method releaseChannel (line 631) | public void releaseChannel(BackendConnection c) {
method connectionClosed (line 639) | public void connectionClosed(BackendConnection conn) {
method createNewConnection (line 651) | public abstract void createNewConnection(ResponseHandler handler, Stri...
method testConnection (line 656) | public abstract boolean testConnection(String schema) throws IOException;
method getHeartbeatRecoveryTime (line 658) | public long getHeartbeatRecoveryTime() {
method setHeartbeatRecoveryTime (line 662) | public void setHeartbeatRecoveryTime(long heartbeatRecoveryTime) {
method getConfig (line 666) | public DBHostConfig getConfig() {
method isAlive (line 670) | public boolean isAlive() {
FILE: src/main/java/io/mycat/backend/heartbeat/ConsistenCollectHandler.java
class ConsistenCollectHandler (line 33) | public class ConsistenCollectHandler {
method ConsistenCollectHandler (line 46) | public ConsistenCollectHandler(ManagerConnection c, String tableName,
method startDetector (line 58) | public void startDetector(){
method onSuccess (line 66) | public void onSuccess(SQLQueryResult<Map<String, String>> result) {
method cancelTask (line 126) | public void cancelTask() {
method onError (line 135) | public void onError(String msg) {
method getRetryTime (line 143) | public int getRetryTime() {
class ConsisterThread (line 148) | class ConsisterThread implements Runnable{
method ConsisterThread (line 153) | public ConsisterThread(String tableName, String schemaName,ConsistenCo...
method run (line 161) | public void run() {
FILE: src/main/java/io/mycat/backend/heartbeat/DBHeartbeat.java
class DBHeartbeat (line 33) | public abstract class DBHeartbeat {
method getSlaveBehindMaster (line 57) | public Integer getSlaveBehindMaster() {
method getDbSynStatus (line 61) | public int getDbSynStatus() {
method setDbSynStatus (line 65) | public void setDbSynStatus(int dbSynStatus) {
method setSlaveBehindMaster (line 69) | public void setSlaveBehindMaster(Integer slaveBehindMaster) {
method getStatus (line 73) | public int getStatus() {
method isChecking (line 77) | public boolean isChecking() {
method start (line 81) | public abstract void start();
method stop (line 83) | public abstract void stop();
method isStop (line 85) | public boolean isStop() {
method getErrorCount (line 89) | public int getErrorCount() {
method getRecorder (line 93) | public HeartbeatRecorder getRecorder() {
method getLastActiveTime (line 97) | public abstract String getLastActiveTime();
method getTimeout (line 99) | public abstract long getTimeout();
method heartbeat (line 101) | public abstract void heartbeat();
method getHeartbeatTimeout (line 103) | public long getHeartbeatTimeout() {
method setHeartbeatTimeout (line 107) | public void setHeartbeatTimeout(long heartbeatTimeout) {
method getHeartbeatRetry (line 111) | public int getHeartbeatRetry() {
method setHeartbeatRetry (line 115) | public void setHeartbeatRetry(int heartbeatRetry) {
method getHeartbeatSQL (line 119) | public String getHeartbeatSQL() {
method setHeartbeatSQL (line 123) | public void setHeartbeatSQL(String heartbeatSQL) {
method isNeedHeartbeat (line 127) | public boolean isNeedHeartbeat() {
method getAsynRecorder (line 131) | public DataSourceSyncRecorder getAsynRecorder() {
method writeStatusMsg (line 138) | protected void writeStatusMsg(String dataHost, String dataSourceName,i...
method getMsg (line 150) | protected String getMsg(int status) {
FILE: src/main/java/io/mycat/backend/heartbeat/MySQLConsistencyChecker.java
class MySQLConsistencyChecker (line 48) | public class MySQLConsistencyChecker{
method MySQLConsistencyChecker (line 69) | public MySQLConsistencyChecker(MySQLDataSource source, String tableNam...
method checkRecordCout (line 80) | public void checkRecordCout() {
method checkMaxTimeStamp (line 101) | public void checkMaxTimeStamp() {
method checkInnerColumnExist (line 125) | public void checkInnerColumnExist() {
method setResult (line 148) | public void setResult(SQLQueryResult<Map<String, String>> result) {
method isTimeOut (line 177) | public boolean isTimeOut(){
method getCountSQL (line 182) | public String getCountSQL() {
method getColumnExistSQL (line 185) | public String getColumnExistSQL() {
method setColumnExistSQL (line 188) | public void setColumnExistSQL(String columnExistSQL) {
method getMaxSQL (line 191) | public String getMaxSQL() {
method getTableName (line 194) | public String getTableName() {
method getSource (line 197) | public MySQLDataSource getSource() {
FILE: src/main/java/io/mycat/backend/heartbeat/MySQLConsistencyCheckerHandler.java
class MySQLConsistencyCheckerHandler (line 40) | public class MySQLConsistencyCheckerHandler extends MySQLConsistencyChec...
method MySQLConsistencyCheckerHandler (line 44) | public MySQLConsistencyCheckerHandler(PhysicalDBNode dbNode, MySQLData...
method checkRecordCout (line 52) | public void checkRecordCout() {
method checkMaxTimeStamp (line 66) | public void checkMaxTimeStamp() {
method checkInnerColumnExist (line 83) | public void checkInnerColumnExist() {
method setResult (line 101) | public void setResult(SQLQueryResult<Map<String, String>> result) {
FILE: src/main/java/io/mycat/backend/heartbeat/MySQLConsistencyHelper.java
class MySQLConsistencyHelper (line 44) | public class MySQLConsistencyHelper implements SQLQueryResultListener<SQ...
method MySQLConsistencyHelper (line 51) | public MySQLConsistencyHelper(MySQLConsistencyChecker heartbeat, SQLJo...
method MySQLConsistencyHelper (line 57) | public MySQLConsistencyHelper(MySQLConsistencyChecker heartbeat,
method onResult (line 67) | @Override
method close (line 115) | public void close(String msg) {
method getHeartbeat (line 122) | public MySQLConsistencyChecker getHeartbeat() {
method getSqlJob (line 125) | public SQLJob getSqlJob() {
method setSqlJob (line 128) | public void setSqlJob(SQLJob sqlJob) {
FILE: src/main/java/io/mycat/backend/heartbeat/MySQLDetector.java
class MySQLDetector (line 42) | public class MySQLDetector implements SQLQueryResultListener<SQLQueryRes...
method MySQLDetector (line 69) | public MySQLDetector(MySQLHeartbeat heartbeat) {
method getHeartbeat (line 74) | public MySQLHeartbeat getHeartbeat() {
method getHeartbeatTimeout (line 78) | public long getHeartbeatTimeout() {
method setHeartbeatTimeout (line 82) | public void setHeartbeatTimeout(long heartbeatTimeout) {
method isHeartbeatTimeout (line 86) | public boolean isHeartbeatTimeout() {
method getLastSendQryTime (line 91) | public long getLastSendQryTime() {
method getLasstReveivedQryTime (line 95) | public long getLasstReveivedQryTime() {
method heartbeat (line 99) | public void heartbeat() {
method quit (line 115) | public void quit() {
method isQuit (line 122) | public boolean isQuit() {
method onResult (line 126) | @Override
method close (line 219) | public void close(String msg) {
FILE: src/main/java/io/mycat/backend/heartbeat/MySQLHeartbeat.java
class MySQLHeartbeat (line 41) | public class MySQLHeartbeat extends DBHeartbeat {
method MySQLHeartbeat (line 53) | public MySQLHeartbeat(MySQLDataSource source) {
method getSource (line 61) | public MySQLDataSource getSource() {
method getDetector (line 65) | public MySQLDetector getDetector() {
method getTimeout (line 69) | public long getTimeout() {
method getLastActiveTime (line 77) | public String getLastActiveTime() {
method start (line 87) | public void start() {
method stop (line 98) | public void stop() {
method heartbeat (line 121) | public void heartbeat() {
method setResult (line 159) | public void setResult(int result, MySQLDetector detector, String msg) {
method setOk (line 178) | private void setOk(MySQLDetector detector) {
method nextDector (line 204) | private void nextDector(MySQLDetector detector, int nextStatue) {
method setError (line 231) | private void setError(MySQLDetector detector) {
method setTimeout (line 253) | private void setTimeout(MySQLDetector detector) {
method switchSourceIfNeed (line 263) | private void switchSourceIfNeed(String reason) {
FILE: src/main/java/io/mycat/backend/heartbeat/zkprocess/ManageHeartBeatChange.java
class ManageHeartBeatChange (line 39) | public class ManageHeartBeatChange implements Runnable {
method ManageHeartBeatChange (line 66) | public ManageHeartBeatChange(MycatLeaderLatch myLeaderLatch,
method addPath (line 79) | public boolean addPath(String nodePath) {
method removePath (line 104) | public boolean removePath(String nodePath) {
method leaderlisten (line 117) | public void leaderlisten() {
method stop (line 170) | public void stop() {
method run (line 186) | @Override
method startChangingResultListen (line 268) | private void startChangingResultListen() {
method getNodeSize (line 336) | public int getNodeSize(){
method hasCollectFinish (line 341) | public boolean hasCollectFinish() {
FILE: src/main/java/io/mycat/backend/heartbeat/zkprocess/MycatLeaderLatch.java
class MycatLeaderLatch (line 32) | public class MycatLeaderLatch {
method MycatLeaderLatch (line 47) | public MycatLeaderLatch( String latchPath ) {
method isLeaderRunnable (line 66) | private void isLeaderRunnable() {
method notLeaderRunnable (line 75) | private void notLeaderRunnable() {
method start (line 81) | public void start() throws Exception {
method stop (line 86) | public void stop() throws IOException {
method checkIsLeader (line 90) | private Runnable checkIsLeader() {
method judgeIsLeader (line 132) | public void judgeIsLeader(boolean hashLeaderShip) {
method isLeaderShip (line 158) | public boolean isLeaderShip(){
method getParticipants (line 162) | public Collection<Participant> getParticipants() throws Exception {
method getParticipantsCount (line 166) | public int getParticipantsCount() {
FILE: src/main/java/io/mycat/backend/heartbeat/zkprocess/SwitchStatueToZK.java
class SwitchStatueToZK (line 16) | public class SwitchStatueToZK{
method startSwitch (line 24) | public static boolean startSwitch(String dataHost) {
method endSwitch (line 46) | public static boolean endSwitch(String dataHost) {
FILE: src/main/java/io/mycat/backend/jdbc/JDBCConnection.java
class JDBCConnection (line 48) | public class JDBCConnection implements BackendConnection {
method getProcessor (line 80) | public NIOProcessor getProcessor() {
method setProcessor (line 84) | public void setProcessor(NIOProcessor processor) {
method JDBCConnection (line 88) | public JDBCConnection() {
method getCon (line 92) | public Connection getCon() {
method setCon (line 96) | public void setCon(Connection con) {
method close (line 101) | @Override
method closeWithoutRsp (line 122) | @Override
method setId (line 128) | public void setId(long id) {
method getPool (line 132) | public JDBCDatasource getPool() {
method setPool (line 136) | public void setPool(JDBCDatasource pool) {
method setHost (line 140) | public void setHost(String host) {
method setPort (line 144) | public void setPort(int port) {
method isClosed (line 148) | @Override
method idleCheck (line 157) | @Override
method getStartupTime (line 164) | @Override
method getHost (line 169) | @Override
method getPort (line 174) | @Override
method getLocalPort (line 179) | @Override
method getNetInBytes (line 184) | @Override
method getNetOutBytes (line 190) | @Override
method isModifiedSQLExecuted (line 195) | @Override
method isFromSlaveDB (line 200) | @Override
method getDbType (line 205) | public String getDbType() {
method setDbType (line 209) | public void setDbType(String newDbType) {
method getSchema (line 215) | @Override
method setSchema (line 220) | @Override
method getLastTime (line 227) | @Override
method isClosedOrQuit (line 233) | @Override
method setAttachment (line 238) | @Override
method quit (line 244) | @Override
method setLastTime (line 250) | @Override
method release (line 256) | @Override
method setRunning (line 263) | public void setRunning(boolean running) {
method setResponseHandler (line 268) | @Override
method commit (line 274) | @Override
method convertNativeIsolationToJDBC (line 287) | private int convertNativeIsolationToJDBC(int nativeIsolation)
method syncTxReadonly (line 303) | private void syncTxReadonly(boolean txReadonly)
method syncIsolation (line 316) | private void syncIsolation(int nativeIsolation)
method executeSQL (line 333) | private void executeSQL(RouteResultsetNode rrn, ServerConnection sc,
method getNewFieldPacket (line 410) | private FieldPacket getNewFieldPacket(String charset, String fieldName) {
method executeddl (line 422) | private void executeddl(ServerConnection sc, String sql)
method ouputCallStatement (line 467) | private void ouputCallStatement(RouteResultsetNode rrn,ServerConnectio...
method ouputResultSet (line 702) | private void ouputResultSet(ServerConnection sc, String sql)
method query (line 806) | @Override
method justForHeartbeat (line 816) | private void justForHeartbeat(String sql)
method getAttachment (line 849) | @Override
method getCharset (line 854) | @Override
method execute (line 859) | @Override
method recordSql (line 878) | @Override
method syncAndExcute (line 883) | @Override
method rollback (line 888) | @Override
method isRunning (line 899) | public boolean isRunning() {
method isBorrowed (line 903) | @Override
method setBorrowed (line 908) | @Override
method getTxIsolation (line 914) | @Override
method isAutocommit (line 927) | @Override
method isTxReadonly (line 941) | @Override
method getSqlSelectLimit (line 955) | @Override
method getId (line 960) | @Override
method toString (line 965) | @Override
method discardClose (line 975) | @Override
method query (line 981) | @Override
method checkAlive (line 991) | @Override
method disableRead (line 1010) | @Override
method enableRead (line 1016) | @Override
method setFromSlaveDB (line 1022) | public void setFromSlaveDB(boolean fromSlaveDB) {
FILE: src/main/java/io/mycat/backend/jdbc/JDBCDatasource.java
class JDBCDatasource (line 23) | public class JDBCDatasource extends PhysicalDatasource {
method JDBCDatasource (line 48) | public JDBCDatasource(DBHostConfig config, DataHostConfig hostConfig, ...
method getDruidConnection (line 60) | public Connection getDruidConnection() throws SQLException {
method createHeartBeat (line 64) | @Override
method createNewConnection (line 69) | @Override
method testConnection (line 97) | @Override
method getConnection (line 124) | Connection getConnection() throws SQLException {
FILE: src/main/java/io/mycat/backend/jdbc/JDBCHeartbeat.java
class JDBCHeartbeat (line 19) | public class JDBCHeartbeat extends DBHeartbeat{
method JDBCHeartbeat (line 32) | public JDBCHeartbeat(JDBCDatasource source)
method start (line 43) | @Override
method stop (line 61) | @Override
method getLastActiveTime (line 77) | @Override
method getTimeout (line 85) | @Override
method getRecorder (line 90) | @Override
method heartbeat (line 96) | @Override
method setResult (line 134) | public void setResult(int result) {
method setOk (line 152) | private void setOk() {
method nextDector (line 171) | private void nextDector( int nextStatue) {
method setError (line 188) | private void setError() {
method setTimeout (line 193) | private void setTimeout() {
method switchSourceIfNeed (line 202) | private void switchSourceIfNeed(String reason) {
FILE: src/main/java/io/mycat/backend/jdbc/ShowVariables.java
class ShowVariables (line 50) | public final class ShowVariables
method parseVariable (line 71) | private static List<String> parseVariable(String sql)
method execute (line 81) | public static void execute(ServerConnection c, String sql) {
method justReturnValue (line 121) | public static void justReturnValue(ServerConnection c, String value) {
method getRow (line 160) | private static RowDataPacket getRow(String name, String value, String ...
method execute (line 188) | public static void execute(ServerConnection sc, String orgin, BackendC...
method justReturnValue (line 193) | public static void justReturnValue(ServerConnection sc, String orgin, ...
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/DriverPropertyInfoHelper.java
class DriverPropertyInfoHelper (line 7) | public class DriverPropertyInfoHelper{
method getPropertyInfo (line 23) | public DriverPropertyInfo[] getPropertyInfo()
method addPropInfo (line 59) | private void addPropInfo(final ArrayList<DriverPropertyInfo> propInfos...
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoClientPropertyHelper.java
class MongoClientPropertyHelper (line 15) | public class MongoClientPropertyHelper {
method formatProperties (line 22) | public static String formatProperties(Properties pro) {
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoConnection.java
class MongoConnection (line 33) | public class MongoConnection implements Connection {
method MongoConnection (line 41) | public MongoConnection(MongoClientURI mcu, String url) throws UnknownH...
method getDB (line 47) | public DB getDB() {
method unwrap (line 56) | @Override
method isWrapperFor (line 62) | @Override
method nativeSQL (line 68) | @Override
method setAutoCommit (line 74) | @Override
method getAutoCommit (line 80) | @Override
method commit (line 86) | @Override
method rollback (line 92) | @Override
method close (line 98) | @Override
method isClosed (line 105) | @Override
method getMetaData (line 111) | @Override
method setReadOnly (line 117) | @Override
method isReadOnly (line 124) | @Override
method setCatalog (line 130) | @Override
method getCatalog (line 136) | @Override
method setTransactionIsolation (line 142) | @Override
method getTransactionIsolation (line 148) | @Override
method getWarnings (line 154) | @Override
method clearWarnings (line 160) | @Override
method getTypeMap (line 166) | @Override
method setTypeMap (line 172) | @Override
method setHoldability (line 178) | @Override
method getHoldability (line 184) | @Override
method setSavepoint (line 190) | @Override
method setSavepoint (line 196) | @Override
method rollback (line 202) | @Override
method releaseSavepoint (line 208) | @Override
method createStatement (line 214) | @Override
method createStatement (line 220) | @Override
method createStatement (line 227) | @Override
method prepareCall (line 235) | @Override
method prepareCall (line 241) | @Override
method prepareCall (line 248) | @Override
method prepareStatement (line 257) | @Override
method prepareStatement (line 263) | @Override
method prepareStatement (line 270) | @Override
method prepareStatement (line 278) | @Override
method prepareStatement (line 285) | @Override
method prepareStatement (line 292) | @Override
method createClob (line 299) | @Override
method createBlob (line 305) | @Override
method createNClob (line 311) | @Override
method createSQLXML (line 317) | @Override
method isValid (line 323) | @Override
method setClientInfo (line 329) | @Override
method setClientInfo (line 336) | @Override
method getClientInfo (line 343) | @Override
method getClientInfo (line 349) | @Override
method createArrayOf (line 355) | @Override
method createStruct (line 362) | @Override
method setSchema (line 369) | @Override
method getSchema (line 375) | @Override
method abort (line 381) | @Override
method setNetworkTimeout (line 387) | @Override
method getNetworkTimeout (line 394) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoData.java
class MongoData (line 13) | public class MongoData {
method MongoData (line 23) | public MongoData(){
method getCount (line 28) | public long getCount() {
method setCount (line 33) | public void setCount(long count) {
method getTable (line 37) | public String getTable() {
method setTable (line 41) | public void setTable(String table) {
method getGrouyBy (line 45) | public DBObject getGrouyBy() {
method getGrouyBys (line 49) | public BasicDBList getGrouyBys() {
method setGrouyBy (line 58) | public void setGrouyBy(DBObject gb) {
method getObjectToType (line 75) | public static int getObjectToType(Object ob){
method setField (line 114) | public void setField(String field,int ftype) {
method getFields (line 118) | public HashMap<String,Integer> getFields() {
method getType (line 122) | public boolean getType() {
method getCursor (line 126) | public DBCursor getCursor() {
method setCursor (line 130) | public DBCursor setCursor(DBCursor cursor) {
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoDriver.java
class MongoDriver (line 21) | public class MongoDriver implements Driver
method connect (line 37) | @Override
method parseURL (line 55) | private MongoClientURI parseURL(String url, Properties defaults) {
method acceptsURL (line 84) | @Override
method getPropertyInfo (line 92) | @Override
method getMajorVersion (line 100) | @Override
method getMinorVersion (line 105) | @Override
method jdbcCompliant (line 110) | @Override
method getParentLogger (line 114) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoEmbeddedObjectProcessor.java
class MongoEmbeddedObjectProcessor (line 63) | public class MongoEmbeddedObjectProcessor {
method valueMapper (line 74) | public static Object valueMapper(String columnLabel, Object value, Cla...
method loadFields (line 120) | private static Map<String, Field> loadFields(Class<?> clazzToMapper) {
method getParameterizedClass (line 136) | private static Class<?> getParameterizedClass(Field field) {
method createCollection (line 167) | private static Collection<Object> createCollection(Field field, int si...
method beanMapper (line 186) | private static Object beanMapper(BasicDBObject dbObj, Class<?> clazzTo...
method arrayMapper (line 263) | private static Object arrayMapper(BasicDBList basicDBList, Class<?> ar...
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoPreparedStatement.java
class MongoPreparedStatement (line 31) | public class MongoPreparedStatement extends MongoStatement implements
method MongoPreparedStatement (line 37) | public MongoPreparedStatement(MongoConnection conn, int type,
method executeQuery (line 45) | @Override
method executeUpdate (line 51) | @Override
method setValue (line 58) | public void setValue(int idx, Object o) {
method setNull (line 65) | @Override
method setBoolean (line 71) | @Override
method setByte (line 77) | @Override
method setShort (line 83) | @Override
method setInt (line 89) | @Override
method setLong (line 95) | @Override
method setFloat (line 101) | @Override
method setDouble (line 107) | @Override
method setBigDecimal (line 113) | @Override
method setString (line 120) | @Override
method setBytes (line 126) | @Override
method setDate (line 132) | @Override
method setTime (line 138) | @Override
method setTimestamp (line 144) | @Override
method setAsciiStream (line 151) | @Override
method setUnicodeStream (line 158) | @Override
method setBinaryStream (line 165) | @Override
method clearParameters (line 172) | @Override
method setObject (line 178) | @Override
method setObject (line 185) | @Override
method execute (line 191) | @Override
method addBatch (line 197) | @Override
method setCharacterStream (line 203) | @Override
method setRef (line 210) | @Override
method setBlob (line 216) | @Override
method setClob (line 222) | @Override
method setArray (line 228) | @Override
method getMetaData (line 234) | @Override
method setDate (line 240) | @Override
method setTime (line 247) | @Override
method setTimestamp (line 254) | @Override
method setNull (line 261) | @Override
method setURL (line 268) | @Override
method getParameterMetaData (line 274) | @Override
method setRowId (line 280) | @Override
method setNString (line 286) | @Override
method setNCharacterStream (line 293) | @Override
method setNClob (line 300) | @Override
method setClob (line 306) | @Override
method setBlob (line 313) | @Override
method setNClob (line 320) | @Override
method setSQLXML (line 327) | @Override
method setObject (line 334) | @Override
method setAsciiStream (line 341) | @Override
method setBinaryStream (line 348) | @Override
method setCharacterStream (line 355) | @Override
method setAsciiStream (line 362) | @Override
method setBinaryStream (line 369) | @Override
method setCharacterStream (line 376) | @Override
method setNCharacterStream (line 383) | @Override
method setClob (line 390) | @Override
method setBlob (line 396) | @Override
method setNClob (line 403) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoResultSet.java
class MongoResultSet (line 39) | public class MongoResultSet implements ResultSet
method MongoResultSet (line 56) | public MongoResultSet(MongoData mongo,String schema) throws SQLExcepti...
method SetFields (line 95) | public void SetFields(Set<String> keySet) {
method SetFieldType (line 100) | public void SetFieldType(boolean isid) throws SQLException {
method SetFieldType (line 116) | public void SetFieldType(HashMap<String,Integer> map) throws SQLExcept...
method unwrap (line 124) | @Override
method isWrapperFor (line 130) | @Override
method next (line 136) | @Override
method close (line 179) | @Override
method getField (line 185) | public String getField(int columnIndex){
method wasNull (line 189) | @Override
method getString (line 195) | @Override
method getBoolean (line 201) | @Override
method getByte (line 207) | @Override
method getShort (line 213) | @Override
method getInt (line 219) | @Override
method getLong (line 225) | @Override
method getFloat (line 231) | @Override
method getDouble (line 237) | @Override
method getBigDecimal (line 243) | @Override
method getBytes (line 250) | @Override
method getDate (line 256) | @Override
method getTime (line 262) | @Override
method getTimestamp (line 268) | @Override
method getAsciiStream (line 274) | @Override
method getUnicodeStream (line 280) | @Override
method getBinaryStream (line 286) | @Override
method getString (line 292) | @Override
method getBoolean (line 302) | @Override
method getNumber (line 313) | public Number getNumber(String columnLabel)
method getByte (line 322) | @Override
method getShort (line 328) | @Override
method getInt (line 334) | @Override
method getLong (line 340) | @Override
method getFloat (line 346) | @Override
method getDouble (line 352) | @Override
method getBigDecimal (line 358) | @Override
method getBytes (line 365) | @Override
method getDate (line 371) | @Override
method getTime (line 377) | @Override
method getTimestamp (line 383) | @Override
method getAsciiStream (line 393) | @Override
method getUnicodeStream (line 399) | @Override
method getBinaryStream (line 405) | @Override
method getWarnings (line 411) | @Override
method clearWarnings (line 417) | @Override
method getCursorName (line 423) | @Override
method getMetaData (line 429) | @Override
method getObject (line 443) | @Override
method getObject (line 459) | @Override
method findColumn (line 481) | @Override
method getCharacterStream (line 487) | @Override
method getCharacterStream (line 493) | @Override
method getBigDecimal (line 499) | @Override
method getBigDecimal (line 505) | @Override
method isBeforeFirst (line 511) | @Override
method isAfterLast (line 517) | @Override
method isFirst (line 523) | @Override
method isLast (line 529) | @Override
method beforeFirst (line 535) | @Override
method afterLast (line 541) | @Override
method first (line 547) | @Override
method last (line 553) | @Override
method getRow (line 559) | @Override
method absolute (line 565) | @Override
method relative (line 571) | @Override
method previous (line 577) | @Override
method setFetchDirection (line 583) | @Override
method getFetchDirection (line 591) | @Override
method setFetchSize (line 597) | @Override
method getFetchSize (line 603) | @Override
method getType (line 609) | @Override
method getConcurrency (line 615) | @Override
method rowUpdated (line 621) | @Override
method rowInserted (line 627) | @Override
method rowDeleted (line 633) | @Override
method updateNull (line 639) | @Override
method updateBoolean (line 645) | @Override
method updateByte (line 651) | @Override
method updateShort (line 657) | @Override
method updateInt (line 663) | @Override
method updateLong (line 669) | @Override
method updateFloat (line 675) | @Override
method updateDouble (line 681) | @Override
method updateBigDecimal (line 687) | @Override
method updateString (line 694) | @Override
method updateBytes (line 700) | @Override
method updateDate (line 706) | @Override
method updateTime (line 712) | @Override
method updateTimestamp (line 718) | @Override
method updateAsciiStream (line 725) | @Override
method updateBinaryStream (line 732) | @Override
method updateCharacterStream (line 739) | @Override
method updateObject (line 746) | @Override
method updateObject (line 753) | @Override
method updateNull (line 759) | @Override
method updateBoolean (line 765) | @Override
method updateByte (line 772) | @Override
method updateShort (line 778) | @Override
method updateInt (line 784) | @Override
method updateLong (line 790) | @Override
method updateFloat (line 796) | @Override
method updateDouble (line 802) | @Override
method updateBigDecimal (line 808) | @Override
method updateString (line 815) | @Override
method updateBytes (line 821) | @Override
method updateDate (line 827) | @Override
method updateTime (line 833) | @Override
method updateTimestamp (line 839) | @Override
method updateAsciiStream (line 846) | @Override
method updateBinaryStream (line 853) | @Override
method updateCharacterStream (line 860) | @Override
method updateObject (line 867) | @Override
method updateObject (line 874) | @Override
method insertRow (line 880) | @Override
method updateRow (line 886) | @Override
method deleteRow (line 892) | @Override
method refreshRow (line 898) | @Override
method cancelRowUpdates (line 904) | @Override
method moveToInsertRow (line 910) | @Override
method moveToCurrentRow (line 916) | @Override
method getStatement (line 922) | @Override
method getObject (line 928) | @Override
method getRef (line 935) | @Override
method getBlob (line 941) | @Override
method getClob (line 947) | @Override
method getArray (line 953) | @Override
method getObject (line 959) | @Override
method getRef (line 966) | @Override
method getBlob (line 972) | @Override
method getClob (line 978) | @Override
method getArray (line 984) | @Override
method getDate (line 990) | @Override
method getDate (line 996) | @Override
method getTime (line 1002) | @Override
method getTime (line 1008) | @Override
method getTimestamp (line 1014) | @Override
method getTimestamp (line 1021) | @Override
method getURL (line 1028) | @Override
method getURL (line 1034) | @Override
method updateRef (line 1040) | @Override
method updateRef (line 1046) | @Override
method updateBlob (line 1052) | @Override
method updateBlob (line 1058) | @Override
method updateClob (line 1064) | @Override
method updateClob (line 1070) | @Override
method updateArray (line 1076) | @Override
method updateArray (line 1082) | @Override
method getRowId (line 1088) | @Override
method getRowId (line 1094) | @Override
method updateRowId (line 1100) | @Override
method updateRowId (line 1106) | @Override
method getHoldability (line 1112) | @Override
method isClosed (line 1118) | @Override
method updateNString (line 1124) | @Override
method updateNString (line 1131) | @Override
method updateNClob (line 1138) | @Override
method updateNClob (line 1144) | @Override
method getNClob (line 1151) | @Override
method getNClob (line 1157) | @Override
method getSQLXML (line 1163) | @Override
method getSQLXML (line 1169) | @Override
method updateSQLXML (line 1175) | @Override
method updateSQLXML (line 1182) | @Override
method getNString (line 1189) | @Override
method getNString (line 1195) | @Override
method getNCharacterStream (line 1201) | @Override
method getNCharacterStream (line 1207) | @Override
method updateNCharacterStream (line 1213) | @Override
method updateNCharacterStream (line 1220) | @Override
method updateAsciiStream (line 1227) | @Override
method updateBinaryStream (line 1234) | @Override
method updateCharacterStream (line 1241) | @Override
method updateAsciiStream (line 1248) | @Override
method updateBinaryStream (line 1255) | @Override
method updateCharacterStream (line 1262) | @Override
method updateBlob (line 1269) | @Override
method updateBlob (line 1276) | @Override
method updateClob (line 1283) | @Override
method updateClob (line 1290) | @Override
method updateNClob (line 1297) | @Override
method updateNClob (line 1304) | @Override
method updateNCharacterStream (line 1311) | @Override
method updateNCharacterStream (line 1318) | @Override
method updateAsciiStream (line 1325) | @Override
method updateBinaryStream (line 1332) | @Override
method updateCharacterStream (line 1339) | @Override
method updateAsciiStream (line 1346) | @Override
method updateBinaryStream (line 1353) | @Override
method updateCharacterStream (line 1360) | @Override
method updateBlob (line 1367) | @Override
method updateBlob (line 1374) | @Override
method updateClob (line 1381) | @Override
method updateClob (line 1387) | @Override
method updateNClob (line 1394) | @Override
method updateNClob (line 1400) | @Override
method getObject (line 1407) | @Override
method getObject (line 1413) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoResultSetMetaData.java
class MongoResultSetMetaData (line 15) | public class MongoResultSetMetaData implements ResultSetMetaData {
method MongoResultSetMetaData (line 30) | public MongoResultSetMetaData(String[] select,int [] ftype,String sche...
method unwrap (line 38) | @Override
method isWrapperFor (line 44) | @Override
method getColumnCount (line 50) | @Override
method isAutoIncrement (line 60) | @Override
method isCaseSensitive (line 66) | @Override
method isSearchable (line 72) | @Override
method isCurrency (line 78) | @Override
method isNullable (line 84) | @Override
method isSigned (line 90) | @Override
method getColumnDisplaySize (line 96) | @Override
method getColumnLabel (line 102) | @Override
method getColumnName (line 107) | @Override
method getSchemaName (line 112) | @Override
method getPrecision (line 118) | @Override
method getScale (line 124) | @Override
method getTableName (line 130) | @Override
method getCatalogName (line 136) | @Override
method getColumnType (line 142) | @Override
method getColumnTypeName (line 148) | @Override
method isReadOnly (line 165) | @Override
method isWritable (line 171) | @Override
method isDefinitelyWritable (line 177) | @Override
method getColumnClassName (line 183) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoSQLException.java
class MongoSQLException (line 5) | @SuppressWarnings("serial")
method MongoSQLException (line 9) | public MongoSQLException(String msg)
class ErrorSQL (line 14) | public static class ErrorSQL extends MongoSQLException
method ErrorSQL (line 17) | ErrorSQL(String sql)
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoSQLParser.java
class MongoSQLParser (line 28) | public class MongoSQLParser {
method MongoSQLParser (line 35) | public MongoSQLParser(DB db, String sql) throws MongoSQLException
method parser (line 42) | public SQLStatement parser(String s) throws MongoSQLException
method setParams (line 57) | public void setParams(List params)
method query (line 63) | public MongoData query() throws MongoSQLException{
method executeUpdate (line 157) | public int executeUpdate() throws MongoSQLException {
method InsertData (line 176) | private int InsertData(SQLInsertStatement state) {
method UpData (line 199) | private int UpData(SQLUpdateStatement state) {
method DeleteDate (line 215) | private int DeleteDate(SQLDeleteStatement state) {
method dropTable (line 228) | private int dropTable(SQLDropTableStatement state) {
method getSQLExprToInt (line 237) | private int getSQLExprToInt(SQLExpr expr){
method getSQLExprToAsc (line 243) | private int getSQLExprToAsc(SQLOrderingSpecification ASC){
method remove (line 254) | public String remove(String resource,char ch)
method getExpValue (line 269) | private Object getExpValue(SQLExpr expr){
method getExprFieldName (line 292) | private String getExprFieldName(SQLAggregateExpr expr){
method getFieldName2 (line 300) | private String getFieldName2(SQLExpr item){
method getFieldName (line 304) | private String getFieldName(SQLSelectItem item){
method parserWhere (line 307) | private DBObject parserWhere(SQLExpr expr){
method parserDBObject (line 315) | private void parserDBObject(BasicDBObject ob,String akey, String aop,O...
method opSQLExpr (line 340) | @SuppressWarnings("unused")
method parserWhere (line 377) | private void parserWhere(SQLExpr aexpr,BasicDBObject o){
method parserWhereOLD (line 449) | private void parserWhereOLD(SQLExpr aexpr,BasicDBObject o){
method orWhere (line 502) | private void orWhere(SQLExpr exprL,SQLExpr exprR ,BasicDBObject ob){
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/MongoStatement.java
class MongoStatement (line 16) | public class MongoStatement implements Statement
method MongoStatement (line 26) | public MongoStatement(MongoConnection conn, int type, int concurrency,...
method unwrap (line 44) | @Override
method isWrapperFor (line 50) | @Override
method executeQuery (line 56) | @Override
method executeUpdate (line 75) | @Override
method close (line 81) | @Override
method getMaxFieldSize (line 87) | @Override
method setMaxFieldSize (line 93) | @Override
method getMaxRows (line 99) | @Override
method setMaxRows (line 105) | @Override
method setEscapeProcessing (line 111) | @Override
method getQueryTimeout (line 117) | @Override
method setQueryTimeout (line 123) | @Override
method cancel (line 129) | @Override
method getWarnings (line 135) | @Override
method clearWarnings (line 141) | @Override
method setCursorName (line 147) | @Override
method execute (line 153) | @Override
method getResultSet (line 159) | @Override
method getUpdateCount (line 165) | @Override
method getMoreResults (line 171) | @Override
method setFetchDirection (line 177) | @Override
method getFetchDirection (line 183) | @Override
method setFetchSize (line 189) | @Override
method getFetchSize (line 195) | @Override
method getResultSetConcurrency (line 201) | @Override
method getResultSetType (line 207) | @Override
method addBatch (line 213) | @Override
method clearBatch (line 219) | @Override
method executeBatch (line 224) | @Override
method getConnection (line 230) | @Override
method getMoreResults (line 236) | @Override
method getGeneratedKeys (line 242) | @Override
method executeUpdate (line 248) | @Override
method executeUpdate (line 254) | @Override
method executeUpdate (line 261) | @Override
method execute (line 267) | @Override
method execute (line 273) | @Override
method execute (line 278) | @Override
method getResultSetHoldability (line 284) | @Override
method isClosed (line 290) | @Override
method setPoolable (line 296) | @Override
method isPoolable (line 302) | @Override
method closeOnCompletion (line 308) | @Override
method isCloseOnCompletion (line 314) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/mongodb/StringUtils.java
class StringUtils (line 4) | public class StringUtils {
method startsWithIgnoreCase (line 7) | public static boolean startsWithIgnoreCase(String searchIn, int startAt,
method startsWithIgnoreCase (line 13) | public static boolean startsWithIgnoreCase(String searchIn, String sea...
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/DriverPropertyInfoHelper.java
class DriverPropertyInfoHelper (line 7) | public class DriverPropertyInfoHelper{
method getPropertyInfo (line 23) | public DriverPropertyInfo[] getPropertyInfo()
method addPropInfo (line 59) | private void addPropInfo(final ArrayList<DriverPropertyInfo> propInfos...
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaConnection.java
class SequoiaConnection (line 33) | public class SequoiaConnection implements Connection {
method SequoiaConnection (line 41) | public SequoiaConnection(String url, String db) throws UnknownHostExce...
method getDB (line 52) | public CollectionSpace getDB() {
method unwrap (line 66) | @Override
method isWrapperFor (line 72) | @Override
method nativeSQL (line 78) | @Override
method setAutoCommit (line 84) | @Override
method getAutoCommit (line 92) | @Override
method commit (line 98) | @Override
method rollback (line 104) | @Override
method close (line 110) | @Override
method isClosed (line 117) | @Override
method getMetaData (line 123) | @Override
method setReadOnly (line 129) | @Override
method isReadOnly (line 136) | @Override
method setCatalog (line 142) | @Override
method getCatalog (line 148) | @Override
method setTransactionIsolation (line 154) | @Override
method getTransactionIsolation (line 160) | @Override
method getWarnings (line 166) | @Override
method clearWarnings (line 172) | @Override
method getTypeMap (line 178) | @Override
method setTypeMap (line 184) | @Override
method setHoldability (line 190) | @Override
method getHoldability (line 196) | @Override
method setSavepoint (line 202) | @Override
method setSavepoint (line 208) | @Override
method rollback (line 214) | @Override
method releaseSavepoint (line 220) | @Override
method createStatement (line 226) | @Override
method createStatement (line 232) | @Override
method createStatement (line 239) | @Override
method prepareCall (line 247) | @Override
method prepareCall (line 253) | @Override
method prepareCall (line 260) | @Override
method prepareStatement (line 269) | @Override
method prepareStatement (line 275) | @Override
method prepareStatement (line 282) | @Override
method prepareStatement (line 290) | @Override
method prepareStatement (line 297) | @Override
method prepareStatement (line 304) | @Override
method createClob (line 311) | @Override
method createBlob (line 317) | @Override
method createNClob (line 323) | @Override
method createSQLXML (line 329) | @Override
method isValid (line 335) | @Override
method setClientInfo (line 341) | @Override
method setClientInfo (line 348) | @Override
method getClientInfo (line 355) | @Override
method getClientInfo (line 361) | @Override
method createArrayOf (line 367) | @Override
method createStruct (line 374) | @Override
method setSchema (line 381) | @Override
method getSchema (line 387) | @Override
method abort (line 393) | @Override
method setNetworkTimeout (line 399) | @Override
method getNetworkTimeout (line 406) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaData.java
class SequoiaData (line 14) | public class SequoiaData {
method SequoiaData (line 24) | public SequoiaData(){
method getCount (line 29) | public long getCount() {
method setCount (line 34) | public void setCount(long count) {
method getTable (line 38) | public String getTable() {
method setTable (line 42) | public void setTable(String table) {
method getGrouyBy (line 46) | public BSONObject getGrouyBy() {
method getGrouyBys (line 50) | public BasicBSONList getGrouyBys() {
method setGrouyBy (line 58) | public void setGrouyBy(BSONObject gb) {
method getObjectToType (line 72) | public static int getObjectToType(Object ob){
method setField (line 111) | public void setField(String field,int ftype) {
method getFields (line 115) | public HashMap<String,Integer> getFields() {
method getType (line 119) | public boolean getType() {
method getCursor (line 123) | public DBCursor getCursor() {
method setCursor (line 127) | public DBCursor setCursor(DBCursor cursor) {
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaDriver.java
class SequoiaDriver (line 20) | public class SequoiaDriver implements Driver
method connect (line 36) | @Override
method acceptsURL (line 87) | @Override
method getPropertyInfo (line 95) | @Override
method getMajorVersion (line 103) | @Override
method getMinorVersion (line 108) | @Override
method jdbcCompliant (line 113) | @Override
method getParentLogger (line 117) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaPreparedStatement.java
class SequoiaPreparedStatement (line 31) | public class SequoiaPreparedStatement extends SequoiaStatement implements
method SequoiaPreparedStatement (line 37) | public SequoiaPreparedStatement(SequoiaConnection conn, int type,
method executeQuery (line 45) | @Override
method executeUpdate (line 51) | @Override
method setValue (line 58) | public void setValue(int idx, Object o) {
method setNull (line 65) | @Override
method setBoolean (line 71) | @Override
method setByte (line 77) | @Override
method setShort (line 83) | @Override
method setInt (line 89) | @Override
method setLong (line 95) | @Override
method setFloat (line 101) | @Override
method setDouble (line 107) | @Override
method setBigDecimal (line 113) | @Override
method setString (line 120) | @Override
method setBytes (line 126) | @Override
method setDate (line 132) | @Override
method setTime (line 138) | @Override
method setTimestamp (line 144) | @Override
method setAsciiStream (line 151) | @Override
method setUnicodeStream (line 158) | @Override
method setBinaryStream (line 165) | @Override
method clearParameters (line 172) | @Override
method setObject (line 178) | @Override
method setObject (line 185) | @Override
method execute (line 191) | @Override
method addBatch (line 197) | @Override
method setCharacterStream (line 203) | @Override
method setRef (line 210) | @Override
method setBlob (line 216) | @Override
method setClob (line 222) | @Override
method setArray (line 228) | @Override
method getMetaData (line 234) | @Override
method setDate (line 240) | @Override
method setTime (line 247) | @Override
method setTimestamp (line 254) | @Override
method setNull (line 261) | @Override
method setURL (line 268) | @Override
method getParameterMetaData (line 274) | @Override
method setRowId (line 280) | @Override
method setNString (line 286) | @Override
method setNCharacterStream (line 293) | @Override
method setNClob (line 300) | @Override
method setClob (line 306) | @Override
method setBlob (line 313) | @Override
method setNClob (line 320) | @Override
method setSQLXML (line 327) | @Override
method setObject (line 334) | @Override
method setAsciiStream (line 341) | @Override
method setBinaryStream (line 348) | @Override
method setCharacterStream (line 355) | @Override
method setAsciiStream (line 362) | @Override
method setBinaryStream (line 369) | @Override
method setCharacterStream (line 376) | @Override
method setNCharacterStream (line 383) | @Override
method setClob (line 390) | @Override
method setBlob (line 396) | @Override
method setNClob (line 403) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaResultSet.java
class SequoiaResultSet (line 40) | public class SequoiaResultSet implements ResultSet
method SequoiaResultSet (line 57) | public SequoiaResultSet(SequoiaData mongo,String schema) throws SQLExc...
method SetFields (line 96) | public void SetFields(Set<String> keySet) {
method SetFieldType (line 101) | public void SetFieldType(boolean isid) throws SQLException {
method SetFieldType (line 117) | public void SetFieldType(HashMap<String,Integer> map) throws SQLExcept...
method unwrap (line 125) | @Override
method isWrapperFor (line 131) | @Override
method next (line 137) | @Override
method close (line 180) | @Override
method getField (line 186) | public String getField(int columnIndex){
method wasNull (line 190) | @Override
method getString (line 196) | @Override
method getBoolean (line 202) | @Override
method getByte (line 208) | @Override
method getShort (line 214) | @Override
method getInt (line 220) | @Override
method getLong (line 226) | @Override
method getFloat (line 232) | @Override
method getDouble (line 238) | @Override
method getBigDecimal (line 244) | @Override
method getBytes (line 251) | @Override
method getDate (line 257) | @Override
method getTime (line 263) | @Override
method getTimestamp (line 269) | @Override
method getAsciiStream (line 275) | @Override
method getUnicodeStream (line 281) | @Override
method getBinaryStream (line 287) | @Override
method getString (line 293) | @Override
method getBoolean (line 303) | @Override
method getNumber (line 314) | public Number getNumber(String columnLabel)
method getByte (line 323) | @Override
method getShort (line 329) | @Override
method getInt (line 335) | @Override
method getLong (line 341) | @Override
method getFloat (line 347) | @Override
method getDouble (line 353) | @Override
method getBigDecimal (line 359) | @Override
method getBytes (line 366) | @Override
method getDate (line 372) | @Override
method getTime (line 378) | @Override
method getTimestamp (line 384) | @Override
method getAsciiStream (line 390) | @Override
method getUnicodeStream (line 396) | @Override
method getBinaryStream (line 402) | @Override
method getWarnings (line 408) | @Override
method clearWarnings (line 414) | @Override
method getCursorName (line 420) | @Override
method getMetaData (line 426) | @Override
method getObject (line 440) | @Override
method getObject (line 456) | @Override
method findColumn (line 478) | @Override
method getCharacterStream (line 484) | @Override
method getCharacterStream (line 490) | @Override
method getBigDecimal (line 496) | @Override
method getBigDecimal (line 502) | @Override
method isBeforeFirst (line 508) | @Override
method isAfterLast (line 514) | @Override
method isFirst (line 520) | @Override
method isLast (line 526) | @Override
method beforeFirst (line 532) | @Override
method afterLast (line 538) | @Override
method first (line 544) | @Override
method last (line 550) | @Override
method getRow (line 556) | @Override
method absolute (line 562) | @Override
method relative (line 568) | @Override
method previous (line 574) | @Override
method setFetchDirection (line 580) | @Override
method getFetchDirection (line 587) | @Override
method setFetchSize (line 593) | @Override
method getFetchSize (line 599) | @Override
method getType (line 605) | @Override
method getConcurrency (line 611) | @Override
method rowUpdated (line 617) | @Override
method rowInserted (line 623) | @Override
method rowDeleted (line 629) | @Override
method updateNull (line 635) | @Override
method updateBoolean (line 641) | @Override
method updateByte (line 647) | @Override
method updateShort (line 653) | @Override
method updateInt (line 659) | @Override
method updateLong (line 665) | @Override
method updateFloat (line 671) | @Override
method updateDouble (line 677) | @Override
method updateBigDecimal (line 683) | @Override
method updateString (line 690) | @Override
method updateBytes (line 696) | @Override
method updateDate (line 702) | @Override
method updateTime (line 708) | @Override
method updateTimestamp (line 714) | @Override
method updateAsciiStream (line 721) | @Override
method updateBinaryStream (line 728) | @Override
method updateCharacterStream (line 735) | @Override
method updateObject (line 742) | @Override
method updateObject (line 749) | @Override
method updateNull (line 755) | @Override
method updateBoolean (line 761) | @Override
method updateByte (line 768) | @Override
method updateShort (line 774) | @Override
method updateInt (line 780) | @Override
method updateLong (line 786) | @Override
method updateFloat (line 792) | @Override
method updateDouble (line 798) | @Override
method updateBigDecimal (line 804) | @Override
method updateString (line 811) | @Override
method updateBytes (line 817) | @Override
method updateDate (line 823) | @Override
method updateTime (line 829) | @Override
method updateTimestamp (line 835) | @Override
method updateAsciiStream (line 842) | @Override
method updateBinaryStream (line 849) | @Override
method updateCharacterStream (line 856) | @Override
method updateObject (line 863) | @Override
method updateObject (line 870) | @Override
method insertRow (line 876) | @Override
method updateRow (line 882) | @Override
method deleteRow (line 888) | @Override
method refreshRow (line 894) | @Override
method cancelRowUpdates (line 900) | @Override
method moveToInsertRow (line 906) | @Override
method moveToCurrentRow (line 912) | @Override
method getStatement (line 918) | @Override
method getObject (line 924) | @Override
method getRef (line 931) | @Override
method getBlob (line 937) | @Override
method getClob (line 943) | @Override
method getArray (line 949) | @Override
method getObject (line 955) | @Override
method getRef (line 962) | @Override
method getBlob (line 968) | @Override
method getClob (line 974) | @Override
method getArray (line 980) | @Override
method getDate (line 986) | @Override
method getDate (line 992) | @Override
method getTime (line 998) | @Override
method getTime (line 1004) | @Override
method getTimestamp (line 1010) | @Override
method getTimestamp (line 1017) | @Override
method getURL (line 1024) | @Override
method getURL (line 1030) | @Override
method updateRef (line 1036) | @Override
method updateRef (line 1042) | @Override
method updateBlob (line 1048) | @Override
method updateBlob (line 1054) | @Override
method updateClob (line 1060) | @Override
method updateClob (line 1066) | @Override
method updateArray (line 1072) | @Override
method updateArray (line 1078) | @Override
method getRowId (line 1084) | @Override
method getRowId (line 1090) | @Override
method updateRowId (line 1096) | @Override
method updateRowId (line 1102) | @Override
method getHoldability (line 1108) | @Override
method isClosed (line 1114) | @Override
method updateNString (line 1120) | @Override
method updateNString (line 1127) | @Override
method updateNClob (line 1134) | @Override
method updateNClob (line 1140) | @Override
method getNClob (line 1147) | @Override
method getNClob (line 1153) | @Override
method getSQLXML (line 1159) | @Override
method getSQLXML (line 1165) | @Override
method updateSQLXML (line 1171) | @Override
method updateSQLXML (line 1178) | @Override
method getNString (line 1185) | @Override
method getNString (line 1191) | @Override
method getNCharacterStream (line 1197) | @Override
method getNCharacterStream (line 1203) | @Override
method updateNCharacterStream (line 1209) | @Override
method updateNCharacterStream (line 1216) | @Override
method updateAsciiStream (line 1223) | @Override
method updateBinaryStream (line 1230) | @Override
method updateCharacterStream (line 1237) | @Override
method updateAsciiStream (line 1244) | @Override
method updateBinaryStream (line 1251) | @Override
method updateCharacterStream (line 1258) | @Override
method updateBlob (line 1265) | @Override
method updateBlob (line 1272) | @Override
method updateClob (line 1279) | @Override
method updateClob (line 1286) | @Override
method updateNClob (line 1293) | @Override
method updateNClob (line 1300) | @Override
method updateNCharacterStream (line 1307) | @Override
method updateNCharacterStream (line 1314) | @Override
method updateAsciiStream (line 1321) | @Override
method updateBinaryStream (line 1328) | @Override
method updateCharacterStream (line 1335) | @Override
method updateAsciiStream (line 1342) | @Override
method updateBinaryStream (line 1349) | @Override
method updateCharacterStream (line 1356) | @Override
method updateBlob (line 1363) | @Override
method updateBlob (line 1370) | @Override
method updateClob (line 1377) | @Override
method updateClob (line 1383) | @Override
method updateNClob (line 1390) | @Override
method updateNClob (line 1396) | @Override
method getObject (line 1403) | @Override
method getObject (line 1409) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaResultSetMetaData.java
class SequoiaResultSetMetaData (line 14) | public class SequoiaResultSetMetaData implements ResultSetMetaData {
method SequoiaResultSetMetaData (line 29) | public SequoiaResultSetMetaData(String[] select,int [] ftype,String sc...
method unwrap (line 37) | @Override
method isWrapperFor (line 43) | @Override
method getColumnCount (line 49) | @Override
method isAutoIncrement (line 59) | @Override
method isCaseSensitive (line 65) | @Override
method isSearchable (line 71) | @Override
method isCurrency (line 77) | @Override
method isNullable (line 83) | @Override
method isSigned (line 89) | @Override
method getColumnDisplaySize (line 95) | @Override
method getColumnLabel (line 101) | @Override
method getColumnName (line 106) | @Override
method getSchemaName (line 111) | @Override
method getPrecision (line 117) | @Override
method getScale (line 123) | @Override
method getTableName (line 129) | @Override
method getCatalogName (line 135) | @Override
method getColumnType (line 141) | @Override
method getColumnTypeName (line 147) | @Override
method isReadOnly (line 164) | @Override
method isWritable (line 170) | @Override
method isDefinitelyWritable (line 176) | @Override
method getColumnClassName (line 182) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaSQLException.java
class SequoiaSQLException (line 5) | @SuppressWarnings("serial")
method SequoiaSQLException (line 9) | public SequoiaSQLException(String msg)
class ErrorSQL (line 14) | public static class ErrorSQL extends SequoiaSQLException
method ErrorSQL (line 17) | ErrorSQL(String sql)
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaSQLParser.java
class SequoiaSQLParser (line 35) | public class SequoiaSQLParser {
method SequoiaSQLParser (line 42) | public SequoiaSQLParser(CollectionSpace db, String sql) throws Sequoi...
method parser (line 49) | public SQLStatement parser(String s) throws SequoiaSQLException
method setParams (line 64) | public void setParams(List params)
method query (line 70) | public SequoiaData query() throws SequoiaSQLException{
method executeUpdate (line 166) | public int executeUpdate() throws SequoiaSQLException {
method InsertData (line 185) | private int InsertData(SQLInsertStatement state) {
method UpData (line 204) | private int UpData(SQLUpdateStatement state) {
method DeleteDate (line 221) | private int DeleteDate(SQLDeleteStatement state) {
method dropTable (line 236) | private int dropTable(SQLDropTableStatement state) {
method createTable (line 246) | private int createTable(SQLCreateTableStatement state) {
method getSQLExprToInt (line 254) | private int getSQLExprToInt(SQLExpr expr){
method getSQLExprToAsc (line 260) | private int getSQLExprToAsc(SQLOrderingSpecification ASC){
method remove (line 271) | public String remove(String resource,char ch)
method getExpValue (line 286) | private Object getExpValue(SQLExpr expr){
method getExprFieldName (line 309) | private String getExprFieldName(SQLAggregateExpr expr){
method getFieldName2 (line 317) | private String getFieldName2(SQLExpr item){
method getFieldName (line 321) | private String getFieldName(SQLSelectItem item){
method parserWhere (line 324) | private BSONObject parserWhere(SQLExpr expr){
method parserDBObject (line 332) | private void parserDBObject(BasicBSONObject ob,String akey, String aop...
method opSQLExpr (line 357) | @SuppressWarnings("unused")
method parserWhere (line 392) | private void parserWhere(SQLExpr aexpr,BasicBSONObject o){
method orWhere (line 444) | private void orWhere(SQLExpr exprL,SQLExpr exprR ,BasicBSONObject ob){
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaStatement.java
class SequoiaStatement (line 14) | public class SequoiaStatement implements Statement
method SequoiaStatement (line 24) | public SequoiaStatement(SequoiaConnection conn, int type, int concurre...
method unwrap (line 42) | @Override
method isWrapperFor (line 48) | @Override
method executeQuery (line 54) | @Override
method executeUpdate (line 74) | @Override
method close (line 80) | @Override
method getMaxFieldSize (line 86) | @Override
method setMaxFieldSize (line 92) | @Override
method getMaxRows (line 98) | @Override
method setMaxRows (line 104) | @Override
method setEscapeProcessing (line 110) | @Override
method getQueryTimeout (line 116) | @Override
method setQueryTimeout (line 122) | @Override
method cancel (line 128) | @Override
method getWarnings (line 134) | @Override
method clearWarnings (line 140) | @Override
method setCursorName (line 146) | @Override
method execute (line 152) | @Override
method getResultSet (line 158) | @Override
method getUpdateCount (line 164) | @Override
method getMoreResults (line 170) | @Override
method setFetchDirection (line 176) | @Override
method getFetchDirection (line 182) | @Override
method setFetchSize (line 188) | @Override
method getFetchSize (line 194) | @Override
method getResultSetConcurrency (line 200) | @Override
method getResultSetType (line 206) | @Override
method addBatch (line 212) | @Override
method clearBatch (line 218) | @Override
method executeBatch (line 224) | @Override
method getConnection (line 230) | @Override
method getMoreResults (line 236) | @Override
method getGeneratedKeys (line 242) | @Override
method executeUpdate (line 248) | @Override
method executeUpdate (line 256) | @Override
method executeUpdate (line 264) | @Override
method execute (line 272) | @Override
method execute (line 279) | @Override
method execute (line 285) | @Override
method getResultSetHoldability (line 292) | @Override
method isClosed (line 298) | @Override
method setPoolable (line 304) | @Override
method isPoolable (line 310) | @Override
method closeOnCompletion (line 316) | @Override
method isCloseOnCompletion (line 322) | @Override
FILE: src/main/java/io/mycat/backend/jdbc/sequoiadb/StringUtils.java
class StringUtils (line 4) | public class StringUtils {
method startsWithIgnoreCase (line 7) | public static boolean startsWithIgnoreCase(String searchIn, int startAt,
method startsWithIgnoreCase (line 13) | public static boolean startsWithIgnoreCase(String searchIn, String sea...
FILE: src/main/java/io/mycat/backend/loadbalance/LeastActiveLoadBalance.java
class LeastActiveLoadBalance (line 31) | public class LeastActiveLoadBalance implements LoadBalance {
method doSelect (line 33) | @Override
FILE: src/main/java/io/mycat/backend/loadbalance/LoadBalance.java
type LoadBalance (line 30) | public interface LoadBalance {
method doSelect (line 32) | PhysicalDatasource doSelect(String hostName, ArrayList<PhysicalDatasou...
FILE: src/main/java/io/mycat/backend/loadbalance/RandomLoadBalance.java
class RandomLoadBalance (line 31) | public class RandomLoadBalance implements LoadBalance {
method doSelect (line 33) | @Override
FILE: src/main/java/io/mycat/backend/loadbalance/WeightedRoundRobinLoadBalance.java
class WeightedRoundRobinLoadBalance (line 34) | public class WeightedRoundRobinLoadBalance implements LoadBalance {
class WeightedRoundRobin (line 38) | protected static class WeightedRoundRobin {
method getWeight (line 43) | public int getWeight() {
method setWeight (line 47) | public void setWeight(int weight) {
method increaseCurrent (line 52) | public int increaseCurrent() {
method select (line 56) | public void select(int total) {
method doSelect (line 62) | @Override
FILE: src/main/java/io/mycat/backend/mysql/BindValue.java
class BindValue (line 29) | public class BindValue {
method reset (line 48) | public void reset() {
FILE: src/main/java/io/mycat/backend/mysql/BindValueUtil.java
class BindValueUtil (line 38) | public class BindValueUtil {
method read (line 40) | public static final void read(MySQLMessage mm, BindValue bv, String ch...
FILE: src/main/java/io/mycat/backend/mysql/BufferUtil.java
class BufferUtil (line 31) | public class BufferUtil {
method writeUB2 (line 33) | public static final void writeUB2(ByteBuffer buffer, int i) {
method writeUB3 (line 38) | public static final void writeUB3(ByteBuffer buffer, int i) {
method writeInt (line 44) | public static final void writeInt(ByteBuffer buffer, int i) {
method writeFloat (line 51) | public static final void writeFloat(ByteBuffer buffer, float f) {
method writeUB4 (line 55) | public static final void writeUB4(ByteBuffer buffer, long l) {
method writeLong (line 62) | public static final void writeLong(ByteBuffer buffer, long l) {
method writeDouble (line 73) | public static final void writeDouble(ByteBuffer buffer, double d) {
method writeLength (line 77) | public static final void writeLength(ByteBuffer buffer, long l) {
method writeWithNull (line 95) | public static final void writeWithNull(ByteBuffer buffer, byte[] src) {
method writeWithLength (line 100) | public static final void writeWithLength(ByteBuffer buffer, byte[] src) {
method writeWithLength (line 117) | public static final void writeWithLength(ByteBuffer buffer, byte[] src...
method getLength (line 125) | public static final int getLength(long length) {
method getLength (line 139) | public static final int getLength(byte[] src) {
FILE: src/main/java/io/mycat/backend/mysql/ByteUtil.java
class ByteUtil (line 29) | public class ByteUtil {
method readUB2 (line 31) | public static int readUB2(byte[] data, int offset) {
method readUB3 (line 37) | public static int readUB3(byte[] data, int offset) {
method readUB4 (line 44) | public static long readUB4(byte[] data, int offset) {
method readLong (line 52) | public static long readLong(byte[] data, int offset) {
method readLength (line 64) | public static long readLength(byte[] data, int offset) {
method lengthToZero (line 80) | public static int lengthToZero(byte[] data, int offset) {
method decodeLength (line 91) | public static int decodeLength(byte[] src) {
method decodeLength (line 104) | public static int decodeLength(long length) {
FILE: src/main/java/io/mycat/backend/mysql/CharsetUtil.java
class CharsetUtil (line 35) | public class CharsetUtil {
method getCharset (line 78) | public static final String getCharset(int index) {
method getIndex (line 82) | public static final int getIndex(String charset) {
FILE: src/main/java/io/mycat/backend/mysql/DataType.java
type DataType (line 8) | public enum DataType {
method DataType (line 12) | private DataType(String type){
method getType (line 15) | public String getType() {
FILE: src/main/java/io/mycat/backend/mysql/LoadDataUtil.java
class LoadDataUtil (line 18) | public class LoadDataUtil
method requestFileDataResponse (line 20) | public static void requestFileDataResponse(byte[] data, BackendConnect...
method writeToBackConnection (line 70) | public static byte writeToBackConnection(byte packID,InputStream input...
FILE: src/main/java/io/mycat/backend/mysql/MySQLMessage.java
class MySQLMessage (line 36) | public class MySQLMessage {
method MySQLMessage (line 44) | public MySQLMessage(byte[] data) {
method length (line 50) | public int length() {
method position (line 54) | public int position() {
method bytes (line 58) | public byte[] bytes() {
method move (line 62) | public void move(int i) {
method position (line 66) | public void position(int i) {
method hasRemaining (line 70) | public boolean hasRemaining() {
method read (line 74) | public byte read(int i) {
method read (line 78) | public byte read() {
method readUB2 (line 82) | public int readUB2() {
method readUB3 (line 89) | public int readUB3() {
method readUB4 (line 97) | public long readUB4() {
method readInt (line 106) | public int readInt() {
method readFloat (line 115) | public float readFloat() {
method readLong (line 119) | public long readLong() {
method readDouble (line 132) | public double readDouble() {
method readLength (line 136) | public long readLength() {
method readBytes (line 152) | public byte[] readBytes() {
method readBytes (line 164) | public byte[] readBytes(int length) {
method readBytesWithNull (line 171) | public byte[] readBytesWithNull() {
method getRowLength (line 200) | public int getRowLength(int fileldCount) {
method readBytesWithLength (line 218) | public byte[] readBytesWithLength() {
method readString (line 234) | public String readString() {
method readString (line 243) | public String readString(String charset) throws UnsupportedEncodingExc...
method readStringWithNull (line 253) | public String readStringWithNull() {
method readStringWithNull (line 280) | public String readStringWithNull(String charset) throws UnsupportedEnc...
method readStringWithLength (line 307) | public String readStringWithLength() {
method readStringWithLength (line 317) | public String readStringWithLength(String charset) throws UnsupportedE...
method readTime (line 327) | public java.sql.Time readTime() {
method readDate (line 337) | public java.util.Date readDate() {
method readBigDecimal (line 359) | public BigDecimal readBigDecimal() {
method toString (line 364) | public String toString() {
method getLocalCalendar (line 370) | private static final Calendar getLocalCalendar() {
FILE: src/main/java/io/mycat/backend/mysql/PacketUtil.java
class PacketUtil (line 37) | public class PacketUtil {
method getHeader (line 40) | public static final ResultSetHeaderPacket getHeader(int fieldCount) {
method encode (line 47) | public static byte[] encode(String src, String charset) {
method getField (line 58) | public static final FieldPacket getField(String name, String orgName, ...
method getField (line 67) | public static final FieldPacket getField(String name, int type) {
method getShutdown (line 75) | public static final ErrorPacket getShutdown() {
method getField (line 83) | public static final FieldPacket getField(BinaryPacket src, String fiel...
FILE: src/main/java/io/mycat/backend/mysql/PreparedStatement.java
class PreparedStatement (line 46) | public class PreparedStatement {
method PreparedStatement (line 64) | public PreparedStatement(long id, String statement, int parametersNumb...
method constructColumns (line 76) | public void constructColumns() {
method getId (line 105) | public long getId() {
method getStatement (line 109) | public String getStatement() {
method getColumnsNumber (line 113) | public int getColumnsNumber() {
method getParametersNumber (line 121) | public int getParametersNumber() {
method getParametersType (line 125) | public int[] getParametersType() {
method hasLongData (line 129) | public boolean hasLongData(long paramId) {
method getLongData (line 133) | public ByteArrayOutputStream getLongData(long paramId) {
method resetLongData (line 140) | public void resetLongData() {
method appendLongData (line 152) | public void appendLongData(long paramId, byte[] data) throws IOExcepti...
method getColumnNames (line 162) | public String[] getColumnNames() {
method getParams (line 166) | public FieldPacket[] getParams() {
method setParams (line 170) | public void setParams(FieldPacket[] params) {
method getFields (line 175) | public FieldPacket[] getFields() {
method setFields (line 179) | public void setFields(FieldPacket[] fields) {
FILE: src/main/java/io/mycat/backend/mysql/SecurityUtil.java
class SecurityUtil (line 34) | public class SecurityUtil {
method scramble411 (line 36) | public static final byte[] scramble411(byte[] pass, byte[] seed) throw...
method scramble323 (line 50) | public static final String scramble323(String pass, String seed) {
method hash (line 79) | private static long[] hash(String src) {
FILE: src/main/java/io/mycat/backend/mysql/StreamUtil.java
class StreamUtil (line 34) | public class StreamUtil {
method read (line 38) | public static final void read(InputStream in, byte[] b, int offset, in...
method read (line 49) | public static final byte read(InputStream in) throws IOException {
method readUB2 (line 57) | public static final int readUB2(InputStream in) throws IOException {
method readUB3 (line 65) | public static final int readUB3(InputStream in) throws IOException {
method readInt (line 74) | public static final int readInt(InputStream in) throws IOException {
method readFloat (line 84) | public static final float readFloat(InputStream in) throws IOException {
method readUB4 (line 88) | public static final long readUB4(InputStream in) throws IOException {
method readLong (line 98) | public static final long readLong(InputStream in) throws IOException {
method readDouble (line 112) | public static final double readDouble(InputStream in) throws IOExcepti...
method readWithLength (line 116) | public static final byte[] readWithLength(InputStream in) throws IOExc...
method write (line 126) | public static final void write(OutputStream out, byte b) throws IOExce...
method writeUB2 (line 130) | public static final void writeUB2(OutputStream out, int i) throws IOEx...
method writeUB3 (line 137) | public static final void writeUB3(OutputStream out, int i) throws IOEx...
method writeInt (line 145) | public static final void writeInt(OutputStream out, int i) throws IOEx...
method writeFloat (line 154) | public static final void writeFloat(OutputStream out, float f) throws ...
method writeUB4 (line 158) | public static final void writeUB4(OutputStream out, long l) throws IOE...
method writeLong (line 167) | public static final void writeLong(OutputStream out, long l) throws IO...
method writeDouble (line 180) | public static final void writeDouble(OutputStream out, double d) throw...
method readLength (line 184) | public static final long readLength(InputStream in) throws IOException {
method writeLength (line 203) | public static final void writeLength(OutputStream out, long length) th...
method writeWithNull (line 218) | public static final void writeWithNull(OutputStream out, byte[] src) t...
method writeWithLength (line 223) | public static final void writeWithLength(OutputStream out, byte[] src)...
FILE: src/main/java/io/mycat/backend/mysql/listener/DefaultSqlExecuteStageListener.java
class DefaultSqlExecuteStageListener (line 13) | public class DefaultSqlExecuteStageListener implements SqlExecuteStageLi...
method DefaultSqlExecuteStageListener (line 18) | public DefaultSqlExecuteStageListener(ServerConnection source) {
method fireEvent (line 22) | @Override
method onReadCompleted (line 47) | private void onReadCompleted() {
method onParseCompleted (line 51) | private void onParseCompleted() {
method onRouteCompleted (line 55) | private void onRouteCompleted() {
method onExecuteCompleted (line 59) | private void onExecuteCompleted() {
method onMergeCompleted (line 63) | private void onMergeCompleted() {
method onEndCompleted (line 67) | private void onEndCompleted() {
FILE: src/main/java/io/mycat/backend/mysql/listener/SqlExecuteStage.java
type SqlExecuteStage (line 3) | public enum SqlExecuteStage {
FILE: src/main/java/io/mycat/backend/mysql/listener/SqlExecuteStageListener.java
type SqlExecuteStageListener (line 8) | public interface SqlExecuteStageListener {
method fireEvent (line 9) | void fireEvent(SqlExecuteStage stage);
FILE: src/main/java/io/mycat/backend/mysql/nio/MySQLConnection.java
class MySQLConnection (line 57) | public class MySQLConnection extends BackendAIOConnection {
method initClientFlags (line 68) | private static long initClientFlags() {
method MySQLConnection (line 156) | public MySQLConnection(NetworkChannel channel, boolean fromSlaveDB) {
method getXaStatus (line 168) | public int getXaStatus() {
method setXaStatus (line 172) | public void setXaStatus(int xaStatus) {
method onConnectFailed (line 176) | public void onConnectFailed(Throwable t) {
method getSchema (line 185) | public String getSchema() {
method setSchema (line 189) | public void setSchema(String newSchema) {
method getPool (line 200) | public MySQLDataSource getPool() {
method setPool (line 204) | public void setPool(MySQLDataSource pool) {
method getUser (line 208) | public String getUser() {
method setUser (line 212) | public void setUser(String user) {
method setPassword (line 216) | public void setPassword(String password) {
method getHandshake (line 220) | public HandshakePacket getHandshake() {
method setHandshake (line 224) | public void setHandshake(HandshakePacket handshake) {
method getThreadId (line 228) | public long getThreadId() {
method setThreadId (line 232) | public void setThreadId(long threadId) {
method isAuthenticated (line 236) | public boolean isAuthenticated() {
method setAuthenticated (line 240) | public void setAuthenticated(boolean isAuthenticated) {
method getPassword (line 244) | public String getPassword() {
method authenticate (line 248) | public void authenticate() {
method isAutocommit (line 264) | public boolean isAutocommit() {
method isTxReadonly (line 268) | public boolean isTxReadonly() {
method getSqlSelectLimit (line 272) | public int getSqlSelectLimit() {
method getAttachment (line 276) | public Object getAttachment() {
method setAttachment (line 280) | public void setAttachment(Object attachment) {
method isClosedOrQuit (line 284) | public boolean isClosedOrQuit() {
method sendComFieldListCmd (line 295) | private void sendComFieldListCmd(String query) {
method sendQueryCmd (line 312) | protected void sendQueryCmd(String query) {
method getCharsetCommand (line 325) | private static void getCharsetCommand(StringBuilder sb, int clientChar...
method getTxIsolationCommand (line 330) | private static void getTxIsolationCommand(StringBuilder sb, int txIsol...
method getAutocommitCommand (line 349) | private void getAutocommitCommand(StringBuilder sb, boolean autoCommit) {
method getTxReadonly (line 356) | private void getTxReadonly(StringBuilder sb, boolean txReadonly) {
method getSqlSelectLimit (line 363) | private void getSqlSelectLimit(StringBuilder sb, int sqlSelectLimit) {
class StatusSync (line 371) | private static class StatusSync {
method StatusSync (line 381) | public StatusSync(boolean xaStarted, String schema,
method synAndExecuted (line 395) | public boolean synAndExecuted(MySQLConnection conn) {
method updateConnectionInfo (line 407) | private void updateConnectionInfo(MySQLConnection conn)
method syncAndExcute (line 437) | public boolean syncAndExcute() {
method execute (line 451) | public void execute(RouteResultsetNode rrn, ServerConnection sc,
method synAndDoExecute (line 464) | private void synAndDoExecute(String xaTxID, RouteResultsetNode rrn,
method getChangeSchemaCommand (line 576) | private static CommandPacket getChangeSchemaCommand(String schema) {
method query (line 590) | public void query(String query) throws UnsupportedEncodingException {
method query (line 603) | @Override
method getLastTime (line 611) | public long getLastTime() {
method setLastTime (line 615) | public void setLastTime(long lastTime) {
method quit (line 619) | public void quit() {
method close (line 630) | @Override
method closeWithoutRsp (line 651) | @Override
method commit (line 658) | public void commit() {
method batchCmdFinished (line 664) | public boolean batchCmdFinished() {
method execCmd (line 669) | public void execCmd(String cmd) {
method execBatchCmd (line 673) | public void execBatchCmd(String[] batchCmds) {
method rollback (line 683) | public void rollback() {
method release (line 687) | public void release() {
method setResponseHandler (line 707) | public boolean setResponseHandler(ResponseHandler queryHandler) {
method writeQueueAvailable (line 722) | public void writeQueueAvailable() {
method recordSql (line 731) | public void recordSql(String host, String schema, String stmt) {
method passwd (line 751) | private static byte[] passwd(String pass, HandshakePacket hs)
method isFromSlaveDB (line 765) | @Override
method isBorrowed (line 770) | @Override
method setBorrowed (line 775) | @Override
method toString (line 781) | @Override
method isModifiedSQLExecuted (line 795) | @Override
method getTxIsolation (line 800) | @Override
method disableRead (line 805) | @Override
method enableRead (line 810) | @Override
method isNeedSyncSchema (line 816) | public boolean isNeedSyncSchema() {
FILE: src/main/java/io/mycat/backend/mysql/nio/MySQLConnectionAuthenticator.java
class MySQLConnectionAuthenticator (line 46) | public class MySQLConnectionAuthenticator implements NIOHandler {
method MySQLConnectionAuthenticator (line 52) | public MySQLConnectionAuthenticator(MySQLConnection source,
method connectionError (line 58) | public void connectionError(MySQLConnection source, Throwable e) {
method handle (line 62) | @Override
method processHandShakePacket (line 120) | private void processHandShakePacket(byte[] data) {
method auth323 (line 137) | private void auth323(byte packetId) {
FILE: src/main/java/io/mycat/backend/mysql/nio/MySQLConnectionFactory.java
class MySQLConnectionFactory (line 41) | public class MySQLConnectionFactory extends BackendConnectionFactory {
method make (line 42) | @SuppressWarnings({ "unchecked", "rawtypes" })
FILE: src/main/java/io/mycat/backend/mysql/nio/MySQLConnectionHandler.java
class MySQLConnectionHandler (line 49) | public class MySQLConnectionHandler extends BackendAsyncHandler {
method MySQLConnectionHandler (line 67) | public MySQLConnectionHandler(MySQLConnection source) {
method connectionError (line 72) | public void connectionError(Throwable e) {
method getSource (line 79) | public MySQLConnection getSource() {
method handle (line 83) | @Override
method offerDataError (line 88) | @Override
method handleData (line 94) | @Override
method setResponseHandler (line 159) | public void setResponseHandler(ResponseHandler responseHandler) {
method handleLogNodeInfo (line 172) | private void handleLogNodeInfo(String pkgName) {
method handlePrepareOkPacket (line 187) | private void handlePrepareOkPacket(byte[] data) {
method handleOkPacket (line 203) | private void handleOkPacket(byte[] data) {
method handleErrorPacket (line 216) | private void handleErrorPacket(byte[] data) {
method handleRequestPacket (line 230) | private void handleRequestPacket(byte[] data) {
method handleFieldEofPacket (line 244) | private void handleFieldEofPacket(byte[] data) {
method handleRowPacket (line 258) | private void handleRowPacket(byte[] data) {
method closeNoHandler (line 269) | private void closeNoHandler() {
method handleRowEofPacket (line 280) | private void handleRowEofPacket(byte[] data) {
FILE: src/main/java/io/mycat/backend/mysql/nio/MySQLDataSource.java
class MySQLDataSource (line 54) | public class MySQLDataSource extends PhysicalDatasource {
method MySQLDataSource (line 58) | public MySQLDataSource(DBHostConfig config, DataHostConfig hostConfig,
method createNewConnection (line 65) | @Override
method getClientFlags (line 70) | private long getClientFlags() {
method passwd (line 95) | private byte[] passwd(String pass, HandshakePacket hs) throws NoSuchAl...
method testConnection (line 108) | @Override
method createHeartBeat (line 205) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/CommitNodeHandler.java
class CommitNodeHandler (line 42) | public class CommitNodeHandler extends MultiNodeHandler implements Respo...
method CommitNodeHandler (line 47) | public CommitNodeHandler(NonBlockingSession session) {
method CommitNodeHandler (line 52) | public CommitNodeHandler(NonBlockingSession session, byte[] responseDa...
method commit (line 59) | public void commit() {
method commit (line 73) | public void commit(BackendConnection conn) {
method connectionAcquired (line 101) | @Override
method okResponse (line 107) | @Override
method errorResponse (line 156) | @Override
method rowEofResponse (line 169) | @Override
method fieldEofResponse (line 176) | @Override
method rowResponse (line 184) | @Override
method writeQueueAvailable (line 191) | @Override
method connectionError (line 196) | @Override
method connectionClose (line 204) | @Override
method cleanAndFeedback (line 212) | private void cleanAndFeedback(byte[] responseData) {
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/ConnectionHeartBeatHandler.java
class ConnectionHeartBeatHandler (line 45) | public class ConnectionHeartBeatHandler implements ResponseHandler {
method doHeartBeat (line 51) | public void doHeartBeat(BackendConnection conn, String sql) {
method abandTimeOuttedConns (line 73) | public void abandTimeOuttedConns() {
method connectionAcquired (line 102) | @Override
method connectionError (line 107) | @Override
method errorResponse (line 113) | @Override
method okResponse (line 124) | @Override
method rowResponse (line 134) | @Override
method rowEofResponse (line 138) | @Override
method executeException (line 144) | private void executeException(BackendConnection c, Throwable e) {
method removeFinished (line 151) | private void removeFinished(BackendConnection con) {
method writeQueueAvailable (line 156) | @Override
method connectionClose (line 161) | @Override
method fieldEofResponse (line 167) | @Override
class HeartBeatCon (line 177) | class HeartBeatCon {
method HeartBeatCon (line 181) | public HeartBeatCon(BackendConnection conn) {
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/DelegateResponseHandler.java
class DelegateResponseHandler (line 33) | public class DelegateResponseHandler implements ResponseHandler {
method DelegateResponseHandler (line 36) | public DelegateResponseHandler(ResponseHandler target) {
method connectionAcquired (line 43) | @Override
method connectionError (line 48) | @Override
method okResponse (line 53) | @Override
method errorResponse (line 58) | @Override
method fieldEofResponse (line 63) | @Override
method rowResponse (line 68) | @Override
method rowEofResponse (line 73) | @Override
method writeQueueAvailable (line 78) | @Override
method connectionClose (line 84) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/FetchStoreNodeOfChildTableHandler.java
class FetchStoreNodeOfChildTableHandler (line 54) | public class FetchStoreNodeOfChildTableHandler implements ResponseHandler {
method execute (line 63) | public String execute(String schema, String sql, List<String> dataNode...
method execute (line 128) | public String execute(String schema, String sql, ArrayList<String> dat...
method _execute (line 187) | private void _execute(BackendConnection conn, RouteResultsetNode node,...
method connectionAcquired (line 196) | @Override
method connectionError (line 206) | @Override
method errorResponse (line 213) | @Override
method okResponse (line 225) | @Override
method rowResponse (line 236) | @Override
method getColumn (line 252) | private String getColumn(byte[] row) {
method rowEofResponse (line 259) | @Override
method executeException (line 266) | private void executeException(BackendConnection c, Throwable e) {
method writeQueueAvailable (line 273) | @Override
method connectionClose (line 278) | @Override
method fieldEofResponse (line 284) | @Override
method releaseConnection (line 289) | private void releaseConnection(BackendConnection conn) {
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/GetConnectionHandler.java
class GetConnectionHandler (line 40) | public class GetConnectionHandler implements ResponseHandler {
method GetConnectionHandler (line 47) | public GetConnectionHandler(
method getStatusInfo (line 55) | public String getStatusInfo()
method finished (line 59) | public boolean finished() {
method connectionAcquired (line 63) | @Override
method connectionError (line 71) | @Override
method errorResponse (line 78) | @Override
method okResponse (line 84) | @Override
method fieldEofResponse (line 90) | @Override
method rowResponse (line 96) | @Override
method rowEofResponse (line 101) | @Override
method writeQueueAvailable (line 106) | @Override
method connectionClose (line 111) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/JDBCFetchStoreNodeOfChildTableHandler.java
class JDBCFetchStoreNodeOfChildTableHandler (line 18) | public class JDBCFetchStoreNodeOfChildTableHandler {
method execute (line 23) | public String execute(String schema, String sql, ArrayList<String> dat...
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/KillConnectionHandler.java
class KillConnectionHandler (line 41) | public class KillConnectionHandler implements ResponseHandler {
method KillConnectionHandler (line 48) | public KillConnectionHandler(BackendConnection killee,
method connectionAcquired (line 54) | @Override
method connectionError (line 66) | @Override
method okResponse (line 71) | @Override
method rowEofResponse (line 82) | @Override
method errorResponse (line 91) | @Override
method fieldEofResponse (line 107) | @Override
method rowResponse (line 112) | @Override
method writeQueueAvailable (line 116) | @Override
method connectionClose (line 121) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/LoadDataResponseHandler.java
type LoadDataResponseHandler (line 8) | public interface LoadDataResponseHandler
method requestDataResponse (line 13) | void requestDataResponse(byte[] row, BackendConnection conn);
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/LockTablesHandler.java
class LockTablesHandler (line 24) | public class LockTablesHandler extends MultiNodeHandler {
method LockTablesHandler (line 32) | public LockTablesHandler(NonBlockingSession session, RouteResultset rr...
method execute (line 39) | public void execute() throws Exception {
method _execute (line 54) | private void _execute(BackendConnection conn, RouteResultsetNode node) {
method connectionAcquired (line 66) | @Override
method okResponse (line 73) | @Override
method byte2Str (line 100) | protected String byte2Str(byte[] data) {
method fieldEofResponse (line 108) | @Override
method rowResponse (line 115) | @Override
method rowEofResponse (line 122) | @Override
method writeQueueAvailable (line 129) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/MiddlerQueryResultHandler.java
class MiddlerQueryResultHandler (line 16) | public class MiddlerQueryResultHandler<T> implements MiddlerResultHandle...
method MiddlerQueryResultHandler (line 23) | public MiddlerQueryResultHandler(SecondHandler secondHandler) {
method MiddlerQueryResultHandler (line 29) | private MiddlerQueryResultHandler(){
method getResult (line 33) | @Override
method add (line 37) | @Override
method getDataType (line 42) | @Override
method secondEexcute (line 47) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/MiddlerResultHandler.java
type MiddlerResultHandler (line 13) | public interface MiddlerResultHandler<T> {
method getResult (line 16) | public List<SQLCharExpr> getResult();
method add (line 18) | public void add(T t );
method getDataType (line 20) | public String getDataType();
method secondEexcute (line 22) | public void secondEexcute();
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeCoordinator.java
class MultiNodeCoordinator (line 25) | public class MultiNodeCoordinator implements ResponseHandler {
method MultiNodeCoordinator (line 41) | public MultiNodeCoordinator(NonBlockingSession session) {
method executeBatchNodeCmd (line 46) | public void executeBatchNodeCmd(SQLCtrlCommand cmdHandler) {
method writeRecoverLog (line 121) | private void writeRecoverLog(int initCount) {
method finished (line 159) | private boolean finished() {
method connectionError (line 164) | @Override
method connectionAcquired (line 168) | @Override
method errorResponse (line 173) | @Override
method okResponse (line 233) | @Override
method fieldEofResponse (line 353) | @Override
method rowResponse (line 359) | @Override
method rowEofResponse (line 364) | @Override
method writeQueueAvailable (line 368) | @Override
method connectionClose (line 373) | @Override
method setFail (line 430) | private void setFail(String err){
method tryErrorFinished (line 434) | protected void tryErrorFinished(boolean allEnd) {
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeHandler.java
class MultiNodeHandler (line 40) | abstract class MultiNodeHandler implements ResponseHandler, Terminatable {
method MultiNodeHandler (line 50) | public MultiNodeHandler(NonBlockingSession session) {
method setFail (line 57) | public void setFail(String errMsg) {
method isFail (line 62) | public boolean isFail() {
method terminate (line 70) | @Override
method canClose (line 88) | protected boolean canClose(BackendConnection conn, boolean tryErrorFin...
method decrementCountToZero (line 101) | protected void decrementCountToZero() {
method connectionError (line 116) | public void connectionError(Throwable e, BackendConnection conn) {
method errorResponse (line 134) | public void errorResponse(byte[] data, BackendConnection conn) {
method clearIfSessionClosed (line 147) | public boolean clearIfSessionClosed(NonBlockingSession session) {
method decrementCountBy (line 162) | protected boolean decrementCountBy(int finished) {
method reset (line 182) | protected void reset(int initCount) {
method createErrPkg (line 189) | protected ErrorPacket createErrPkg(String errmgs) {
method tryErrorFinished (line 202) | protected void tryErrorFinished(boolean allEnd) {
method connectionClose (line 226) | public void connectionClose(BackendConnection conn, String reason) {
method clearResources (line 248) | public void clearResources() {
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeQueryHandler.java
class MultiNodeQueryHandler (line 77) | public class MultiNodeQueryHandler extends MultiNodeHandler implements L...
method MultiNodeQueryHandler (line 125) | public MultiNodeQueryHandler(int sqlType, RouteResultset rrs,
method reset (line 181) | protected void reset(int initCount) {
method incExecCount (line 193) | private synchronized int incExecCount() {
method getSession (line 197) | public NonBlockingSession getSession() {
method execute (line 201) | public void execute() throws Exception {
method _execute (line 260) | private void _execute(BackendConnection conn, RouteResultsetNode node) {
method connectionAcquired (line 279) | @Override
method decrementOkCountBy (line 293) | private boolean decrementOkCountBy(int finished) {
method errorResponse (line 302) | @Override
method connectionClose (line 328) | @Override
method connectionError (line 339) | @Override
method executeError (line 357) | private void executeError(BackendConnection conn, ErrorPacket errPacke...
method okResponse (line 376) | @Override
method rowEofResponse (line 497) | @Override
method outputMergeResult (line 609) | public void outputMergeResult(final ServerConnection source, final byt...
method outputMergeResult (line 704) | public void outputMergeResult(final ServerConnection source,
method fieldEofResponse (line 781) | @Override
method handleDataProcessException (line 941) | public void handleDataProcessException(Exception e) {
method rowResponse (line 959) | @Override
method clearResources (line 1040) | @Override
method writeQueueAvailable (line 1052) | @Override
method requestDataResponse (line 1056) | @Override
method isPrepared (line 1061) | public boolean isPrepared() {
method setPrepared (line 1065) | public void setPrepared(boolean prepared) {
method processFinishWork (line 1079) | protected void processFinishWork(byte[] data, boolean isCommit, Backen...
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/NewConnectionRespHandler.java
class NewConnectionRespHandler (line 32) | public class NewConnectionRespHandler implements ResponseHandler{
method connectionError (line 35) | @Override
method connectionAcquired (line 41) | @Override
method errorResponse (line 50) | @Override
method okResponse (line 56) | @Override
method fieldEofResponse (line 62) | @Override
method rowResponse (line 69) | @Override
method rowEofResponse (line 75) | @Override
method writeQueueAvailable (line 81) | @Override
method connectionClose (line 87) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/PrepareRequestHandler.java
class PrepareRequestHandler (line 43) | public class PrepareRequestHandler implements ResponseHandler {
method PrepareRequestHandler (line 58) | public PrepareRequestHandler(ServerConnection sc, String sql, PrepareR...
method execute (line 66) | public void execute() {
method doFinished (line 102) | private void doFinished(boolean failed, String errorMsg) {
method closePrepareStmt (line 110) | private void closePrepareStmt(BackendConnection conn) {
method parseTables (line 127) | private List<String> parseTables(String sql) {
method sendPrepareRequestCommand (line 152) | private void sendPrepareRequestCommand(BackendConnection conn) {
method isLastPacket (line 163) | public boolean isLastPacket() {
method connectionError (line 167) | @Override
method connectionAcquired (line 174) | @Override
method errorResponse (line 195) | @Override
method okResponse (line 218) | @Override
method fieldEofResponse (line 264) | @Override
method rowResponse (line 270) | @Override
method rowEofResponse (line 275) | @Override
method writeQueueAvailable (line 282) | @Override
method connectionClose (line 288) | @Override
type PrepareRequestCallback (line 299) | public interface PrepareRequestCallback {
method callback (line 300) | void callback(boolean success, String msg, FieldPacket[] params, Fie...
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/ResponseHandler.java
type ResponseHandler (line 34) | public interface ResponseHandler {
method connectionError (line 42) | public void connectionError(Throwable e, BackendConnection conn);
method connectionAcquired (line 47) | void connectionAcquired(BackendConnection conn);
method errorResponse (line 52) | void errorResponse(byte[] err, BackendConnection conn);
method okResponse (line 57) | void okResponse(byte[] ok, BackendConnection conn);
method fieldEofResponse (line 62) | void fieldEofResponse(byte[] header, List<byte[]> fields, byte[] eof,
method rowResponse (line 68) | void rowResponse(byte[] row, BackendConnection conn);
method rowEofResponse (line 73) | void rowEofResponse(byte[] eof, BackendConnection conn);
method writeQueueAvailable (line 79) | void writeQueueAvailable();
method connectionClose (line 84) | void connectionClose(BackendConnection conn, String reason);
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/RollbackNodeHandler.java
class RollbackNodeHandler (line 43) | public class RollbackNodeHandler extends MultiNodeHandler {
method RollbackNodeHandler (line 47) | public RollbackNodeHandler(NonBlockingSession session) {
method RollbackNodeHandler (line 51) | public RollbackNodeHandler(NonBlockingSession session, byte[] response...
method rollback (line 56) | public void rollback() {
method okResponse (line 186) | @Override
method rowEofResponse (line 221) | @Override
method connectionAcquired (line 228) | @Override
method fieldEofResponse (line 233) | @Override
method rowResponse (line 241) | @Override
method writeQueueAvailable (line 248) | @Override
method connectionClose (line 253) | public void connectionClose(BackendConnection conn, String reason) {
method tryErrorFinished (line 269) | protected void tryErrorFinished(boolean allEnd) {
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/RollbackReleaseHandler.java
class RollbackReleaseHandler (line 35) | public class RollbackReleaseHandler implements ResponseHandler {
method RollbackReleaseHandler (line 39) | public RollbackReleaseHandler() {
method connectionAcquired (line 42) | @Override
method connectionError (line 47) | @Override
method errorResponse (line 52) | @Override
method okResponse (line 57) | @Override
method fieldEofResponse (line 63) | @Override
method rowResponse (line 68) | @Override
method rowEofResponse (line 72) | @Override
method writeQueueAvailable (line 77) | @Override
method connectionClose (line 82) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/SecondHandler.java
type SecondHandler (line 10) | public interface SecondHandler {
method doExecute (line 12) | public void doExecute(List params);
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/SecondQueryHandler.java
class SecondQueryHandler (line 5) | public class SecondQueryHandler implements SecondHandler {
method SecondQueryHandler (line 8) | public SecondQueryHandler(MiddlerResultHandler middlerResultHandler){
method doExecute (line 12) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/SimpleLogHandler.java
class SimpleLogHandler (line 33) | public class SimpleLogHandler implements ResponseHandler{
method connectionError (line 36) | @Override
method connectionAcquired (line 42) | @Override
method errorResponse (line 48) | @Override
method okResponse (line 53) | @Override
method fieldEofResponse (line 59) | @Override
method rowResponse (line 71) | @Override
method rowEofResponse (line 77) | @Override
method writeQueueAvailable (line 84) | @Override
method connectionClose (line 90) | @Override
method bytesToHex (line 96) | public static String bytesToHex(byte[] bytes) {
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/SingleNodeHandler.java
class SingleNodeHandler (line 65) | public class SingleNodeHandler implements ResponseHandler, Terminatable,...
method SingleNodeHandler (line 94) | public SingleNodeHandler(RouteResultset rrs, NonBlockingSession sessio...
method getSession (line 127) | public NonBlockingSession getSession() {
method getRouteResultsetNode (line 130) | public RouteResultsetNode getRouteResultsetNode() {
method getRouteResultset (line 133) | public RouteResultset getRouteResultset(){
method getBuffer (line 136) | public ByteBuffer getBuffer() {
method terminate (line 139) | @Override
method endRunning (line 154) | protected void endRunning() {
method recycleResources (line 167) | private void recycleResources() {
method execute (line 176) | public void execute() throws Exception {
method connectionAcquired (line 217) | @Override
method _execute (line 224) | private void _execute(BackendConnection conn) {
method executeException (line 240) | private void executeException(BackendConnection c, Exception e) {
method connectionError (line 250) | @Override
method errorResponse (line 270) | @Override
method backConnectionErr (line 278) | private void backConnectionErr(ErrorPacket errPkg, BackendConnection c...
method okResponse (line 327) | @Override
method rowEofResponse (line 386) | @Override
method allocBuffer (line 429) | protected ByteBuffer allocBuffer() {
method fieldEofResponse (line 441) | @Override
method rowResponse (line 502) | @Override
method writeQueueAvailable (line 552) | @Override
method connectionClose (line 557) | @Override
method clearResources (line 569) | public void clearResources() {
method requestDataResponse (line 573) | @Override
method isPrepared (line 578) | public boolean isPrepared() {
method setPrepared (line 582) | public void setPrepared(boolean prepared) {
method toString (line 586) | @Override
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/Terminatable.java
type Terminatable (line 29) | public interface Terminatable {
method terminate (line 30) | void terminate(Runnable runnable);
FILE: src/main/java/io/mycat/backend/mysql/nio/handler/UnLockTablesHandler.java
class UnLockTablesHandler (line 21) | public class UnLockTablesHandler extends MultiNodeHandler implements Res...
method UnLockTablesHandler (line 29) | public UnLockTablesHandler(NonBlockingSession session, boolean autocom...
method execute (line 36) | public void execute() {
method connectionError (line 65) | @Override
method connectionAcquired (line 70) | @Override
method errorResponse (line 75) | @Override
method okResponse (line 80) | @Override
method fieldEofResponse (line 105) | @Override
method rowResponse (line 112) | @Override
method rowEofResponse (line 119) | @Override
method writeQueueAvailable (line 126) | @Override
method connectionClose (line 132) | @Override
FILE: src/main/java/io/mycat/backend/mysql/xa/CoordinatorLogEntry.java
class CoordinatorLogEntry (line 10) | public class CoordinatorLogEntry implements Serializable {
method CoordinatorLogEntry (line 21) | public CoordinatorLogEntry(String coordinatorId,
method CoordinatorLogEntry (line 26) | public CoordinatorLogEntry(String coordinatorId, boolean wasCommitted,
method CoordinatorLogEntry (line 34) | public CoordinatorLogEntry(String coordinatorId, boolean wasCommitted,
FILE: src/main/java/io/mycat/backend/mysql/xa/Deserializer.java
class Deserializer (line 13) | public class Deserializer {
method tokenize (line 23) | List<String> tokenize(String content) {
method extractArrayPart (line 35) | String extractArrayPart(String content) {
method fromJSON (line 46) | public CoordinatorLogEntry fromJSON(String coordinatorLogEntryStr) thr...
method validateJSONContent (line 70) | private void validateJSONContent(String coordinatorLogEntryStr)
method extractHeader (line 80) | private Map<String, String> extractHeader(String coordinatorLogEntrySt...
method recreateParticipantLogEntry (line 90) | ParticipantLogEntry recreateParticipantLogEntry(String coordinatorId,
FILE: src/main/java/io/mycat/backend/mysql/xa/LogFileLock.java
class LogFileLock (line 16) | public class LogFileLock {
method LogFileLock (line 28) | public LogFileLock(String dir, String fileName) {
method acquireLock (line 36) | public void acquireLock() throws LogException {
method releaseLock (line 59) | public void releaseLock() {
FILE: src/main/java/io/mycat/backend/mysql/xa/ParticipantLogEntry.java
class ParticipantLogEntry (line 8) | public class ParticipantLogEntry implements Serializable {
method ParticipantLogEntry (line 40) | public ParticipantLogEntry(String coordinatorId, String uri,
method equals (line 51) | @Override
method hashCode (line 61) | @Override
method toString (line 68) | @Override
FILE: src/main/java/io/mycat/backend/mysql/xa/Serializer.java
class Serializer (line 6) | public class Serializer {
method toJSON (line 15) | public String toJSON(CoordinatorLogEntry coordinatorLogEntry) {
FILE: src/main/java/io/mycat/backend/mysql/xa/TxState.java
class TxState (line 6) | public class TxState {
FILE: src/main/java/io/mycat/backend/mysql/xa/VersionedFile.java
class VersionedFile (line 15) | public class VersionedFile {
method VersionedFile (line 39) | public VersionedFile ( String baseDir , String baseName , String suffix )
method resetVersion (line 51) | private void resetVersion()
method extractLastValidVersionNumberFromFileNames (line 56) | private long extractLastValidVersionNumberFromFileNames() {
method extractVersion (line 77) | private long extractVersion ( String name )
method getBackupVersionFileName (line 94) | private String getBackupVersionFileName()
method getCurrentVersionFileName (line 99) | public String getCurrentVersionFileName()
method getBaseUrl (line 104) | public String getBaseUrl()
method getBaseDir (line 109) | public String getBaseDir()
method getBaseName (line 114) | public String getBaseName()
method getSuffix (line 119) | public String getSuffix()
method openLastValidVersionForReading (line 134) | public FileInputStream openLastValidVersionForReading()
method openNewVersionForWriting (line 153) | public FileOutputStream openNewVersionForWriting() throws IOException
method openNewVersionForNioWriting (line 173) | public FileChannel openNewVersionForNioWriting() throws FileNotFoundEx...
method discardBackupVersion (line 193) | public void discardBackupVersion() throws IllegalStateException, IOExc...
method close (line 208) | public void close() throws IOException
method getSize (line 230) | public long getSize()
FILE: src/main/java/io/mycat/backend/mysql/xa/XACommitCallback.java
class XACommitCallback (line 15) | public class XACommitCallback implements SQLQueryResultListener<SQLQuery...
method XACommitCallback (line 22) | public XACommitCallback(String xaId, ParticipantLogEntry participantLo...
method onResult (line 27) | public void onResult(SQLQueryResult<Map<String, String>> result) {
FILE: src/main/java/io/mycat/backend/mysql/xa/XARollbackCallback.java
class XARollbackCallback (line 14) | public class XARollbackCallback implements SQLQueryResultListener<SQLQue...
method XARollbackCallback (line 21) | public XARollbackCallback(String xaId, ParticipantLogEntry participant...
method onResult (line 26) | public void onResult(SQLQueryResult<Map<String, String>> result) {
FILE: src/main/java/io/mycat/backend/mysql/xa/recovery/DeserialisationException.java
class DeserialisationException (line 6) | public class DeserialisationException extends Exception{
method DeserialisationException (line 9) | public DeserialisationException(String content) {
FILE: src/main/java/io/mycat/backend/mysql/xa/recovery/LogException.java
class LogException (line 6) | public class LogException extends Exception{
method LogException (line 9) | public LogException() {
method LogException (line 13) | public LogException(String message) {
method LogException (line 17) | public LogException(Throwable cause) {
FILE: src/main/java/io/mycat/backend/mysql/xa/recovery/LogReadException.java
class LogReadException (line 6) | public class LogReadException extends LogException{
method LogReadException (line 10) | public LogReadException() {
method LogReadException (line 14) | public LogReadException(Throwable cause) {
method LogReadException (line 18) | public LogReadException(String message) {
FILE: src/main/java/io/mycat/backend/mysql/xa/recovery/LogWriteException.java
class LogWriteException (line 6) | public class LogWriteException extends LogException{
method LogWriteException (line 10) | public LogWriteException() {
method LogWriteException (line 13) | public LogWriteException(Throwable cause) {
FILE: src/main/java/io/mycat/backend/mysql/xa/recovery/Repository.java
type Repository (line 10) | public interface Repository {
method init (line 12) | void init() ;
method put (line 14) | void put(String id, CoordinatorLogEntry coordinatorLogEntry);
method get (line 16) | CoordinatorLogEntry get(String coordinatorId);
method findAllCommittingCoordinatorLogEntries (line 18) | Collection<CoordinatorLogEntry> findAllCommittingCoordinatorLogEntries...
method getAllCoordinatorLogEntries (line 20) | Collection<CoordinatorLogEntry> getAllCoordinatorLogEntries() ;
method writeCheckpoint (line 22) | void writeCheckpoint(String id, Collection<CoordinatorLogEntry> checkp...
method close (line 24) | void close();
FILE: src/main/java/io/mycat/backend/mysql/xa/recovery/impl/FileSystemRepository.java
class FileSystemRepository (line 37) | public class FileSystemRepository implements Repository{
method FileSystemRepository (line 44) | public FileSystemRepository() {
method init (line 48) | @Override
method put (line 72) | @Override
method initChannelIfNecessary (line 83) | private synchronized void initChannelIfNecessary()
method write (line 90) | private int write(CoordinatorLogEntry coordinatorLogEntry,
method writeToFile (line 102) | private synchronized void writeToFile(ByteBuffer buff, boolean force)
method get (line 108) | @Override
method findAllCommittingCoordinatorLogEntries (line 113) | @Override
method getAllCoordinatorLogEntries (line 118) | @Override
method readFromInputStream (line 134) | public static Collection<CoordinatorLogEntry> readFromInputStream(
method readContent (line 150) | static Map<String, CoordinatorLogEntry> readContent(BufferedReader br)
method closeSilently (line 184) | private static void closeSilently(BufferedReader fis) {
method deserialize (line 195) | private static CoordinatorLogEntry deserialize(String line)
method close (line 200) | @Override
method closeOutput (line 210) | protected void closeOutput() throws IllegalStateException {
method writeCheckpoint (line 220) | @Override
method checkForUpdate (line 263) | private boolean checkForUpdate(String id, CoordinatorLogEntry coordina...
method createBaseDir (line 279) | public void createBaseDir(String baseDir){
FILE: src/main/java/io/mycat/backend/mysql/xa/recovery/impl/InMemoryRepository.java
class InMemoryRepository (line 18) | public class InMemoryRepository implements Repository {
method init (line 25) | @Override
method put (line 30) | @Override
method clear (line 40) | private void clear(String id) {
method get (line 58) | @Override
method findAllCommittingCoordinatorLogEntries (line 63) | @Override
method close (line 76) | @Override
method getAllCoordinatorLogEntries (line 82) | @Override
method writeCheckpoint (line 87) | @Override
method isClosed (line 99) | public boolean isClosed() {
FILE: src/main/java/io/mycat/backend/postgresql/PostgreSQLBackendConnection.java
class PostgreSQLBackendConnection (line 33) | public class PostgreSQLBackendConnection extends BackendAIOConnection {
type BackendConnectionState (line 35) | public static enum BackendConnectionState {
class StatusSync (line 39) | private static class StatusSync {
method StatusSync (line 48) | public StatusSync(boolean xaStarted, String schema, Integer charsetI...
method synAndExecuted (line 60) | public boolean synAndExecuted(PostgreSQLBackendConnection conn) {
method updateConnectionInfo (line 72) | private void updateConnectionInfo(PostgreSQLBackendConnection conn)
method getCharsetCommand (line 100) | private static void getCharsetCommand(StringBuilder sb, int clientChar...
method getTxIsolationCommand (line 110) | private static void getTxIsolationCommand(StringBuilder sb, int txIsol...
method PostgreSQLBackendConnection (line 198) | public PostgreSQLBackendConnection(NetworkChannel channel, boolean fro...
method commit (line 203) | @Override
method execute (line 210) | @Override
method getAttachment (line 244) | @Override
method getAutocommitCommand (line 249) | private void getAutocommitCommand(StringBuilder sb, boolean autoCommit) {
method getTxReadonly (line 256) | private void getTxReadonly(StringBuilder sb, boolean txReadonly) {
method getLastTime (line 264) | @Override
method getPassword (line 269) | public String getPassword() {
method getPool (line 273) | public PostgreSQLDataSource getPool() {
method getResponseHandler (line 277) | public ResponseHandler getResponseHandler() {
method getSchema (line 281) | @Override
method getServerSecretKey (line 286) | public int getServerSecretKey() {
method getState (line 290) | public BackendConnectionState getState() {
method getTxIsolation (line 294) | @Override
method getUser (line 299) | public String getUser() {
method isAutocommit (line 303) | @Override
method isTxReadonly (line 308) | @Override
method getSqlSelectLimit (line 313) | @Override
method isBorrowed (line 319) | @Override
method isClosedOrQuit (line 324) | @Override
method isFromSlaveDB (line 329) | @Override
method isInTransaction (line 334) | public boolean isInTransaction() {
method isModifiedSQLExecuted (line 338) | @Override
method onConnectFailed (line 343) | @Override
method onConnectfinish (line 350) | @Override
method getPacketLength (line 364) | protected final int getPacketLength(ByteBuffer buffer, int offset) {
method query (line 372) | @Override
method quit (line 378) | @Override
method recordSql (line 395) | @Override
method release (line 400) | @Override
method rollback (line 420) | @Override
method setAttachment (line 427) | @Override
method setBorrowed (line 432) | @Override
method setInTransaction (line 437) | public void setInTransaction(boolean inTransaction) {
method setLastTime (line 441) | @Override
method setPassword (line 446) | public void setPassword(String password) {
method setPool (line 450) | public void setPool(PostgreSQLDataSource pool) {
method setResponseHandler (line 454) | @Override
method setSchema (line 460) | @Override
method setServerSecretKey (line 472) | public void setServerSecretKey(int serverSecretKey) {
method setState (line 476) | public void setState(BackendConnectionState state) {
method setUser (line 480) | public void setUser(String user) {
method synAndDoExecute (line 484) | private void synAndDoExecute(String xaTxID, RouteResultsetNode rrn, in...
method close (line 550) | public void close(String reason) {
method closeWithoutRsp (line 562) | @Override
method syncAndExcute (line 569) | @Override
method toString (line 582) | @Override
method query (line 588) | @Override
method disableRead (line 598) | @Override
method enableRead (line 604) | @Override
FILE: src/main/java/io/mycat/backend/postgresql/PostgreSQLBackendConnectionFactory.java
class PostgreSQLBackendConnectionFactory (line 15) | public class PostgreSQLBackendConnectionFactory extends
method make (line 18) | @SuppressWarnings({ "unchecked", "rawtypes" })
FILE: src/main/java/io/mycat/backend/postgresql/PostgreSQLBackendConnectionHandler.java
class PostgreSQLBackendConnectionHandler (line 46) | public class PostgreSQLBackendConnectionHandler extends BackendAsyncHand...
class SelectResponse (line 47) | static class SelectResponse {
method SelectResponse (line 52) | public SelectResponse(RowDescription description) {
method addDataRow (line 56) | public void addDataRow(DataRow packet) {
method getDataRows (line 60) | public List<DataRow> getDataRows() {
method getDescription (line 64) | public RowDescription getDescription() {
method setDataRows (line 68) | public void setDataRows(List<DataRow> dataRows) {
method PostgreSQLBackendConnectionHandler (line 95) | public PostgreSQLBackendConnectionHandler(PostgreSQLBackendConnection ...
method doConnecting (line 107) | private void doConnecting(PostgreSQLBackendConnection con, ByteBuffer ...
method doHandleBusinessMsg (line 159) | private void doHandleBusinessMsg(PostgreSQLBackendConnection con,
method doProcessBusinessQuery (line 219) | private void doProcessBusinessQuery(PostgreSQLBackendConnection con,
method doProcessCommandComplete (line 285) | private void doProcessCommandComplete(PostgreSQLBackendConnection con,
method doProcessCopyInResponse (line 304) | private void doProcessCopyInResponse(PostgreSQLBackendConnection con,
method doProcessCopyOutResponse (line 309) | private void doProcessCopyOutResponse(PostgreSQLBackendConnection con,
method doProcessEmptyQueryResponse (line 314) | private void doProcessEmptyQueryResponse(PostgreSQLBackendConnection con,
method doProcessErrorResponse (line 325) | private void doProcessErrorResponse(PostgreSQLBackendConnection con,
method doProcessNoticeResponse (line 343) | private void doProcessNoticeResponse(PostgreSQLBackendConnection con,
method doProcessNotificationResponse (line 348) | private void doProcessNotificationResponse(PostgreSQLBackendConnection...
method doProcessParameterStatus (line 353) | private void doProcessParameterStatus(PostgreSQLBackendConnection con,
method doProcessReadyForQuery (line 364) | private void doProcessReadyForQuery(PostgreSQLBackendConnection con,
method handle (line 371) | @Override
method handleData (line 383) | @Override
method offerDataError (line 419) | @Override
FILE: src/main/java/io/mycat/backend/postgresql/PostgreSQLDataSource.java
class PostgreSQLDataSource (line 17) | public class PostgreSQLDataSource extends PhysicalDatasource {
method PostgreSQLDataSource (line 20) | public PostgreSQLDataSource(DBHostConfig config, DataHostConfig hostCo...
method createHeartBeat (line 26) | @Override
method createNewConnection (line 31) | @Override
method testConnection (line 37) | @Override
FILE: src/main/java/io/mycat/backend/postgresql/heartbeat/PostgreSQLDetector.java
class PostgreSQLDetector (line 18) | public class PostgreSQLDetector implements
method PostgreSQLDetector (line 36) | public PostgreSQLDetector(PostgreSQLHeartbeat heartbeat) {
method onResult (line 41) | @Override
method getHeartbeat (line 80) | public PostgreSQLHeartbeat getHeartbeat() {
method getHeartbeatTimeout (line 84) | public long getHeartbeatTimeout() {
method heartbeat (line 88) | public void heartbeat() {
method close (line 103) | public void close(String msg) {
method isHeartbeatTimeout (line 111) | public boolean isHeartbeatTimeout() {
method getLastSendQryTime (line 116) | public long getLastSendQryTime() {
method getLasstReveivedQryTime (line 120) | public long getLasstReveivedQryTime() {
method quit (line 124) | public void quit() {
method isQuit (line 127) | public boolean isQuit() {
FILE: src/main/java/io/mycat/backend/postgresql/heartbeat/PostgreSQLHeartbeat.java
class PostgreSQLHeartbeat (line 16) | public class PostgreSQLHeartbeat extends DBHeartbeat {
method PostgreSQLHeartbeat (line 30) | public PostgreSQLHeartbeat(PostgreSQLDataSource source) {
method start (line 38) | @Override
method stop (line 50) | @Override
method getLastActiveTime (line 71) | @Override
method getTimeout (line 82) | @Override
method heartbeat (line 91) | @Override
method getSource (line 126) | public PostgreSQLDataSource getSource() {
method setResult (line 130) | public void setResult(int result, PostgreSQLDetector detector, Object ...
method switchSourceIfNeed (line 148) | private void switchSourceIfNeed(String reason) {
method setTimeout (line 205) | private void setTimeout(PostgreSQLDetector detector) {
method setError (line 210) | private void setError(PostgreSQLDetector detector) {
method setOk (line 229) | private void setOk(PostgreSQLDetector detector) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/AuthenticationPacket.java
class AuthenticationPacket (line 7) | public class AuthenticationPacket extends PostgreSQLPacket {
type AuthType (line 8) | public static enum AuthType {
method AuthType (line 13) | AuthType(int v) {
method getValue (line 17) | public int getValue() {
method valueOf (line 21) | public static AuthType valueOf(int v) {
method getAuthType (line 59) | public AuthType getAuthType() {
method getLength (line 63) | @Override
method getMarker (line 68) | @Override
method getSalt (line 73) | public byte[] getSalt() {
method setSalt (line 77) | public void setSalt(byte[] salt) {
method parse (line 81) | public static AuthenticationPacket parse(ByteBuffer buffer, int offset){
FILE: src/main/java/io/mycat/backend/postgresql/packet/BackendKeyData.java
class BackendKeyData (line 24) | public class BackendKeyData extends PostgreSQLPacket {
method getPid (line 40) | public int getPid() {
method getSecretKey (line 44) | public int getSecretKey() {
method getLength (line 48) | @Override
method getMarker (line 53) | @Override
method parse (line 66) | public static BackendKeyData parse(ByteBuffer buffer, int offset) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/Bind.java
class Bind (line 46) | public class Bind extends PostgreSQLPacket {
class DataParameter (line 48) | public static class DataParameter {
method getLength (line 61) | public int getLength() {
method setLength (line 68) | public void setLength(int length) {
method getData (line 75) | public byte[] getData() {
method setData (line 82) | public void setData(byte[] data) {
method isNull (line 89) | public boolean isNull() {
method setNull (line 96) | public void setNull(boolean isNull) {
method getLength (line 113) | @Override
method getMarker (line 118) | @Override
method getName (line 126) | public String getName() {
method getSql (line 133) | public String getSql() {
method getParameterProtocolNumber (line 140) | public short getParameterProtocolNumber() {
method getParameterProtocol (line 147) | public DataProtocol[] getParameterProtocol() {
method getParameterNumber (line 154) | public short getParameterNumber() {
method getParameter (line 161) | public DataParameter[] getParameter() {
method getResultNumber (line 168) | public short getResultNumber() {
method getResultProtocol (line 175) | public DataProtocol[] getResultProtocol() {
FILE: src/main/java/io/mycat/backend/postgresql/packet/BindComplete.java
class BindComplete (line 20) | public class BindComplete extends PostgreSQLPacket {
method getLength (line 24) | @Override
method getMarker (line 29) | @Override
method parse (line 34) | public static BindComplete parse(ByteBuffer buffer, int offset) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/CancelRequest.java
class CancelRequest (line 26) | public class CancelRequest extends PostgreSQLPacket {
method CancelRequest (line 32) | public CancelRequest(int pid, int secretKey) {
method getLength (line 37) | @Override
method getMarker (line 42) | @Override
method write (line 47) | public void write(ByteBuffer buffer) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/CommandComplete.java
class CommandComplete (line 26) | public class CommandComplete extends PostgreSQLPacket {
method getAffectedRows (line 37) | public int getAffectedRows() {
method setAffectedRows (line 41) | public void setAffectedRows(int affectedRows) {
method getInsertId (line 45) | public int getInsertId() {
method setInsertId (line 49) | public void setInsertId(int insertId) {
method getLength (line 59) | @Override
method isDDLComplete (line 64) | public boolean isDDLComplete() {
method isTranComplete (line 69) | public boolean isTranComplete() {
method isSelectComplete (line 74) | public boolean isSelectComplete() {
method getRows (line 78) | public int getRows() {
method getMarker (line 96) | @Override
method parse (line 101) | public static CommandComplete parse(ByteBuffer buffer, int offset) {
method parseInt (line 125) | private static int parseInt(String value) {
method getCommandResponse (line 134) | public String getCommandResponse() {
FILE: src/main/java/io/mycat/backend/postgresql/packet/CopyInResponse.java
class CopyInResponse (line 28) | public class CopyInResponse extends PostgreSQLPacket {
method getProtocol (line 52) | public DataProtocol getProtocol() {
method getDataLength (line 59) | public short getDataLength() {
method getColumnType (line 66) | public DataProtocol[] getColumnType() {
method getLength (line 75) | @Override
method getMarker (line 80) | @Override
method parse (line 85) | public static CopyInResponse parse(ByteBuffer buffer, int offset) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/CopyOutResponse.java
class CopyOutResponse (line 22) | public class CopyOutResponse extends PostgreSQLPacket {
method getMarker (line 36) | public char getMarker() {
method getLength (line 43) | public int getLength() {
method getProtocol (line 50) | public DataProtocol getProtocol() {
method getDataLength (line 57) | public short getDataLength() {
method getColumnType (line 64) | public DataProtocol[] getColumnType() {
method parse (line 83) | public static CopyOutResponse parse(ByteBuffer buffer, int offset) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/DataRow.java
class DataRow (line 24) | public class DataRow extends PostgreSQLPacket {
class DataColumn (line 25) | public static class DataColumn {
method isNull (line 38) | public boolean isNull() {
method getLength (line 45) | public int getLength() {
method setLength (line 53) | public void setLength(int length) {
method getData (line 60) | public byte[] getData() {
method setData (line 68) | public void setData(byte[] data) {
method getColumnNumber (line 92) | public short getColumnNumber() {
method getColumns (line 99) | public DataColumn[] getColumns() {
method getLength (line 108) | @Override
method getMarker (line 113) | @Override
method parse (line 118) | public static DataRow parse(ByteBuffer buffer, int offset) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/EmptyQueryResponse.java
class EmptyQueryResponse (line 20) | public class EmptyQueryResponse extends PostgreSQLPacket {
method getLength (line 25) | @Override
method getMarker (line 30) | @Override
method parse (line 35) | public static EmptyQueryResponse parse(ByteBuffer buffer, int offset) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/ErrorResponse.java
class ErrorResponse (line 21) | public class ErrorResponse extends PostgreSQLPacket {
method parse (line 31) | public static ErrorResponse parse(ByteBuffer buffer, int offset)
method getErrMsg (line 55) | public String getErrMsg() {
method getLength (line 59) | @Override
method getMarker (line 64) | @Override
FILE: src/main/java/io/mycat/backend/postgresql/packet/NoticeResponse.java
class NoticeResponse (line 5) | public class NoticeResponse extends PostgreSQLPacket {
method getLength (line 18) | @Override
method getMarker (line 23) | @Override
method parse (line 28) | public static NoticeResponse parse(ByteBuffer buffer, int offset) {
method getMsg (line 45) | public String getMsg() {
FILE: src/main/java/io/mycat/backend/postgresql/packet/NotificationResponse.java
class NotificationResponse (line 17) | public class NotificationResponse extends PostgreSQLPacket{
method getLength (line 19) | @Override
method getMarker (line 25) | @Override
FILE: src/main/java/io/mycat/backend/postgresql/packet/ParameterDescription.java
class ParameterDescription (line 16) | public class ParameterDescription {
FILE: src/main/java/io/mycat/backend/postgresql/packet/ParameterStatus.java
class ParameterStatus (line 5) | public class ParameterStatus extends PostgreSQLPacket {
method getLength (line 15) | @Override
method getMarker (line 20) | @Override
method parse (line 25) | public static ParameterStatus parse(ByteBuffer buffer, int offset) {
method getKey (line 43) | public String getKey() {
method getValue (line 47) | public String getValue() {
FILE: src/main/java/io/mycat/backend/postgresql/packet/Parse.java
class Parse (line 36) | public class Parse extends PostgreSQLPacket {
method getLength (line 45) | @Override
method getMarker (line 51) | @Override
method Parse (line 56) | public Parse(String name, String sql, DateType... parameterTypes) {
method write (line 64) | public void write(ByteBuffer buffer) throws IOException {
FILE: src/main/java/io/mycat/backend/postgresql/packet/ParseComplete.java
class ParseComplete (line 7) | public class ParseComplete extends PostgreSQLPacket {
method getLength (line 12) | @Override
method getMarker (line 17) | @Override
method parse (line 22) | public static ParseComplete parse(ByteBuffer buffer, int offset) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/PasswordMessage.java
class PasswordMessage (line 19) | public class PasswordMessage extends PostgreSQLPacket {
method PasswordMessage (line 21) | public PasswordMessage(String user, String password, AuthType aut, byt...
method getLength (line 32) | @Override
method getMarker (line 37) | @Override
method write (line 42) | public void write(ByteBuffer buffer) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/PostgreSQLPacket.java
class PostgreSQLPacket (line 5) | public abstract class PostgreSQLPacket {
method getLength (line 14) | public abstract int getLength();
method getMarker (line 21) | public abstract char getMarker();
method getPacketSize (line 24) | public int getPacketSize(){
method getType (line 28) | public String getType(){
type DateType (line 38) | public static enum DateType {
method valueOf (line 50) | public static DateType valueOf(int val) {
method DateType (line 136) | private DateType() {
method DateType (line 139) | private DateType(int value) {
method getValue (line 143) | public int getValue() {
type DataProtocol (line 155) | public static enum DataProtocol {
method valueOf (line 158) | public static DataProtocol valueOf(short val) {
type PacketMarker (line 169) | public static enum PacketMarker {
method PacketMarker (line 267) | private PacketMarker(char marker) {
method getValue (line 271) | public char getValue() {
FILE: src/main/java/io/mycat/backend/postgresql/packet/Query.java
class Query (line 21) | public class Query extends PostgreSQLPacket {
method getLength (line 25) | @Override
method getMarker (line 31) | @Override
method Query (line 36) | public Query(String sql) {
method write (line 40) | public void write(ByteBuffer buffer) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/ReadyForQuery.java
class ReadyForQuery (line 22) | public class ReadyForQuery extends PostgreSQLPacket {
method getLength (line 34) | @Override
method getMarker (line 39) | @Override
method parse (line 44) | public static ReadyForQuery parse(ByteBuffer buffer, int offset) {
type TransactionState (line 60) | public static enum TransactionState {
method getVlaue (line 78) | public char getVlaue() {
method TransactionState (line 82) | TransactionState(char value) {
method valueOf (line 86) | public static TransactionState valueOf(char v) {
method getState (line 103) | public TransactionState getState() {
method setState (line 110) | public void setState(TransactionState state) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/RowDescription.java
class RowDescription (line 42) | public class RowDescription extends PostgreSQLPacket {
method getLength (line 56) | @Override
method getMarker (line 61) | @Override
method parse (line 66) | public static RowDescription parse(ByteBuffer buffer, int offset)
method getColumns (line 106) | public ColumnDescription[] getColumns() {
method getColumnNumber (line 113) | public short getColumnNumber() {
class ColumnDescription (line 117) | public static class ColumnDescription {
method getColumnName (line 156) | public String getColumnName() {
method setColumnName (line 164) | public void setColumnName(String columnName) {
method getOid (line 171) | public int getOid() {
method setOid (line 179) | public void setOid(int oid) {
method getCoid (line 186) | public short getCoid() {
method setCoid (line 194) | public void setCoid(short coid) {
method getColumnType (line 201) | public DateType getColumnType() {
method setColumnType (line 209) | public void setColumnType(DateType columnType) {
method getTyplen (line 216) | public short getTyplen() {
method setTyplen (line 224) | public void setTyplen(short typlen) {
method getAtttypmod (line 231) | public int getAtttypmod() {
method setAtttypmod (line 239) | public void setAtttypmod(int atttypmod) {
method getProtocol (line 246) | public DataProtocol getProtocol() {
method setProtocol (line 254) | public void setProtocol(DataProtocol protocol) {
FILE: src/main/java/io/mycat/backend/postgresql/packet/SSLRequest.java
class SSLRequest (line 9) | public class SSLRequest {
FILE: src/main/java/io/mycat/backend/postgresql/packet/StartupMessage.java
class StartupMessage (line 5) | public class StartupMessage extends PostgreSQLPacket {
method getLength (line 11) | @Override
method getMarker (line 16) | @Override
FILE: src/main/java/io/mycat/backend/postgresql/packet/Terminate.java
class Terminate (line 20) | public class Terminate extends PostgreSQLPacket {
method getLength (line 24) | @Override
method getMarker (line 30) | @Override
method write (line 35) | public void write(ByteBuffer buffer) {
FILE: src/main/java/io/mycat/backend/postgresql/utils/MD5Digest.java
class MD5Digest (line 19) | public class MD5Digest
method MD5Digest (line 21) | private MD5Digest()
method encode (line 35) | public static byte[] encode(byte user[], byte password[], byte salt[])
method bytesToHex (line 70) | private static void bytesToHex(byte[] bytes, byte[] hex, int offset)
FILE: src/main/java/io/mycat/backend/postgresql/utils/PIOUtils.java
class PIOUtils (line 14) | public class PIOUtils {
method SendInteger4 (line 26) | public static void SendInteger4(int val, ByteBuffer buffer) {
method redInteger4 (line 35) | public static int redInteger4(ByteBuffer buffer, int offset) {
method redInteger2 (line 45) | public static short redInteger2(ByteBuffer buffer, int offset) {
method SendInteger2 (line 58) | public static void SendInteger2(int val, ByteBuffer buffer)
method Send (line 72) | public static void Send(byte[] encodedParam, ByteBuffer buffer) {
method SendChar (line 76) | public static void SendChar(int i, ByteBuffer buffer) {
method redByteArray (line 88) | public static byte[] redByteArray(ByteBuffer buffer, int offset, int l...
method SendString (line 96) | public static void SendString(String string, ByteBuffer buffer) {
method redString (line 100) | public static String redString(ByteBuffer buffer, int offset, Charset ...
method redInteger1 (line 117) | public static byte redInteger1(ByteBuffer buffer, int _offset) {
method SendByte (line 121) | public static void SendByte(byte b, ByteBuffer buffer) {
FILE: src/main/java/io/mycat/backend/postgresql/utils/PacketUtils.java
class PacketUtils (line 24) | public class PacketUtils {
method parsePacket (line 26) | public static List<PostgreSQLPacket> parsePacket(ByteBuffer buffer,int...
method parsePacket (line 86) | @Deprecated
method createPostgresTimeZone (line 153) | public static String createPostgresTimeZone() {
method makeStartUpPacket (line 171) | public static ByteBuffer makeStartUpPacket(String user, String database)
FILE: src/main/java/io/mycat/backend/postgresql/utils/PgPacketApaterUtils.java
class PgPacketApaterUtils (line 22) | public class PgPacketApaterUtils {
method rowDescConvertFieldPacket (line 30) | public static List<FieldPacket> rowDescConvertFieldPacket(RowDescripti...
method convertFieldType (line 47) | private static int convertFieldType(DateType columnType) {
method rowDataConvertRowDataPacket (line 69) | public static RowDataPacket rowDataConvertRowDataPacket(DataRow dataRow){
FILE: src/main/java/io/mycat/backend/postgresql/utils/PgSqlApaterUtils.java
class PgSqlApaterUtils (line 10) | public class PgSqlApaterUtils {
method apater (line 28) | public static String apater(String sql){
method doApaterColumnsSql (line 60) | private static String doApaterColumnsSql(String sql) {
method doApaterPagingSql (line 65) | private static String doApaterPagingSql(final String SQL, String sql) {
method doApaterCreateTabelSql (line 91) | private static String doApaterCreateTabelSql(String sql) {
method doApaterTableStatusSql (line 101) | private static String doApaterTableStatusSql(String sql) {
FILE: src/main/java/io/mycat/buffer/BufferArray.java
class BufferArray (line 18) | public class BufferArray {
method BufferArray (line 23) | public BufferArray(BufferPool bufferPool) {
method checkWriteBuffer (line 29) | public ByteBuffer checkWriteBuffer(int capacity) {
method getBlockCount (line 39) | public int getBlockCount()
method addtoBlock (line 43) | private void addtoBlock(ByteBuffer buffer) {
method getCurWritingBlock (line 50) | public ByteBuffer getCurWritingBlock() {
method getWritedBlockLst (line 54) | public List<ByteBuffer> getWritedBlockLst() {
method clear (line 58) | public void clear() {
method write (line 64) | public ByteBuffer write(byte[] src) {
method writeToByteArrayAndRecycle (line 87) | public byte[] writeToByteArrayAndRecycle() {
FILE: src/main/java/io/mycat/buffer/BufferPool.java
type BufferPool (line 13) | public interface BufferPool {
method allocate (line 14) | public ByteBuffer allocate(int size);
method recycle (line 15) | public void recycle(ByteBuffer theBuf);
method capacity (line 16) | public long capacity();
method size (line 17) | public long size();
method getConReadBuferChunk (line 18) | public int getConReadBuferChunk();
method getSharedOptsCount (line 19) | public int getSharedOptsCount();
method getChunkSize (line 20) | public int getChunkSize();
method getNetDirectMemoryUsage (line 21) | public ConcurrentHashMap<Long,Long> getNetDirectMemoryUsage();
method allocateArray (line 22) | public BufferArray allocateArray();
FILE: src/main/java/io/mycat/buffer/ByteBufferArena.java
class ByteBufferArena (line 21) | public class ByteBufferArena implements BufferPool {
method ByteBufferArena (line 43) | public ByteBufferArena(int chunkSize, int pageSize, int chunkCount, in...
method allocate (line 80) | @Override
method expand (line 125) | private void expand() {
method recycle (line 132) | @Override
method printList (line 165) | private void printList() {
method capacity (line 171) | @Override
method size (line 176) | @Override
method getConReadBuferChunk (line 181) | @Override
method getSharedOptsCount (line 186) | @Override
method getChunkSize (line 200) | @Override
method getNetDirectMemoryUsage (line 205) | @Override
method allocateArray (line 210) | @Override
FILE: src/main/java/io/mycat/buffer/ByteBufferChunk.java
class ByteBufferChunk (line 18) | public class ByteBufferChunk implements Comparable{
method ByteBufferChunk (line 40) | public ByteBufferChunk(int pageSize, int chunkSize) {
method isInThisChunk (line 68) | public boolean isInThisChunk(ByteBuffer byteBuffer) {
method usage (line 73) | public int usage() {
method allocateRun (line 86) | public synchronized ByteBuffer allocateRun(int normCapacity) {
method calculateStart (line 113) | private int calculateStart(int id) {
method runLength (line 131) | private int runLength(int id) {
method allocateNode (line 136) | private int allocateNode(int d) {
method updateParentsAlloc (line 160) | private void updateParentsAlloc(int id) {
method freeByteBuffer (line 171) | public synchronized void freeByteBuffer(ByteBuffer byteBuffer) {
method free (line 193) | private void free(int handle) {
method updateParentsFree (line 201) | private void updateParentsFree(int id) {
method log2 (line 220) | private static int log2(int chunkSize) {
method printMemoryMap (line 228) | private void printMemoryMap() {
method main (line 241) | public static void main(String[] args) {
method compareTo (line 263) | @Override
FILE: src/main/java/io/mycat/buffer/ByteBufferChunkList.java
class ByteBufferChunkList (line 21) | public class ByteBufferChunkList {
method ByteBufferChunkList (line 30) | public ByteBufferChunkList(int minUsage, int maxUsage, int chunkSize, ...
method getIndex (line 40) | public ByteBufferChunk getIndex(ByteBuffer buffer) {
method allocate (line 49) | ByteBuffer allocate(int reqCapacity) {
method free (line 75) | boolean free(ByteBuffer buffer) {
FILE: src/main/java/io/mycat/buffer/ByteBufferPage.java
class ByteBufferPage (line 13) | @SuppressWarnings("restriction")
method ByteBufferPage (line 24) | public ByteBufferPage(ByteBuffer buf, int chunkSize) {
method allocatChunk (line 34) | public ByteBuffer allocatChunk(int theChunkCount) {
method markChunksUsed (line 90) | private void markChunksUsed(int startChunk, int theChunkCount) {
method markChunksUnused (line 96) | private void markChunksUnused(int startChunk, int theChunkCount) {
method recycleBuffer (line 111) | public boolean recycleBuffer(ByteBuffer parent, ByteBuffer recycleBuf,...
FILE: src/main/java/io/mycat/buffer/DirectByteBufferPool.java
class DirectByteBufferPool (line 16) | @SuppressWarnings("restriction")
method DirectByteBufferPool (line 34) | public DirectByteBufferPool(int pageSize, short chunkSize, short pageC...
method allocateArray (line 48) | public BufferArray allocateArray() {
method expandBuffer (line 56) | public ByteBuffer expandBuffer(ByteBuffer buffer){
method allocate (line 71) | public ByteBuffer allocate(int size) {
method recycle (line 100) | public void recycle(ByteBuffer theBuf) {
method allocateBuffer (line 134) | private ByteBuffer allocateBuffer(int theChunkCount, int startPage, in...
method getChunkSize (line 145) | public int getChunkSize() {
method getNetDirectMemoryUsage (line 149) | @Override
method getPageSize (line 154) | public int getPageSize() {
method getPageCount (line 158) | public short getPageCount() {
method capacity (line 162) | public long capacity() {
method size (line 166) | public long size(){
method getSharedOptsCount (line 171) | public int getSharedOptsCount(){
method getAllPages (line 177) | public ByteBufferPage[] getAllPages() {
method getConReadBuferChunk (line 181) | public int getConReadBuferChunk() {
FILE: src/main/java/io/mycat/buffer/MyCatMemoryAllocator.java
class MyCatMemoryAllocator (line 22) | public class MyCatMemoryAllocator implements ByteBufAllocator {
method MyCatMemoryAllocator (line 45) | public MyCatMemoryAllocator(int numberOfArenas){
method getINSTANCE (line 75) | public static MyCatMemoryAllocator getINSTANCE() {
method getAlloc (line 82) | public PooledByteBufAllocator getAlloc() {
method getNumberOfArenas (line 91) | public int getNumberOfArenas() {
method getChunkSize (line 100) | public int getChunkSize() {
method getPageSize (line 108) | public int getPageSize() {
method buffer (line 113) | @Override
method buffer (line 118) | @Override
method buffer (line 123) | @Override
method ioBuffer (line 128) | @Override
method ioBuffer (line 133) | @Override
method ioBuffer (line 138) | @Override
method heapBuffer (line 143) | @Override
method heapBuffer (line 148) | @Override
method heapBuffer (line 153) | @Override
method directBuffer (line 158) | @Override
method directBuffer (line 163) | @Override
method directBuffer (line 168) | @Override
method compositeBuffer (line 173) | @Override
method compositeBuffer (line 178) | @Override
method compositeHeapBuffer (line 183) | @Override
method compositeHeapBuffer (line 188) | @Override
method compositeDirectBuffer (line 193) | @Override
method compositeDirectBuffer (line 198) | @Override
method isDirectBufferPooled (line 203) | @Override
method calculateNewCapacity (line 208) | @Override
FILE: src/main/java/io/mycat/buffer/NettyBufferPool.java
class NettyBufferPool (line 25) | public class NettyBufferPool implements BufferPool {
method NettyBufferPool (line 31) | public NettyBufferPool(int chunkSize) {
method allocate (line 36) | @Override
method recycle (line 44) | @Override
method getAllocator (line 61) | public MyCatMemoryAllocator getAllocator() {
method capacity (line 75) | @Override
method size (line 80) | @Override
method getConReadBuferChunk (line 105) | @Override
method getSharedOptsCount (line 110) | @Override
method getChunkSize (line 115) | @Override
method getNetDirectMemoryUsage (line 120) | @Override
method allocateArray (line 125) | @Override
FILE: src/main/java/io/mycat/cache/CachePool.java
type CachePool (line 32) | public interface CachePool {
method putIfAbsent (line 34) | public void putIfAbsent(Object key, Object value);
method get (line 36) | public Object get(Object key);
method clearCache (line 38) | public void clearCache();
method getCacheStatic (line 40) | public CacheStatic getCacheStatic();
method getMaxSize (line 42) | public long getMaxSize();
method clearCache (line 43) | public void clearCache(String cacheName);
FILE: src/main/java/io/mycat/cache/CachePoolFactory.java
class CachePoolFactory (line 30) | public abstract class CachePoolFactory {
method createCachePool (line 39) | public abstract CachePool createCachePool(String poolName,int cacheSiz...
FILE: src/main/java/io/mycat/cache/CacheService.java
class CacheService (line 39) | public class CacheService {
method CacheService (line 45) | public CacheService() {
method getAllCachePools (line 59) | public Map<String, CachePool> getAllCachePools()
method init (line 64) | private void init() throws Exception {
method createLayeredPool (line 122) | private void createLayeredPool(String cacheName, String type, int size,
method checkExists (line 134) | private void checkExists(String poolName) {
method createPoolFactory (line 141) | private void createPoolFactory(String factryType, String factryClassName)
method createPool (line 149) | private void createPool(String poolName, String type, int cacheSize,
method getCacheFact (line 159) | private CachePoolFactory getCacheFact(String type) {
method getCachePool (line 174) | public CachePool getCachePool(String poolName) {
method clearCache (line 185) | public void clearCache() {
FILE: src/main/java/io/mycat/cache/CacheStatic.java
class CacheStatic (line 32) | public class CacheStatic {
method getMemorySize (line 42) | public long getMemorySize() {
method setMemorySize (line 46) | public void setMemorySize(long memorySize) {
method getItemSize (line 50) | public long getItemSize() {
method setItemSize (line 54) | public void setItemSize(long itemSize) {
method getAccessTimes (line 58) | public long getAccessTimes() {
method setAccessTimes (line 62) | public void setAccessTimes(long accessTimes) {
method getHitTimes (line 66) | public long getHitTimes() {
method setHitTimes (line 70) | public void setHitTimes(long hitTimes) {
method getLastAccesTime (line 74) | public long getLastAccesTime() {
method setLastAccesTime (line 78) | public void setLastAccesTime(long lastAccesTime) {
method getPutTimes (line 82) | public long getPutTimes() {
method setPutTimes (line 86) | public void setPutTimes(long putTimes) {
method incAccessTimes (line 90) | public void incAccessTimes() {
method incHitTimes (line 95) | public void incHitTimes() {
method incPutTimes (line 101) | public void incPutTimes() {
method getLastPutTime (line 106) | public long getLastPutTime() {
method setLastPutTime (line 110) | public void setLastPutTime(long lastPutTime) {
method getMaxSize (line 114) | public long getMaxSize() {
method setMaxSize (line 118) | public void setMaxSize(long maxSize) {
method reset (line 122) | public void reset() {
method toString (line 133) | @Override
FILE: src/main/java/io/mycat/cache/DefaultLayedCachePool.java
class DefaultLayedCachePool (line 34) | public class DefaultLayedCachePool implements LayerCachePool {
method DefaultLayedCachePool (line 47) | public DefaultLayedCachePool(String name, CachePoolFactory poolFactory,
method getCache (line 56) | private CachePool getCache(String cacheName) {
method createChildCache (line 80) | public CachePool createChildCache(String cacheName, int size,
method putIfAbsent (line 89) | @Override
method get (line 95) | @Override
method clearCache (line 100) | @Override
method putIfAbsent (line 109) | @Override
method get (line 116) | @Override
method getCacheStatic (line 122) | @Override
method getAllCacheStatic (line 147) | @Override
method getMaxSize (line 157) | @Override
method clearCache (line 168) | public void clearCache(String cacheName) {
FILE: src/main/java/io/mycat/cache/LayerCachePool.java
type LayerCachePool (line 34) | public interface LayerCachePool extends CachePool {
method putIfAbsent (line 36) | public void putIfAbsent(String primaryKey, Object secondKey, Object va...
method get (line 38) | public Object get(String primaryKey, Object secondKey);
method getAllCacheStatic (line 44) | public Map<String, CacheStatic> getAllCacheStatic();
method clearCache (line 46) | public void clearCache(String cacheName);
FILE: src/main/java/io/mycat/cache/MysqlDataSetCache.java
class MysqlDataSetCache (line 37) | public class MysqlDataSetCache implements Serializable {
method getSql (line 52) | public String getSql() {
method isStoring (line 56) | public boolean isStoring() {
method setStoring (line 60) | public void setStoring(boolean storing) {
method setSql (line 64) | public void setSql(String sql) {
method getTotal (line 68) | public int getTotal() {
method setTotal (line 72) | public void setTotal(int total) {
method getDataFile (line 76) | public String getDataFile() {
method setDataFile (line 80) | public void setDataFile(String dataFile) {
method getCreateTime (line 84) | public long getCreateTime() {
method setCreateTime (line 88) | public void setCreateTime(long createTime) {
method getLastAccesTime (line 92) | public long getLastAccesTime() {
method setLastAccesTime (line 96) | public void setLastAccesTime(long lastAccesTime) {
method addHeader (line 100) | public void addHeader(byte[] header) throws IOException {
method writeFile (line 104) | private void writeFile(byte[] data) throws IOException {
method appendRecord (line 117) | public void appendRecord(byte[] row) throws IOException {
FILE: src/main/java/io/mycat/cache/MysqlDataSetService.java
class MysqlDataSetService (line 31) | public class MysqlDataSetService {
method isEnabled (line 38) | public boolean isEnabled() {
method setEnabled (line 42) | public void setEnabled(boolean enabled) {
method getMaxExpire (line 46) | public int getMaxExpire() {
method setMaxExpire (line 50) | public void setMaxExpire(int maxExpire) {
method getInstance (line 56) | public static MysqlDataSetService getInstance() {
method MysqlDataSetService (line 60) | private MysqlDataSetService() {
method findDataSetCache (line 70) | public MysqlDataSetCache findDataSetCache(String sql) {
method needCache (line 85) | public String needCache(String sql)
method addIfNotExists (line 89) | public boolean addIfNotExists(MysqlDataSetCache newCache) {
method validCache (line 93) | private boolean validCache(MysqlDataSetCache cache) {
FILE: src/main/java/io/mycat/cache/impl/EnchachePooFactory.java
class EnchachePooFactory (line 32) | public class EnchachePooFactory extends CachePoolFactory {
method createCachePool (line 34) | @Override
FILE: src/main/java/io/mycat/cache/impl/EnchachePool.java
class EnchachePool (line 40) | public class EnchachePool implements CachePool {
method EnchachePool (line 46) | public EnchachePool(String name,Cache enCache,long maxSize) {
method putIfAbsent (line 54) | @Override
method get (line 66) | @Override
method clearCache (line 84) | @Override
method getCacheStatic (line 94) | @Override
method getMaxSize (line 101) | @Override
method clearCache (line 106) | @Override
FILE: src/main/java/io/mycat/cache/impl/LevelDBCachePooFactory.java
class LevelDBCachePooFactory (line 14) | public class LevelDBCachePooFactory extends CachePoolFactory {
method createCachePool (line 16) | @Override
FILE: src/main/java/io/mycat/cache/impl/LevelDBPool.java
class LevelDBPool (line 17) | public class LevelDBPool implements CachePool {
method LevelDBPool (line 24) | public LevelDBPool(String name,DB db,long maxSize) {
method putIfAbsent (line 30) | @Override
method get (line 40) | @Override
method clearCache (line 59) | @Override
method getCacheStatic (line 68) | @Override
method getMaxSize (line 89) | @Override
method clearCache (line 95) | @Override
method toByteArray (line 102) | public byte[] toByteArray (Object obj) {
method toObject (line 119) | public Object toObject (byte[] bytes) {
FILE: src/main/java/io/mycat/cache/impl/MapDBCachePooFactory.java
class MapDBCachePooFactory (line 35) | public class MapDBCachePooFactory extends CachePoolFactory {
method createCachePool (line 38) | @Override
FILE: src/main/java/io/mycat/cache/impl/MapDBCachePool.java
class MapDBCachePool (line 31) | public class MapDBCachePool implements CachePool {
method MapDBCachePool (line 36) | public MapDBCachePool(HTreeMap<Object, Object> htreeMap,long maxSize) {
method putIfAbsent (line 42) | @Override
method get (line 50) | @Override
method clearCache (line 62) | @Override
method getCacheStatic (line 69) | @Override
method getMaxSize (line 76) | @Override
method clearCache (line 81) | @Override
FILE: src/main/java/io/mycat/cache/index/Shard.java
class Shard (line 17) | public class Shard<S> { // S类封装了机器节点的信息 ,如name、password、ip、port等
method Shard (line 23) | public Shard(List<S> shards) {
method init (line 29) | private void init() { // 初始化一致性hash环
method getShardInfo (line 41) | public S getShardInfo(String key) {
method hash (line 55) | private Long hash(String key) {
method main (line 98) | public static void main(String[] args) {
FILE: src/main/java/io/mycat/catlets/Catlet.java
type Catlet (line 16) | public interface Catlet {
method processSQL (line 21) | void processSQL(String sql, EngineCtx ctx);
method route (line 23) | void route(SystemConfig sysConfig, SchemaConfig schema,
FILE: src/main/java/io/mycat/catlets/JoinParser.java
class JoinParser (line 45) | public class JoinParser {
method JoinParser (line 57) | public JoinParser(MySqlSelectQueryBlock selectQuery,String stmt) {
method parser (line 62) | public void parser(){
method parserTable (line 82) | private void parserTable(SQLTableSource table,TableFilter tFilter,bool...
method setTableFilter (line 104) | private TableFilter setTableFilter(TableFilter tFilter,TableFilter new...
method getTableFilter (line 114) | private TableFilter getTableFilter(SQLTableSource table,boolean isOutJ...
method parserJoinKey (line 126) | private void parserJoinKey(SQLExpr expr){
method getExprFieldName (line 133) | private String getExprFieldName(SQLAggregateExpr expr){
method getFieldName (line 141) | private String getFieldName(SQLSelectItem item){
method getMethodInvokeFieldName (line 150) | private String getMethodInvokeFieldName(SQLSelectItem item){
method parserFields (line 162) | private void parserFields(List<SQLSelectItem> mysqlSelectList){
method setField (line 191) | private void setField(String key,String value){
method setField (line 198) | private void setField(String key,String value,String expr){
method parserMasterTable (line 207) | private void parserMasterTable(){
method checkJoinField (line 213) | private boolean checkJoinField(String value){
method parserWhere (line 224) | private void parserWhere(SQLExpr aexpr,String Operator){
method andorWhere (line 258) | private void andorWhere(SQLExpr exprL,String Operator,SQLExpr exprR ){
method opSQLExpr (line 263) | private void opSQLExpr(SQLBinaryOpExpr expr,String Operator) {
method getExpValue (line 288) | private Object getExpValue(SQLExpr expr){
method parserOrderBy (line 309) | private void parserOrderBy(SQLOrderBy orderby)
method parserLimit (line 319) | private void parserLimit(){
method getSQLExprToInt (line 329) | private int getSQLExprToInt(SQLExpr expr){
method getSQLExprToAsc (line 336) | private String getSQLExprToAsc(SQLOrderingSpecification ASC){
method getChildSQL (line 348) | public String getChildSQL(){
method getSql (line 354) | public String getSql(){
method getJoinType (line 359) | public String getJoinType(){
method getJoinLkey (line 362) | public String getJoinLkey(){
method getJoinRkey (line 365) | public String getJoinRkey(){
method getOrderByCols (line 370) | public LinkedHashMap<String, Integer> getOrderByCols(){
method getChildByCols (line 374) | public LinkedHashMap<String, Integer> getChildByCols(){
method hasOrder (line 378) | public boolean hasOrder() {
method getOffset (line 384) | public int getOffset() {
method getRowCount (line 390) | public int getRowCount() {
method hasLimit (line 396) | public boolean hasLimit() {
FILE: src/main/java/io/mycat/catlets/ShareJoin.java
class ShareJoin (line 45) | public class ShareJoin implements Catlet {
method setRoute (line 78) | public void setRoute(RouteResultset rrs){
method route (line 82) | public void route(SystemConfig sysConfig, SchemaConfig schema,int sqlT...
method getRoute (line 119) | private void getRoute(String sql){
method getDataNodes (line 128) | private String[] getDataNodes(){
method getDataNode (line 135) | private String getDataNode(String[] dataNodes){
method processSQL (line 143) | public void processSQL(String sql, EngineCtx ctx) {
method putDBRow (line 196) | public void putDBRow(String id,String nid, byte[] rowData,int findex){
method putDBFields (line 208) | public void putDBFields(List<byte[]> mFields){
method endJobInput (line 215) | public void endJobInput(String dataNode, boolean failed){
method createQryJob (line 226) | private void createQryJob(int batchSize) {
method writeHeader (line 277) | public void writeHeader(String dataNode,List<byte[]> afields, List<byt...
method setRowDataSorterHeader (line 292) | private void setRowDataSorterHeader(List<byte[]> afields, List<byte[]>...
method setAllFields (line 327) | private void setAllFields(List<byte[]> afields, List<byte[]> bfields){
method getAllFields (line 338) | public List<byte[]> getAllFields(){
method writeRow (line 341) | public void writeRow(RowDataPacket rowDataPkg){
method writeEof (line 355) | protected void writeEof() {
method getFieldIndex (line 382) | public int getFieldIndex(List<byte[]> fields,String fkey){
method getCommonFieldIndex (line 396) | public ColMeta getCommonFieldIndex(List<byte[]> fields,String fkey){
class ShareDBJoinHandler (line 410) | class ShareDBJoinHandler implements SQLJobHandler {
method ShareDBJoinHandler (line 415) | public ShareDBJoinHandler(ShareJoin ctx,String joinField,NonBlockingSe...
method onHeader (line 426) | @Override
method onRowData (line 450) | @Override
method finished (line 461) | @Override
class ShareRowOutPutDataHandler (line 472) | class ShareRowOutPutDataHandler implements SQLJobHandler {
method ShareRowOutPutDataHandler (line 482) | public ShareRowOutPutDataHandler(ShareJoin ctx,List<byte[]> afields,in...
method onHeader (line 493) | @Override
method getRow (line 506) | private byte[] getRow(Map<String, byte[]> batchRowsCopy,String value,i...
method onRowData (line 523) | @Override
method finished (line 571) | @Override
FILE: src/main/java/io/mycat/catlets/TableFilter.java
class TableFilter (line 20) | public class TableFilter {
method TableFilter (line 41) | public TableFilter(String taName,String taAlia,boolean outJoin) {
method getTablefrom (line 52) | private String getTablefrom(String key){
method getFieldfrom (line 71) | private String getFieldfrom(String key){
method addField (line 86) | public void addField(String fieldName,String fieldAlia){
method addField (line 112) | public void addField(String fieldName,String fieldAlia,String expr){
method addWhere (line 140) | public void addWhere(String fieldName,String value,String Operator,Str...
method addWhere (line 154) | public void addWhere(String fieldName,String condition,String and){
method unionsql (line 169) | private String unionsql(String key,String value,String Operator){
method addOrders (line 180) | public void addOrders(int index, String fieldName,String des){
method fieldInTable (line 200) | private boolean fieldInTable(String fieldName) {
method getOrderByCols (line 217) | public LinkedHashMap<String, Integer> getOrderByCols(){
method addLimit (line 220) | public void addLimit(int offset,int rowCount){
method setJoinKey (line 224) | public void setJoinKey(String fieldName,String value){
method getChildJoinKey (line 254) | private String getChildJoinKey(boolean left){
method getJoinKey (line 267) | public String getJoinKey(boolean left){
method joinLkey (line 270) | private int joinLkey(String fieldName,String value){
method getTableName (line 296) | public String getTableName(){
method setTableName (line 299) | public void setTableName(String value){
method getTableAlia (line 303) | public String getTableAlia(){
method setTableAlia (line 306) | public void setTableAlia(String value){
method getOutJoin (line 310) | public boolean getOutJoin(){
method setOutJoin (line 313) | public void setOutJoin(boolean value){
method getAllField (line 318) | public boolean getAllField(){
method setAllField (line 321) | public void setAllField(boolean value){
method getTableJoin (line 325) | public TableFilter getTableJoin(){
method setTableJoin (line 328) | public void setTableJoin(TableFilter value){
method getParent (line 332) | public TableFilter getParent() {
method setParent (line 336) | public void setParent(TableFilter parent) {
method unionField (line 340) | private String unionField(String field,String key,String Operator){
method getSQL (line 350) | public String getSQL(){
method getOffset (line 411) | public int getOffset() {
method getRowCount (line 416) | public int getRowCount() {
method encodeOrignOrderType (line 420) | public static int encodeOrignOrderType(int index , int orderType) {
method decodeOrderType (line 424) | public static int decodeOrderType(int orignOrderType){
method decodeOrignOrder (line 427) | public static int decodeOrignOrder(int orignOrderType){
method main (line 431) | public static void main(String[] args) {
method toString (line 439) | @Override
FILE: src/main/java/io/mycat/config/Alarms.java
type Alarms (line 31) | public interface Alarms {
FILE: src/main/java/io/mycat/config/Capabilities.java
type Capabilities (line 31) | public interface Capabilities {
FILE: src/main/java/io/mycat/config/ConfigInitializer.java
class ConfigInitializer (line 61) | public class ConfigInitializer {
method ConfigInitializer (line 73) | public ConfigInitializer(boolean loadDataHost) {
method selfChecking0 (line 121) | private void selfChecking0() throws ConfigException {
method testConnection (line 171) | public void testConnection() {
method getSystem (line 221) | public SystemConfig getSystem() {
method getCluster (line 225) | public MycatCluster getCluster() {
method getFirewall (line 229) | public FirewallConfig getFirewall() {
method getUsers (line 233) | public Map<String, UserConfig> getUsers() {
method getSchemas (line 237) | public Map<String, SchemaConfig> getSchemas() {
method getDataNodes (line 241) | public Map<String, PhysicalDBNode> getDataNodes() {
method getDataHosts (line 245) | public Map<String, PhysicalDBPool> getDataHosts() {
method initCobarCluster (line 249) | private MycatCluster initCobarCluster(ConfigLoader configLoader) {
method initDataHosts (line 253) | private Map<String, PhysicalDBPool> initDataHosts(ConfigLoader configL...
method createDataSource (line 270) | private PhysicalDatasource[] createDataSource(DataHostConfig conf,
method getPhysicalDBPool (line 300) | private PhysicalDBPool getPhysicalDBPool(DataHostConfig conf,
method initDataNodes (line 326) | private Map<String, PhysicalDBNode> initDataNodes(ConfigLoader configL...
FILE: src/main/java/io/mycat/config/ErrorCode.java
type ErrorCode (line 29) | public interface ErrorCode {
FILE: src/main/java/io/mycat/config/Fields.java
type Fields (line 31) | public interface Fields {
FILE: src/main/java/io/mycat/config/Isolations.java
type Isolations (line 31) | public interface Isolations {
FILE: src/main/java/io/mycat/config/MycatCluster.java
class MycatCluster (line 36) | public final class MycatCluster {
method MycatCluster (line 41) | public MycatCluster(ClusterConfig clusterConf) {
method getNodes (line 51) | public Map<String, MycatNode> getNodes() {
method getGroups (line 55) | public Map<String, List<String>> getGroups() {
FILE: src/main/java/io/mycat/config/MycatConfig.java
class MycatConfig (line 45) | public class MycatConfig {
method MycatConfig (line 69) | public MycatConfig() {
method getSystem (line 95) | public SystemConfig getSystem() {
method setSocketParams (line 99) | public void setSocketParams(AbstractConnection con, boolean isFrontCha...
method getUsers (line 129) | public Map<String, UserConfig> getUsers() {
method getBackupUsers (line 133) | public Map<String, UserConfig> getBackupUsers() {
method getSchemas (line 137) | public Map<String, SchemaConfig> getSchemas() {
method getBackupSchemas (line 141) | public Map<String, SchemaConfig> getBackupSchemas() {
method getDataNodes (line 145) | public Map<String, PhysicalDBNode> getDataNodes() {
method setDataNodes (line 149) | public void setDataNodes( Map<String, PhysicalDBNode> map) {
method getDataNodeSchemasOfDataHost (line 153) | public String[] getDataNodeSchemasOfDataHost(String dataHost) {
method getBackupDataNodes (line 163) | public Map<String, PhysicalDBNode> getBackupDataNodes() {
method getDataHosts (line 167) | public Map<String, PhysicalDBPool> getDataHosts() {
method getBackupDataHosts (line 171) | public Map<String, PhysicalDBPool> getBackupDataHosts() {
method getCluster (line 175) | public MycatCluster getCluster() {
method getBackupCluster (line 179) | public MycatCluster getBackupCluster() {
method getFirewall (line 183) | public FirewallConfig getFirewall() {
method getBackupFirewall (line 187) | public FirewallConfig getBackupFirewall() {
method getLock (line 191) | public ReentrantLock getLock() {
method getReloadTime (line 195) | public long getReloadTime() {
method getRollbackTime (line 199) | public long getRollbackTime() {
method reload (line 203) | public void reload(
method canRollback (line 217) | public boolean canRollback() {
method rollback (line 227) | public void rollback(
method apply (line 240) | private void apply(Map<String, UserConfig> newUsers,
FILE: src/main/java/io/mycat/config/MycatNode.java
class MycatNode (line 33) | public class MycatNode {
method MycatNode (line 39) | public MycatNode(MycatNodeConfig config) {
method getName (line 44) | public String getName() {
method getConfig (line 48) | public MycatNodeConfig getConfig() {
method isOnline (line 52) | public boolean isOnline() {
FILE: src/main/java/io/mycat/config/MycatPrivileges.java
class MycatPrivileges (line 56) | public class MycatPrivileges implements FrontendPrivileges {
method instance (line 67) | public static MycatPrivileges instance() {
method MycatPrivileges (line 71) | private MycatPrivileges() {
method schemaExists (line 75) | @Override
method userExists (line 81) | @Override
method getPassword (line 87) | @Override
method getUserSchemas (line 102) | @Override
method isReadOnly (line 115) | @Override
method getBenchmark (line 127) | @Override
method checkFirewallWhiteHostPolicy (line 148) | @Override
method checkFirewallSQLPolicy (line 196) | @Override
method checkDmlPrivilege (line 240) | @Override
method checkDataNodeDmlPrivilege (line 342) | @Override
FILE: src/main/java/io/mycat/config/Versions.java
class Versions (line 29) | public abstract class Versions {
method setServerVersion (line 37) | public static void setServerVersion(String version) {
FILE: src/main/java/io/mycat/config/classloader/DynaClassLoader.java
class DynaClassLoader (line 21) | public class DynaClassLoader {
method DynaClassLoader (line 29) | public DynaClassLoader(String extClassHome, int classCheckSeconds) {
method getInstanceofClass (line 39) | public Object getInstanceofClass(String className) throws Exception {
method loadFile (line 71) | private static byte[] loadFile(String path) throws IOException {
method checkChanged (line 89) | private boolean checkChanged(DynaClass dynaClass) throws IOException {
class MyDynaClassLoader (line 106) | class MyDynaClassLoader extends ClassLoader {
method MyDynaClassLoader (line 107) | public MyDynaClassLoader() {
method MyDynaClassLoader (line 110) | public MyDynaClassLoader(ClassLoader parentLoader) {
method loadClass (line 122) | public Class<?> loadClass(String name) throws ClassNotFoundException {
method searchFile (line 165) | private DynaClass searchFile(String classpath, String fileName) thro...
method clearUnUsedClass (line 203) | public void clearUnUsedClass() {
class DynaClass (line 219) | class DynaClass {
method needReloadClass (line 225) | public boolean needReloadClass(long classCheckMilis) {
method clear (line 233) | public void clear() {
method DynaClass (line 239) | public DynaClass(String filePath) {
FILE: src/main/java/io/mycat/config/classloader/JarLoader.java
class JarLoader (line 11) | public class JarLoader {
method unJar (line 13) | public static void unJar(File jarFile, File toDir) throws IOException {
method loadJar (line 49) | public static Class<?> loadJar(String fileName,String mainJavaclass) t...
method fullyDelete (line 113) | public static boolean fullyDelete(File dir) throws IOException {
method fullyDeleteContents (line 124) | public static boolean fullyDeleteContents(File dir) throws IOException {
FILE: src/main/java/io/mycat/config/loader/ConfigLoader.java
type ConfigLoader (line 39) | public interface ConfigLoader {
method getSchemaConfig (line 40) | SchemaConfig getSchemaConfig(String schema);
method getSchemaConfigs (line 42) | Map<String, SchemaConfig> getSchemaConfigs();
method getDataNodes (line 44) | Map<String, DataNodeConfig> getDataNodes();
method getDataHosts (line 46) | Map<String, DataHostConfig> getDataHosts();
method getSystemConfig (line 48) | SystemConfig getSystemConfig();
method getUserConfig (line 50) | UserConfig getUserConfig(String user);
method getUserConfigs (line 52) | Map<String, UserConfig> getUserConfigs();
method getFirewallConfig (line 54) | FirewallConfig getFirewallConfig();
method getClusterConfig (line 56) | ClusterConfig getClusterConfig();
FILE: src/main/java/io/mycat/config/loader/SchemaLoader.java
type SchemaLoader (line 36) | public interface SchemaLoader {
method getTableRules (line 38) | Map<String, TableRuleConfig> getTableRules();
method getDataHosts (line 40) | Map<String, DataHostConfig> getDataHosts();
method getDataNodes (line 42) | Map<String, DataNodeConfig> getDataNodes();
method getSchemas (line 44) | Map<String, SchemaConfig> getSchemas();
FILE: src/main/java/io/mycat/config/loader/console/ZookeeperPath.java
type ZookeeperPath (line 14) | public enum ZookeeperPath {
method ZookeeperPath (line 206) | private ZookeeperPath(String key) {
method getKey (line 210) | public String getKey() {
method setKey (line 214) | public void setKey(String key) {
FILE: src/main/java/io/mycat/config/loader/xml/XMLConfigLoader.java
class XMLConfigLoader (line 41) | public class XMLConfigLoader implements ConfigLoader {
method XMLConfigLoader (line 55) | public XMLConfigLoader(SchemaLoader schemaLoader) {
method getClusterConfig (line 67) | @Override
method getFirewallConfig (line 72) | @Override
method getUserConfig (line 77) | @Override
method getUserConfigs (line 82) | @Override
method getSystemConfig (line 87) | @Override
method getSchemaConfigs (line 91) | @Override
method getDataNodes (line 96) | @Override
method getDataHosts (line 101) | @Override
method getSchemaConfig (line 106) | @Override
FILE: src/main/java/io/mycat/config/loader/xml/XMLRuleLoader.java
class XMLRuleLoader (line 49) | @SuppressWarnings("unchecked")
method XMLRuleLoader (line 58) | public XMLRuleLoader(String ruleFile) {
method XMLRuleLoader (line 67) | public XMLRuleLoader() {
method getTableRules (line 71) | public Map<String, TableRuleConfig> getTableRules() {
method load (line 79) | private void load(String dtdFile, String xmlFile) {
method loadTableRules (line 123) | private void loadTableRules(Element root) throws SQLSyntaxErrorExcepti...
method loadRule (line 160) | private RuleConfig loadRule(Element element) throws SQLSyntaxErrorExce...
method loadFunctions (line 187) | private void loadFunctions(Element root) th
Condensed preview — 1154 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,635K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug-report.md",
"chars": 524,
"preview": "---\nname: Bug report(默认)\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug\nassignees: funnyAnt\n\n---\n\n**1、b"
},
{
"path": ".github/ISSUE_TEMPLATE/new_feture.md",
"chars": 384,
"preview": "---\nname: 功能建议\nabout: Suggest an idea for this project\ntitle: ''\nlabels: enhancement\nassignees: funnyAnt, junwen12221\n\n-"
},
{
"path": ".github/ISSUE_TEMPLATE/others.md",
"chars": 148,
"preview": "---\nname: 其他(如使用方法,配置参数等)\nabout: Describe this issue template's purpose here.\ntitle: ''\nlabels: help wanted\nassignees: '"
},
{
"path": ".gitignore",
"chars": 1660,
"preview": "### Eclipse template\n*.pydevproject\n.metadata\n.gradle\nbin/\ntmp/\n*.tmp\n*.bak\n*.swp\n*~.nib\nlocal.properties\n.settings/\n.lo"
},
{
"path": ".travis.yml",
"chars": 48,
"preview": "language: java\njdk:\n - openjdk7\n - oraclejdk7\n"
},
{
"path": ".vscode/launch.json",
"chars": 675,
"preview": "{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n"
},
{
"path": ".vscode/settings.json",
"chars": 86,
"preview": "{\n \"java.format.settings.url\": \"${workspaceFolder}/eclipse-java-google-style.xml\"\n}"
},
{
"path": "Dockerfile",
"chars": 367,
"preview": "FROM docker.io/adoptopenjdk/openjdk8:latest\n\nADD http://dl.mycat.io/1.6.6.1/Mycat-server-1.6.6.1-release-20180908155252-"
},
{
"path": "LICENSE",
"chars": 18046,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "README.md",
"chars": 15501,
"preview": "\n# Mycat1\n\n官网: http://mycatone.top\n\n\n[gitee](https://gitee.com/MycatOne/Mycat-Server)\n[github](https://github.com/MyCAT"
},
{
"path": "README_Chinese.md",
"chars": 1804,
"preview": "### Mycat介绍\n\n### 官网:[http://www.mycat.org.cn](http://www.mycat.org.cn)\n\n### github:[https://github.com/MyCATApache](http"
},
{
"path": "catlet/readme.txt",
"chars": 48,
"preview": "put your customer Catlet class files in this dir"
},
{
"path": "eclipse-java-google-style.xml",
"chars": 36341,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n<profiles version=\"13\">\r\n<profile kind=\"CodeFormatterProfile\" na"
},
{
"path": "intellij-java-google-style.xml",
"chars": 22608,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<code_scheme name=\"GoogleStyle\">\r\n <option name=\"OTHER_INDENT_OPTIONS\">\r\n <v"
},
{
"path": "pom.xml",
"chars": 18190,
"preview": "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\t\t xsi:schemaLo"
},
{
"path": "src/main/assembly/assembly-linux.xml",
"chars": 2394,
"preview": "<assembly\n\txmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n\txmlns:xsi=\"http://www.w3.org/20"
},
{
"path": "src/main/assembly/assembly-mac.xml",
"chars": 2445,
"preview": "<assembly\n\txmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n\txmlns:xsi=\"http://www.w3.org/20"
},
{
"path": "src/main/assembly/assembly-solaris.xml",
"chars": 2451,
"preview": "<assembly\n\txmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n\txmlns:xsi=\"http://www.w3.org/20"
},
{
"path": "src/main/assembly/assembly-testtool.xml",
"chars": 1311,
"preview": "<assembly\n\txmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n\txmlns:xsi=\"http://www.w3.org/20"
},
{
"path": "src/main/assembly/assembly-unix.xml",
"chars": 2470,
"preview": "<assembly\n\txmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n\txmlns:xsi=\"http://www.w3.org/20"
},
{
"path": "src/main/assembly/assembly-win.xml",
"chars": 2507,
"preview": "<assembly\n\txmlns=\"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2\"\n\txmlns:xsi=\"http://www.w3.org/20"
},
{
"path": "src/main/assembly/conf/log4j2.xml",
"chars": 1253,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Configuration status=\"WARN\">\n <Appenders>\n <Console name=\"Console\" tar"
},
{
"path": "src/main/assembly/testtool/test_globalseq_insert_perf.bat",
"chars": 596,
"preview": "\nREM check JAVA_HOME & java\nset \"JAVA_CMD=\"%JAVA_HOME%/bin/java\"\"\nif \"%JAVA_HOME%\" == \"\" goto noJavaHome\nif exist \"%JAVA"
},
{
"path": "src/main/assembly/testtool/test_globaltable_insert_perf.bat",
"chars": 605,
"preview": "\nREM check JAVA_HOME & java\nset \"JAVA_CMD=%JAVA_HOME%/bin/java\"\nif \"%JAVA_HOME%\" == \"\" goto noJavaHome\nif exist \"%JAVA_H"
},
{
"path": "src/main/assembly/testtool/test_globaltable_insert_perf.sh",
"chars": 596,
"preview": "#!/bin/bash\n\necho \"check JAVA_HOME & java\"\nJAVA_CMD=$JAVA_HOME/bin/java\nMAIN_CLASS=io.mycat.performance.TestGlobalTableI"
},
{
"path": "src/main/assembly/testtool/test_stand_insert_perf.bat",
"chars": 594,
"preview": "\nREM check JAVA_HOME & java\nset \"JAVA_CMD=%JAVA_HOME%/bin/java\"\nif \"%JAVA_HOME%\" == \"\" goto noJavaHome\nif exist \"%JAVA_H"
},
{
"path": "src/main/assembly/testtool/test_stand_insert_perf.sh",
"chars": 585,
"preview": "#!/bin/bash\n\necho \"check JAVA_HOME & java\"\nJAVA_CMD=$JAVA_HOME/bin/java\nMAIN_CLASS=io.mycat.performance.TestInsertPerf\ni"
},
{
"path": "src/main/assembly/testtool/test_stand_merge_sel_perf.bat",
"chars": 605,
"preview": "\nREM check JAVA_HOME & java\nset \"JAVA_CMD=%JAVA_HOME%/bin/java\"\nif \"%JAVA_HOME%\" == \"\" goto noJavaHome\nif exist \"%JAVA_H"
},
{
"path": "src/main/assembly/testtool/test_stand_merge_sel_perf.sh",
"chars": 596,
"preview": "#!/bin/bash\n\necho \"check JAVA_HOME & java\"\nJAVA_CMD=$JAVA_HOME/bin/java\nMAIN_CLASS=io.mycat.performance.TestMergeSelectP"
},
{
"path": "src/main/assembly/testtool/test_stand_select_perf.bat",
"chars": 607,
"preview": "\nREM check JAVA_HOME & java\nset \"JAVA_CMD=%JAVA_HOME%/bin/java\"\nif \"%JAVA_HOME%\" == \"\" goto noJavaHome\nif exist \"%JAVA_H"
},
{
"path": "src/main/assembly/testtool/test_stand_select_perf.sh",
"chars": 597,
"preview": "#!/bin/bash\n\necho \"check JAVA_HOME & java\"\nJAVA_CMD=$JAVA_HOME/bin/java\nMAIN_CLASS=io.mycat.performance.TestSelectPerf\ni"
},
{
"path": "src/main/assembly/testtool/test_stand_update_perf.bat",
"chars": 606,
"preview": "\nREM check JAVA_HOME & java\nset \"JAVA_CMD=%JAVA_HOME%/bin/java\"\nif \"%JAVA_HOME%\" == \"\" goto noJavaHome\nif exist \"%JAVA_H"
},
{
"path": "src/main/assembly/testtool/test_stand_update_perf.sh",
"chars": 597,
"preview": "#!/bin/bash\n\necho \"check JAVA_HOME & java\"\nJAVA_CMD=$JAVA_HOME/bin/java\nMAIN_CLASS=io.mycat.performance.TestUpdatePerf\ni"
},
{
"path": "src/main/java/io/mycat/MycatServer.java",
"chars": 45039,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/MycatShutdown.java",
"chars": 1320,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/MycatStartup.java",
"chars": 2434,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/BackendConnection.java",
"chars": 1649,
"preview": "package io.mycat.backend;\n\nimport java.io.IOException;\nimport java.io.UnsupportedEncodingException;\n\nimport io.mycat.bac"
},
{
"path": "src/main/java/io/mycat/backend/ConMap.java",
"chars": 5089,
"preview": "package io.mycat.backend;\n\nimport java.util.Collection;\nimport java.util.Iterator;\nimport java.util.Map.Entry;\nimport ja"
},
{
"path": "src/main/java/io/mycat/backend/ConQueue.java",
"chars": 2274,
"preview": "package io.mycat.backend;\n\nimport java.util.ArrayList;\nimport java.util.concurrent.ConcurrentLinkedQueue;\n\npublic class "
},
{
"path": "src/main/java/io/mycat/backend/ConnectionMeta.java",
"chars": 2591,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/datasource/PhysicalDBNode.java",
"chars": 5718,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/datasource/PhysicalDBPool.java",
"chars": 23615,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/datasource/PhysicalDatasource.java",
"chars": 19265,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/ConsistenCollectHandler.java",
"chars": 6937,
"preview": "package io.mycat.backend.heartbeat;\n\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.HashMap;\n"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/DBHeartbeat.java",
"chars": 4747,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/MySQLConsistencyChecker.java",
"chars": 7150,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/MySQLConsistencyCheckerHandler.java",
"chars": 5669,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/MySQLConsistencyHelper.java",
"chars": 4654,
"preview": "/*\r\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\r\n * DO NOT ALTER OR REMOVE COPY"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/MySQLDetector.java",
"chars": 8423,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/MySQLHeartbeat.java",
"chars": 9831,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/zkprocess/ManageHeartBeatChange.java",
"chars": 10865,
"preview": "package io.mycat.backend.heartbeat.zkprocess;\n\nimport java.io.ByteArrayInputStream;\nimport java.util.Collection;\nimport "
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/zkprocess/MycatLeaderLatch.java",
"chars": 5070,
"preview": "package io.mycat.backend.heartbeat.zkprocess;\n\n\n/**\n * 重定义的leaderLatch 因为curator的选举存在着丢包的情况.\n* 源文件名:MyLeaderLatch.java\n*"
},
{
"path": "src/main/java/io/mycat/backend/heartbeat/zkprocess/SwitchStatueToZK.java",
"chars": 2498,
"preview": "package io.mycat.backend.heartbeat.zkprocess;\n\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\nim"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/JDBCConnection.java",
"chars": 28979,
"preview": "package io.mycat.backend.jdbc;\n\nimport java.io.IOException;\nimport java.io.UnsupportedEncodingException;\nimport java.mat"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/JDBCDatasource.java",
"chars": 4125,
"preview": "package io.mycat.backend.jdbc;\n\nimport java.io.IOException;\nimport java.sql.Connection;\nimport java.sql.DriverManager;\ni"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/JDBCHeartbeat.java",
"chars": 6975,
"preview": "package io.mycat.backend.jdbc;\n\nimport io.mycat.backend.datasource.PhysicalDBPool;\nimport io.mycat.backend.datasource.Ph"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/ShowVariables.java",
"chars": 6869,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/DriverPropertyInfoHelper.java",
"chars": 2805,
"preview": "package io.mycat.backend.jdbc.mongodb;\r\n\r\nimport java.sql.DriverPropertyInfo;\r\nimport java.util.ArrayList;\r\n\r\n\r\npublic c"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoClientPropertyHelper.java",
"chars": 850,
"preview": "package io.mycat.backend.jdbc.mongodb;\n\n\nimport com.google.common.base.Joiner;\n\nimport java.util.ArrayList;\nimport java."
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoConnection.java",
"chars": 8357,
"preview": "package io.mycat.backend.jdbc.mongodb;\n\nimport java.net.UnknownHostException;\nimport java.sql.Array;\nimport java.sql.Blo"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoData.java",
"chars": 2853,
"preview": "package io.mycat.backend.jdbc.mongodb;\r\n\r\nimport java.sql.Date;\r\nimport java.sql.Time;\r\nimport java.sql.Timestamp;\r\nimpo"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoDriver.java",
"chars": 2740,
"preview": "package io.mycat.backend.jdbc.mongodb;\n\nimport java.sql.Connection;\nimport java.sql.Driver;\nimport java.sql.DriverManage"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoEmbeddedObjectProcessor.java",
"chars": 9252,
"preview": "package io.mycat.backend.jdbc.mongodb;\n\nimport com.mongodb.BasicDBList;\nimport com.mongodb.BasicDBObject;\nimport org.bso"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoPreparedStatement.java",
"chars": 7950,
"preview": "package io.mycat.backend.jdbc.mongodb;\r\n\r\nimport java.io.InputStream;\r\nimport java.io.Reader;\r\nimport java.math.BigDecim"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoResultSet.java",
"chars": 25525,
"preview": "package io.mycat.backend.jdbc.mongodb;\n\nimport com.mongodb.BasicDBList;\nimport com.mongodb.DBCursor;\nimport com.mongodb."
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoResultSetMetaData.java",
"chars": 4024,
"preview": "package io.mycat.backend.jdbc.mongodb;\r\n\r\nimport java.sql.ResultSetMetaData;\r\nimport java.sql.SQLException;\r\nimport java"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoSQLException.java",
"chars": 366,
"preview": "package io.mycat.backend.jdbc.mongodb;\n\nimport java.sql.SQLException;\n\n@SuppressWarnings(\"serial\")\npublic class MongoSQL"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoSQLParser.java",
"chars": 15508,
"preview": "package io.mycat.backend.jdbc.mongodb;\r\n\r\n\r\n\r\nimport java.sql.Types;\r\nimport java.util.List;\r\n\r\n\r\nimport com.mongodb.*;\r"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/MongoStatement.java",
"chars": 6838,
"preview": "package io.mycat.backend.jdbc.mongodb;\n\nimport com.mongodb.DBCursor;\n\nimport java.sql.Connection;\nimport java.sql.Result"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/mongodb/StringUtils.java",
"chars": 414,
"preview": "package io.mycat.backend.jdbc.mongodb;\r\n\r\n\r\npublic class StringUtils {\r\n\t\r\n\r\n\tpublic static boolean startsWithIgnoreCase"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/DriverPropertyInfoHelper.java",
"chars": 2807,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\r\n\r\nimport java.sql.DriverPropertyInfo;\r\nimport java.util.ArrayList;\r\n\r\n\r\npublic"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaConnection.java",
"chars": 8689,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\n\nimport java.net.UnknownHostException;\nimport java.sql.Array;\nimport java.sql.B"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaData.java",
"chars": 2870,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\r\n\r\nimport java.sql.Date;\r\nimport java.sql.Time;\r\nimport java.sql.Timestamp;\r\nim"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaDriver.java",
"chars": 2967,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\n\nimport java.sql.Connection;\nimport java.sql.Driver;\nimport java.sql.DriverMana"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaPreparedStatement.java",
"chars": 7966,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\r\n\r\nimport java.io.InputStream;\r\nimport java.io.Reader;\r\nimport java.math.BigDec"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaResultSet.java",
"chars": 25221,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\n\n\nimport com.sequoiadb.base.DBCursor;\nimport org.bson.BSONObject;\nimport org.bs"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaResultSetMetaData.java",
"chars": 3981,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\r\n\r\nimport java.sql.ResultSetMetaData;\r\nimport java.sql.SQLException;\r\nimport ja"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaSQLException.java",
"chars": 374,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\n\nimport java.sql.SQLException;\n\n@SuppressWarnings(\"serial\")\npublic class Sequoi"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaSQLParser.java",
"chars": 13965,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\r\n\r\n\r\n\r\nimport java.sql.Types;\r\nimport java.util.List;\r\n\r\n\r\nimport org.slf4j.Log"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/SequoiaStatement.java",
"chars": 6880,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\n\nimport java.sql.Connection;\nimport java.sql.ResultSet;\nimport java.sql.SQLExce"
},
{
"path": "src/main/java/io/mycat/backend/jdbc/sequoiadb/StringUtils.java",
"chars": 416,
"preview": "package io.mycat.backend.jdbc.sequoiadb;\r\n\r\n\r\npublic class StringUtils {\r\n\t\r\n\r\n\tpublic static boolean startsWithIgnoreCa"
},
{
"path": "src/main/java/io/mycat/backend/loadbalance/LeastActiveLoadBalance.java",
"chars": 3347,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/loadbalance/LoadBalance.java",
"chars": 1347,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/loadbalance/RandomLoadBalance.java",
"chars": 2400,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/loadbalance/WeightedRoundRobinLoadBalance.java",
"chars": 3822,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/BindValue.java",
"chars": 2124,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/BindValueUtil.java",
"chars": 3618,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/BufferUtil.java",
"chars": 4793,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/ByteUtil.java",
"chars": 3692,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/CharsetUtil.java",
"chars": 3309,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/DataType.java",
"chars": 308,
"preview": "package io.mycat.backend.mysql;\n\n/**\n * 定义返回的数据类型\n * @author huangyiming\n *\n */\npublic enum DataType {\n\n\tSTRING(\"String"
},
{
"path": "src/main/java/io/mycat/backend/mysql/LoadDataUtil.java",
"chars": 3188,
"preview": "package io.mycat.backend.mysql;\n\nimport java.io.*;\nimport java.util.List;\n\nimport io.mycat.MycatServer;\nimport io.mycat."
},
{
"path": "src/main/java/io/mycat/backend/mysql/MySQLMessage.java",
"chars": 10483,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/PacketUtil.java",
"chars": 3266,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/PreparedStatement.java",
"chars": 5769,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/SecurityUtil.java",
"chars": 3499,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/StreamUtil.java",
"chars": 7647,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/listener/DefaultSqlExecuteStageListener.java",
"chars": 1525,
"preview": "package io.mycat.backend.mysql.listener;\r\n\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\nimport io.mycat"
},
{
"path": "src/main/java/io/mycat/backend/mysql/listener/SqlExecuteStage.java",
"chars": 125,
"preview": "package io.mycat.backend.mysql.listener;\r\n\r\npublic enum SqlExecuteStage {\r\n READ, PARSE, ROUTE, EXECUTE, MERGE, END\r\n"
},
{
"path": "src/main/java/io/mycat/backend/mysql/listener/SqlExecuteStageListener.java",
"chars": 256,
"preview": "package io.mycat.backend.mysql.listener;\r\n\r\n/**\r\n * 定义sql各个执行阶段(读取,解析,路由,执行,完成)监听事件,比如写日志,写执行统计\r\n * @author funnyAnt 202"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/MySQLConnection.java",
"chars": 24243,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/MySQLConnectionAuthenticator.java",
"chars": 4612,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/MySQLConnectionFactory.java",
"chars": 2715,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/MySQLConnectionHandler.java",
"chars": 8856,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/MySQLDataSource.java",
"chars": 6830,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/CommitNodeHandler.java",
"chars": 6856,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/ConnectionHeartBeatHandler.java",
"chars": 4957,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/DelegateResponseHandler.java",
"chars": 2724,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/FetchStoreNodeOfChildTableHandler.java",
"chars": 8978,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/GetConnectionHandler.java",
"chars": 3252,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/JDBCFetchStoreNodeOfChildTableHandler.java",
"chars": 2896,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport io.mycat.MycatServer;\nimport io.mycat.backend.datasource.PhysicalDBN"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/KillConnectionHandler.java",
"chars": 3815,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/LoadDataResponseHandler.java",
"chars": 282,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport io.mycat.backend.BackendConnection;\n\n/**\n * Created by nange on 2015"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/LockTablesHandler.java",
"chars": 3782,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.concurr"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/MiddlerQueryResultHandler.java",
"chars": 974,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.alibaba.drui"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/MiddlerResultHandler.java",
"chars": 374,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport java.util.List;\n\nimport com.alibaba.druid.sql.ast.expr.SQLCharExpr;\n"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeCoordinator.java",
"chars": 15315,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport java.util.List;\nimport java.util.concurrent.atomic.AtomicBoolean;\nim"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeHandler.java",
"chars": 7054,
"preview": "/*\r\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\r\n * DO NOT ALTER OR REMOVE COPY"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeQueryHandler.java",
"chars": 34945,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/NewConnectionRespHandler.java",
"chars": 2658,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/PrepareRequestHandler.java",
"chars": 11287,
"preview": "package io.mycat.backend.mysql.nio.handler;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.slf4j.L"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/ResponseHandler.java",
"chars": 2124,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/RollbackNodeHandler.java",
"chars": 9355,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/RollbackReleaseHandler.java",
"chars": 2454,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/SecondHandler.java",
"chars": 192,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport java.util.List;\n\n/**\n * 查询分解后的第二部处理\n * @author huangyiming\n *\n */\npu"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/SecondQueryHandler.java",
"chars": 406,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport java.util.List;\n\npublic class SecondQueryHandler implements SecondHa"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/SimpleLogHandler.java",
"chars": 3137,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/SingleNodeHandler.java",
"chars": 18137,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/Terminatable.java",
"chars": 1243,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/nio/handler/UnLockTablesHandler.java",
"chars": 3987,
"preview": "package io.mycat.backend.mysql.nio.handler;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\nimport "
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/CoordinatorLogEntry.java",
"chars": 1344,
"preview": "package io.mycat.backend.mysql.xa;\n\nimport io.mycat.util.TimeUtil;\n\nimport java.io.Serializable;\n\n/**\n * Created by zhan"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/Deserializer.java",
"chars": 4178,
"preview": "package io.mycat.backend.mysql.xa;\n\nimport io.mycat.backend.mysql.xa.recovery.DeserialisationException;\n\nimport java.uti"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/LogFileLock.java",
"chars": 2578,
"preview": "package io.mycat.backend.mysql.xa;\n\nimport io.mycat.backend.mysql.xa.recovery.LogException;\nimport org.slf4j.Logger;\nimp"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/ParticipantLogEntry.java",
"chars": 1789,
"preview": "package io.mycat.backend.mysql.xa;\n\nimport java.io.Serializable;\n\n/**\n * Created by zhangchao on 2016/10/17.\n */\npublic "
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/Serializer.java",
"chars": 2928,
"preview": "package io.mycat.backend.mysql.xa;\n\n/**\n * Created by zhangchao on 2016/10/17.\n */\npublic class Serializer {\n private"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/TxState.java",
"chars": 506,
"preview": "package io.mycat.backend.mysql.xa;\n\n/**\n * Created by zhangchao on 2016/10/13.\n */\npublic class TxState {\n /** XA INI"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/VersionedFile.java",
"chars": 7579,
"preview": "package io.mycat.backend.mysql.xa;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.FileNotFoundExce"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/XACommitCallback.java",
"chars": 2785,
"preview": "\npackage io.mycat.backend.mysql.xa;\n\nimport io.mycat.backend.mysql.nio.handler.MultiNodeCoordinator;\nimport io.mycat.sql"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/XARollbackCallback.java",
"chars": 2777,
"preview": "package io.mycat.backend.mysql.xa;\n\nimport io.mycat.backend.mysql.nio.handler.MultiNodeCoordinator;\nimport io.mycat.sqle"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/recovery/DeserialisationException.java",
"chars": 308,
"preview": "package io.mycat.backend.mysql.xa.recovery;\n\n/**\n * Created by zhangchao on 2016/10/17.\n */\npublic class Deserialisation"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/recovery/LogException.java",
"chars": 407,
"preview": "package io.mycat.backend.mysql.xa.recovery;\n\n/**\n * Created by zhangchao on 2016/10/13.\n */\npublic class LogException ex"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/recovery/LogReadException.java",
"chars": 429,
"preview": "package io.mycat.backend.mysql.xa.recovery;\n\n/**\n * Created by zhangchao on 2016/10/17.\n */\npublic class LogReadExceptio"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/recovery/LogWriteException.java",
"chars": 353,
"preview": "package io.mycat.backend.mysql.xa.recovery;\n\n/**\n * Created by zhangchao on 2016/10/17.\n */\npublic class LogWriteExcepti"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/recovery/Repository.java",
"chars": 607,
"preview": "package io.mycat.backend.mysql.xa.recovery;\n\nimport io.mycat.backend.mysql.xa.CoordinatorLogEntry;\n\nimport java.util.Col"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/recovery/impl/FileSystemRepository.java",
"chars": 9507,
"preview": "package io.mycat.backend.mysql.xa.recovery.impl;\n\nimport java.io.BufferedReader;\nimport java.io.EOFException;\nimport jav"
},
{
"path": "src/main/java/io/mycat/backend/mysql/xa/recovery/impl/InMemoryRepository.java",
"chars": 3181,
"preview": "package io.mycat.backend.mysql.xa.recovery.impl;\n\nimport io.mycat.backend.mysql.nio.handler.MultiNodeCoordinator;\nimport"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/PostgreSQLBackendConnection.java",
"chars": 15194,
"preview": "package io.mycat.backend.postgresql;\n\nimport java.io.IOException;\nimport java.io.UnsupportedEncodingException;\nimport ja"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/PostgreSQLBackendConnectionFactory.java",
"chars": 1726,
"preview": "package io.mycat.backend.postgresql;\n\nimport io.mycat.MycatServer;\nimport io.mycat.backend.mysql.nio.handler.ResponseHan"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/PostgreSQLBackendConnectionHandler.java",
"chars": 12595,
"preview": "package io.mycat.backend.postgresql;\n\nimport io.mycat.MycatServer;\nimport io.mycat.backend.mysql.nio.handler.ResponseHan"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/PostgreSQLDataSource.java",
"chars": 1162,
"preview": "package io.mycat.backend.postgresql;\n\nimport io.mycat.backend.datasource.PhysicalDatasource;\nimport io.mycat.backend.hea"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/heartbeat/PostgreSQLDetector.java",
"chars": 4051,
"preview": "package io.mycat.backend.postgresql.heartbeat;\n\nimport io.mycat.backend.datasource.PhysicalDBPool;\nimport io.mycat.backe"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/heartbeat/PostgreSQLHeartbeat.java",
"chars": 7013,
"preview": "package io.mycat.backend.postgresql.heartbeat;\r\n\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport jav"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/package-info.java",
"chars": 844,
"preview": "/**\r\n * @author Coollf\r\n *\r\n */\r\npackage io.mycat.backend.postgresql;\r\n/*\r\n\r\npostgresql mycat 相关支持\r\n\r\nconfig demo\r\n====="
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/AuthenticationPacket.java",
"chars": 1940,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/BackendKeyData.java",
"chars": 1364,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\n/**\r\n * 后端数据包信息\r\n * \r\n * @author Coollf\r\n "
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/Bind.java",
"chars": 3163,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\n\r\n\r\n//\t\tBind (F)\r\n//\t\tByte1('B')\r\n//\t\t标识该信息是一个绑定命令。\r\n//\t\t\r\n//\t\tInt32\r\n//\t"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/BindComplete.java",
"chars": 917,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/CancelRequest.java",
"chars": 1033,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/CommandComplete.java",
"chars": 3281,
"preview": "package io.mycat.backend.postgresql.packet;\n\nimport java.nio.ByteBuffer;\n\nimport io.mycat.backend.postgresql.utils.PIOUt"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/CopyInResponse.java",
"chars": 2259,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n//\t\tCopyInResponse (B)\r\n//\t\tByte1('G')\r\n//\t\t"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/CopyOutResponse.java",
"chars": 2221,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/DataRow.java",
"chars": 2723,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/EmptyQueryResponse.java",
"chars": 1020,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/ErrorResponse.java",
"chars": 1556,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.io.UnsupportedEncodingException;\r\nimport java.nio.ByteBuffer;"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/NoticeResponse.java",
"chars": 1113,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\npublic class NoticeResponse extends Postgr"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/NotificationResponse.java",
"chars": 552,
"preview": "package io.mycat.backend.postgresql.packet;\r\n//\t\tNotificationResponse (B)\r\n//\t\tByte1('A')\r\n//\t\t标识这条消息是一个通知响应。\r\n//\t\t\r\n//\t"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/ParameterDescription.java",
"chars": 300,
"preview": "package io.mycat.backend.postgresql.packet;\r\n//\t\tParameterDescription (B)\r\n//\t\tByte1('t')\r\n//\t\t标识消息是一个参数描述。\r\n//\t\t\r\n//\t\tI"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/ParameterStatus.java",
"chars": 1112,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\npublic class ParameterStatus extends Postg"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/Parse.java",
"chars": 1730,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.io.IOException;\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.myc"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/ParseComplete.java",
"chars": 767,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/PasswordMessage.java",
"chars": 1161,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.io.UnsupportedEncodingException;\r\nimport java.nio.ByteBuffer;"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/PostgreSQLPacket.java",
"chars": 4379,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.charset.Charset;\r\n\r\npublic abstract class PostgreSQLPacke"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/Query.java",
"chars": 856,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\nimport io.mycat.backend.postgresql.utils.P"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/ReadyForQuery.java",
"chars": 1972,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n\r\n/***\r\n * 等待查询包\r\n * \r\n * @author Coollf\r\n *"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/RowDescription.java",
"chars": 4613,
"preview": "package io.mycat.backend.postgresql.packet;\n\nimport java.io.IOException;\nimport java.nio.ByteBuffer;\n\nimport io.mycat.ba"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/SSLRequest.java",
"chars": 240,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\n//\t\tSSLRequest (F)\r\n//\t\tInt32(8)\r\n//\t\t以字节记的消息内容的长度,包括长度本身。\r\n//\t\t\r\n//\t\tInt"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/StartupMessage.java",
"chars": 409,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.util.List;\r\n\r\npublic class StartupMessage extends PostgreSQLP"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/packet/Terminate.java",
"chars": 657,
"preview": "package io.mycat.backend.postgresql.packet;\r\n\r\nimport java.nio.ByteBuffer;\r\n//\t\r\n//\tTerminate (F)\r\n//\tByte1('X')\r\n//\t标识消"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/utils/MD5Digest.java",
"chars": 2270,
"preview": "/*-------------------------------------------------------------------------\n*\n* Copyright (c) 2003-2014, PostgreSQL Glob"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/utils/PIOUtils.java",
"chars": 2876,
"preview": "package io.mycat.backend.postgresql.utils;\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport jav"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/utils/PacketUtils.java",
"chars": 6402,
"preview": "package io.mycat.backend.postgresql.utils;\n\nimport java.io.IOException;\nimport java.nio.ByteBuffer;\nimport java.util.Arr"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/utils/PgPacketApaterUtils.java",
"chars": 2051,
"preview": "package io.mycat.backend.postgresql.utils;\n\nimport io.mycat.backend.postgresql.packet.DataRow;\nimport io.mycat.backend.p"
},
{
"path": "src/main/java/io/mycat/backend/postgresql/utils/PgSqlApaterUtils.java",
"chars": 5163,
"preview": "package io.mycat.backend.postgresql.utils;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;"
},
{
"path": "src/main/java/io/mycat/buffer/BufferArray.java",
"chars": 3631,
"preview": "package io.mycat.buffer;\n\nimport io.mycat.util.ByteBufferUtil;\n\nimport java.nio.ByteBuffer;\nimport java.util.Collections"
},
{
"path": "src/main/java/io/mycat/buffer/BufferPool.java",
"chars": 568,
"preview": "package io.mycat.buffer;\n\nimport java.nio.ByteBuffer;\nimport java.util.concurrent.ConcurrentHashMap;\n\n/**\n * 缓冲池\n *\n * @"
},
{
"path": "src/main/java/io/mycat/buffer/ByteBufferArena.java",
"chars": 6705,
"preview": "package io.mycat.buffer;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport java.nio.ByteBuffer;\nimport j"
},
{
"path": "src/main/java/io/mycat/buffer/ByteBufferChunk.java",
"chars": 8268,
"preview": "package io.mycat.buffer;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport sun.nio.ch.DirectBuffer;\n\nimpo"
},
{
"path": "src/main/java/io/mycat/buffer/ByteBufferChunkList.java",
"chars": 3096,
"preview": "package io.mycat.buffer;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport java.nio.ByteBuffer;\nimport j"
},
{
"path": "src/main/java/io/mycat/buffer/ByteBufferPage.java",
"chars": 4612,
"preview": "package io.mycat.buffer;\n\nimport java.nio.ByteBuffer;\nimport java.util.BitSet;\nimport java.util.concurrent.ConcurrentHas"
},
{
"path": "src/main/java/io/mycat/buffer/DirectByteBufferPool.java",
"chars": 5702,
"preview": "package io.mycat.buffer;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport sun.nio.ch.DirectBuffer;\n\nimpo"
},
{
"path": "src/main/java/io/mycat/buffer/MyCatMemoryAllocator.java",
"chars": 5296,
"preview": "package io.mycat.buffer;\n\nimport com.google.common.util.concurrent.ThreadFactoryBuilder;\nimport io.netty.buffer.ByteBuf;"
},
{
"path": "src/main/java/io/mycat/buffer/NettyBufferPool.java",
"chars": 3203,
"preview": "package io.mycat.buffer;\n\n\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.PoolArenaMetric;\nimport io.netty.buffe"
},
{
"path": "src/main/java/io/mycat/cache/CachePool.java",
"chars": 1449,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/cache/CachePoolFactory.java",
"chars": 1467,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/cache/CacheService.java",
"chars": 6114,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/cache/CacheStatic.java",
"chars": 3319,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/cache/DefaultLayedCachePool.java",
"chars": 5347,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/cache/LayerCachePool.java",
"chars": 1579,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/cache/MysqlDataSetCache.java",
"chars": 2941,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
},
{
"path": "src/main/java/io/mycat/cache/MysqlDataSetService.java",
"chars": 2808,
"preview": "/*\n * Copyright (c) 2020, OpenCloudDB/MyCAT and/or its affiliates. All rights reserved.\n * DO NOT ALTER OR REMOVE COPYRI"
}
]
// ... and 954 more files (download for full content)
About this extraction
This page contains the full source code of the MyCATApache/Mycat-Server GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1154 files (4.9 MB), approximately 1.4M tokens, and a symbol index with 9277 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.