make search case insensitive on postgres and oracle
This commit is contained in:
parent
19a6dc5420
commit
b5545b81c6
|
@ -458,9 +458,27 @@ class Cache {
|
|||
// normalize pattern
|
||||
$pattern = $this->normalize($pattern);
|
||||
|
||||
$sql = 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`, `unencrypted_size`, `etag`, `permissions`
|
||||
FROM `*PREFIX*filecache` WHERE `name` LIKE ? AND `storage` = ?';
|
||||
$result = \OC_DB::executeAudited($sql, array($pattern, $this->getNumericStorageId()));
|
||||
|
||||
$sql = '
|
||||
SELECT `fileid`, `storage`, `path`, `parent`, `name`,
|
||||
`mimetype`, `mimepart`, `size`, `mtime`, `encrypted`,
|
||||
`unencrypted_size`, `etag`, `permissions`
|
||||
FROM `*PREFIX*filecache`
|
||||
WHERE `storage` = ? AND ';
|
||||
$dbtype = \OC_Config::getValue( 'dbtype', 'sqlite' );
|
||||
if($dbtype === 'oci') {
|
||||
//remove starting and ending % from the pattern
|
||||
$pattern = '^'.str_replace('%', '.*', $pattern).'$';
|
||||
$sql .= 'REGEXP_LIKE(`name`, ?, \'i\')';
|
||||
} else if($dbtype === 'pgsql') {
|
||||
$sql .= '`name` ILIKE ?';
|
||||
} else {
|
||||
$sql .= '`name` LIKE ?';
|
||||
}
|
||||
$result = \OC_DB::executeAudited($sql,
|
||||
array($this->getNumericStorageId(), $pattern)
|
||||
);
|
||||
|
||||
$files = array();
|
||||
while ($row = $result->fetchRow()) {
|
||||
$row['mimetype'] = $this->getMimetype($row['mimetype']);
|
||||
|
|
|
@ -239,6 +239,12 @@ class Cache extends \PHPUnit_Framework_TestCase {
|
|||
$this->assertEquals(1, count($this->cache->search('folder%')));
|
||||
$this->assertEquals(3, count($this->cache->search('%')));
|
||||
|
||||
// case insensitive search should match the same files
|
||||
$this->assertEquals(2, count($this->cache->search('%Foo%')));
|
||||
$this->assertEquals(1, count($this->cache->search('Foo')));
|
||||
$this->assertEquals(1, count($this->cache->search('%Folder%')));
|
||||
$this->assertEquals(1, count($this->cache->search('Folder%')));
|
||||
|
||||
$this->assertEquals(3, count($this->cache->searchByMime('foo')));
|
||||
$this->assertEquals(2, count($this->cache->searchByMime('foo/file')));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue