diff --git a/db_structure.xml b/db_structure.xml index fc7f1082ffa28f7f9bc74a1c011faffc85f6df28..f353ae080988eb7c35e1fdbefef0c133a7ee4c58 100644 --- a/db_structure.xml +++ b/db_structure.xml @@ -108,6 +108,14 @@ <length>512</length> </field> + <field> + <name>logic_path_hash</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>32</length> + </field> + <field> <name>physic_path</name> <type>text</type> @@ -116,11 +124,19 @@ <length>512</length> </field> + <field> + <name>physic_path_hash</name> + <type>text</type> + <default></default> + <notnull>true</notnull> + <length>32</length> + </field> + <index> <name>file_map_lp_index</name> <unique>true</unique> <field> - <name>logic_path</name> + <name>logic_path_hash</name> <sorting>ascending</sorting> </field> </index> @@ -129,7 +145,7 @@ <name>file_map_pp_index</name> <unique>true</unique> <field> - <name>physic_path</name> + <name>physic_path_hash</name> <sorting>ascending</sorting> </field> </index> diff --git a/lib/files/mapper.php b/lib/files/mapper.php index 90e4e1ca669a9f44d6f2ffc850924001fc2ee9a1..71b665e49bb8f715d0fe3d03b8ab9d24777b240d 100644 --- a/lib/files/mapper.php +++ b/lib/files/mapper.php @@ -114,8 +114,8 @@ class Mapper private function resolveLogicPath($logicPath) { $logicPath = $this->stripLast($logicPath); - $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*file_map` WHERE `logic_path` = ?'); - $result = $query->execute(array($logicPath)); + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*file_map` WHERE `logic_path_hash` = ?'); + $result = $query->execute(array(md5($logicPath))); $result = $result->fetchRow(); return $result['physic_path']; @@ -123,8 +123,8 @@ class Mapper private function resolvePhysicalPath($physicalPath) { $physicalPath = $this->stripLast($physicalPath); - $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*file_map` WHERE `physic_path` = ?'); - $result = $query->execute(array($physicalPath)); + $query = \OC_DB::prepare('SELECT * FROM `*PREFIX*file_map` WHERE `physic_path_hash` = ?'); + $result = $query->execute(array(md5($physicalPath))); $result = $result->fetchRow(); return $result['logic_path']; @@ -151,8 +151,8 @@ class Mapper } private function insert($logicPath, $physicalPath) { - $query = \OC_DB::prepare('INSERT INTO `*PREFIX*file_map`(`logic_path`,`physic_path`) VALUES(?,?)'); - $query->execute(array($logicPath, $physicalPath)); + $query = \OC_DB::prepare('INSERT INTO `*PREFIX*file_map`(`logic_path`, `physic_path`, `logic_path_hash`, `physic_path_hash`) VALUES(?, ?, ?, ?)'); + $query->execute(array($logicPath, $physicalPath, md5($logicPath), md5($physicalPath))); } private function slugifyPath($path, $index=null) {