Index: class.ux_t3lib_db.php =================================================================== --- class.ux_t3lib_db.php (revision 26342) +++ class.ux_t3lib_db.php (working copy) @@ -766,7 +766,11 @@ // Add slashes old-school: // cast numerical values $mt = $this->sql_field_metatype($table, $k); - $v = (($mt{0} == 'I') || ($mt{0} == 'F')) ? (int)$v : $v; + if ($mt{0} == 'I') { + $v = (int)$v; + } else if ($mt{0} == 'F') { + $v = (double)$v; + } $nArr[$this->quoteFieldNames($k)] = (!in_array($k,$no_quote_fields)) ? $this->fullQuoteStr($v, $table) : $v; } @@ -837,7 +841,11 @@ // Add slashes old-school: // cast numeric values $mt = $this->sql_field_metatype($table, $k); - $v = (($mt{0} == 'I') || ($mt{0} == 'F')) ? (int)$v : $v; + if ($mt{0} == 'I') { + $v = (int)$v; + } else if ($mt{0} == 'F') { + $v = (double)$v; + } $nArr[] = $this->quoteFieldNames($k) . '=' . ((!in_array($k, $no_quote_fields)) ? $this->fullQuoteStr($v, $table) : $v); } } Index: tests/db_general_testcase.php =================================================================== --- tests/db_general_testcase.php (revision 26344) +++ tests/db_general_testcase.php (working copy) @@ -100,5 +100,39 @@ $expected .= ' AND sys_refindex.ref_string LIKE CONCAT(tx_dam_file_tracking.file_path,tx_dam_file_tracking.file_name)'; $this->assertEquals($expected, $query); } + + /** + * @test + * @see http://bugs.typo3.org/view.php?id=10965 + */ + public function floatNumberCanBeStoredInDatabase() { + // Prepare a fake extension configuration + $ext_tables = t3lib_div::tempnam('ext_tables'); + t3lib_div::writeFile($ext_tables, ' + CREATE TABLE tx_test_dbal ( + foo double default \'0\', + foobar integer default \'0\' + ); + '); + + $GLOBALS['TYPO3_LOADED_EXT']['test_dbal'] = array( + 'ext_tables.sql' => $ext_tables + ); + + // Append our test table to the list of existing tables + $this->fixture->clearCachedFieldInfo(); + $this->fixture->_call('initInternalVariables'); + + $data = array( + 'foo' => 99.12, + 'foobar' => -120, + ); + $query = $this->cleanSql($this->fixture->INSERTquery('tx_test_dbal', $data)); + $expected = 'INSERT INTO tx_test_dbal ( foo, foobar ) VALUES ( \'99.12\', \'-120\' )'; + $this->assertEquals($expected, $query); + + // Remove temporary file + unlink($ext_tables); + } } ?> \ No newline at end of file