Skip to content

Instantly share code, notes, and snippets.

@systay
Last active June 9, 2021 07:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save systay/01a3a9849eb65cb4da6a36900a19f006 to your computer and use it in GitHub Desktop.
Save systay/01a3a9849eb65cb4da6a36900a19f006 to your computer and use it in GitHub Desktop.
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 (#7204) might break systems that use TLS certificates with a common name. A fix is documented here (https://github.com/golang/go/issues/40748#issuecomment-673612108)
Vitess 9.0 is not compatible with the previous release of the Vitess Kubernetes Operator (2.2.0). A new version of the Operator (2.3.0) is available that is compatible.
## Bugs Fixed
### VTGate / MySQL compatibility
* Set Global #6957
* Set udv allow more expressions #6964
* 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
### Other
* Binary PK: fix bug where padding of binary columns was being done incorrectly #6963
* Pad non-fractional part of DECIMAL type #6967
* Bug fix regression in /healthz #7090
* Fix metadata related operation hangs when zk down #7228
* Fix accidentally-broken legacy vtctl output format #7285
## Functionality Added or Changed
### 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
not in the release: * VTGate: Planner refactoring #7103
not in the release: * VTGate: Migrate `vtctlclient InitShardMaster` => `vtctldclient InitShardPrimary` #7220
not in the release: * VTGate: Add Planning and Parsing Support for Truncate, Rename, Drop Index and Flush #7242
not in the release: * VTGate: Fix create table format function to include if not exists #7250
not in the release: * VTGate: Added default databases when calling 'show databases' #7256
not in the release: * VTGate : Add Update.AddWhere to mirror Select.AddWhere #7277
not in the release: * VTGate :Rremoved resolver usage from StreamExecute #7281
not in the release: * VTGate: Adding a MySQL connection at Vtgate to run queries on it directly in case of testing mode #7291
not in the release: * VTGate: Added vitess_version as variable #7295
* VTGate: Default to false for system settings to be changed per session at the database connection level #7299
not in the release: * VTGate: Gen4: Add Limit clause support #7312
not in the release: * VTGate: Gen4: Handling subquery in query graph #7313
not in the release: * VTGate: Addition of @@enable_system_settings #7300
* VTGate: Route INFORMATION_SCHEMA queries #6932
* VTGate: Adds Planning and Parsing Support for Create Index of MySQL 5.7 #7024
* VTGate: Log sql which exceeds max memory rows #7055
* VTExplain: Add sequence table support for vtexplain #7186
* VSchema: Support back-quoted names #7073
* Healthcheck: healthy list should be recomputed when a tablet is removed #7176
### Set Statement Support
Set statement support has been added in Vitess. There are [some system variables](https://github.com/vitessio/vitess/blob/master/go/vt/sysvars/sysvars.go#L147,L190) which are disabled by default and can be enabled using flag `-enable_system_settings` on VTGate. These system variables are set on the mysql server. Because they change the mysql session, using them leads to the Vitess connection no longer using the connection pool and forcing dedicated connections.
### 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
* VReplication: Ignore temp tables created by onlineddl #7159
not in the release: * VReplication V2 Workflows: rename Abort to Cancel #7276
not in the release: * VReplication DryRun: Report current dry run results for v2 commands #7255
not in the release: * VReplication: Miscellaneous improvements #7275
not in the release: * VReplication: Tablet throttle support "/throttle/check-self" available on all tablets #7319
not in the release: * VStreamer Events: remove preceding zeroes from decimals in Row Events #7297
not in the release: * Workflow Show: use timeUpdated to calculate vreplication lag #7342
not in the release: * vtctl: Add missing err checks for VReplication v2 #7361
* VStreamer Field Event: add allowed values for set/enum #6981
* VDiff: lock keyspace while snapshoting, restart target in case of errors #7012
* [vtctld]: fix error state in Workflow Show #6970
* [vtctld] Workflow command: minor fixes #7008
not in the release: * [vtctl] Add missing err checks for VReplication v2 #7361
### VTTablet
* 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
* VTTablet: Adds better errors when there are timeouts in resource pools #7002
* VTTablet: Return to re-using server IDs for binlog connections #6941
* VTTablet: Correctly initialize the TabletType stats #6989
not in the release: * Backup: Use provided xtrabackup_root_path to find xbstream #7359
* Backup: Use pargzip instead of pgzip for compression. #7037
* Backup: Add s3 server-side encryption and decryption with customer provided key #7088
### 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
* Online DDL: ignore errors if extracted gh-ost binary is identical to installed binary #6928
* Online DDL: Table lifecycle: skip time hint for unspecified states #7151
### 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
not in the release: * VTadmin: Add vtctld proxy to vtadmin API, add GetKeyspaces endpoint #7266
not in the release: * VTadmin: [vtctld] Expose vtctld gRPC port in local Docker example + update VTAdmin README #7306
not in the release: * VTadmin: Add CSS variables + fonts to VTAdmin #7309
not in the release: * VTadmin: Add React Router + a skeleton /debug page to VTAdmin #7310
not in the release: * VTadmin: Add NavRail component #7316
not in the release: * VTadmin: Add Button + Icon components #7350
* [vtctld]: vtctldclient generator #7238
not in the release: * [vtctld] Migrate cell getters #7302
not in the release: * [vtctld] Migrate tablet getters #7311
not in the release: * [vtctld] Migrate GetSchema #7346
not in the release: * [vtctld] vtctldclient command pkg #7321
not in the release: * [vtctld] Add GetSrvVSchema command #7334
not in the release: * [vtctld] Migrate ListBackups as GetBackups in new vtctld server #7352
Merged
not in the release: * [vtctld] Migrate GetVSchema to VtctldServer #7360
### Other
* Fix comment typo #6974
* Fix all occurrences of `fmt.Sprint(x)` where x is `int` #7244
* Fix incorrect comments #7257
* Fix comment for IDPool #7212
* IsInternalOperationTableName: see if a table is used internally by vitess #7104
## Examples / Tutorials
not in the release: * Update demo #7205
not in the release: * Delete select_commerce_data.sql #7245
not in the release: * Docker/vttestserver: Add MYSQL_BIND_HOST env #7293
* Examples/operator: fix tags and add vtorc example #7358
* local docker: copy examples/common into /vt/common to match MoveTables user guide #7252
* Update docker-compose examples to take advantage of improvements in Vitess #7009
## Documentation
* Vitess Slack Guidelines v1.0 #6961
* Do vschema_customer_sharded.json before create_customer_sharded.sql #7210
* Added readme for the demo example #7226
not in the release: * Pull Request template: link to contribution guide #7314
## Build Environment Changes
* Clean up plan building test cases #7057
* Fix unit test error #6953, #6993
* Fixing the 5.6 builds of vitess/lite #6960
* 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
* Update Golang to 1.15 #7204
* Add linter configuration #7247
not in the release: * Tracking failed check runs #7026
not in the release: * Github Actions CI Builds: convert matrix strategy for unit and cluster tests to individual tests #7258
not in the release: * Add Update.AddWhere to mirror Select.AddWhere #7277
not in the release: * Descriptive names for CI checks #7289
not in the release: * Testing upgrade path from / downgrade path to v8.0.0 #7294
not in the release: * Add mysqlctl to docker images #7326
## Functionality Neutral Changes
* Healthcheck: add unit test for multi-cell replica configurations #6978
* 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
* Testing version upgrade/downgrade path from/to 8.0 #7323
* Use `context` from Go's standard library #7235
Missing from release notes:84
6783
6816
6823
6825
6830
6831
6832
6833
6836
6842
6845
6847
6849
6852
6853
6855
6863
6865
6869
6870
6871
6872
6873
6874
6875
6879
6880
6882
6885
6886
6887
6890
6892
6900
6902
6903
6904
6907
6908
6910
6911
6917
6933
6944
6947
6949
6953
6958
6959
6965
7018
7023
7027
7060
7062
7082
7093
7095
7105
7118
7126
7128
7137
7148
7150
7162
7165
7166
7168
7169
7179
7202
7223
7264
7265
7271
7292
7339
7340
7345
7349
7354
7363
7369
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment