5.1.0
New feature
- Support SQL hint
- New DistSQL syntax: SHOW AUTHORITY RULE
- New DistSQL syntax: SHOW TRANSACTION RULE
- New DistSQL syntax: ALTER TRANSACTION RULE
- New DistSQL syntax: SHOW SQL_PARSER RULE
- New DistSQL syntax: ALTER SQL_PARSER RULE
- New DistSQL syntax: ALTER DEFAULT SHARDING STRATEGY
- New DistSQL syntax: DROP DEFAULT SHARDING STRATEGY
- New DistSQL syntax: CREATE DEFAULT SINGLE TABLE RULE
- New DistSQL syntax: SHOW SINGLE TABLES
- New DistSQL syntax: SHOW SINGLE TABLE RULES
- New DistSQL syntax: SHOW SHARDING TABLE NODES
- New DistSQL syntax: CREATE/ALTER/DROP SHARDING KEY GENERATOR
- New DistSQL syntax: SHOW SHARDING KEY GENERATORS
- New DistSQL syntax: REFRESH TABLE METADATA
- New DistSQL syntax: PARSE SQL, Output the abstract syntax tree obtained by parsing SQL
- New DistSQL syntax: SHOW UNUSED SHARDING ALGORITHMS
- New DistSQL syntax: SHOW UNUSED SHARDING KEY GENERATORS
- New DistSQL syntax: CREATE/DROP SHARDING SCALING RULE
- New DistSQL syntax: ENABLE/DISABLE SHARDING SCALING RULE
- New DistSQL syntax: SHOW SHARDING SCALING RULES
- New DistSQL syntax: SHOW INSTANCE MODE
- New DistSQL syntax: COUNT SCHEMA RULES
- Scaling: Add
rateLimiter
configuration andQPS
TPS
implementation - Scaling: Add
DATA_MATCH
data consistency check - Scaling: Add
batchSize
configuration to avoid possible OOME - Scaling: Add
streamChannel
configuration andMEMORY
implementation - Scaling: Support MySQL BINARY data type
- Scaling: Support MySQL YEAR data type
- Scaling: Support PostgreSQL BIT data type
- Scaling: Support PostgreSQL MONEY data type
- Database discovery adds support for JDBC Spring Boot
- Database discovery adds support for JDBC Spring Namespace
- Database discovery adds support for openGauss
- Shadow DB adds support for logical data source transfer
- Add data type validator for column matching shadow algorithm
- Add support for xa start/end/prepare/commit/recover in encrypt case with only one data source
API Change
- Redesign the database discovery related DistSQL syntax
- In DistSQL, the keyword GENERATED_KEY is adjusted to KEY_GENERATE_STRATEGY
- Native authority provider is marked as deprecated and will be removed in a future version
- Scaling: Move scaling configuration from server.yaml to config-sharding.yaml
- Scaling: Rename clusterAutoSwitchAlgorithm SPI to completionDetector and refactor method parameter
- Scaling: Data consistency check API method rename and return type change
- Database discovery module API refactoring
- Readwrite-splitting supports static and dynamic configuration
- Shadow DB remove the enable configuration
- Shadow algorithm type modified
Enhancement
- Improve load multi single table performance
- Remove automatically added order by primary key clause
- Optimize binding table route logic without sharding column in join condition
- Support update sharding key when the sharding routing result keep the same
- Optimize rewrite engine performance
- Support select union/union all ... statements by federation engine
- Support insert on duplicate key update sharding column when route context keep same
- Use union all to merge sql route units for simple select to improve performance
- Supports autocommit in ShardingSphere-Proxy
- ShardingSphere openGauss Proxy supports sha256 authentication method
- Remove property java.net.preferIPv4Stack=true from Proxy startup script
- Remove the verification of null rules for JDBC
- Optimize performance of executing openGauss batch bind
- Disable Netty resource leak detector by default
- Supports describe prepared statement in PostgreSQL / openGauss Proxy
- Optimize performance of executing PostgreSQL batched inserts
- Add instance_id to the result of SHOW INSTANCE LIST
- Support to use instance_id to perform operations when enable/disable a proxy instance
- Support auto creative algorithm when
CREATE SHARDING TABLE RULE
, reducing the steps of creating rule - Support specifying an existing KeyGenerator when CREATE SHARDING TABLE RULE
- DROP DATABASE supports IF EXISTS option
- DATANODES in SHARDING TABLE RULE supports enumerated inline expressions
- CREATE/ALTER SHARDING TABLE RULE supports complex sharding algorithm
- SHOW SHARDING TABLE NODES supports non-inline scenarios (range, time, etc.)
- When there is only one read data source in the readwrite-splitting rule, it is not allowed to be disabled
- Scaling: Add basic support of chunked streaming data consistency check
- Shadow algorithm decision logic optimization to improve performance
Refactor
- Refactor federation engine scan table logic
- Avoid duplicated TCL SQL parsing when executing prepared statement in Proxy
- Scaling: Add pipeline modules to redesign scaling
- Scaling: Refactor several job configuration structure
- Scaling: Precalculate tasks splitting and persist in job configuration
- Scaling: Add basic support of pipeline-core code reuse for encryption job
- Scaling: Add basic support of scaling job and encryption job combined running
- Scaling: Add
input
andoutput
configuration, includingworkerThread
andrateLimiter
- Scaling: Move
blockQueueSize
intostreamChannel
- Scaling: Change jobId type from integer to text
- Optimize JDBC to load only the specified schema
- Optimize meta data structure of the registry center
- Rename Note shadow algorithm to HINT shadow algorithm
Bug Fix
- Support parsing function
- Fix alter table drop constrain
- Fix optimize table route
- Support Route resource group
- Support parsing binlog
- Support postgreSql/openGauss '&' and '|' operator
- Support parsing openGauss insert on duplicate key
- Support parse postgreSql/openGauss union
- Support query which table has column contains keyword
- Fix missing parameter in function
- Fix sub query table with no alias
- Fix utc timestamp function
- Fix alter encrypt column
- Support alter column with position encrypt column
- Fix delete with schema for postgresql
- Fix wrong route result caused by oracle parser ambiguity
- Fix projection count error when use sharding and encrypt
- Fix npe when using shadow and readwrite_splitting
- Fix wrong metadata when actual table is case insensitive
- Fix encrypt rewrite exception when execute multiple table join query
- Fix encrypt rewrite wrong result with table level queryWithCipherColumn
- Fix parsing chinese
- Fix encrypt exists sub query
- Fix full route caused by the MySQL BINARY keyword in the sharding condition
- Fix getResultSet method empty result exception when using JDBCMemoryQueryResult processing statement
- Fix incorrect shard table validation logic when creating store function/procedure
- Fix null charset exception occurs when connecting Proxy with some PostgreSQL client
- Fix executing commit in prepared statement cause transaction status incorrect in MySQL Proxy
- Fix client connected to Proxy may stuck if error occurred in PostgreSQL with non English locale
- Fix file not found when path of configurations contains blank character
- Fix transaction status may be incorrect cause by early flush
- Fix the unsigned datatype problem when query with PrepareStatement
- Fix protocol violation in implementations of prepared statement in MySQL Proxy
- Fix caching too many connections in openGauss batch bind
- Fix the problem of missing data in SHOW READWRITE_SPLITTING RULES when db-discovery and readwrite-splitting are used together
- Fix the problem of missing data in SHOW READWRITE_SPLITTING READ RESOURCES when db-discovery and readwrite-splitting are used together
- Fix the NPE when the CREATE SHARDING TABLE RULE statement does not specify the sub-database and sub-table strategy
- Fix NPE when PREVIEW SQL by schema.table
- Fix DISABLE statement could disable readwrite-splitting write data source in some cases
- Fix DIABLE INSTANCE could disable the current instance in some cases
- Fix the issue that user may query the unauthorized logic schema when the provider is SCHEMA_PRIVILEGES_PERMITTED
- Fix NPE when authority provider is not configured
- Scaling: Fix DB connection leak on XA initialization which triggered by data consistency check
- Scaling: Fix PostgreSQL replication stream exception on multiple data sources
- Scaling: Fix migrating updated record exception on PostgreSQL incremental phase
- Scaling: Fix MySQL 5.5 check BINLOG_ROW_IMAGE option failure
- Scaling: Fix PostgreSQL xml data type consistency check
- Fix database discovery failed to modify cron configuration
- Fix single read data source use weight loadbalance algorithm error
- Fix create redundant data souce without memory mode
- Fix column value matching shadow algorithm data type conversion exception