I'm trying to produce a deadlock in Azure Synapse. I would have expected it to work much as on-prem SQL Server does given the documentation says it "applies to" Synapse. I've waited an inordinately long time (over 4 hours) yet deadlock detection has not killed either of my sessions.
Using SSMS connected to a Synapse dedicated pool at scale DW100c I create and populate two tables.
create table t1(c int);
create table t2(c int);
insert t1(c) select 99;
insert t2(c) select 99;
In two separate SSMS session I execute these statements
Session 1 Session 2
------------------------ ------------------------
begin transaction begin transaction
update t1 set c = 0;
update t2 set c = 0;
update t2 set c = 0;
update t1 set c = 7;
Running this against an instance of SQL Server 2019 on my laptop produces the expected 1205 error message after a few seconds. Run it against Synapse, however, and both sessions simply sit locked for hours. I can see the sessions in sys.dm_pdw_lock_waits as expected. A web search produces nothing Synapse specific. Neither do MS docs call out any peculiarities that I can see.
These four updates are the only activity on this instance during the test. There is no other concurrent load. I see the same behaviour whether the tables' distributions are defined as HASH(c) or ROUND ROBIN.
How are deadlocks detected and handled by Synapse?