rename操作,是否能支持多个表的rename

需求反馈
请清晰准备地描述问题场景、需求行为及背景信息,更有利于产品同学及时跟进需求

我们是使用中,会将一些数据推送到tidb中,例如hive->tidb,具体的情况如下:
原表为a
创建一个临时表 a_tmp like a,先将数据写入a_tmp中,然后用a_tmp替换a,
替换用 rename操作:

rename a to a_delete;rename a_tmp to a;
mysql可以这样写:rename a to a_delete, a_tmp to a;

因为tidb不支持一个ddl执行两条语句,所以需要拆分成两个,但是现在拆分会导致一个空窗期,第一个rename完成到第二个rename 完成,可能出现表a不存在,导致查询数据失败。

注:
1.目前都是全量导入数据。
2.清空原表再写入,也会存在数据查询不到的情况。

是否有办法解决该问题或者有其他较好的解决方案。

https://github.com/pingcap/tidb/pull/19962
目前 github 上已经有相关的 issue 了,可以的话,可以在 issue 下面点个赞。

关于清空原表再写入,也会存在数据查询不到的情况,这个可以具体描述一下吗?我理解如果清空原表的话,那就没有 rename 操作了,这样为什么会查询不到数据?

先清空的话,数据不是没了吗
然后写入不可能瞬间写完的,还没写完前查询,就会数据缺失的

可以补充一下具体的执行逻辑么 ?如果是事务没有完成写入,等提交完成后才能查询到数据应该是预期的。

你好,多表 rename 目前 master 版本已支持,计划下个 sprint 版本 5.1.0 会带入。