EllisLab text mark
Advanced Search
bug in ->insert_id() using PostgreSQL
Posted: 22 August 2008 04:17 PM
Joined: 2008-08-21
1 posts

Logic to figure out version number in ->insert_id() under Postgres has a bug in it.

Currently, it tries to glean the version using this:

$v $this->_version();
$v $v['server']

Where ->_version() only returns the SQL string:

"SELECT version() AS ver" 

Even if it were to return the actual product of this SQL query using ->version() instead, the next line wouldn’t work because this is what it would return:

"PostgreSQL 8.2.4 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.1 (Gentoo 4.1.1-r3)" 


Here’s a diff of my fix to /system/data/base/drivers/postgre/postgre_driver.php:

<         return "SELECT version() AS ver";
// Parse version number out of result    
>         return "SELECT trim(substring(version(), 'PostgreSQL (([0-9]{1,}\.)*)' )) as ver";
<         $v $this->_version();
$v $v['server'];
$v $this->version();