- Szycy
- 11 sierpnia 2026 18:10 UTC
- Autor
- Kamo
- Pochęt się
- b458e58
Trzech biegaczy: BillingGroupRosterMigration tworzy billing_pay_group_members — kogo grupa oznacza za to, że zanim cokolwiek kupi. org_id jest na to denormalizowany Tak więc baza danych może egzekwować "członek jest w większości jednej aktywnej grupy rozliczeniowej na osobę Organizacja" jako częściowa unikalna. Dwie grupy płacące za jedną osobę to dwie Zarzuty za jedno miejsce, a nic innego w schemacie by go nie złapało: Unikat unikalnych subskrypcji są w przypadku subskrypcji, a AccountLicense nie ma żadnego. Dodaje billing_group_uid do account_subscriptions I zastępuje trzykolumn unikalny dwoma częściowymi unikalnymi. Poszerzenie go do Cztery kolumny nie zadziałałyby - NULL są tutaj odrębne w unikalnym indeksie, więc Każdy niegrupowy rząd przestałby być ograniczony. BillingPayGroupColumration dodaje market_id, seat_limit i status oraz znamion Istniejące grupy LEGACY. Zostały one obciążone na każde konto, które jest zgodne z prośbą Ciało przenoszone, a konsola wysłała organizację, więc ich account_uid jest Prawie na pewno źle. Nie ma bezpiecznego sposobu, aby zgadnąć, która karta była przeznaczona, i Odgadywanie błędnych rachunków niewłaściwą osobę, więc odmawia się im w punkcie zarzutu Zamiast naprawiać. Pierwsza runda pokazała, dlaczego ponowne wykonanie ma znaczenie: oba indeksy zastępcze nie powiodły się 40001 nie mógł serializować dostępu, biegacz zarejestrował "pominięty" i kontynuował, oraz DROP starego przymusu odniósł sukces – pozostawiając account_subscriptions Bez żadnej wyjątkowości, co jest surowo gorsze niż kolizja, która to rozwiązuje. Oświadczenia DDL ponownie próbują awarii serializacji, a spadek jest pomijany Całkowicie, chyba że oba zamienniki są potwierdzone.