mirror of
https://github.com/e107inc/e107.git
synced 2025-08-06 06:38:00 +02:00
Permissive numeric field validation in db_verify
db_verify::diffStructurePermissive() now checks for all MySQL/MariaDB numeric types and permissively allows the expected and actual default values to be strings rather than numerical. Fixes: #3011 Related: #2998
This commit is contained in:
8
e107_handlers/db_verify_class.php
Normal file → Executable file
8
e107_handlers/db_verify_class.php
Normal file → Executable file
@@ -147,11 +147,11 @@ class db_verify
|
||||
$expected['default'] = $actual['default'];
|
||||
}
|
||||
|
||||
// Loosely typed default value for int-like types
|
||||
if(1 === preg_match('/[A-Z]*INT/i', $expected['type']))
|
||||
// Loosely typed default value for numeric types
|
||||
if(1 === preg_match('/([A-Z]*INT|NUMERIC|DEC|FIXED|FLOAT|REAL|DOUBLE)/i', $expected['type']))
|
||||
{
|
||||
$expected['default'] = preg_replace("/DEFAULT '(\d+)'/i", 'DEFAULT $1', $expected['default']);
|
||||
$actual['default'] = preg_replace("/DEFAULT '(\d+)'/i", 'DEFAULT $1', $actual['default'] );
|
||||
$expected['default'] = preg_replace("/DEFAULT '(\d*\.?\d*)'/i", 'DEFAULT $1', $expected['default']);
|
||||
$actual['default'] = preg_replace("/DEFAULT '(\d*\.?\d*)'/i", 'DEFAULT $1', $actual['default'] );
|
||||
}
|
||||
|
||||
return array_diff_assoc($expected, $actual);
|
||||
|
Reference in New Issue
Block a user