WordPress.org

Make WordPress Core

Opened 22 months ago

Closed 20 months ago

Last modified 19 months ago

#25228 closed defect (bug) (wontfix)

wpdb::db_version() not permissive enough

Reported by: ozh Owned by:
Milestone: Priority: normal
Severity: normal Version: 3.6
Component: Upgrade/Install Keywords: has-patch
Focuses: Cc:

Description

I ran into a MySQL server which was returning a unusual "mysql-5.5" as a version number.

Current wpdb::db_version() returns "" (empty string) with this version number

Patch returns the expected "5.5" and works the same with traditional version numbers

Attachments (2)

db_version.patch (443 bytes) - added by ozh 22 months ago.
db_version.2.patch (456 bytes) - added by ozh 22 months ago.

Download all attachments as: .zip

Change History (9)

@ozh22 months ago

comment:1 @nacin22 months ago

This would break things like 5.5-ubuntu-4.20.

comment:2 @ozh22 months ago

Indeed, would return 5.54.20. Would 5.5--4.20 be acceptable?

comment:3 @nacin22 months ago

I think 5.5 would be preferred, and it's why the regex does what it does.

We could strip of mysql- from the start of a string, but I'd want to A) question what server would ever do this, B) wonder what else we'd need to strip off, and C) wonder if this is worth accounting for?

comment:4 @ozh22 months ago

The server I ran into was using http://www.continuent.com/ and, words from user, "they use a lot of non-standard settings".

I don't think the idea would be just to check for "mysql-" at the start, but rather for anything that's not a number. Regex '/(^[^0-9]*)|[^0-9.].*/' does the job I think

$vers = array( 
	'omgmysql-5.5-ubuntu-4.20',
	'mysql5.5-ubuntu-4.20',
	'5.5-ubuntu-4.20',
	'5.5-beta2',
	'5.5',
);

foreach( $vers as $ver ) {
	var_dump( preg_replace( '/(^[^0-9]*)|[^0-9.].*/', '', $ver ) );
}
/*
string '5.5' (length=3)
string '5.5' (length=3)
string '5.5' (length=3)
string '5.5' (length=3)
string '5.5' (length=3)
*/

Now, as for C), I'll let you judge :)

Obviously this is dealing with marginal edge case, I would tend to think we can fix marginal stuff as long as it doesn't hurt, but you be the boss, boss.

@ozh22 months ago

comment:5 @ozh20 months ago

  • Resolution set to wontfix
  • Status changed from new to closed

comment:6 @johnbillion20 months ago

  • Milestone Awaiting Review deleted

comment:7 @SergeyBiryukov19 months ago

  • Version changed from trunk to 3.6
Note: See TracTickets for help on using tickets.