create_distributed_table with long names may lead to self-deadlocks
- Dominant language
- C
- Stars
- 12.8k
- Forks
- 794
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 31
Description
This is mainly because create_distributed_table cannot use sequential mode (or max_adaptive_executor_pool_size) when there is data inside.
```SQL
create table name_lengths(a int);
insert into name_lengths select i from generate_series(0,10000)i;
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
select create_distributed_table('name_len_12345678901234567890123456789012345678901234567890', 'a');
ERROR: canceling the transaction since it was involved in a distributed deadlock
Time: 1474.144 ms (00:01.474)
```
To prevent:
```SQL
SET citus.multi_shard_modify_mode TO sequential;
create table name_lengths(a int);
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
select create_distributed_table('name_len_12345678901234567890123456789012345678901234567890', 'a');
insert into name_len_12345678901234567890123456789012345678901234567890 select i from generate_series(0,10000)i;
```
Contributor guide
Assessment
This issue has not been assessed yet.