Closed Bug 1196092 Opened 4 years ago Closed 4 years ago

Switch logincookies primary key to auto_incremented id, make cookie a secondary UNIQUE key

Categories

(bugzilla.mozilla.org :: General, defect)

Production
defect
Not set

Tracking

()

RESOLVED FIXED

People

(Reporter: dylan, Assigned: dylan)

References

Details

Attachments

(1 file, 1 obsolete file)

This is a required change for bug 1192687, as natural primary keys (such as "cookie") are very difficult to work with, especially when they are secrets.
Attached patch 1196092_5.patch (obsolete) — Splinter Review
This was remarkably hard to get right. bz_column_info_real() is used because bz_column_info() returns our fake, shadow schema...
Attachment #8650840 - Flags: review?(glob)
Comment on attachment 8650840 [details] [diff] [review]
1196092_5.patch

Review of attachment 8650840 [details] [diff] [review]:
-----------------------------------------------------------------

Updating column cookie in table logincookies ...
Old: varchar(22) PRIMARY KEY NOT NULL
New: varchar(22) NOT NULL
DBD::mysql::db do failed: Can't DROP 'PRIMARY'; check that column/key exists [for Statement "ALTER TABLE logincookies DROP PRIMARY KEY"] at Bugzilla/DB.pm line 760.
Attachment #8650840 - Flags: review?(glob) → review-
Attached patch 1196092_6.patchSplinter Review
It would appear I underestimated our DB schema layer. It can actually drop the primary key itself.
Attachment #8650840 - Attachment is obsolete: true
Attachment #8651196 - Flags: review?(glob)
Comment on attachment 8651196 [details] [diff] [review]
1196092_6.patch

Review of attachment 8651196 [details] [diff] [review]:
-----------------------------------------------------------------

this generates the same sql, which fails:

Updating column cookie in table logincookies ...
Old: varchar(22) PRIMARY KEY NOT NULL
New: varchar(22) NOT NULL
DBD::mysql::db do failed: Can't DROP 'PRIMARY'; check that column/key exists [for Statement "ALTER TABLE logincookies DROP PRIMARY KEY"] at Bugzilla/DB.pm line 760.
Attachment #8651196 - Flags: review?(glob) → review-
Comment on attachment 8651196 [details] [diff] [review]
1196092_6.patch

Review of attachment 8651196 [details] [diff] [review]:
-----------------------------------------------------------------

ah, my bad.  for reasons that are unknown logincookies.cookie isn't a PK in the db i'm using, and a mysql quirk had it reporting it incorrectly ("A UNIQUE index may be displayed as PRI if it cannot contain NULL values and there is no PRIMARY KEY in the table").

r=glob

::: Bugzilla/Install/DB.pm
@@ +738,4 @@
>      $dbh->bz_alter_column('logincookies', 'cookie',
> +                            {TYPE => 'varchar(22)', NOTNULL => 1});
> +    $dbh->bz_add_index('logincookies', 'logincookies_cookie_idx',
> +                        {TYPE => 'UNIQUE', FIELDS => ['cookie']});

nit: this line and the previous {TYPE should line up with the '
Attachment #8651196 - Flags: review- → review+
To ssh://gitolite3@git.mozilla.org/webtools/bmo/bugzilla.git
   0b05719..57f911c  master -> master
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.