* 1. init ddl tables
create tidb_ddl_job, tidb_ddl_reorg, tidb_ddl_history tables with raw meta write, these 3 tables is use to replace the ddl job queue and reorg and history hash table
* 2. setup concurrent ddl env and add ddl worker pool
adds the ddl worker pool definition, the ddl job manager will find a job and ship it to a worker in the worker pool.
Also, this commit provides a sessionctx wrapper, only use in ddl relate. it just wraps begin, commit and execute
* 3. add ddl manager to handle ddl job
* 4. reorg handler for concurrent ddl
just implements the partner of the reorg information.
* 5. manage ddl jobs for concurrent ddl
add the partner of add job, delete job and many others related to history job
because many of the functions need a session now, we just change the caller
* 6. add metrics for concurrent ddl
add metrics
* 7. support multiple tables
* 8. fix test
* 9. migrate ddl between table and queue
support switch between the old and new ddl framework, migrate the existing ddl job between queue and table
* 10. check tikv version and set reorg worker count according cpu count
* *: add featuretag on tests
Signed-off-by: Weizhen Wang <wangweizhen@pingcap.com>
* use a determined table id for 3 tables
* remove ctx value
* add GetSchemaVersionWithNonEmptyDiff function
* address tangenta and zimulala comment
* use only one etcd path
* make ActionRenameTable support multi-schema
* reset sql digest to make top sql work correct
* add comment
* fix test
* remove 0 for schema version lock
Co-authored-by: xiongjiwei <xiongjiwei1996@outlook.com>
Co-authored-by: Ti Chi Robot <ti-community-prow-bot@tidb.io>
Co-authored-by: wjHuang <huangwenjun1997@gmail.com>