← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~stub/launchpad/openid-auth into lp:launchpad

 

Stuart Bishop has proposed merging lp:~stub/launchpad/openid-auth into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  #580461 Login with the email once associated to a merge account OOPS
  https://bugs.launchpad.net/bugs/580461


Launchpad currently associates a single OpenId Identifier with a Person, but multiple email addresses. Each email address can be associated with a separate OpenId Identifier in the ISD authentication service, so users may only use one of their email addresses to authenticate to Launchpad.

When Person records in Launchpad are merged, the old account is left alone but unlinked from the Person record. The ISD authentication service would still allow the OpenId Identifier to be authenticated, but Launchpad would fail to log them in because that OpenId Identifier was no longer linked to a Person.

We fix this, and process a little closer along the way to allowing authentication using 3rd party OpenId Providers, by linking an Account to multiple OpenId Identifiers.

We currently trust our only allowed OpenId Provider, so repair and populate OpenIdIdentifier, Account & EmailAddress records on demand rather than generate an OOPS. So if account information is changed in the Canonical SSO database we cope.
-- 
https://code.launchpad.net/~stub/launchpad/openid-auth/+merge/33620
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~stub/launchpad/openid-auth into lp:launchpad.
=== modified file 'database/sampledata/current-dev.sql'
--- database/sampledata/current-dev.sql	2010-08-24 15:22:48 +0000
+++ database/sampledata/current-dev.sql	2010-08-25 09:59:33 +0000
@@ -796,84 +796,84 @@
 
 ALTER TABLE account DISABLE TRIGGER ALL;
 
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (1, '2005-06-06 08:59:51.591618', 8, 20, '2005-06-06 08:59:51.591618', 'Mark Shuttleworth', 'mark_oid', NULL, '123/mark');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2, '2005-06-06 08:59:51.598107', 8, 20, '2005-06-06 08:59:51.598107', 'Robert Collins', 'lifeless_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (3, '2005-06-06 08:59:51.610048', 1, 20, '2008-09-05 20:55:47.76904', 'Dave Miller', 'justdave_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (4, '2005-06-06 08:59:51.611185', 8, 20, '2005-06-06 08:59:51.611185', 'Colin Watson', 'kamion_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (5, '2005-06-06 08:59:51.608802', 1, 10, '2005-06-06 08:59:51.608802', 'Scott James Remnant', 'keybuk_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (6, '2005-06-06 08:59:51.600523', 8, 20, '2005-06-06 08:59:51.600523', 'Jeff Waugh', 'jdub_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (7, '2005-06-06 08:59:51.551196', 2, 20, '2008-09-05 20:55:47.76904', 'Andrew Bennetts', 'spiv_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (8, '2005-06-06 08:59:51.601584', 8, 20, '2005-06-06 08:59:51.601584', 'James Blackwell', 'jblack_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (9, '2005-06-06 08:59:51.594941', 1, 10, '2005-06-06 08:59:51.594941', 'Christian Reis', 'kiko_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (10, '2005-06-06 08:59:51.619713', 2, 20, '2008-09-05 20:55:47.76904', 'Alexander Limi', 'limi_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (11, '2005-06-06 08:59:51.599234', 8, 20, '2005-06-06 08:59:51.599234', 'Steve Alexander', 'stevea_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (12, '2005-06-06 08:59:51.612277', 8, 20, '2005-06-06 08:59:51.612277', 'Sample Person', 'name12_oid', NULL, '123/name12');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (13, '2005-06-06 08:59:51.615543', 8, 20, '2005-06-06 08:59:51.615543', 'Carlos Perelló Marín', 'carlos_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (14, '2005-06-06 08:59:51.616666', 8, 20, '2005-06-06 08:59:51.616666', 'Dafydd Harries', 'daf_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (16, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Foo Bar', 'name16_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (22, '2005-06-06 08:59:51.59276', 8, 20, '2005-06-06 08:59:51.59276', 'Stuart Bishop', 'stub_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (23, '2005-06-06 08:59:51.620823', 8, 20, '2005-06-06 08:59:51.620823', 'David Allouche', 'ddaa_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (26, '2005-06-06 08:59:51.618722', 2, 20, '2008-09-05 20:55:47.76904', 'Daniel Silverstone', 'kinnison_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (27, '2005-06-06 08:59:51.557224', 8, 20, '2005-06-06 08:59:51.557224', 'Daniel Henrique Debonzi', 'debonzi_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (28, '2005-06-06 08:59:51.59705', 8, 20, '2005-06-06 08:59:51.59705', 'Celso Providelo', 'cprov_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (29, '2005-06-06 08:59:51.596025', 8, 20, '2005-06-06 08:59:51.596025', 'Guilherme Salgado', 'salgado_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (33, '2005-06-06 08:59:51.621892', 8, 20, '2005-06-06 08:59:51.621892', 'Edgar Bursic', 'edgar_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (34, '2005-06-06 08:59:51.622908', 4, 10, '2005-06-06 08:59:51.622908', 'Jordi Vilalta', 'jvprat_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (35, '2005-06-06 08:59:51.623962', 4, 10, '2005-06-06 08:59:51.623962', 'Sigurd Gartmann', 'sigurd-ubuntu_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (36, '2005-06-06 08:59:51.5244', 4, 10, '2005-06-06 08:59:51.5244', 'Vlastimil Skacel', 'skacel_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (37, '2005-06-06 08:59:51.549651', 8, 20, '2005-06-06 08:59:51.549651', 'Daniel Aguayo', 'danner_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (38, '2005-06-06 08:59:51.555051', 4, 10, '2005-06-06 08:59:51.555051', 'Martin Pitt', 'martin-pitt_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (39, '2005-06-06 08:59:51.556132', 4, 10, '2005-06-06 08:59:51.556132', 'Nicolas Velin', 'nsv_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (40, '2005-06-06 08:59:51.558429', 4, 10, '2005-06-06 08:59:51.558429', 'Francesco Accattapà', 'callipeo_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (41, '2005-06-06 08:59:51.559519', 4, 10, '2005-06-06 08:59:51.559519', 'Aloriel', 'jorge-gonzalez-gonzalez_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (42, '2005-06-06 08:59:51.560604', 4, 10, '2005-06-06 08:59:51.560604', 'Denis Barbier', 'barbier_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (43, '2005-06-06 08:59:51.561685', 4, 10, '2005-06-06 08:59:51.561685', 'André Luís Lopes', 'andrelop_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (44, '2005-06-06 08:59:51.562857', 4, 10, '2005-06-06 08:59:51.562857', 'Carlos Valdivia Yagüe', 'valyag_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (45, '2005-06-06 08:59:51.563952', 4, 10, '2005-06-06 08:59:51.563952', 'Luk Claes', 'luk-claes_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (46, '2005-06-06 08:59:51.565033', 8, 20, '2005-06-06 08:59:51.565033', 'Miroslav Kure', 'kurem_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (47, '2005-06-06 08:59:51.56614', 4, 10, '2005-06-06 08:59:51.56614', 'Morten Brix Pedersen', 'morten_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (48, '2005-06-06 08:59:51.567224', 4, 10, '2005-06-06 08:59:51.567224', 'Matti Pöllä', 'mpo_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (49, '2005-06-06 08:59:51.568323', 4, 10, '2005-06-06 08:59:51.568323', 'Kęstutis Biliūnas', 'kebil_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (50, '2005-06-06 08:59:51.569518', 8, 20, '2005-06-06 08:59:51.569518', 'Valentina Commissari', 'tsukimi_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (51, '2005-06-06 08:59:51.570701', 8, 20, '2005-06-06 08:59:51.570701', 'Helge Kreutzmann', 'kreutzm_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (52, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'No Privileges Person', 'no-priv_oid', NULL, '123/no-priv');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (55, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Marilize Coetzee', 'marilize_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (56, '2005-10-07 14:17:51.593849', 8, 20, '2005-10-07 14:17:51.593849', 'Jordi Mallach', 'jordi_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (58, '2005-12-06 09:48:58.287679', 8, 20, '2005-12-06 09:48:58.287679', 'Bug Importer', 'bug-importer_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (62, '2006-05-23 12:49:30.483464', 1, 10, '2006-05-23 12:49:30.483464', 'Bug Watch Updater', 'bug-watch-updater_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (63, '2006-05-23 12:49:30.483464', 8, 20, '2006-05-23 12:49:30.483464', 'Karl Tilbury', 'karl_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (65, '2006-10-04 16:20:51.19954', 1, 20, '2006-10-04 16:20:51.19954', 'Launchpad Janitor', 'launchpad-janitor_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (66, '2006-12-13 21:19:06.369142', 4, 10, '2006-12-13 21:19:06.369142', 'Diogo Matsubara', 'matsubara_oid', NULL, '456/matsubara');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (67, '2006-10-04 16:20:51.19954', 1, 10, '2006-10-04 16:20:51.19954', 'Team Membership Janitor', 'team-membership-janitor_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (68, '2007-01-31 06:56:25.096519', 8, 20, '2007-01-31 06:56:25.096519', 'Launchpad Beta Testers Owner', 'launchpad-beta-owner_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (70, '2006-12-13 21:19:06.369142', 2, 30, '2008-02-01 13:01:01.000001', 'Former User', 'former-user_oid', 'an ex-user', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243602, '2007-02-19 11:17:57.755666', 8, 20, '2007-02-19 11:17:57.755666', 'No Team Memberships', 'no-team-memberships_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243603, '2007-02-21 10:53:59.700105', 8, 20, '2007-02-21 10:53:59.700105', 'One Membership', 'one-membership_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243606, '2007-08-09 21:25:37.832976', 7, 10, '2007-08-09 21:25:37.832976', 'Julian Edwards', 'neMCQNd', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243608, '2007-11-12 15:23:19.847132', 3, 10, '2007-11-12 15:23:19.847132', 'Ubuntu Doc Team', 'WQPMHdf', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243609, '2007-12-07 13:43:20.393704', 8, 20, '2007-12-07 13:43:20.393704', 'Katie', '6w7kmzC', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243610, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Gold Member', 'cCGE3LA', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243611, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Owner', 'MGWJnTL', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243614, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'josh', '6KHNEe3', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243615, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Sjoerd Simons', 'yEzBPbd', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243616, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Martin Pitt', 'R8FpwXd', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243617, '2008-03-06 09:55:27.289842', 1, 20, '2008-06-16 07:02:18.857109', 'Tim Penhey', 'CALDpFr', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243622, '2008-05-12 17:38:38.798696', 8, 20, '2008-06-16 07:02:18.857109', 'Commercial Member', 'rPwGRk4', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243623, '2008-06-27 14:49:11.149508', 8, 20, '2008-06-27 14:49:11.149508', 'Brad Crittenden', 'mTmeENb', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243624, '2008-11-04 12:59:26.965843', 8, 20, '2008-11-04 13:09:43.807125', 'PPA key guard', 'cF4PNk3', NULL, '771/ppa-key-guard');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243625, '2009-03-17 07:28:15.948042', 1, 20, '2009-03-17 07:28:15.948042', 'Ubuntu-branches-owner', '3sbtGMy', 'Activated when the preferred email was set.', '538/ubuntu-branches-owner');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243626, '2009-08-04 10:49:59.788665', 1, 20, '2009-08-04 10:49:59.788665', 'Techboard Owner', 'LQCGF4D', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243627, '2009-08-24 13:10:40.725354', 1, 20, '2009-08-24 13:10:40.725354', 'Translator Deity', 'tMRLhWD', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243628, '2009-08-24 14:09:47.90688', 1, 20, '2009-08-24 14:09:47.90688', 'Срба Србић', 'MY7Gzdp', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243629, '2009-08-24 14:09:47.985931', 1, 20, '2009-08-24 14:09:47.985931', 'João da Silva', 'DX4rknT', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243630, '2009-08-24 14:09:48.020245', 1, 20, '2009-08-24 14:09:48.020245', 'Jürgen Müller', 'f8mXQsW', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243631, '2009-08-24 14:09:48.055449', 1, 20, '2009-08-24 14:09:48.055449', 'Dolores Dominguez', 'DeKE6Tx', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243632, '2009-08-24 14:18:51.939952', 1, 20, '2009-08-24 14:18:51.939952', 'Иван Петровић', 'wwnwXxy', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243633, '2009-08-24 14:19:05.515651', 1, 20, '2009-08-24 14:19:05.515651', 'Juanita Perez', 'YEBL6yn', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243634, '2009-08-24 14:36:04.670944', 1, 20, '2009-08-24 14:36:04.670944', 'Epiphany Maintainer', 'HHN3kCp', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243635, '2009-08-24 14:39:04.682972', 1, 20, '2009-08-24 14:39:04.682972', 'intltool maintainer', 'NbFGnBx', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243636, '2009-08-24 14:41:04.403504', 1, 20, '2009-08-24 14:41:04.403504', 'Lies Maintainer', 'e3eENYJ', 'Activated when the preferred email was set.', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243637, '2010-07-12 09:48:27.198885', 1, 20, '2010-07-12 09:48:27.198885', 'Software-center-agent', 'zRtPxw8', NULL, NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (1, '2005-06-06 08:59:51.591618', 8, 20, '2005-06-06 08:59:51.591618', 'Mark Shuttleworth', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2, '2005-06-06 08:59:51.598107', 8, 20, '2005-06-06 08:59:51.598107', 'Robert Collins', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (3, '2005-06-06 08:59:51.610048', 1, 20, '2008-09-05 20:55:47.76904', 'Dave Miller', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (4, '2005-06-06 08:59:51.611185', 8, 20, '2005-06-06 08:59:51.611185', 'Colin Watson', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (5, '2005-06-06 08:59:51.608802', 1, 10, '2005-06-06 08:59:51.608802', 'Scott James Remnant', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (6, '2005-06-06 08:59:51.600523', 8, 20, '2005-06-06 08:59:51.600523', 'Jeff Waugh', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (7, '2005-06-06 08:59:51.551196', 2, 20, '2008-09-05 20:55:47.76904', 'Andrew Bennetts', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (8, '2005-06-06 08:59:51.601584', 8, 20, '2005-06-06 08:59:51.601584', 'James Blackwell', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (9, '2005-06-06 08:59:51.594941', 1, 10, '2005-06-06 08:59:51.594941', 'Christian Reis', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (10, '2005-06-06 08:59:51.619713', 2, 20, '2008-09-05 20:55:47.76904', 'Alexander Limi', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (11, '2005-06-06 08:59:51.599234', 8, 20, '2005-06-06 08:59:51.599234', 'Steve Alexander', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (12, '2005-06-06 08:59:51.612277', 8, 20, '2005-06-06 08:59:51.612277', 'Sample Person', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (13, '2005-06-06 08:59:51.615543', 8, 20, '2005-06-06 08:59:51.615543', 'Carlos Perelló Marín', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (14, '2005-06-06 08:59:51.616666', 8, 20, '2005-06-06 08:59:51.616666', 'Dafydd Harries', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (16, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Foo Bar', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (22, '2005-06-06 08:59:51.59276', 8, 20, '2005-06-06 08:59:51.59276', 'Stuart Bishop', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (23, '2005-06-06 08:59:51.620823', 8, 20, '2005-06-06 08:59:51.620823', 'David Allouche', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (26, '2005-06-06 08:59:51.618722', 2, 20, '2008-09-05 20:55:47.76904', 'Daniel Silverstone', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (27, '2005-06-06 08:59:51.557224', 8, 20, '2005-06-06 08:59:51.557224', 'Daniel Henrique Debonzi', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (28, '2005-06-06 08:59:51.59705', 8, 20, '2005-06-06 08:59:51.59705', 'Celso Providelo', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (29, '2005-06-06 08:59:51.596025', 8, 20, '2005-06-06 08:59:51.596025', 'Guilherme Salgado', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (33, '2005-06-06 08:59:51.621892', 8, 20, '2005-06-06 08:59:51.621892', 'Edgar Bursic', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (34, '2005-06-06 08:59:51.622908', 4, 10, '2005-06-06 08:59:51.622908', 'Jordi Vilalta', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (35, '2005-06-06 08:59:51.623962', 4, 10, '2005-06-06 08:59:51.623962', 'Sigurd Gartmann', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (36, '2005-06-06 08:59:51.5244', 4, 10, '2005-06-06 08:59:51.5244', 'Vlastimil Skacel', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (37, '2005-06-06 08:59:51.549651', 8, 20, '2005-06-06 08:59:51.549651', 'Daniel Aguayo', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (38, '2005-06-06 08:59:51.555051', 4, 10, '2005-06-06 08:59:51.555051', 'Martin Pitt', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (39, '2005-06-06 08:59:51.556132', 4, 10, '2005-06-06 08:59:51.556132', 'Nicolas Velin', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (40, '2005-06-06 08:59:51.558429', 4, 10, '2005-06-06 08:59:51.558429', 'Francesco Accattapà', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (41, '2005-06-06 08:59:51.559519', 4, 10, '2005-06-06 08:59:51.559519', 'Aloriel', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (42, '2005-06-06 08:59:51.560604', 4, 10, '2005-06-06 08:59:51.560604', 'Denis Barbier', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (43, '2005-06-06 08:59:51.561685', 4, 10, '2005-06-06 08:59:51.561685', 'André Luís Lopes', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (44, '2005-06-06 08:59:51.562857', 4, 10, '2005-06-06 08:59:51.562857', 'Carlos Valdivia Yagüe', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (45, '2005-06-06 08:59:51.563952', 4, 10, '2005-06-06 08:59:51.563952', 'Luk Claes', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (46, '2005-06-06 08:59:51.565033', 8, 20, '2005-06-06 08:59:51.565033', 'Miroslav Kure', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (47, '2005-06-06 08:59:51.56614', 4, 10, '2005-06-06 08:59:51.56614', 'Morten Brix Pedersen', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (48, '2005-06-06 08:59:51.567224', 4, 10, '2005-06-06 08:59:51.567224', 'Matti Pöllä', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (49, '2005-06-06 08:59:51.568323', 4, 10, '2005-06-06 08:59:51.568323', 'Kęstutis Biliūnas', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (50, '2005-06-06 08:59:51.569518', 8, 20, '2005-06-06 08:59:51.569518', 'Valentina Commissari', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (51, '2005-06-06 08:59:51.570701', 8, 20, '2005-06-06 08:59:51.570701', 'Helge Kreutzmann', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (52, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'No Privileges Person', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (55, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Marilize Coetzee', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (56, '2005-10-07 14:17:51.593849', 8, 20, '2005-10-07 14:17:51.593849', 'Jordi Mallach', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (58, '2005-12-06 09:48:58.287679', 8, 20, '2005-12-06 09:48:58.287679', 'Bug Importer', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (62, '2006-05-23 12:49:30.483464', 1, 10, '2006-05-23 12:49:30.483464', 'Bug Watch Updater', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (63, '2006-05-23 12:49:30.483464', 8, 20, '2006-05-23 12:49:30.483464', 'Karl Tilbury', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (65, '2006-10-04 16:20:51.19954', 1, 20, '2006-10-04 16:20:51.19954', 'Launchpad Janitor', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (66, '2006-12-13 21:19:06.369142', 4, 10, '2006-12-13 21:19:06.369142', 'Diogo Matsubara', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (67, '2006-10-04 16:20:51.19954', 1, 10, '2006-10-04 16:20:51.19954', 'Team Membership Janitor', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (68, '2007-01-31 06:56:25.096519', 8, 20, '2007-01-31 06:56:25.096519', 'Launchpad Beta Testers Owner', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (70, '2006-12-13 21:19:06.369142', 2, 30, '2008-02-01 13:01:01.000001', 'Former User', 'an ex-user');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243602, '2007-02-19 11:17:57.755666', 8, 20, '2007-02-19 11:17:57.755666', 'No Team Memberships', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243603, '2007-02-21 10:53:59.700105', 8, 20, '2007-02-21 10:53:59.700105', 'One Membership', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243606, '2007-08-09 21:25:37.832976', 7, 10, '2007-08-09 21:25:37.832976', 'Julian Edwards', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243608, '2007-11-12 15:23:19.847132', 3, 10, '2007-11-12 15:23:19.847132', 'Ubuntu Doc Team', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243609, '2007-12-07 13:43:20.393704', 8, 20, '2007-12-07 13:43:20.393704', 'Katie', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243610, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Gold Member', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243611, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Owner', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243614, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'josh', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243615, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Sjoerd Simons', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243616, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Martin Pitt', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243617, '2008-03-06 09:55:27.289842', 1, 20, '2008-06-16 07:02:18.857109', 'Tim Penhey', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243622, '2008-05-12 17:38:38.798696', 8, 20, '2008-06-16 07:02:18.857109', 'Commercial Member', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243623, '2008-06-27 14:49:11.149508', 8, 20, '2008-06-27 14:49:11.149508', 'Brad Crittenden', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243624, '2008-11-04 12:59:26.965843', 8, 20, '2008-11-04 13:09:43.807125', 'PPA key guard', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243625, '2009-03-17 07:28:15.948042', 1, 20, '2009-03-17 07:28:15.948042', 'Ubuntu-branches-owner', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243626, '2009-08-04 10:49:59.788665', 1, 20, '2009-08-04 10:49:59.788665', 'Techboard Owner', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243627, '2009-08-24 13:10:40.725354', 1, 20, '2009-08-24 13:10:40.725354', 'Translator Deity', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243628, '2009-08-24 14:09:47.90688', 1, 20, '2009-08-24 14:09:47.90688', 'Срба Србић', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243629, '2009-08-24 14:09:47.985931', 1, 20, '2009-08-24 14:09:47.985931', 'João da Silva', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243630, '2009-08-24 14:09:48.020245', 1, 20, '2009-08-24 14:09:48.020245', 'Jürgen Müller', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243631, '2009-08-24 14:09:48.055449', 1, 20, '2009-08-24 14:09:48.055449', 'Dolores Dominguez', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243632, '2009-08-24 14:18:51.939952', 1, 20, '2009-08-24 14:18:51.939952', 'Иван Петровић', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243633, '2009-08-24 14:19:05.515651', 1, 20, '2009-08-24 14:19:05.515651', 'Juanita Perez', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243634, '2009-08-24 14:36:04.670944', 1, 20, '2009-08-24 14:36:04.670944', 'Epiphany Maintainer', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243635, '2009-08-24 14:39:04.682972', 1, 20, '2009-08-24 14:39:04.682972', 'intltool maintainer', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243636, '2009-08-24 14:41:04.403504', 1, 20, '2009-08-24 14:41:04.403504', 'Lies Maintainer', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243637, '2010-07-12 09:48:27.198885', 1, 20, '2010-07-12 09:48:27.198885', 'Software-center-agent', NULL);
 
 
 ALTER TABLE account ENABLE TRIGGER ALL;
@@ -6003,6 +6003,91 @@
 ALTER TABLE openidconsumernonce ENABLE TRIGGER ALL;
 
 
+ALTER TABLE openididentifier DISABLE TRIGGER ALL;
+
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('3sbtGMy', 243625, '2009-03-17 07:28:15.948042');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('6KHNEe3', 243614, '2007-12-18 16:31:34.790641');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('6w7kmzC', 243609, '2007-12-07 13:43:20.393704');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('CALDpFr', 243617, '2008-03-06 09:55:27.289842');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('DX4rknT', 243629, '2009-08-24 14:09:47.985931');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('DeKE6Tx', 243631, '2009-08-24 14:09:48.055449');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('HHN3kCp', 243634, '2009-08-24 14:36:04.670944');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('LQCGF4D', 243626, '2009-08-04 10:49:59.788665');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('MGWJnTL', 243611, '2007-12-14 16:52:15.403833');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('MY7Gzdp', 243628, '2009-08-24 14:09:47.90688');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('NbFGnBx', 243635, '2009-08-24 14:39:04.682972');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('R8FpwXd', 243616, '2007-12-18 16:31:34.790641');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('WQPMHdf', 243608, '2007-11-12 15:23:19.847132');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('YEBL6yn', 243633, '2009-08-24 14:19:05.515651');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('andrelop_oid', 43, '2005-06-06 08:59:51.561685');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('barbier_oid', 42, '2005-06-06 08:59:51.560604');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('bug-importer_oid', 58, '2005-12-06 09:48:58.287679');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('bug-watch-updater_oid', 62, '2006-05-23 12:49:30.483464');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('cCGE3LA', 243610, '2007-12-14 16:52:15.403833');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('cF4PNk3', 243624, '2008-11-04 12:59:26.965843');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('callipeo_oid', 40, '2005-06-06 08:59:51.558429');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('carlos_oid', 13, '2005-06-06 08:59:51.615543');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('cprov_oid', 28, '2005-06-06 08:59:51.59705');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('daf_oid', 14, '2005-06-06 08:59:51.616666');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('danner_oid', 37, '2005-06-06 08:59:51.549651');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('ddaa_oid', 23, '2005-06-06 08:59:51.620823');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('debonzi_oid', 27, '2005-06-06 08:59:51.557224');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('e3eENYJ', 243636, '2009-08-24 14:41:04.403504');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('edgar_oid', 33, '2005-06-06 08:59:51.621892');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('f8mXQsW', 243630, '2009-08-24 14:09:48.020245');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('former-user_oid', 70, '2006-12-13 21:19:06.369142');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jblack_oid', 8, '2005-06-06 08:59:51.601584');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jdub_oid', 6, '2005-06-06 08:59:51.600523');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jordi_oid', 56, '2005-10-07 14:17:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jorge-gonzalez-gonzalez_oid', 41, '2005-06-06 08:59:51.559519');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('justdave_oid', 3, '2005-06-06 08:59:51.610048');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jvprat_oid', 34, '2005-06-06 08:59:51.622908');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kamion_oid', 4, '2005-06-06 08:59:51.611185');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('karl_oid', 63, '2006-05-23 12:49:30.483464');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kebil_oid', 49, '2005-06-06 08:59:51.568323');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('keybuk_oid', 5, '2005-06-06 08:59:51.608802');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kiko_oid', 9, '2005-06-06 08:59:51.594941');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kinnison_oid', 26, '2005-06-06 08:59:51.618722');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kreutzm_oid', 51, '2005-06-06 08:59:51.570701');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kurem_oid', 46, '2005-06-06 08:59:51.565033');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('launchpad-beta-owner_oid', 68, '2007-01-31 06:56:25.096519');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('launchpad-janitor_oid', 65, '2006-10-04 16:20:51.19954');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('lifeless_oid', 2, '2005-06-06 08:59:51.598107');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('limi_oid', 10, '2005-06-06 08:59:51.619713');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('luk-claes_oid', 45, '2005-06-06 08:59:51.563952');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('mTmeENb', 243623, '2008-06-27 14:49:11.149508');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('marilize_oid', 55, '2005-06-06 08:59:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('mark_oid', 1, '2005-06-06 08:59:51.591618');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('martin-pitt_oid', 38, '2005-06-06 08:59:51.555051');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('matsubara_oid', 66, '2006-12-13 21:19:06.369142');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('morten_oid', 47, '2005-06-06 08:59:51.56614');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('mpo_oid', 48, '2005-06-06 08:59:51.567224');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('name12_oid', 12, '2005-06-06 08:59:51.612277');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('name16_oid', 16, '2005-06-06 08:59:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('neMCQNd', 243606, '2007-08-09 21:25:37.832976');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('no-priv_oid', 52, '2005-06-06 08:59:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('no-team-memberships_oid', 243602, '2007-02-19 11:17:57.755666');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('nsv_oid', 39, '2005-06-06 08:59:51.556132');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('one-membership_oid', 243603, '2007-02-21 10:53:59.700105');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('rPwGRk4', 243622, '2008-05-12 17:38:38.798696');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('salgado_oid', 29, '2005-06-06 08:59:51.596025');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('sigurd-ubuntu_oid', 35, '2005-06-06 08:59:51.623962');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('skacel_oid', 36, '2005-06-06 08:59:51.5244');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('spiv_oid', 7, '2005-06-06 08:59:51.551196');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('stevea_oid', 11, '2005-06-06 08:59:51.599234');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('stub_oid', 22, '2005-06-06 08:59:51.59276');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('tMRLhWD', 243627, '2009-08-24 13:10:40.725354');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('team-membership-janitor_oid', 67, '2006-10-04 16:20:51.19954');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('tsukimi_oid', 50, '2005-06-06 08:59:51.569518');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('valyag_oid', 44, '2005-06-06 08:59:51.562857');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('wwnwXxy', 243632, '2009-08-24 14:18:51.939952');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('yEzBPbd', 243615, '2007-12-18 16:31:34.790641');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('zRtPxw8', 243637, '2010-07-12 09:48:27.198885');
+
+
+ALTER TABLE openididentifier ENABLE TRIGGER ALL;
+
+
 ALTER TABLE openidrpconfig DISABLE TRIGGER ALL;
 
 

=== modified file 'database/sampledata/current.sql'
--- database/sampledata/current.sql	2010-08-24 15:22:48 +0000
+++ database/sampledata/current.sql	2010-08-25 09:59:33 +0000
@@ -796,74 +796,74 @@
 
 ALTER TABLE account DISABLE TRIGGER ALL;
 
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (11, '2005-06-06 08:59:51.591618', 8, 20, '2005-06-06 08:59:51.591618', 'Mark Shuttleworth', 'mark_oid', NULL, '123/mark');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (21, '2005-06-06 08:59:51.598107', 8, 20, '2005-06-06 08:59:51.598107', 'Robert Collins', 'lifeless_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (31, '2005-06-06 08:59:51.610048', 1, 20, '2008-09-05 20:55:47.76904', 'Dave Miller', 'justdave_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (41, '2005-06-06 08:59:51.611185', 8, 20, '2005-06-06 08:59:51.611185', 'Colin Watson', 'kamion_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (51, '2005-06-06 08:59:51.608802', 1, 10, '2005-06-06 08:59:51.608802', 'Scott James Remnant', 'keybuk_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (61, '2005-06-06 08:59:51.600523', 8, 20, '2005-06-06 08:59:51.600523', 'Jeff Waugh', 'jdub_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (71, '2005-06-06 08:59:51.551196', 2, 20, '2008-09-05 20:55:47.76904', 'Andrew Bennetts', 'spiv_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (81, '2005-06-06 08:59:51.601584', 8, 20, '2005-06-06 08:59:51.601584', 'James Blackwell', 'jblack_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (91, '2005-06-06 08:59:51.594941', 1, 10, '2005-06-06 08:59:51.594941', 'Christian Reis', 'kiko_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (101, '2005-06-06 08:59:51.619713', 2, 20, '2008-09-05 20:55:47.76904', 'Alexander Limi', 'limi_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (111, '2005-06-06 08:59:51.599234', 8, 20, '2005-06-06 08:59:51.599234', 'Steve Alexander', 'stevea_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (121, '2005-06-06 08:59:51.612277', 8, 20, '2005-06-06 08:59:51.612277', 'Sample Person', 'name12_oid', NULL, '123/name12');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (131, '2005-06-06 08:59:51.615543', 8, 20, '2005-06-06 08:59:51.615543', 'Carlos Perelló Marín', 'carlos_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (141, '2005-06-06 08:59:51.616666', 8, 20, '2005-06-06 08:59:51.616666', 'Dafydd Harries', 'daf_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (161, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Foo Bar', 'name16_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (221, '2005-06-06 08:59:51.59276', 8, 20, '2005-06-06 08:59:51.59276', 'Stuart Bishop', 'stub_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (231, '2005-06-06 08:59:51.620823', 8, 20, '2005-06-06 08:59:51.620823', 'David Allouche', 'ddaa_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (261, '2005-06-06 08:59:51.618722', 2, 20, '2008-09-05 20:55:47.76904', 'Daniel Silverstone', 'kinnison_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (271, '2005-06-06 08:59:51.557224', 8, 20, '2005-06-06 08:59:51.557224', 'Daniel Henrique Debonzi', 'debonzi_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (281, '2005-06-06 08:59:51.59705', 8, 20, '2005-06-06 08:59:51.59705', 'Celso Providelo', 'cprov_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (291, '2005-06-06 08:59:51.596025', 8, 20, '2005-06-06 08:59:51.596025', 'Guilherme Salgado', 'salgado_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (331, '2005-06-06 08:59:51.621892', 8, 20, '2005-06-06 08:59:51.621892', 'Edgar Bursic', 'edgar_oid', '', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (341, '2005-06-06 08:59:51.622908', 4, 10, '2005-06-06 08:59:51.622908', 'Jordi Vilalta', 'jvprat_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (351, '2005-06-06 08:59:51.623962', 4, 10, '2005-06-06 08:59:51.623962', 'Sigurd Gartmann', 'sigurd-ubuntu_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (361, '2005-06-06 08:59:51.5244', 4, 10, '2005-06-06 08:59:51.5244', 'Vlastimil Skacel', 'skacel_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (371, '2005-06-06 08:59:51.549651', 8, 20, '2005-06-06 08:59:51.549651', 'Daniel Aguayo', 'danner_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (381, '2005-06-06 08:59:51.555051', 4, 10, '2005-06-06 08:59:51.555051', 'Martin Pitt', 'martin-pitt_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (391, '2005-06-06 08:59:51.556132', 4, 10, '2005-06-06 08:59:51.556132', 'Nicolas Velin', 'nsv_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (401, '2005-06-06 08:59:51.558429', 4, 10, '2005-06-06 08:59:51.558429', 'Francesco Accattapà', 'callipeo_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (411, '2005-06-06 08:59:51.559519', 4, 10, '2005-06-06 08:59:51.559519', 'Aloriel', 'jorge-gonzalez-gonzalez_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (421, '2005-06-06 08:59:51.560604', 4, 10, '2005-06-06 08:59:51.560604', 'Denis Barbier', 'barbier_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (431, '2005-06-06 08:59:51.561685', 4, 10, '2005-06-06 08:59:51.561685', 'André Luís Lopes', 'andrelop_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (441, '2005-06-06 08:59:51.562857', 4, 10, '2005-06-06 08:59:51.562857', 'Carlos Valdivia Yagüe', 'valyag_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (451, '2005-06-06 08:59:51.563952', 4, 10, '2005-06-06 08:59:51.563952', 'Luk Claes', 'luk-claes_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (461, '2005-06-06 08:59:51.565033', 8, 20, '2005-06-06 08:59:51.565033', 'Miroslav Kure', 'kurem_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (471, '2005-06-06 08:59:51.56614', 4, 10, '2005-06-06 08:59:51.56614', 'Morten Brix Pedersen', 'morten_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (481, '2005-06-06 08:59:51.567224', 4, 10, '2005-06-06 08:59:51.567224', 'Matti Pöllä', 'mpo_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (491, '2005-06-06 08:59:51.568323', 4, 10, '2005-06-06 08:59:51.568323', 'Kęstutis Biliūnas', 'kebil_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (501, '2005-06-06 08:59:51.569518', 8, 20, '2005-06-06 08:59:51.569518', 'Valentina Commissari', 'tsukimi_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (511, '2005-06-06 08:59:51.570701', 8, 20, '2005-06-06 08:59:51.570701', 'Helge Kreutzmann', 'kreutzm_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (521, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'No Privileges Person', 'no-priv_oid', NULL, '123/no-priv');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (551, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Marilize Coetzee', 'marilize_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (561, '2005-10-07 14:17:51.593849', 8, 20, '2005-10-07 14:17:51.593849', 'Jordi Mallach', 'jordi_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (581, '2005-12-06 09:48:58.287679', 8, 20, '2005-12-06 09:48:58.287679', 'Bug Importer', 'bug-importer_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (621, '2006-05-23 12:49:30.483464', 1, 10, '2006-05-23 12:49:30.483464', 'Bug Watch Updater', 'bug-watch-updater_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (631, '2006-05-23 12:49:30.483464', 8, 20, '2006-05-23 12:49:30.483464', 'Karl Tilbury', 'karl_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (651, '2006-10-04 16:20:51.19954', 1, 20, '2006-10-04 16:20:51.19954', 'Launchpad Janitor', 'launchpad-janitor_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (661, '2006-12-13 21:19:06.369142', 4, 10, '2006-12-13 21:19:06.369142', 'Diogo Matsubara', 'matsubara_oid', NULL, '456/matsubara');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (671, '2006-10-04 16:20:51.19954', 1, 10, '2006-10-04 16:20:51.19954', 'Team Membership Janitor', 'team-membership-janitor_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (681, '2007-01-31 06:56:25.096519', 8, 20, '2007-01-31 06:56:25.096519', 'Launchpad Beta Testers Owner', 'launchpad-beta-owner_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (701, '2006-12-13 21:19:06.369142', 2, 30, '2008-02-01 13:01:01.000001', 'Former User', 'former-user_oid', 'an ex-user', NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (243637, '2010-07-12 09:48:27.198885', 1, 20, '2010-07-12 09:48:27.198885', 'Software-center-agent', 'zRtPxw8', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436021, '2007-02-19 11:17:57.755666', 8, 20, '2007-02-19 11:17:57.755666', 'No Team Memberships', 'no-team-memberships_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436031, '2007-02-21 10:53:59.700105', 8, 20, '2007-02-21 10:53:59.700105', 'One Membership', 'one-membership_oid', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436061, '2007-08-09 21:25:37.832976', 7, 10, '2007-08-09 21:25:37.832976', 'Julian Edwards', 'neMCQNd', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436081, '2007-11-12 15:23:19.847132', 3, 10, '2007-11-12 15:23:19.847132', 'Ubuntu Doc Team', 'WQPMHdf', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436091, '2007-12-07 13:43:20.393704', 8, 20, '2007-12-07 13:43:20.393704', 'Katie', '6w7kmzC', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436101, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Gold Member', 'cCGE3LA', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436111, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Owner', 'MGWJnTL', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436141, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'josh', '6KHNEe3', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436151, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Sjoerd Simons', 'yEzBPbd', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436161, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Martin Pitt', 'R8FpwXd', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436171, '2008-03-06 09:55:27.289842', 1, 20, '2008-06-16 07:02:18.857109', 'Tim Penhey', 'CALDpFr', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436221, '2008-05-12 17:38:38.798696', 8, 20, '2008-06-16 07:02:18.857109', 'Commercial Member', 'rPwGRk4', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436231, '2008-06-27 14:49:11.149508', 8, 20, '2008-06-27 14:49:11.149508', 'Brad Crittenden', 'mTmeENb', NULL, NULL);
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436241, '2008-11-04 12:59:26.965843', 8, 20, '2008-11-04 13:09:43.807125', 'PPA key guard', 'cF4PNk3', NULL, '771/ppa-key-guard');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436242, '2009-03-17 07:26:14.024613', 1, 20, '2009-03-17 07:26:14.024613', 'Ubuntu-branches-owner', 'GMX7shE', 'Activated when the preferred email was set.', '359/ubuntu-branches-owner');
-INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, openid_identifier, status_comment, old_openid_identifier) VALUES (2436243, '2009-08-04 10:50:39.383407', 1, 20, '2009-08-04 10:50:39.383407', 'Techboard Owner', 'kYFxQYP', 'Activated when the preferred email was set.', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (11, '2005-06-06 08:59:51.591618', 8, 20, '2005-06-06 08:59:51.591618', 'Mark Shuttleworth', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (21, '2005-06-06 08:59:51.598107', 8, 20, '2005-06-06 08:59:51.598107', 'Robert Collins', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (31, '2005-06-06 08:59:51.610048', 1, 20, '2008-09-05 20:55:47.76904', 'Dave Miller', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (41, '2005-06-06 08:59:51.611185', 8, 20, '2005-06-06 08:59:51.611185', 'Colin Watson', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (51, '2005-06-06 08:59:51.608802', 1, 10, '2005-06-06 08:59:51.608802', 'Scott James Remnant', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (61, '2005-06-06 08:59:51.600523', 8, 20, '2005-06-06 08:59:51.600523', 'Jeff Waugh', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (71, '2005-06-06 08:59:51.551196', 2, 20, '2008-09-05 20:55:47.76904', 'Andrew Bennetts', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (81, '2005-06-06 08:59:51.601584', 8, 20, '2005-06-06 08:59:51.601584', 'James Blackwell', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (91, '2005-06-06 08:59:51.594941', 1, 10, '2005-06-06 08:59:51.594941', 'Christian Reis', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (101, '2005-06-06 08:59:51.619713', 2, 20, '2008-09-05 20:55:47.76904', 'Alexander Limi', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (111, '2005-06-06 08:59:51.599234', 8, 20, '2005-06-06 08:59:51.599234', 'Steve Alexander', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (121, '2005-06-06 08:59:51.612277', 8, 20, '2005-06-06 08:59:51.612277', 'Sample Person', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (131, '2005-06-06 08:59:51.615543', 8, 20, '2005-06-06 08:59:51.615543', 'Carlos Perelló Marín', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (141, '2005-06-06 08:59:51.616666', 8, 20, '2005-06-06 08:59:51.616666', 'Dafydd Harries', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (161, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Foo Bar', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (221, '2005-06-06 08:59:51.59276', 8, 20, '2005-06-06 08:59:51.59276', 'Stuart Bishop', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (231, '2005-06-06 08:59:51.620823', 8, 20, '2005-06-06 08:59:51.620823', 'David Allouche', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (261, '2005-06-06 08:59:51.618722', 2, 20, '2008-09-05 20:55:47.76904', 'Daniel Silverstone', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (271, '2005-06-06 08:59:51.557224', 8, 20, '2005-06-06 08:59:51.557224', 'Daniel Henrique Debonzi', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (281, '2005-06-06 08:59:51.59705', 8, 20, '2005-06-06 08:59:51.59705', 'Celso Providelo', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (291, '2005-06-06 08:59:51.596025', 8, 20, '2005-06-06 08:59:51.596025', 'Guilherme Salgado', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (331, '2005-06-06 08:59:51.621892', 8, 20, '2005-06-06 08:59:51.621892', 'Edgar Bursic', '');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (341, '2005-06-06 08:59:51.622908', 4, 10, '2005-06-06 08:59:51.622908', 'Jordi Vilalta', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (351, '2005-06-06 08:59:51.623962', 4, 10, '2005-06-06 08:59:51.623962', 'Sigurd Gartmann', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (361, '2005-06-06 08:59:51.5244', 4, 10, '2005-06-06 08:59:51.5244', 'Vlastimil Skacel', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (371, '2005-06-06 08:59:51.549651', 8, 20, '2005-06-06 08:59:51.549651', 'Daniel Aguayo', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (381, '2005-06-06 08:59:51.555051', 4, 10, '2005-06-06 08:59:51.555051', 'Martin Pitt', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (391, '2005-06-06 08:59:51.556132', 4, 10, '2005-06-06 08:59:51.556132', 'Nicolas Velin', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (401, '2005-06-06 08:59:51.558429', 4, 10, '2005-06-06 08:59:51.558429', 'Francesco Accattapà', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (411, '2005-06-06 08:59:51.559519', 4, 10, '2005-06-06 08:59:51.559519', 'Aloriel', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (421, '2005-06-06 08:59:51.560604', 4, 10, '2005-06-06 08:59:51.560604', 'Denis Barbier', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (431, '2005-06-06 08:59:51.561685', 4, 10, '2005-06-06 08:59:51.561685', 'André Luís Lopes', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (441, '2005-06-06 08:59:51.562857', 4, 10, '2005-06-06 08:59:51.562857', 'Carlos Valdivia Yagüe', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (451, '2005-06-06 08:59:51.563952', 4, 10, '2005-06-06 08:59:51.563952', 'Luk Claes', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (461, '2005-06-06 08:59:51.565033', 8, 20, '2005-06-06 08:59:51.565033', 'Miroslav Kure', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (471, '2005-06-06 08:59:51.56614', 4, 10, '2005-06-06 08:59:51.56614', 'Morten Brix Pedersen', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (481, '2005-06-06 08:59:51.567224', 4, 10, '2005-06-06 08:59:51.567224', 'Matti Pöllä', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (491, '2005-06-06 08:59:51.568323', 4, 10, '2005-06-06 08:59:51.568323', 'Kęstutis Biliūnas', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (501, '2005-06-06 08:59:51.569518', 8, 20, '2005-06-06 08:59:51.569518', 'Valentina Commissari', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (511, '2005-06-06 08:59:51.570701', 8, 20, '2005-06-06 08:59:51.570701', 'Helge Kreutzmann', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (521, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'No Privileges Person', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (551, '2005-06-06 08:59:51.593849', 8, 20, '2005-06-06 08:59:51.593849', 'Marilize Coetzee', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (561, '2005-10-07 14:17:51.593849', 8, 20, '2005-10-07 14:17:51.593849', 'Jordi Mallach', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (581, '2005-12-06 09:48:58.287679', 8, 20, '2005-12-06 09:48:58.287679', 'Bug Importer', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (621, '2006-05-23 12:49:30.483464', 1, 10, '2006-05-23 12:49:30.483464', 'Bug Watch Updater', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (631, '2006-05-23 12:49:30.483464', 8, 20, '2006-05-23 12:49:30.483464', 'Karl Tilbury', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (651, '2006-10-04 16:20:51.19954', 1, 20, '2006-10-04 16:20:51.19954', 'Launchpad Janitor', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (661, '2006-12-13 21:19:06.369142', 4, 10, '2006-12-13 21:19:06.369142', 'Diogo Matsubara', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (671, '2006-10-04 16:20:51.19954', 1, 10, '2006-10-04 16:20:51.19954', 'Team Membership Janitor', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (681, '2007-01-31 06:56:25.096519', 8, 20, '2007-01-31 06:56:25.096519', 'Launchpad Beta Testers Owner', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (701, '2006-12-13 21:19:06.369142', 2, 30, '2008-02-01 13:01:01.000001', 'Former User', 'an ex-user');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (243637, '2010-07-12 09:48:27.198885', 1, 20, '2010-07-12 09:48:27.198885', 'Software-center-agent', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436021, '2007-02-19 11:17:57.755666', 8, 20, '2007-02-19 11:17:57.755666', 'No Team Memberships', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436031, '2007-02-21 10:53:59.700105', 8, 20, '2007-02-21 10:53:59.700105', 'One Membership', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436061, '2007-08-09 21:25:37.832976', 7, 10, '2007-08-09 21:25:37.832976', 'Julian Edwards', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436081, '2007-11-12 15:23:19.847132', 3, 10, '2007-11-12 15:23:19.847132', 'Ubuntu Doc Team', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436091, '2007-12-07 13:43:20.393704', 8, 20, '2007-12-07 13:43:20.393704', 'Katie', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436101, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Gold Member', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436111, '2007-12-14 16:52:15.403833', 1, 20, '2007-12-14 16:52:15.403833', 'Owner', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436141, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'josh', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436151, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Sjoerd Simons', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436161, '2007-12-18 16:31:34.790641', 15, 10, '2007-12-18 16:31:34.790641', 'Martin Pitt', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436171, '2008-03-06 09:55:27.289842', 1, 20, '2008-06-16 07:02:18.857109', 'Tim Penhey', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436221, '2008-05-12 17:38:38.798696', 8, 20, '2008-06-16 07:02:18.857109', 'Commercial Member', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436231, '2008-06-27 14:49:11.149508', 8, 20, '2008-06-27 14:49:11.149508', 'Brad Crittenden', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436241, '2008-11-04 12:59:26.965843', 8, 20, '2008-11-04 13:09:43.807125', 'PPA key guard', NULL);
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436242, '2009-03-17 07:26:14.024613', 1, 20, '2009-03-17 07:26:14.024613', 'Ubuntu-branches-owner', 'Activated when the preferred email was set.');
+INSERT INTO account (id, date_created, creation_rationale, status, date_status_set, displayname, status_comment) VALUES (2436243, '2009-08-04 10:50:39.383407', 1, 20, '2009-08-04 10:50:39.383407', 'Techboard Owner', 'Activated when the preferred email was set.');
 
 
 ALTER TABLE account ENABLE TRIGGER ALL;
@@ -5877,6 +5877,81 @@
 ALTER TABLE openidconsumernonce ENABLE TRIGGER ALL;
 
 
+ALTER TABLE openididentifier DISABLE TRIGGER ALL;
+
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('6KHNEe3', 2436141, '2007-12-18 16:31:34.790641');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('6w7kmzC', 2436091, '2007-12-07 13:43:20.393704');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('CALDpFr', 2436171, '2008-03-06 09:55:27.289842');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('GMX7shE', 2436242, '2009-03-17 07:26:14.024613');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('MGWJnTL', 2436111, '2007-12-14 16:52:15.403833');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('R8FpwXd', 2436161, '2007-12-18 16:31:34.790641');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('WQPMHdf', 2436081, '2007-11-12 15:23:19.847132');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('andrelop_oid', 431, '2005-06-06 08:59:51.561685');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('barbier_oid', 421, '2005-06-06 08:59:51.560604');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('bug-importer_oid', 581, '2005-12-06 09:48:58.287679');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('bug-watch-updater_oid', 621, '2006-05-23 12:49:30.483464');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('cCGE3LA', 2436101, '2007-12-14 16:52:15.403833');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('cF4PNk3', 2436241, '2008-11-04 12:59:26.965843');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('callipeo_oid', 401, '2005-06-06 08:59:51.558429');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('carlos_oid', 131, '2005-06-06 08:59:51.615543');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('cprov_oid', 281, '2005-06-06 08:59:51.59705');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('daf_oid', 141, '2005-06-06 08:59:51.616666');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('danner_oid', 371, '2005-06-06 08:59:51.549651');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('ddaa_oid', 231, '2005-06-06 08:59:51.620823');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('debonzi_oid', 271, '2005-06-06 08:59:51.557224');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('edgar_oid', 331, '2005-06-06 08:59:51.621892');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('former-user_oid', 701, '2006-12-13 21:19:06.369142');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jblack_oid', 81, '2005-06-06 08:59:51.601584');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jdub_oid', 61, '2005-06-06 08:59:51.600523');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jordi_oid', 561, '2005-10-07 14:17:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jorge-gonzalez-gonzalez_oid', 411, '2005-06-06 08:59:51.559519');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('justdave_oid', 31, '2005-06-06 08:59:51.610048');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('jvprat_oid', 341, '2005-06-06 08:59:51.622908');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kYFxQYP', 2436243, '2009-08-04 10:50:39.383407');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kamion_oid', 41, '2005-06-06 08:59:51.611185');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('karl_oid', 631, '2006-05-23 12:49:30.483464');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kebil_oid', 491, '2005-06-06 08:59:51.568323');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('keybuk_oid', 51, '2005-06-06 08:59:51.608802');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kiko_oid', 91, '2005-06-06 08:59:51.594941');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kinnison_oid', 261, '2005-06-06 08:59:51.618722');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kreutzm_oid', 511, '2005-06-06 08:59:51.570701');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('kurem_oid', 461, '2005-06-06 08:59:51.565033');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('launchpad-beta-owner_oid', 681, '2007-01-31 06:56:25.096519');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('launchpad-janitor_oid', 651, '2006-10-04 16:20:51.19954');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('lifeless_oid', 21, '2005-06-06 08:59:51.598107');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('limi_oid', 101, '2005-06-06 08:59:51.619713');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('luk-claes_oid', 451, '2005-06-06 08:59:51.563952');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('mTmeENb', 2436231, '2008-06-27 14:49:11.149508');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('marilize_oid', 551, '2005-06-06 08:59:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('mark_oid', 11, '2005-06-06 08:59:51.591618');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('martin-pitt_oid', 381, '2005-06-06 08:59:51.555051');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('matsubara_oid', 661, '2006-12-13 21:19:06.369142');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('morten_oid', 471, '2005-06-06 08:59:51.56614');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('mpo_oid', 481, '2005-06-06 08:59:51.567224');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('name12_oid', 121, '2005-06-06 08:59:51.612277');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('name16_oid', 161, '2005-06-06 08:59:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('neMCQNd', 2436061, '2007-08-09 21:25:37.832976');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('no-priv_oid', 521, '2005-06-06 08:59:51.593849');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('no-team-memberships_oid', 2436021, '2007-02-19 11:17:57.755666');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('nsv_oid', 391, '2005-06-06 08:59:51.556132');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('one-membership_oid', 2436031, '2007-02-21 10:53:59.700105');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('rPwGRk4', 2436221, '2008-05-12 17:38:38.798696');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('salgado_oid', 291, '2005-06-06 08:59:51.596025');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('sigurd-ubuntu_oid', 351, '2005-06-06 08:59:51.623962');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('skacel_oid', 361, '2005-06-06 08:59:51.5244');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('spiv_oid', 71, '2005-06-06 08:59:51.551196');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('stevea_oid', 111, '2005-06-06 08:59:51.599234');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('stub_oid', 221, '2005-06-06 08:59:51.59276');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('team-membership-janitor_oid', 671, '2006-10-04 16:20:51.19954');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('tsukimi_oid', 501, '2005-06-06 08:59:51.569518');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('valyag_oid', 441, '2005-06-06 08:59:51.562857');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('yEzBPbd', 2436151, '2007-12-18 16:31:34.790641');
+INSERT INTO openididentifier (identifier, account, date_created) VALUES ('zRtPxw8', 243637, '2010-07-12 09:48:27.198885');
+
+
+ALTER TABLE openididentifier ENABLE TRIGGER ALL;
+
+
 ALTER TABLE openidrpconfig DISABLE TRIGGER ALL;
 
 

=== modified file 'database/schema/Makefile'
--- database/schema/Makefile	2010-08-17 11:25:16 +0000
+++ database/schema/Makefile	2010-08-25 09:59:33 +0000
@@ -48,13 +48,13 @@
 
 # The command used (in conjunction with $(call)) to dump the contents of the
 # given database ($1) into an SQL file ($2).
-build_new_sampledata=$(PYTHON) fti.py --null -d ${1} -q; \
-	echo $(HEADER) > $(2); \
-    echo -n "-- Created using " >> $(2); \
-    pg_dump --version >> $(2); \
+build_new_sampledata=$(PYTHON) fti.py --null -d ${1} -q && \
+	echo $(HEADER) > $(2) && \
+    echo -n "-- Created using " >> $(2) && \
+    pg_dump --version >> $(2) && \
     pg_dump --schema=public --disable-triggers -a --column-inserts -O ${1} \
     | grep -v "\( TOC \|INSERT INTO launchpaddatabaserevision \|sessiondata\|sessionpkgdata\|SELECT pg_catalog\.setval\|^--\| fticache \|'fticache'\|ALTER TABLE secret\|INSERT INTO secret\)" \
-    | $(PYTHON) sort_sql.py >> $(2); \
+    | $(PYTHON) sort_sql.py >> $(2) && \
     $(PYTHON) fti.py --force -d ${1} -q
 
 

=== modified file 'database/schema/comments.sql'
--- database/schema/comments.sql	2010-08-23 04:51:48 +0000
+++ database/schema/comments.sql	2010-08-25 09:59:33 +0000
@@ -1173,8 +1173,6 @@
 COMMENT ON COLUMN Person.creation_rationale IS 'The rationale for the creation of this Account -- a PersonCreationRationale value.';
 COMMENT ON COLUMN Account.date_status_set IS 'When the status was last changed.';
 COMMENT ON COLUMN Account.displayname IS 'Name to display when rendering information about this account.';
-COMMENT ON COLUMN Account.openid_identifier IS 'The key used to construct an OpenID identity URL for this account.';
-COMMENT ON COLUMN Account.old_openid_identifier IS 'The previous openid_identifier, used for transitions to the current openid_identifier.';
 
 
 -- AccountPassword

=== added file 'database/schema/patch-2208-01-0.sql'
--- database/schema/patch-2208-01-0.sql	1970-01-01 00:00:00 +0000
+++ database/schema/patch-2208-01-0.sql	2010-08-25 09:59:33 +0000
@@ -0,0 +1,40 @@
+SET client_min_messages=ERROR;
+
+CREATE TABLE OpenIdIdentifier (
+    identifier text PRIMARY KEY,
+    account integer NOT NULL REFERENCES Account ON DELETE CASCADE,
+    date_created timestamp without time zone NOT NULL
+        DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'UTC')
+);
+
+CREATE INDEX openididentity__account__idx ON OpenIDIdentifier(account);
+
+
+-- XXX: Should data be migrated? Existing data is just tokens, not the
+-- full URL. If we can convert this old data to URLs, we should add a
+-- CHECK constraint to OpenIDIdentifier.identifier too.
+INSERT INTO OpenIdIdentifier (identifier, account, date_created)
+SELECT openid_identifier, id, date_created FROM Account;
+
+ALTER TABLE Account
+    DROP COLUMN openid_identifier,
+    DROP COLUMN old_openid_identifier;
+
+DROP TRIGGER lp_mirror_account_del_t ON Account;
+DROP TRIGGER lp_mirror_account_ins_t ON Account;
+DROP TRIGGER lp_mirror_account_upd_t ON Account;
+
+CREATE TRIGGER lp_mirror_openididentifier_ins_t
+AFTER INSERT ON OpenIdIdentifier FOR EACH ROW
+EXECUTE PROCEDURE lp_mirror_openididentifier_ins();
+
+CREATE TRIGGER lp_mirror_openididentifier_upd_t
+AFTER UPDATE ON OpenIdIdentifier FOR EACH ROW
+EXECUTE PROCEDURE lp_mirror_openididentifier_upd();
+
+CREATE TRIGGER lp_mirror_openididentifier_del_t
+AFTER DELETE ON OpenIdIdentifier FOR EACH ROW
+EXECUTE PROCEDURE lp_mirror_openididentifier_del();
+
+
+INSERT INTO LaunchpadDatabaseRevision VALUES (2208, 01, 0);

=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg	2010-08-15 11:29:23 +0000
+++ database/schema/security.cfg	2010-08-25 09:59:33 +0000
@@ -188,6 +188,7 @@
 public.oauthrequesttoken                = SELECT, INSERT, UPDATE, DELETE
 public.openidconsumerassociation        = SELECT, INSERT, UPDATE, DELETE
 public.openidconsumernonce              = SELECT, INSERT, UPDATE
+public.openididentifier                 = SELECT, INSERT, UPDATE, DELETE
 public.officialbugtag                   = SELECT, INSERT, UPDATE, DELETE
 public.openidrpconfig                   = SELECT, INSERT, UPDATE, DELETE
 public.packagebugsupervisor             = SELECT, INSERT, UPDATE, DELETE

=== modified file 'database/schema/trusted.sql'
--- database/schema/trusted.sql	2010-08-06 09:32:02 +0000
+++ database/schema/trusted.sql	2010-08-25 09:59:33 +0000
@@ -1446,6 +1446,7 @@
 END;
 $$;
 
+-- Obsolete. Remove next cycle.
 CREATE OR REPLACE FUNCTION lp_mirror_account_ins() RETURNS trigger
 SECURITY DEFINER LANGUAGE plpgsql AS
 $$
@@ -1456,6 +1457,20 @@
 END;
 $$;
 
+CREATE OR REPLACE FUNCTION lp_mirror_openididentifier_ins() RETURNS trigger
+SECURITY DEFINER LANGUAGE plpgsql AS
+$$
+BEGIN
+    UPDATE lp_account SET openid_identifier = NEW.identifier
+    WHERE id = NEW.account;
+    IF NOT found THEN
+        INSERT INTO lp_account (id, openid_identifier)
+        VALUES (NEW.account, NEW.identifier);
+    END IF;
+    RETURN NULL; -- Ignored for AFTER triggers.
+END;
+$$;
+
 -- UPDATE triggers
 CREATE  OR REPLACE FUNCTION lp_mirror_teamparticipation_upd() RETURNS trigger
 SECURITY DEFINER LANGUAGE plpgsql AS
@@ -1543,6 +1558,18 @@
 END;
 $$;
 
+CREATE OR REPLACE FUNCTION lp_mirror_openididentifier_upd() RETURNS trigger
+SECURITY DEFINER LANGUAGE plpgsql AS
+$$
+BEGIN
+    IF OLD.identifier <> NEW.identifier THEN
+        UPDATE lp_Account SET openid_identifier = NEW.identifier
+        WHERE openid_identifier = OLD.identifier;
+    END IF;
+    RETURN NULL; -- Ignored for AFTER triggers.
+END;
+$$;
+
 -- Delete triggers
 CREATE OR REPLACE FUNCTION lp_mirror_del() RETURNS trigger
 SECURITY DEFINER LANGUAGE plpgsql AS
@@ -1553,6 +1580,26 @@
 END;
 $$;
 
+CREATE OR REPLACE FUNCTION lp_mirror_openididentifier_del() RETURNS trigger
+SECURITY DEFINER LANGUAGE plpgsql AS
+$$
+DECLARE
+    next_identifier text;
+BEGIN
+    SELECT INTO next_identifier identifier FROM OpenIdIdentifier
+    WHERE account = OLD.account AND identifier <> OLD.identifier
+    ORDER BY date_created DESC LIMIT 1;
+
+    IF next_identifier IS NOT NULL THEN
+        UPDATE lp_account SET openid_identifier = next_identifier
+        WHERE openid_identifier = OLD.identifier;
+    ELSE
+        DELETE FROM lp_account WHERE openid_identifier = OLD.identifier;
+    END IF;
+
+    RETURN NULL; -- Ignored for AFTER triggers.
+END;
+$$;
 
 -- Update the (redundant) column bug.latest_patch_uploaded when a
 -- a bug attachment is added or removed or if its type is changed.

=== modified file 'lib/canonical/launchpad/database/account.py'
--- lib/canonical/launchpad/database/account.py	2010-08-20 20:31:18 +0000
+++ lib/canonical/launchpad/database/account.py	2010-08-25 09:59:33 +0000
@@ -40,6 +40,7 @@
     IEmailAddressSet,
     )
 from canonical.launchpad.interfaces.launchpad import IPasswordEncryptor
+from lp.services.openid.model.openididentifier import OpenIdIdentifier
 
 
 class Account(SQLBase):
@@ -59,9 +60,6 @@
     date_status_set = UtcDateTimeCol(notNull=True, default=UTC_NOW)
     status_comment = StringCol(dbName='status_comment', default=None)
 
-    openid_identifier = StringCol(
-        dbName='openid_identifier', notNull=True, default=DEFAULT)
-
     def __repr__(self):
         displayname = self.displayname.encode('ASCII', 'backslashreplace')
         return "<%s '%s' (%s)>" % (
@@ -125,7 +123,7 @@
     def validateAndEnsurePreferredEmail(self, email):
         """See `IAccount`."""
         if not IEmailAddress.providedBy(email):
-            raise TypeError, (
+            raise TypeError(
                 "Any person's email address must provide the IEmailAddress "
                 "interface. %s doesn't." % email)
 
@@ -237,12 +235,19 @@
     implements(IAccountSet)
 
     def new(self, rationale, displayname, password=None,
-            password_is_encrypted=False, openid_identifier=DEFAULT):
+            password_is_encrypted=False, openid_identifier=None):
         """See `IAccountSet`."""
 
         account = Account(
-            displayname=displayname, creation_rationale=rationale,
-            openid_identifier=openid_identifier)
+            displayname=displayname, creation_rationale=rationale)
+
+        # Create an OpenIdIdentifier record if requested.
+        if openid_identifier is not None:
+            assert isinstance(openid_identifier, unicode)
+            identifier = OpenIdIdentifier()
+            identifier.account = account
+            identifier.identifier = openid_identifier
+            IMasterStore(OpenIdIdentifier).add(identifier)
 
         # Create the password record.
         if password is not None:
@@ -261,8 +266,13 @@
 
     def createAccountAndEmail(self, email, rationale, displayname, password,
                               password_is_encrypted=False,
-                              openid_identifier=DEFAULT):
+                              openid_identifier=None):
         """See `IAccountSet`."""
+        # ShipIt is sending us byte strings. Ideally call sites will
+        # pass through Unicode strings.
+        if isinstance(openid_identifier, str):
+            openid_identifier = openid_identifier.decode('US-ASCII')
+
         # Convert the PersonCreationRationale to an AccountCreationRationale.
         account_rationale = getattr(AccountCreationRationale, rationale.name)
         account = self.new(
@@ -287,8 +297,14 @@
     def getByOpenIDIdentifier(self, openid_identifier):
         """See `IAccountSet`."""
         store = IStore(Account)
+        # ShipIt is passing us byte strings. Ideally call sites would
+        # pass us Unicode.
+        if isinstance(openid_identifier, str):
+            openid_identifier = openid_identifier.decode('US-ASCII')
         account = store.find(
-            Account, Account.openid_identifier == openid_identifier).one()
+            Account,
+            Account.id == OpenIdIdentifier.account_id,
+            OpenIdIdentifier.identifier == openid_identifier).one()
         if account is None:
             raise LookupError(openid_identifier)
         return account
@@ -303,4 +319,3 @@
     account = ForeignKey(
         dbName='account', foreignKey='Account', alternateID=True)
     password = StringCol(dbName='password', notNull=True)
-

=== modified file 'lib/canonical/launchpad/scripts/sort_sql.py'
--- lib/canonical/launchpad/scripts/sort_sql.py	2010-08-20 20:31:18 +0000
+++ lib/canonical/launchpad/scripts/sort_sql.py	2010-08-25 09:59:33 +0000
@@ -1,4 +1,4 @@
-# Copyright 2009 Canonical Ltd.  This software is licensed under the
+# Copyright 2009-2010 Canonical Ltd.  This software is licensed under the
 # GNU Affero General Public License version 3 (see the file LICENSE).
 
 """Sort SQL dumps.
@@ -12,6 +12,9 @@
 import re
 import sys
 
+class IncompleteLine(Exception):
+    pass
+
 
 class Parser:
     r"""Parse an SQL dump into logical lines.
@@ -112,23 +115,19 @@
         if not line.startswith('INSERT '):
             return (None, line)
 
+        if not self.is_complete_insert_statement(line):
+            raise ValueError("Incomplete line")
+
         insert_pattern = re.compile('''
             ^INSERT \s+ INTO \s+ \S+ \s+ \([^)]+\) \s+ VALUES \s+ \((\d+)
             ''', re.X)
         match = insert_pattern.match(line)
 
-        if not match:
-            raise RuntimeError("Failed to parse INSERT statement: " + `line`)
-
-        value = int(match.group(1))
-        end = line[len(match.group(0)):]
-
-        # Make sure that the line is complete.
-
-        if self.is_complete_insert_statement(line):
-            return value, line
+        if match:
+            return int(match.group(1)), line
         else:
-            raise ValueError("Incomplete line")
+            return line, line
+
 
     def feed(self, s):
         """Give the parser some text to parse."""

=== modified file 'lib/canonical/launchpad/webapp/login.py'
--- lib/canonical/launchpad/webapp/login.py	2010-08-20 20:31:18 +0000
+++ lib/canonical/launchpad/webapp/login.py	2010-08-25 09:59:33 +0000
@@ -6,7 +6,6 @@
 
 __metaclass__ = type
 
-import cgi
 from datetime import (
     datetime,
     timedelta,
@@ -330,6 +329,8 @@
         the changes we just did.
         """
         identifier = self.openid_response.identity_url.split('/')[-1]
+        # XXX: What character set? US-ASCII or ISO-8859-1?
+        identifier = identifier.decode('ascii')
         should_update_last_write = False
         # Force the use of the master database to make sure a lagged slave
         # doesn't fool us into creating a Person/Account when one already
@@ -508,7 +509,7 @@
         openid_root = allvhosts.configs[openid_vhost].rooturl
         target = '%s+logout?%s' % (
             config.codehosting.secure_codebrowse_root,
-            urllib.urlencode(dict(next_to='%s+logout' % (openid_root,))))
+            urllib.urlencode(dict(next_to='%s+logout' % (openid_root, ))))
         self.request.response.redirect(target)
         return ''
 

=== modified file 'lib/canonical/launchpad/webapp/tests/test_login.py'
--- lib/canonical/launchpad/webapp/tests/test_login.py	2010-08-20 20:31:18 +0000
+++ lib/canonical/launchpad/webapp/tests/test_login.py	2010-08-25 09:59:33 +0000
@@ -37,6 +37,7 @@
     AccountStatus,
     IAccountSet,
     )
+from canonical.launchpad.interfaces.lpstorm import IStore
 from canonical.launchpad.testing.browser import (
     Browser,
     setUp,
@@ -62,6 +63,7 @@
     FunctionalLayer,
     )
 from lp.registry.interfaces.person import IPerson
+from lp.services.openid.model.openididentifier import OpenIdIdentifier
 from lp.testing import (
     logout,
     TestCaseWithFactory,
@@ -299,7 +301,7 @@
         # seen, we automatically register an account with that identity
         # because someone who registered on login.lp.net or login.u.c should
         # be able to login here without any further steps.
-        identifier = '4w7kmzU'
+        identifier = u'4w7kmzU'
         account_set = getUtility(IAccountSet)
         self.assertRaises(
             LookupError, account_set.getByOpenIDIdentifier, identifier)
@@ -327,7 +329,7 @@
         # When we get a positive assertion about an identity URL we've never
         # seen but whose email address is already registered, we just change
         # the identity URL that's associated with the existing email address.
-        identifier = '4w7kmzU'
+        identifier = u'4w7kmzU'
         email = 'test@xxxxxxxxxxx'
         account = self.factory.makeAccount(
             'Test account', email=email, status=AccountStatus.DEACTIVATED)
@@ -364,7 +366,11 @@
         account = self.factory.makeAccount(
             'Test account', email=email, status=AccountStatus.DEACTIVATED)
         self.assertIs(None, IPerson(account, None))
-        openid_identifier = removeSecurityProxy(account).openid_identifier
+        openid_identifier = IStore(OpenIdIdentifier).find(
+            OpenIdIdentifier.identifier,
+            OpenIdIdentifier.account_id == account.id).order_by(
+                OpenIdIdentifier.account_id).order_by(
+                    OpenIdIdentifier.account_id).first()
         openid_response = FakeOpenIDResponse(
             'http://testopenid.dev/+id/%s' % openid_identifier,
             status=SUCCESS, email=email, full_name=account.displayname)
@@ -390,7 +396,11 @@
         account = self.factory.makeAccount(
             'Test account', email=email, status=AccountStatus.NOACCOUNT)
         self.assertIs(None, IPerson(account, None))
-        openid_identifier = removeSecurityProxy(account).openid_identifier
+        openid_identifier = IStore(OpenIdIdentifier).find(
+            OpenIdIdentifier.identifier,
+            OpenIdIdentifier.account_id == account.id).order_by(
+                OpenIdIdentifier.account_id).order_by(
+                    OpenIdIdentifier.account_id).first()
         openid_response = FakeOpenIDResponse(
             'http://testopenid.dev/+id/%s' % openid_identifier,
             status=SUCCESS, email=email, full_name=account.displayname)
@@ -455,7 +465,7 @@
         with IAccountSet_getByOpenIDIdentifier_monkey_patched():
             self.assertRaises(
                 AssertionError,
-                getUtility(IAccountSet).getByOpenIDIdentifier, 'foo')
+                getUtility(IAccountSet).getByOpenIDIdentifier, u'foo')
 
     def assertLastWriteIsSet(self, request):
         last_write = ISession(request)['lp.dbpolicy']['last_write']

=== modified file 'lib/lp/registry/doc/person-merge.txt'
--- lib/lp/registry/doc/person-merge.txt	2010-06-21 16:47:10 +0000
+++ lib/lp/registry/doc/person-merge.txt	2010-08-25 09:59:33 +0000
@@ -199,14 +199,6 @@
     >>> results.get_one()[0] is None
     True
 
-The openid_identifier of the merged account is changed so that if the user
-logs in using that SSO account, Launchpad will select the Person by email
-instead of OpenID. Launchpad will update the OpenID of the remaining account
-if needed.
-
-    >>> print marilize.account.openid_identifier
-    merged-marilize_oid-1118028591.0
-
 An email is sent to the user informing him that he should review his email
 and mailing list subscription settings.
 

=== modified file 'lib/lp/registry/model/person.py'
--- lib/lp/registry/model/person.py	2010-08-22 17:13:25 +0000
+++ lib/lp/registry/model/person.py	2010-08-25 09:59:33 +0000
@@ -266,6 +266,7 @@
     TeamMembershipSet,
     TeamParticipation,
     )
+from lp.services.openid.model.openididentifier import OpenIdIdentifier
 from lp.services.salesforce.interfaces import (
     ISalesforceVoucherProxy,
     REDEEMABLE_VOUCHER_STATUSES,
@@ -2778,44 +2779,78 @@
                 "Both email address and full name are required to "
                 "create an account.")
         db_updated = False
+
+        assert isinstance(openid_identifier, unicode)
+
+        # Load the EmailAddress, Account and OpenIdIdentifier records
+        # from the master (if they exist). We use the master to avoid
+        # possible replication lag issues but this might actually be
+        # unnecessary.
         with MasterDatabasePolicy():
-            account_set = getUtility(IAccountSet)
-            email_set = getUtility(IEmailAddressSet)
-            email = email_set.getByEmail(email_address)
-            try:
-                account = account_set.getByOpenIDIdentifier(
-                    openid_identifier)
-            except LookupError:
-                if email is None:
-                    # There is no account associated with the identifier
-                    # nor an email associated with the email address.
-                    # We'll create one.
-                    account, email = account_set.createAccountAndEmail(
-                            email_address, creation_rationale, full_name,
-                            password=None,
-                            openid_identifier=openid_identifier)
-                else:
-                    account = email.account
-                    assert account is not None, (
-                        "This email address should have an associated "
-                        "account.")
-                    removeSecurityProxy(account).openid_identifier = (
-                        openid_identifier)
-                db_updated = True
+            store = IMasterStore(EmailAddress)
+            join = [
+                EmailAddress,
+                LeftJoin(Account, EmailAddress.accountID == Account.id),
+                LeftJoin(
+                    OpenIdIdentifier,
+                    OpenIdIdentifier.identifier == openid_identifier)]
+            email, account, identifier = store.using(*join).find(
+                (EmailAddress, Account, OpenIdIdentifier),
+                EmailAddress.email == email_address
+                ).one() or (None, None, None)
+
+            if email is None:
+                # Email address does not exist in the database. Create
+                # the email address, account, and associated info.
+                # OpenIdIdentifier is created later.
+                account_set = getUtility(IAccountSet)
+                account, email = account_set.createAccountAndEmail(
+                    email_address, creation_rationale, full_name,
+                    password=None)
+                db_updated = True
+
+            elif account is None:
+                # Email address exists, but there is no Account linked
+                # to it. Create the Account and link it to the
+                # EmailAddress.
+                account_set = getUtility(IAccountSet)
+                account = account_set.new(creation_rationale, full_name)
+                email.account = account
+                db_updated = True
+
+            if identifier is None:
+                # This is the first time we have seen that
+                # OpenIdIdentifier. Link it.
+                identifier = OpenIdIdentifier()
+                identifier.account = account
+                identifier.identifier = openid_identifier
+                store.add(identifier)
+                db_updated = True
+
+            elif identifier.account != account:
+                # The ISD OpenId server may have linked this OpenId
+                # identifier to a new email address, or the user may
+                # have transfered their email address to a different
+                # Launchpad Account. If that happened, repair the
+                # link - we trust the ISD OpenId server.
+                identifier.account = account
+                db_updated = True
+
+            # We now have an account, email address, and openid identifier.
 
             if account.status == AccountStatus.SUSPENDED:
                 raise AccountSuspendedError(
                     "The account matching the identifier is suspended.")
+
             elif account.status in [AccountStatus.DEACTIVATED,
                                     AccountStatus.NOACCOUNT]:
                 password = '' # Needed just to please reactivate() below.
-                if email is None:
-                    email = email_set.new(email_address, account=account)
                 removeSecurityProxy(account).reactivate(
                     comment, password, removeSecurityProxy(email))
             else:
                 # Account is active, so nothing to do.
                 pass
+
             if IPerson(account, None) is None:
                 removeSecurityProxy(account).createPerson(
                     creation_rationale, comment=comment)
@@ -3898,19 +3933,12 @@
         # flush its caches.
         store.invalidate()
 
-        # Change the merged Account's OpenID identifier so that it cannot be
-        # used to lookup the merged Person; Launchpad will instead select the
-        # remaining Person based on the email address. The rename uses a
-        # dash, which does not occur in SSO identifiers. The epoch from
-        # the account date_created is used to ensure it is unique if the
-        # original identifier is reused and merged.
-        if from_person.account is not None:
-            account = IMasterObject(from_person.account)
-            naked_account = removeSecurityProxy(account)
-            unique_part = time.mktime(naked_account.date_created.timetuple())
-            merge_identifier = 'merged-%s-%s' % (
-                naked_account.openid_identifier, unique_part)
-            naked_account.openid_identifier = merge_identifier
+        # Move OpenId Identifiers from the merged account to the new
+        # account.
+        if from_person.account is not None and to_person.account is not None:
+            store.execute("""
+                UPDATE OpenIdIdentifier SET account=%s WHERE account=%s
+                """ % sqlvalues(to_person.accountID, from_person.accountID))
 
         # Inform the user of the merge changes.
         if not to_person.isTeam():

=== modified file 'lib/lp/scripts/utilities/sanitizedb.py'
--- lib/lp/scripts/utilities/sanitizedb.py	2010-08-21 13:54:20 +0000
+++ lib/lp/scripts/utilities/sanitizedb.py	2010-08-25 09:59:33 +0000
@@ -92,6 +92,7 @@
             'openidconsumerassociation',
             'openidconsumernonce',
             'openidrpsummary',
+            'openididentifier',
             'requestedcds',
             'scriptactivity',
             'shipitreport',
@@ -129,7 +130,6 @@
         self.removeInvalidEmailAddresses()
         self.removePPAArchivePermissions()
         self.scrambleHiddenEmailAddresses()
-        self.scrambleOpenIDIdentifiers()
 
         self.removeDeactivatedPeopleAndAccounts()
 
@@ -418,17 +418,6 @@
         self.logger.info(
             "Replaced %d hidden email addresses with @example.com", count)
 
-    def scrambleOpenIDIdentifiers(self):
-        """Replace OpenIDIdentifiers with random strings"""
-        count = self.store.execute("""
-            UPDATE Account SET
-                openid_identifier =
-                    'rnd' || text(id) || 'x' || text(round(random()*10000)),
-                old_openid_identifier =
-                    'rnd' || text(id) || 'x' || text(round(random()*10000))
-            """).rowcount
-        self.logger.info("Randomized %d openid identifiers.", count)
-
     def removeUnlinkedEmailAddresses(self):
         """Remove EmailAddresses not linked to a Person.
 

=== modified file 'lib/lp/services/openid/adapters/openid.py'
--- lib/lp/services/openid/adapters/openid.py	2010-08-20 20:31:18 +0000
+++ lib/lp/services/openid/adapters/openid.py	2010-08-25 09:59:33 +0000
@@ -21,9 +21,11 @@
 from zope.security.proxy import removeSecurityProxy
 
 from canonical.launchpad.interfaces.account import IAccount
+from canonical.launchpad.interfaces.lpstorm import IMasterStore
 from canonical.launchpad.webapp.vhosts import allvhosts
 from lp.registry.interfaces.person import IPerson
 from lp.services.openid.interfaces.openid import IOpenIDPersistentIdentity
+from lp.services.openid.model.openididentifier import OpenIdIdentifier
 
 
 class CurrentOpenIDEndPoint:
@@ -59,11 +61,16 @@
     @property
     def openid_identifier(self):
         """See `IOpenIDPersistentIdentity`."""
-        # The account is very restricted.
-        token = removeSecurityProxy(self.account).openid_identifier
-        if token is None:
+        # We might have multiple OpenID identifiers linked to an
+        # account. We just use the first one which is good enough
+        # for our purposes.
+        identifier = IMasterStore(OpenIdIdentifier).find(
+            OpenIdIdentifier, account=self.account).order_by(
+                OpenIdIdentifier.date_created).first()
+        if identifier is None:
             return None
-        return '+id/' + token
+        else:
+            return '+id/' + identifier.identifier
 
 
 @adapter(IPerson)

=== added file 'lib/lp/services/openid/model/openididentifier.py'
--- lib/lp/services/openid/model/openididentifier.py	1970-01-01 00:00:00 +0000
+++ lib/lp/services/openid/model/openididentifier.py	2010-08-25 09:59:33 +0000
@@ -0,0 +1,21 @@
+# Copyright 2010 Canonical Ltd.  This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""OpenIdIdentifier database class."""
+
+__metaclass__ = type
+__all__ = ['OpenIdIdentifier']
+
+from storm.locals import Int, Reference, Storm, Unicode
+
+from canonical.database.constants import UTC_NOW
+from canonical.database.datetimecol import UtcDateTimeCol
+
+
+class OpenIdIdentifier(Storm):
+    """An OpenId Identifier that can be used to log into an Account"""
+    __storm_table__ = "openididentifier"
+    identifier = Unicode(primary=True)
+    account_id = Int("account")
+    account = Reference(account_id, "Account.id")
+    date_created = UtcDateTimeCol(notNull=True, default=UTC_NOW)

=== modified file 'lib/lp/testopenid/adapters/openid.py'
--- lib/lp/testopenid/adapters/openid.py	2010-08-20 20:31:18 +0000
+++ lib/lp/testopenid/adapters/openid.py	2010-08-25 09:59:33 +0000
@@ -28,4 +28,8 @@
     def openid_identity_url(self):
         """See `IOpenIDPersistentIdentity`."""
         identity_root_url = allvhosts.configs['testopenid'].rooturl
-        return identity_root_url + self.openid_identifier.encode('ascii')
+        identifier = self.openid_identifier
+        if identifier is None:
+            return None
+        else:
+            return identity_root_url + self.openid_identifier


Follow ups