Skip to content

Commit 39f98a8

Browse files
committed
Numeric/decimal data type is detected as FIELD_DECIMAL
1 parent 20dabde commit 39f98a8

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

src/Database/Helpers.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ class Helpers
2727
public static array $typePatterns = [
2828
'^_' => IStructure::FIELD_TEXT, // PostgreSQL arrays
2929
'(TINY|SMALL|SHORT|MEDIUM|BIG|LONG)(INT)?|INT(EGER|\d+| IDENTITY)?|(SMALL|BIG|)SERIAL\d*|COUNTER|YEAR|BYTE|LONGLONG|UNSIGNED BIG INT' => IStructure::FIELD_INTEGER,
30-
'(NEW)?DEC(IMAL)?(\(.*)?|NUMERIC|REAL|DOUBLE( PRECISION)?|FLOAT\d*|(SMALL)?MONEY|CURRENCY|NUMBER' => IStructure::FIELD_FLOAT,
30+
'(NEW)?DEC(IMAL)?(\(.*)?|NUMERIC|(SMALL)?MONEY|CURRENCY|NUMBER' => IStructure::FIELD_DECIMAL,
31+
'REAL|DOUBLE( PRECISION)?|FLOAT\d*' => IStructure::FIELD_FLOAT,
3132
'BOOL(EAN)?' => IStructure::FIELD_BOOL,
3233
'TIME' => IStructure::FIELD_TIME,
3334
'DATE' => IStructure::FIELD_DATE,
@@ -210,7 +211,7 @@ public static function normalizeRow(array $row, ResultSet $resultSet): array
210211
} elseif ($type === IStructure::FIELD_INTEGER) {
211212
$row[$key] = is_float($tmp = $value * 1) ? $value : $tmp;
212213

213-
} elseif ($type === IStructure::FIELD_FLOAT) {
214+
} elseif ($type === IStructure::FIELD_FLOAT || $type === IStructure::FIELD_DECIMAL) {
214215
if (is_string($value) && ($pos = strpos($value, '.')) !== false) {
215216
$value = rtrim(rtrim($pos === 0 ? "0$value" : $value, '0'), '.');
216217
}

src/Database/IStructure.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ interface IStructure
2121
FIELD_BOOL = 'bool',
2222
FIELD_INTEGER = 'int',
2323
FIELD_FLOAT = 'float',
24+
FIELD_DECIMAL = 'decimal',
2425
FIELD_DATE = 'date',
2526
FIELD_TIME = 'time',
2627
FIELD_DATETIME = 'datetime',

0 commit comments

Comments
 (0)