Skip to content

Vitess 9.0.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@askdba askdba released this 07 Jan 17:11
· 252 commits to release-9.0 since this release
0472d47

This release complies with VEP-3 which removes the upgrade order requirement. Components can be upgraded in any order. It is recommended that the upgrade order should still be followed if possible, except to canary test the new version of VTGate before upgrading the rest of the components.

Incompatible Changes

The following PRs made changes to behaviors that clients might rely on. They should be reviewed carefully so that client code can be changed in concert with a Vitess release deployment.

  • The update to golang 1.15 might break systems that use TLS certificates with a common name. A fix is documented here (golang/go#40748 (comment))

Bugs Fixed

  • Set Global #6957
  • Binary PK: fix bug where padding of binary columns was being done incorrectly #6963
  • Set udv allow more expressions #6964
  • Pad non-fractional part of DECIMAL type #6967
  • Bug which caused the connection to not close in case of error writing an error packet #6976
  • Bug which caused the connection to not close in case of error writing an error packet #6977
  • Bug fix #7048 for SelectNone in StreamExecute route engine #7050
  • Bug fix regression in /healthz #7090
  • Fix metadata related operation hang when zk down #7228

Functionality Added or Changed

  • Vtctld: fix error state in Workflow Show #6970
  • Adds better error when there are timeouts in resource pools #7002
  • Backup: Use pargzip instead of pgzip for compression. #7037
  • Vschema: Support back-quoted names #7073
  • IsInternalOperationTableName: see if a table is used internally by vitess #7104
  • Log sql which exceeds max memory rows #7055
  • Add sequence table support for vtexplain #7186
  • Vtctld: vtctldclient generator #7238

VTGate / MySQL compatibility

  • VTGate: Allow INSERT with all defaults #6969
  • VTGate: Allow YEAR column type with length specified #6975
  • VTGate: Retry Execute when reserved connection is lost #6983
  • VTGate: Use ephemeral buffer when reading rows #6990
  • VTGate: Allow time_zone in reserved connection #6998
  • VTGate: Improved support for UNION #7007
  • VTGate: Add DDL parser support for FULLTEXT indexes. #7001
  • VTGate: Extend comparability of EvalResult to support hash codes #7016
  • VTGate: Use proto equal method #7017
  • VTGate: Fix COM_STMT_EXECUTE packet decode #7020
  • VTGate: Adds Planning and Parsing Support for Create Index of MySQL 5.7 #7024
  • VTGate: UNION DISTINCT support on vtgate #7029
  • VTGate: Improve database ddl plan #7034
  • VTGate: Support for hex & shard in vindex query #7044
  • VTGate: Use distinct primitive to solve more queries #7047
  • VTGate: Route using vindex for composite IN clause #7049
  • VTGate: Optimise struct field layout #7052
  • VTGate: Refactoring of plan building #7054
  • VTGate: Rewrite joins written with the USING construct #6660
  • VTGate: Add option to GetSchema to only send the row count and data length over the wire #6985
  • VTGate: Adds Planning and Parsing Support for Create Database of MySQL 5.7 #7068
  • VTGate: Make sure to check all GROUP BY columns #7080
  • VTGate: Separate sub-query and derived table into different structs #7081
  • VTGate: Adds Planning and Parsing Support for Alter Database of MySQL 5.7 #7086
  • VTGate: Convert usages of DDL struct to DDLStatement interface #7096
  • VTGate: Adds Planning and Parsing Support for Drop Database of MySQL 5.7 #7098
  • VTGate: Restore SHOW SCHEMAS support; fixes #7100 #7102
  • VTGate: Refactor Code to create a separate struct for CREATE TABLE #7116
  • VTGate: Allows for vttestserver and vtcombo to respond to VtGateExecute. #7121
  • VTGate: Support for lock and unlock tables #7139
  • VTGate: Merge SelectDBA routes when possible #7140
  • VTGate: Adds support for all the rails queries using information_schema #7143
  • VTGate: Add support for unary expression in order by column #7163
  • VTGate: Skip query rewriting for dual table #7164
  • VTGate: Refactor Code to create a separate struct for ALTER VSCHEMA #7173
  • VTGate: Refactor Show plans #7185
  • VTGate: Show privilege support #7194
  • VTGate: Planning and Parsing Support for Drop Table, Drop View and Alter View #7178
  • VTGate: Cache only dml and select plans #7196
  • VTGate: Planning and Parsing Support for Alter Table #7199
  • VTGate: Add FindAllShardsInKeyspace to vtctldserver #7201
  • VTGate: improve-log: FAILED_PRECONDITION #7215

VReplication

  • VReplication: refactored and enhanced support for JSON columns #6829
  • VReplication: Don't update tx timestamp on heartbeat #6930
  • VReplication E2E Tests: Refactored tests for readability and attempting to fix flakiness #6991
  • VRepl/Tablet Picker: improve observability of selected tablet #6999
  • VReplication: Handle comment statement type in vstreamer #7092
  • VReplication e2e: Fine tuned test to reduce flakiness and added more logging to debug future flakiness #7138
  • VReplication: Make relay log size & rows configurable. #6992
  • VReplication: New workflows cli UX. Allow reads/writes to be switched independently #7071
  • VReplication: DropSources: change table rename logic #7230
  • VReplication: MoveTables: delete routing rules and update vschema on Complete and Abort #7234
  • VReplication: V2 Workflow Start: wait for streams to start and report errors if any while starting a workflow #7248

VTtablet

  • VTtablet: ignore errors if extracted gh-ost binary is identical to installed binary #6928
  • VTtablet: fast and reliable state transitions #7011
  • VTtablet: don't shutdown on too many connections #7039
  • VTtablet: debug/env page to change variables in real-time #7189

VStreamer

  • VStreamer Field Event: add allowed values for set/enum #6981

VDiff

  • VDiff: lock keyspace while snapshoting, restart target in case of errors #7012

OnlineDDL

  • Online DDL: follow ups in multiple trajectories #6901
  • Online DDL: cancel running migrations executed by another tablet #7006
  • OnlineDDL: Adding ddl_strategy session variable #7042
  • Online DDL: ddl_strategy session variable and vtctl command line argument #7045
  • Online DDL: Removing online ddl query hint from ALTER TABLE #7069
  • Online DDL: vtgate -ddl-strategy flag renamed to -ddl_strategy #7074
    Automatically retry migration that was interrupted during master failover
    Automatically terminate migrations run by a failed tablet
  • Online DDL:request_context/migration_context #7082
  • Online DDL: Support CREATE, DROP statements in ApplySchema and online DDL #7083
  • Online DDL: ddl_type column #7097
  • OnlineDDL: "cancel-all" command to cancel all pending migrations in keyspace #7099
  • OnlineDDL: Support vtctl OnlineDDL <keyspace> show <context> #7145
  • OnlineDDL: Normalizing Online-DDL queries #7153
  • Online DDL: ddl_strategy=direct #7172
  • Online DDL: Executor database pool size increase #7206
  • Online DDL: DROP TABLE translated to RENAME TABLE statement #7221
  • Online DDL: Adding @@session_uuid to vtgate; used as 'context' #7263

VTadmin

  • VTadmin: Initial vtadmin-api, clusters, and service discovery #7187
  • VTadmin: The tiniest possible first implementation of vtadmin-web #7218
  • VTadmin: Add cluster protos to discovery and vtsql package constructors #7224
  • VTadmin: Add static file service discovery implementation #7229
  • VTadmin: Query vtadmin-api from vtadmin-web with fetch + react-query #7239

Other

  • Route INFORMATION_SCHEMA queries #6932
  • Return to re-using server IDs for binlog connections #6941
  • Fix comment typo #6974
  • Correctly initialize the TabletType stats #6989
  • Clean up plan building test cases #7057
  • Add s3 server-side encryption and decryption with customer provided key #7088
  • Fix all occurrences of fmt.Sprint(x) where x is int #7244
  • local docker: copy examples/common into /vt/common to match MoveTables user guide #7252
  • Fix incorrect comments #7257

Examples / Tutorials

Documentation

  • Vitess Slack Guidelines v1.0 #6961
  • Update docker-compose examples to take advantage of improvements in Vitess #7009
  • Adds Planning and Parsing Support for Create Index of MySQL 5.7 #7024
  • Do vschema_customer_sharded.json before create_customer_sharded.sql #7210
  • Fix comment for IDPool #7212
  • Added readme for the demo example #7226

Build Environment Changes

  • Fix unit test error #6953, #6993
  • Fixing the 5.6 builds of vitess/lite #6960
  • Set udv allow more expressions #6964
  • Pin mariadb to use mariadb-server-10.2 #6966
  • Replace vitess:base with vitess:lite images for docker-compose services #7004
  • Fix flakey TestParallelRunnerApprovalFirstRunningSecondRunning test #7014
  • Allow custom image tags in compose #7043
  • Support statsd for vitess #7072
  • Add vtctl to make install-local #7125
  • Updating Java unit tests for JDK9+ compatibility #7144
  • Add Go Version to Bootstrap Image #7182
  • Update Vitess v8.0 images #7174
  • Fix broken package ref in UBI docker build #7183
  • Convert CentOS extra packages installation to yum instead of downloading #7188
  • Make docker_local: fix missing mysql_server package #7213
  • Add unit test case to improve test coverage for go/sqltypes/result.go #7227
  • Use context from Go's standard library #7235
  • Update Golang to 1.15 #7204
  • Add linter configuration #7247

Functionality Neutral Changes

  • Healthcheck: add unit test for multi-cell replica configurations #6978
  • Healthcheck: healthy list should be recomputed when a tablet is removed #7176
  • Vtctld Workflow command: minor fixes #7008
  • Adds timeout to checking for tablets. #7106
  • Remove deprecated vtctl commands, flags and vttablet rpcs #7115
  • Fixes comment to mention the existence of reference tables. #7122
  • Updated pull request template to add more clarity #7193
  • Redact password #7198
  • action_repository: no need for http.Request #7124
  • Table lifecycle: skip time hint for unspecified states #7151