vitess.io/vitess@v0.16.2/changelog/13.0/13.0.0/release_notes.md (about) 1 # Release of Vitess v13.0.0 2 ## Major Changes 3 4 ### Vitess now has native support for MySQL collations 5 6 When using the gen4 planner, Vitess is now capable of performing collation-aware string comparisons in the vtgates. This 7 improves the performance and reliability of several query plans that were previously relying on a debug-only SQL API in 8 MySQL to perform these comparisons remotely. It also enables new query plans that were previously not possible. 9 10 A full list of the supported collations can be 11 found [in the Vitess documentation](https://vitess.io/docs/13.0/user-guides/configuration-basic/collations/). 12 13 ### The native Evaluation engine in vtgate has been greatly improved 14 15 The SQL evaluation engine that runs inside the vtgates has been rewritten mostly from scratch to more closely match 16 MySQL's behavior. This allows Vitess to execute more parts of the query plans locally, and increases the complexity and 17 semantics of the SQL expressions that can be used to perform cross-shard queries. 18 19 ### vttablet -use_super_read_only flag now defaults to true 20 21 The default value used to be false. What this means is that during a failover, we will set `super_read_only` on database 22 flavors that support them (MySQL 5.7+ and Percona 5.7+). In addition, all Vitess-managed databases will be started 23 with `super-read-only` in the cnf file. It is expected that this change is safe and backwards-compatible. Anyone who is 24 relying on the current behavior should pass `-use_super_read_only=false` on the vttablet command line, and make sure 25 they are using a custom my.cnf instead of the one provided as the default by Vitess. 26 27 ### vtgate -buffer_implementation now defaults to keyspace_events 28 29 The default value used to be `healthcheck`. The new `keyspace_events` implementation has been tested in production with 30 good results and shows more consistent buffering behavior during PlannedReparentShard operations. The `keyspace_events` 31 implementation utilizes heuristics to detect additional cluster states where buffering is safe to perform, including 32 cases where the primary may be down. If there is a need to revert back to the previous buffer implementation, ensure 33 buffering is enabled in vtgate and pass the flag `-buffer_implementation=healthcheck`. 34 35 ### ddl_strategy: -postpone-completion flag 36 37 `ddl_strategy` (either `@@ddl_strategy` in VtGate or `-ddl_strategy` in `vtctlclient ApplySchema`) supports the 38 flag `-postpone-completion` 39 40 This flag indicates that the migration should not auto-complete. This applies for: 41 42 - any `CREATE TABLE` 43 - any `DROP TABLE` 44 - `ALTER` table in `online` strategy 45 - `ALTER` table in `gh-ost` strategy 46 47 Note that this flag is not supported for `pt-osc` strategy. 48 49 Behavior of migrations with this flag: 50 51 - an `ALTER` table begins, runs, but does not cut-over. 52 - `CREATE` or `DROP` migrations are silently not even scheduled 53 54 ### alter vitess_migration ... cleanup 55 56 A new query is supported: 57 58 ```sql 59 alter vitess_migration '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90' cleanup 60 ``` 61 62 This query tells Vitess that a migration's artifacts are good to be cleaned up asap. This allows Vitess to free disk 63 resources sooner. As a reminder, once a migration's artifacts are cleaned up, the migration is no longer revertible. 64 65 ### alter vitess_migration ... complete 66 67 A new query is supported: 68 69 ```sql 70 alter vitess_migration '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90' complete 71 ``` 72 73 This command indicates that a migration executed with `-postpone-completion` is good to complete. Behavior: 74 75 - For running `ALTER`s (`online` and `gh-ost`) which are ready to cut-over: cut-over imminently (though not immediately 76 - cut-over depends on polling interval, replication lag, etc) 77 - For running `ALTER`s (`online` and `gh-ost`) which are only partly through the migration: they will cut-over 78 automatically when they complete their work, as if `-postpone-completion` wasn't indicated 79 - For queued `CREATE` and `DROP` migrations: "unblock" them from being scheduled. They'll be scheduled at the scheduler' 80 s discretion. there is no guarantee that they will be scheduled to run immediately. 81 82 ### vtctl/vtctlclient ApplySchema: ALTER VITESS_MIGRATION 83 84 `vtctl ApplySchema` now supports `ALTER VITESS_MIGRATION ...` statements. Example: 85 86 ```shell 87 $ vtctl ApplySchema -skip_preflight -sql "alter vitess_migration '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90' complete" commerce 88 ``` 89 90 ### vtctl/vtctlclient ApplySchema: allow zero in date 91 92 `vtctl/vtctlclient ApplySchema` now respects `-allow-zero-in-date` for `direct` strategy. For example, the following 93 statement is now accepted: 94 95 ```shell 96 vtctlclient ApplySchema -skip_preflight -ddl_strategy='direct -allow-zero-in-date' -sql "create table if not exists t2(id int primary key, dt datetime default '0000-00-00 00:00:00')" commerce 97 ``` 98 99 ### vtctl/vtctlclient ApplySchema -uuid_list 100 101 `vtctlient ApplySchema` now support a new optional `-uuid_list` flag. It is possible for the user to explicitly specify 102 the UUIDs for given migration(s). UUIDs must be in a specific format. If given, number of UUIDs must match the number of 103 DDL statements. Example: 104 105 ```shell 106 vtctlclient OnlineDDL ApplySchema -sql "drop table t1, drop table t2" -uuid_list "d08f0000_51c9_11ec_9cf2_0a43f95f28a3,d08f0001_51c9_11ec_9cf2_0a43f95f28a3" commerce 107 ``` 108 109 Vitess will assign each migration with given UUID in order of appearance. It is the user's responsibility to ensure 110 given UUIDs are globally unique. If the user submits a migration with an already existing UUID, that migration never 111 gets scheduled nor executed. 112 113 ### vtctl/vtctlclient ApplySchema -migration_context 114 115 `-migration_context` flag is synonymous to `-request_context`. Either will work. We will encourage use 116 of `-migration_context` as it is more consistent with output of `SHOW VITESS_MIGRATIONS ...` which includes 117 the `migration_context` column. 118 119 ### vtctl/vtctlclient ApplySchema -caller_id 120 `-caller_id` flag sets the Effective Caller ID of the ApplySchema operation so that the operation can succeed with a database that 121 is enforcing strict ACL checking. 122 123 ### vtctl/vtctlclient OnlineDDL ... complete 124 125 Complementing the `alter vitess_migration ... complete` query, a migration can also be completed via `vtctl` 126 or `vtctlclient`: 127 128 ```shell 129 vtctlclient OnlineDDL <keyspace> complete <uuid> 130 ``` 131 132 For example: 133 134 ```shell 135 vtctlclient OnlineDDL commerce complete d08ffe6b_51c9_11ec_9cf2_0a43f95f28a3 136 ``` 137 138 ### vtctl/vtctlclient OnlineDDL -json 139 140 The command now accepts an optional `-json` flag. With this flag, the output is a valid JSON listing all columns and 141 rows. 142 143 ### vtadmin-web updated to node v16.13.0 (LTS) 144 145 Building vtadmin-web now requires node >= v16.13.0 (LTS). Upgrade notes are given 146 in https://github.com/vitessio/vitess/pull/9136. 147 148 ### PlannedReparentShard for cluster initialization 149 For setting up the cluster and electing a primary for the first time, `PlannedReparentShard` should be used 150 instead of `InitShardPrimary`. 151 152 `InitShardPrimary` is a forceful command and copies over the executed gtid set from the new primary to all the other replicas. So, if the user 153 isn't careful, it can lead to some replicas not being setup correctly and lead to errors in replication and recovery later. 154 `PlannedReparentShard` is a safer alternative and does not change the executed gtid set on the replicas forcefully. It is the preferred alternate to initialize 155 the cluster. 156 157 If using a custom `init_db.sql` that omits `SET sql_log_bin = 0`, then `InitShardPrimary` should still be used instead of `PlannedReparentShard`. 158 159 ### Durability Policy flag 160 A new flag has been added to vtctl, vtctld and vtworker binaries which allows the users to set the durability policies. 161 162 If semi-sync is not being used then `-durability_policy` should be set to `none`. This is also the default option. 163 164 If semi-sync is being used then `-durability_policy` should be set to `semi_sync` and `-enable_semi_sync` should be set in vttablets. 165 166 ## Incompatible Changes 167 ### Error message change when vttablet row limit exceeded: 168 * In previous Vitess versions, if the vttablet row limit (-queryserver-config-max-result-size) was exceeded, an error like: 169 ```shell 170 ERROR 10001 (HY000): target: unsharded.0.master: vttablet: rpc error: code = ResourceExhausted desc = Row count exceeded 10000 (errno 10001) (sqlstate HY000) ... 171 would be reported to the client. 172 ``` 173 To avoid confusion, the error mapping has been changed to report the error as similar to: 174 ```shell 175 ERROR 10001 (HY000): target: unsharded.0.primary: vttablet: rpc error: code = Aborted desc = Row count exceeded 10000 (errno 10001) (sqlstate HY000) ... 176 instead 177 ``` 178 * Because of this error code change, the vttablet metric: 179 `vttablet_errors{error_code="ABORTED"}` 180 will be incremented upon this type of error, instead of the previous metric: 181 `vttablet_errors{error_code="RESOURCE_EXHAUSTED"}` 182 * In addition, the vttablet error message logged is now different. 183 Previously, a (misleading; due to the PoolFull) error was logged: 184 ```shell 185 E0112 09:48:25.420641 278125 tabletserver.go:1368] PoolFull: Row count exceeded 10000 (errno 10001) (sqlstate HY000) ... 186 ``` 187 Post-change, a more accurate warning is logged instead: 188 ```shell 189 W0112 09:38:59.169264 35943 tabletserver.go:1503] Row count exceeded 10000 (errno 10001) (sqlstate HY000) ... 190 ``` 191 * If you were using -queryserver-config-terse-errors to redact some log messages containing bind vars in 13.0-SNAPSHOT, you should now instead enable -sanitize_log_messages which sanitizes all log messages containing sensitive info 192 193 ### Column types for textual queries now match MySQL's behavior 194 195 The column types for certain queries performed on a `vtgate` (most notably, those that `SELECT` system variables) 196 have been changed to match the types that would be returned if querying a MySQL instance directly: textual fields that 197 were previously returned as `VARBINARY` will now appear as `VARCHAR`. 198 199 This change should not have an impact on MySQL clients/connectors for statically typed programming languages, as these 200 clients coerce the returned rows into whatever types the user has requested, but clients for dynamic programming 201 languages may now start returning as "string" values that were previously returned as "bytes". 202 203 ## Deprecations 204 205 ### vtgate `-gateway_implementation` flag is deprecated (and ignored) 206 207 Support for `discoverygateway` is being dropped. `tabletgateway` is now the only supported implementation. Scripts using 208 this flag should be updated to remove the flag as it will be deleted in the next release. 209 210 ### web/vtctld2 is deprecated and can optionally be turned off 211 212 The vtctld2 web interface is no longer maintained and is planned for removal in Vitess 16. Motivation for this change and a roadmap to removing [the web/vtctld2 codebase](https://github.com/vitessio/vitess/tree/main/web/vtctld2) is given in https://github.com/vitessio/vitess/issues/9686. 213 214 Vitess operators can optionally disable the vtctld2 web interface ahead of time by calling the `vtctld` process with the flag `enable_vtctld_ui=false`. For more details on this flag, see https://github.com/vitessio/vitess/pull/9614. 215 216 ------------ 217 ## Changelog 218 219 ### Bug fixes 220 #### Backup and Restore 221 * vtctl: Check ShardReplicationStatuses error and make sure they are well returned #8966 222 * Skip replication config in restore when active reparents are disabled #9688 223 * Fix semi-sync for Backup and RestoreFromBackup commands by calling SetReplicationSource RPC #9730 224 #### Cluster management 225 * Fix vtctlclient `DeleteCellInfo(force=true)` command with downed local topo #9081 226 * Fix race condition when rapidly starting/stopping health check #9152 227 * Topo write error in change tablet type #9157 228 * Default build info tablet tags to off #9187 229 * Replication manager should not start health ticks after calling Promote Replica #9274 230 * Fix error checking in ERS #9330 231 * Fix for context cancellation in ERS #9503 232 #### General 233 * Avoid some pollution of CLI argument namespace across vtgate and vttablet #8931 234 * Update to the latest Tengo version #9110 235 #### Orchestrator 236 * Set orc maintenance mode on tablet that is being promoted by PRS #8859 237 #### Query Serving 238 * Fix for schema tracker not recognizing RENAME for schema reloading #8963 239 * Handle `sql_mode` differently for new value change #9014 240 * Fix savepoint support with reserved connections #9030 241 * Use a DBA user pool for the heartbeat writer #9033 242 * Handle single column vindex correctly with multi-columns in Gen4 #9060 243 * Remove tablet healthcheck cache record on error #9106 244 * Fix request buffering while reparenting #9112 245 * Ensure that the hex query predicates are normalized for planner cache #9118 246 * Fix table/sizes query, to allow vttablet schema engine to see partitioned tables #9188 247 * Remove keyspace from the query before sending it to the shards #9190 248 * Make sure to copy bindvars when using them concurrently #9191 249 * Fix owned vindex query to keep alias in table expression #9244 250 * Use decoded hex string when calculating the keyspace ID #9277 251 * Fix show statement in prepare call #9280 252 * Avoid parenthesis around default null in BLOB, TEXT, GEOMETRY, and JSON column #9301 253 * Allow unowned `lookup_unique` vindex columns to be `null` #9302 254 * Estimate replica lag when the number of seconds behind from mysqld is unknown #9308 255 * Clear existing keyspace schema in vtgate before [re]loading it #9437 256 * Fix AST copy issue in the Gen4Fallback planner #9487 257 * Fix a bug in the Gen4 planner for join query pushing output column on the left-hand side #9521 258 * Extract collation data to enable distinct aggregation #9645 259 * Use the gen4 planner for queries with outer joins #9671 260 * Gen4: make sure not to merge unsharded tables from different keyspaces #9676 261 * Fixed missing order/group by, limit, having in derived #9707 262 #### TabletManager 263 * Prevent Race Conditions Between Tablet Deletes and Updates #9237 264 #### VReplication 265 * Fix boolean parameter order in DropSources call for v2 flows #9175 266 * VReplication Workflow Create: Check for Copying state while waiting for streams to start #9206 267 * MoveTables: update vschema while moving tables with autoincrement from sharded to unsharded #9288 268 * Schema Engine now accountable for Online DDL swapped tables #9324 269 * Take MySQL Column Type Into Account in VStreamer #9331 270 * Allow source columns to be specified multiple times in a vreplication rule filter #9335 271 * Fixed case-sensitive TabletType in SwitchTraffic #9440 272 * Use LOCK TABLES during SwitchWrites to prevent lost writes #9481 273 * VReplication Workflow: manage SQL_MODE as MySQL does in mysqldump #9505 274 * Routing Rules: Improved escaping of reserved and invalid names for tables and keyspaces #9522 275 * Ignore internal tables in MoveTables and Reshard Workflows #8992,#9578 276 #### VTCombo 277 * vtcombo: `CREATE DATABASE` creates shards as specified by the topology #9130 278 ### CI/Build 279 #### Build/CI 280 * Remove Percona5.6 Unit Tests for Vitess 13.0 #9067 281 * Addition of upgrade downgrade testing to the test suite #9300, #9473, #9501 282 * Re-enable default Make behavior of failing target if any command fails #9319 283 * ubuntu-latest now uses MySQL 8.0.26, let us override it with latest 8.0.x #9368 284 * Add vtadmin binary to release and Docker images #9405 285 #### VTAdmin 286 * Enforce node + npm versions with .npmrc #9336 287 #### vtexplain 288 * Correct handling of column types for queries involving multiple tables #9260 289 ### Dependabot 290 #### Build/CI 291 * Upgrade `go-proxyproto` to `v0.6.1` to fix vulnerabilities #9425 292 #### Java 293 * Bump log4j-core from 2.15.0 to 2.16.0 in /java #9387 294 * Bump log4j-api from 2.16.0 to 2.17.1 in /java #9423 295 * Updates all major Java dependencies to latest #9599 296 #### VTAdmin 297 * Bump tmpl from 1.0.4 to 1.0.5 in /web/vtadmin #9278 298 ### Enhancement 299 #### Authn/z 300 * Add support for TLS certification revocation list (CRL) files #8807 301 #### Backup and Restore 302 * Set super_read_only off during restore (achieves same as PR #8929) #9240 303 #### Cluster management 304 * Support -allow-zero-in-date in ApplySchema 'direct' strategy #9273 305 * Remove legacy OnlineDDL code deprecated in earlier version #8971 306 * Add version-info to tablet tags in the topo #8973 307 * Add default collation to VTGate and VTTablet #9097 308 * Use relay log position in PRS while choosing the new primary #9270 309 * vtctl OnlineDDL supports 'complete' command #9298 310 * vtctl ApplySchema accepts 'ALTER VITESS_MIGRATION...' statements #9303 311 * Make the heartbeat writer use 2 pools #9320 312 * New vtctl ApplySchema flag `-uuid_list` #9325 313 * Fix ERS to be used for initialization as well #9511 314 * Fix ERS to work when the primary candidate's replication is stopped #9512 315 * Add 'enable_vtctld_ui' flag to vtctld to explicitly enable (or disable) the vtctld2 UI (backport) #9713 316 #### Examples 317 * Update operator.yaml to v2.5.0 #9016 318 #### General 319 * vitessdriver: add support for DistributedTx #9451 320 #### Observability 321 * Modify `terse` errors to also redact errors in logs #9094 322 #### Query Serving 323 * Initial implementation of partitions (Create statement) #8691 324 * Add parsing for common table expressions using WITH clause #8918 325 * Support SQL SELECT LIMIT #8944 326 * Support for union in subquery in Gen4 #8948 327 * Support for ordering using derived table columns in Gen4 #8961 328 * Add planner-version flag to vtexplain #8979 329 * Rewrite NOT expressions for cleaner plans #8987 330 * Minimize logging of errors when loading keyspace with disabled schema tracking #8989 331 * Support for ordering on vindex function and straight_join queries to be planned by ignoring the hint as warning in Gen4 #8990 332 * Improve internal subquery dependencies update in Gen4 #8998 333 * Added tokenizer support for NCHAR_STRING #9006 334 * Query timeout in comment directive in Gen4 #9008 335 * Added brackets in default value if column is of type TEXT, BLOB, GEOMETRY or JSON #9011 336 * Addition of the filter primitive and planning in Gen4 #9017 337 * Initial integration of the collation module in Gen4 #9018 338 * Support extract function in the SQL parser #9029 339 * Add collation name to the type definition in Gen4 #9038 340 * Support semi-join in Gen4 #9039 341 * Changed Collations and Expression grammar #9075 342 * Support transactions with OLAP workload #9115 343 * Use of advisory lock in prepare queries #9129 344 * Add hash join primitive and planning in Gen4 #9140 345 * Respect `--allow-zero-in-date` in CREATE and in declarative migrations #9142 346 * Improve merging of DBA queries in Gen4 #9183 347 * Evaluate REVERTibility of a migration in OnlineDDL #9232 348 * Improve group by queries planning when they use a sharding key #9243 349 * Make sure VTGate and VTTablet collations are matching #9248 350 * Support filtering on derived union system table with star projection #9263 351 * MySQL: Better handling of query failures within a transaction to match the MySQL behavior #9269 352 * Add Tuples and InOp implementation to EvalEngine #9281 353 * Use evalengine for Vindex lookups in route primitive #9291 354 * Adds parsing support for string introducers #9309 355 * Multi-column vindex support for DML #9338 356 * Add list (`IN()`) support to vindex functions #9426 357 * Fix parsing of table names that start with a number #9456 358 * Make the MaxWaiters setting configurable for the OLAP pool #9484 359 * Add support for health service in gRPC server #9528 360 * Filter after left join #9531 361 * Add Information_Schema to evalengine #9536 362 * Faster and safer unsharded query planning #9542 363 * Add support for PLANNER SQL comment #9545 364 * MySQL: use UTF8MB4 consistently as the connection charset #9558 365 * Do not auto retry after "server lost" errors (errno 2013) in vttablet #9009 366 * Online DDL: migration with same context and SQL now considered duplicate and silently marked as complete #9107 367 * Support ALTER VITESS_MIGRATION ... CLEANUP statement #9160 368 * OnlineDDL: implementing -postpone-completion, ALTER VITESS_MIGRATION ... COMPLETE #9171 369 * OnlineDDL: support concurrent REVERT migrations #9192 370 * VTGate: change default query buffer implementation (used to avoid client errors during state transitions such as PlannedReparentShard) #9359 #9360 371 * Fix misleading error mapping for row limit error #9448 372 * Add -sanitize_log_messages tablet flag to sanitize all log messages which may contain sensitive info and remove -queryserver-config-terse-errors impact on log messages #9636 373 #### TabletManager 374 * Have vttablet use super_read_only by default when a tablet becomes a replica #9312 375 * MySQL: Add ConnectionReady callback to Handler interface #9496 376 * MySQL: Add UnimplementedHandler struct #9526 377 #### VReplication 378 * Support VStream with `keyspaces_to_watch` #8988 379 * VEvent: Add Keyspace/Shard properties to proto #9386 380 * Initial refactoring of the 'vstream * from' functionality in vtgate #9392 381 * Add flag to keep routing rules in v2 vrepl workflows #9441 382 * SwitchTraffic: check vreplication lag before switching #9538 383 #### VTAdmin 384 * [vtadmin] viper config support #9154 385 * [VTAdmin] Update react-scripts, postcss #9493 386 #### VTorc 387 * Have a common EmergencyReparentShard (ERS) implementation for both VtOrc and Vtctl #8492 388 * Use PlannedReparentShard (PRS) in VtOrc while doing Graceful Primary Takeover #9258 389 * Make PRS use Durability Rules #9259 390 * Use PRS in Vtorc for electing new primary #9409 391 #### vtctl 392 * ListAllTablets: improve efficiency within vitess (fewer topo calls) and for caller (keyspace and tablet type filters) #9560 393 * vtctl OnlineDDL show: export all columns, support -json #9568 394 * vtctl ApplySchema: introduce -migration_context flag, synonym to -request_context #9572 395 #### vttestserver 396 * Add option to run vtcombo and vttest local cluster with a real topo server #9176 397 ### Feature Request 398 #### Query Serving 399 * Add support for SET statements in OLAP mode #9253 400 * Multi-column vindex support in select statements #9326 401 * Multi-column vindex support in update and delete queries #9467 402 * Multicolumn partial vindex selection #9390 403 * Subsharding vindex support #9428 404 * Non-unique vindex routing in update and delete query #9554 405 #### VTAdmin 406 * [vtadmin] Add create+delete shards functionality #9012 407 * Add experimental `whoami` api endpoint #9233 408 * [vtadmin] Add ping feature, Dropdown and Dialog components #9318 409 * [VTAdmin] Dynamic Cluster support #9544 410 #### VTorc 411 * Merge InitShardPrimary functionality into PlannedReparentShard #9276 412 ### Internal Cleanup 413 #### Backup and Restore 414 * Inclusive naming: use new RPCs in vtctl/vtctld/wrangler etc. #9181 415 #### Cluster management 416 * reparent_journal: add backwards compatible alter statement #9439 417 * [vtctl] command deprecations #8967 418 * [wrangler] Cleanup duplicate wrangler methods #9015 419 * Migrate k8s topo CRD to v1 api #9045 420 * [schematools] Move more functions out of `wrangler` to package importable by `grpcvtctldserver` #9123 421 * [vtctld] Migrate `ReloadSchema*` rpcs #8832 422 * [vtctldserver] migrate ExecuteHook #9024 423 * [vtctldclient-codegen] Add support in codegen for streaming RPCs #9064 424 #### General 425 * Delete unused `go/cmd/automation_{client,server}` binaries #9234 426 * Inclusive naming: replace master with primary #9427,#9430,#9438,#9454,#9103,#9182 427 * naming: delete old code that was needed for version compatibility #9516 428 * MySQL: Pass mysql.Conn through {Hash,PlainText,Caching} storage interfaces #9264 429 #### Java 430 * build(deps): bump log4j-api and log4j-core from 2.13.3 to 2.15.0 in /java #9348,#9349 431 #### Observability 432 * Changed master to primary everywhere #9506 433 #### Query Serving 434 * Deprecate and ignore `gateway_implementation` flag to vtgate #9482 435 * Deprecate vtctl command `IgnoreHealthError` #9594 436 #### VReplication 437 * Fixed legacy vreplication data that may be using master tablet types #9497 438 #### VTAdmin 439 * [vtadmin-web] Upgrade to node v16.13.0 LTS #9136 440 #### VTorc 441 * Fix linting issues in Vtorc #9449 442 * Pass Semi sync information from durability policy and use it to log discrepancies #9533 443 #### vtctl 444 * Inclusive naming: removing vtctl flags and commands with `master` in them that were deprecated in 12.0 #9179 445 * vtctl: delete deprecated `blacklisted_tables` flag #9406 446 #### web UI 447 * Migrate jQuery (pt. 1) #9239 448 * Migrate jQuery (pt. 2/3) #9256 449 ### Performance 450 #### Query Serving 451 * vttablet: Better use of vtprotobuf memory pool #9365 452 ### Testing 453 #### Query Serving 454 * Fuzzing: Add more fuzzers #9249 455 456 457 The release includes 2020 commits (excluding merges) 458 459 Thanks to all our contributors: @AdamKorcz, @FancyFane, @GuptaManan100, @Phanatic, @Thirumalai-Shaktivel, @ajm188, @aquarapid, @arthurschreiber, @arvind-murty, @askdba, @carsonoid, @chapsuk, @choo-stripe, @dasl-, @dbussink, @dctrwatson, @deepthi, @dependabot[bot], @derekperkins, @doeg, @frouioui, @hallaroo, @harshit-gangal, @hkdsun, @king-11, @mattlord, @mattrobenolt, @mvh-stripe, @notfelineit, @oscerd, @pH14, @ritwizsinha, @rohit-nayak-ps, @shichao-an, @shlomi-noach, @systay, @utk9, @vmg, @y5w, @zhongr3n