-- Normalize legacy IANA timezone aliases stored in users.timezone. -- -- Browsers (ICU/CLDR) report legacy ids — Safari sends "Asia/Calcutta", not -- "Asia/Kolkata" — and Go's validation accepts them, so they were stored -- verbatim. A Postgres built against tzdata without the "backward" links -- rejects those names in AT TIME ZONE (SQLSTATE 22023), 500-ing the sādhana -- dashboard. The Go side now canonicalizes on read and write (see -- internal/service/timezone.go); this backfills the rows written before. UPDATE users SET timezone = m.canonical FROM (VALUES ('Asia/Calcutta', 'Asia/Kolkata'), ('Asia/Katmandu', 'Asia/Kathmandu'), ('Asia/Rangoon', 'Asia/Yangon'), ('Asia/Saigon', 'Asia/Ho_Chi_Minh'), ('America/Buenos_Aires', 'America/Argentina/Buenos_Aires'), ('America/Catamarca', 'America/Argentina/Catamarca'), ('America/Cordoba', 'America/Argentina/Cordoba'), ('America/Jujuy', 'America/Argentina/Jujuy'), ('America/Mendoza', 'America/Argentina/Mendoza'), ('America/Indianapolis', 'America/Indiana/Indianapolis'), ('America/Louisville', 'America/Kentucky/Louisville'), ('America/Godthab', 'America/Nuuk'), ('Atlantic/Faeroe', 'Atlantic/Faroe'), ('Pacific/Ponape', 'Pacific/Pohnpei'), ('Pacific/Truk', 'Pacific/Chuuk'), ('Europe/Kiev', 'Europe/Kyiv'), ('Asia/Ashkhabad', 'Asia/Ashgabat'), ('Asia/Chongqing', 'Asia/Shanghai'), ('Asia/Chungking', 'Asia/Shanghai'), ('Asia/Dacca', 'Asia/Dhaka'), ('Asia/Harbin', 'Asia/Shanghai'), ('Asia/Istanbul', 'Europe/Istanbul'), ('Asia/Kashgar', 'Asia/Urumqi'), ('Asia/Macao', 'Asia/Macau'), ('Asia/Tel_Aviv', 'Asia/Jerusalem'), ('Asia/Thimbu', 'Asia/Thimphu'), ('Asia/Ujung_Pandang', 'Asia/Makassar'), ('Asia/Ulan_Bator', 'Asia/Ulaanbaatar'), ('Africa/Asmera', 'Africa/Asmara'), ('America/Coral_Harbour','America/Atikokan'), ('Australia/ACT', 'Australia/Sydney'), ('Australia/Canberra', 'Australia/Sydney'), ('Australia/NSW', 'Australia/Sydney'), ('Australia/North', 'Australia/Darwin'), ('Australia/Queensland', 'Australia/Brisbane'), ('Australia/South', 'Australia/Adelaide'), ('Australia/Tasmania', 'Australia/Hobart'), ('Australia/Victoria', 'Australia/Melbourne'), ('Australia/West', 'Australia/Perth'), ('US/Alaska', 'America/Anchorage'), ('US/Arizona', 'America/Phoenix'), ('US/Central', 'America/Chicago'), ('US/Eastern', 'America/New_York'), ('US/Hawaii', 'Pacific/Honolulu'), ('US/Mountain', 'America/Denver'), ('US/Pacific', 'America/Los_Angeles'), ('GB', 'Europe/London'), ('GB-Eire', 'Europe/London'), ('Eire', 'Europe/Dublin'), ('Egypt', 'Africa/Cairo'), ('Hongkong', 'Asia/Hong_Kong'), ('Iceland', 'Atlantic/Reykjavik'), ('Israel', 'Asia/Jerusalem'), ('Japan', 'Asia/Tokyo'), ('NZ', 'Pacific/Auckland'), ('Poland', 'Europe/Warsaw'), ('Portugal', 'Europe/Lisbon'), ('PRC', 'Asia/Shanghai'), ('ROC', 'Asia/Taipei'), ('ROK', 'Asia/Seoul'), ('Singapore', 'Asia/Singapore'), ('Turkey', 'Europe/Istanbul') ) AS m(alias, canonical) WHERE users.timezone = m.alias;