バグは2点みつけてます。
CIのバージョンは1.7.3です。
①点目
[RESOLVED] Undefined property: CI_DB_postgre_driver::$_like_escape_char | CodeIgniter Forums
↑のURLに書いてあるとおりただのスペルミスです。。
From
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_char);
To
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_chr);
②点目
「%(パーセント)」「_(アンダースコア)」を含むライク検索が出来ない。
/database/drivers/postgre/postgre_driver.php
299行目
$str = str_replace( array('%', '_',$this->_like_escape_chr),
array($this->_like_escape_chr.'%', $this->_like_escape_chr.'_' , $this->_like_escape_chr.$this->_like_escape_chr),
$str);
str_replaceでエスケープを行っているが配列の順番がおかしいため
エスケープ文字が2コ付くようになってしまっています。
下記のように修正
$str = str_replace( array($this->_like_escape_chr ,'%', '_'),
array($this->_like_escape_chr.$this->_like_escape_chr ,$this->_like_escape_chr.'%', $this->_like_escape_chr.'_' ),
$str);
置換前、置換後の配列の3番目の要素をそれぞれ1番目にもってくる。これでOK。
こんなすぐ分かるバグぐらい誰かフィックスしとけよと。
0 件のコメント:
コメントを投稿