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