[Solar-talk] Solar_Sql function _getTypeSizeScope returns incorrect
type
Pierre Oztel
pierre.oztel at gmail.com
Mon Jul 2 13:14:00 CDT 2007
The function Solar_Sql::_getSolarType returns incorrect types for PDO mysql
driver.
I tested it with this schema:
CREATE TABLE `bookmark` (
`id` int(11) NOT NULL auto_increment,
`url` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`description` mediumtext,
`tag` varchar(255) default NULL,
`created` datetime NOT NULL,
`updated` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
--
-- Dumping data for table `bookmark`
--
INSERT INTO `bookmark` (`id`, `url`, `name`, `description`, `tag`,
`created`, `updated`) VALUES
(1, 'http1', 'name1', 'descr1', 'tag1', '2007-06-23 17:28:52', '2007-06-23
17:28:52'),
(2, 'http2', 'name2', 'descr2', 'tag2', '2007-06-23 17:28:52', '2007-06-23
17:28:52'),
(3, 'http3', 'name3', 'descr3', 'tag3', '2007-06-23 17:28:52', '2007-06-23
17:28:52'),
(4, 'http4', 'name4', 'descr4', 'tag4', '2007-06-23 17:28:52', '2007-06-23
17:28:52'),
(5, 'http5', 'name5', 'descr5', 'tag5', '2007-06-23 17:28:52', '2007-06-23
17:28:52');
Solar_Sql::fetchTableCols() return the following:
*array*
'id' =>
*array*
'name' => string 'id' *(length=2)*
'type' => string 'int' *(length=3)*
'size' => string '11' *(length=2)*
'scope' => null
'default' => null
'require' => boolean true
'primary' => boolean true
'autoinc' => boolean true
'url' =>
*array*
'name' => string 'url' *(length=3)*
'type' => string 'varchar' *(length=7)*
'size' => string '255' *(length=3)*
'scope' => null
'default' => string '' *(length=0)*
'require' => boolean true
'primary' => boolean false
'autoinc' => boolean false
'name' =>
*array*
'name' => string 'name' *(length=4)*
'type' => string 'varchar' *(length=7)*
'size' => string '255' *(length=3)*
'scope' => null
'default' => string '' *(length=0)*
'require' => boolean true
'primary' => boolean false
'autoinc' => boolean false
'description' =>
*array*
'name' => string 'description' *(length=11)*
'type' => string 'mediumtext' *(length=10)*
'size' => null
'scope' => null
'default' => null
'require' => boolean false
'primary' => boolean false
'autoinc' => boolean false
'tag' =>
*array*
'name' => string 'tag' *(length=3)*
'type' => string 'varchar' *(length=7)*
'size' => string '255' *(length=3)*
'scope' => null
'default' => null
'require' => boolean false
'primary' => boolean false
'autoinc' => boolean false
'created' =>
*array*
'name' => string 'created' *(length=7)*
'type' => string 'integer' *(length=7)*
'size' => null
'scope' => null
'default' => string '' *(length=0)*
'require' => boolean true
'primary' => boolean false
'autoinc' => boolean false
'updated' =>
*array*
'name' => string 'updated' *(length=7)*
'type' => string 'integer' *(length=7)*
'size' => null
'scope' => null
'default' => string '' *(length=0)*
'require' => boolean true
'primary' => boolean false
'autoinc' => boolean false
As such declared 'datetime' fields are recognized as 'integer';
A little modification in the getSolarType makes it works:
---
function _getSolarType() {
if(array_key_exists($type, $this->_describe)) {
$type = $this->_describe[$type];
}
return $type;
}
---
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman-mail3.webfaction.com/pipermail/solar-talk/attachments/20070702/d4543e28/attachment.html
More information about the Solar-talk
mailing list