Skip to content

Commit

Permalink
Merge branch 'madhuracj-Bug4552' into QA_4_2
Browse files Browse the repository at this point in the history
  • Loading branch information
Chanaka committed Oct 16, 2014
2 parents 39498e5 + 3e70eb4 commit 38f3ae9
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 17 deletions.
1 change: 1 addition & 0 deletions ChangeLog
Expand Up @@ -3,6 +3,7 @@ phpMyAdmin - ChangeLog

4.2.11.0 (not yet released)
- bug ReferenceError: Table_onover is not defined
- bug #4552 Incorrect routines display for database due to case insensitive checks

4.2.10.0 (2014-10-11)
- bug #4361 Can't change font size (when config.inc.php not present)
Expand Down
3 changes: 2 additions & 1 deletion libraries/DatabaseInterface.class.php
Expand Up @@ -1903,7 +1903,8 @@ public function getTriggers($db, $table = '', $delimiter = '//')
. ', EVENT_OBJECT_TABLE, ACTION_TIMING, ACTION_STATEMENT'
. ', EVENT_OBJECT_SCHEMA, EVENT_OBJECT_TABLE, DEFINER'
. ' FROM information_schema.TRIGGERS'
. ' WHERE TRIGGER_SCHEMA= \'' . PMA_Util::sqlAddSlashes($db) . '\'';
. ' WHERE TRIGGER_SCHEMA ' . PMA_Util::getCollateForIS() . '='
. ' \'' . PMA_Util::sqlAddSlashes($db) . '\'';

if (! empty($table)) {
$query .= " AND EVENT_OBJECT_TABLE = '"
Expand Down
18 changes: 18 additions & 0 deletions libraries/Util.class.php
Expand Up @@ -4380,6 +4380,24 @@ public static function getCompressionMimeType($file)
}
return 'none';
}

/**
* Provide COLLATE clause, if required, to perfrom case sensitice comparisons
* for queries on information_schema.
*
* @return string COLLATE clause if needed or empty string.
*/
public static function getCollateForIS()
{
$lowerCaseTableNames = $GLOBALS['dbi']->fetchValue(
"SHOW VARIABLES LIKE 'lower_case_table_names'", 0, 1
);

if ($lowerCaseTableNames === '0') {
return "COLLATE utf8_bin";
}
return "";
}
}

?>
18 changes: 12 additions & 6 deletions libraries/navigation/Nodes/Node_Database.class.php
Expand Up @@ -117,7 +117,8 @@ public function getPresence($type = '', $searchClause = '', $singleItem = false)
$db = PMA_Util::sqlAddSlashes($db);
$query = "SELECT COUNT(*) ";
$query .= "FROM `INFORMATION_SCHEMA`.`ROUTINES` ";
$query .= "WHERE `ROUTINE_SCHEMA`='$db'";
$query .= "WHERE `ROUTINE_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$db'";
$query .= "AND `ROUTINE_TYPE`='PROCEDURE' ";
if (! empty($searchClause)) {
if ($singleItem) {
Expand All @@ -140,7 +141,8 @@ public function getPresence($type = '', $searchClause = '', $singleItem = false)
$db = PMA_Util::sqlAddSlashes($db);
$query = "SELECT COUNT(*) ";
$query .= "FROM `INFORMATION_SCHEMA`.`ROUTINES` ";
$query .= "WHERE `ROUTINE_SCHEMA`='$db' ";
$query .= "WHERE `ROUTINE_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$db' ";
$query .= "AND `ROUTINE_TYPE`='FUNCTION' ";
if (! empty($searchClause)) {
if ($singleItem) {
Expand All @@ -163,7 +165,8 @@ public function getPresence($type = '', $searchClause = '', $singleItem = false)
$db = PMA_Util::sqlAddSlashes($db);
$query = "SELECT COUNT(*) ";
$query .= "FROM `INFORMATION_SCHEMA`.`EVENTS` ";
$query .= "WHERE `EVENT_SCHEMA`='$db' ";
$query .= "WHERE `EVENT_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$db' ";
if (! empty($searchClause)) {
if ($singleItem) {
$query .= "AND `EVENT_NAME` = '";
Expand Down Expand Up @@ -250,7 +253,8 @@ public function getData($type, $pos, $searchClause = '')
$escdDb = PMA_Util::sqlAddSlashes($db);
$query = "SELECT `ROUTINE_NAME` AS `name` ";
$query .= "FROM `INFORMATION_SCHEMA`.`ROUTINES` ";
$query .= "WHERE `ROUTINE_SCHEMA`='$escdDb'";
$query .= "WHERE `ROUTINE_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$escdDb'";
$query .= "AND `ROUTINE_TYPE`='PROCEDURE' ";
if (! empty($searchClause)) {
$query .= "AND `ROUTINE_NAME` LIKE '%";
Expand All @@ -267,7 +271,8 @@ public function getData($type, $pos, $searchClause = '')
$escdDb = PMA_Util::sqlAddSlashes($db);
$query = "SELECT `ROUTINE_NAME` AS `name` ";
$query .= "FROM `INFORMATION_SCHEMA`.`ROUTINES` ";
$query .= "WHERE `ROUTINE_SCHEMA`='$escdDb' ";
$query .= "WHERE `ROUTINE_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$escdDb' ";
$query .= "AND `ROUTINE_TYPE`='FUNCTION' ";
if (! empty($searchClause)) {
$query .= "AND `ROUTINE_NAME` LIKE '%";
Expand All @@ -284,7 +289,8 @@ public function getData($type, $pos, $searchClause = '')
$escdDb = PMA_Util::sqlAddSlashes($db);
$query = "SELECT `EVENT_NAME` AS `name` ";
$query .= "FROM `INFORMATION_SCHEMA`.`EVENTS` ";
$query .= "WHERE `EVENT_SCHEMA`='$escdDb' ";
$query .= "WHERE `EVENT_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$escdDb' ";
if (! empty($searchClause)) {
$query .= "AND `EVENT_NAME` LIKE '%";
$query .= PMA_Util::sqlAddSlashes(
Expand Down
12 changes: 8 additions & 4 deletions libraries/navigation/Nodes/Node_Table.class.php
Expand Up @@ -98,8 +98,10 @@ public function getPresence($type = '', $searchClause = '')
$table = PMA_Util::sqlAddSlashes($table);
$query = "SELECT COUNT(*) ";
$query .= "FROM `INFORMATION_SCHEMA`.`TRIGGERS` ";
$query .= "WHERE `EVENT_OBJECT_SCHEMA`='$db' ";
$query .= "AND `EVENT_OBJECT_TABLE`='$table'";
$query .= "WHERE `EVENT_OBJECT_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$db' ";
$query .= "AND `EVENT_OBJECT_TABLE` "
. PMA_Util::getCollateForIS() . "='$table'";
$retval = (int)$GLOBALS['dbi']->fetchValue($query);
break;
default:
Expand Down Expand Up @@ -161,8 +163,10 @@ public function getData($type, $pos, $searchClause = '')
$table = PMA_Util::sqlAddSlashes($table);
$query = "SELECT `TRIGGER_NAME` AS `name` ";
$query .= "FROM `INFORMATION_SCHEMA`.`TRIGGERS` ";
$query .= "WHERE `EVENT_OBJECT_SCHEMA`='$db' ";
$query .= "AND `EVENT_OBJECT_TABLE`='$table' ";
$query .= "WHERE `EVENT_OBJECT_SCHEMA` "
. PMA_Util::getCollateForIS() . "='$db' ";
$query .= "AND `EVENT_OBJECT_TABLE` "
. PMA_Util::getCollateForIS() . "='$table' ";
$query .= "ORDER BY `TRIGGER_NAME` ASC ";
$query .= "LIMIT " . intval($pos) . ", $maxItems";
$retval = $GLOBALS['dbi']->fetchResult($query);
Expand Down
9 changes: 6 additions & 3 deletions libraries/rte/rte_events.lib.php
Expand Up @@ -64,7 +64,8 @@ function PMA_EVN_main()
* Display a list of available events
*/
$columns = "`EVENT_NAME`, `EVENT_TYPE`, `STATUS`";
$where = "EVENT_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "'";
$where = "EVENT_SCHEMA " . PMA_Util::getCollateForIS() . "="
. "'" . PMA_Util::sqlAddSlashes($db) . "'";
$query = "SELECT $columns FROM `INFORMATION_SCHEMA`.`EVENTS` "
. "WHERE $where ORDER BY `EVENT_NAME` ASC;";
$items = $GLOBALS['dbi']->fetchResult($query);
Expand Down Expand Up @@ -191,7 +192,8 @@ function PMA_EVN_handleEditor()
$response = PMA_Response::getInstance();
if ($message->isSuccess()) {
$columns = "`EVENT_NAME`, `EVENT_TYPE`, `STATUS`";
$where = "EVENT_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' "
$where = "EVENT_SCHEMA " . PMA_Util::getCollateForIS() . "="
. "'" . PMA_Util::sqlAddSlashes($db) . "' "
. "AND EVENT_NAME='"
. PMA_Util::sqlAddSlashes($_REQUEST['item_name']) . "'";
$query = "SELECT " . $columns
Expand Down Expand Up @@ -325,7 +327,8 @@ function PMA_EVN_getDataFromName($name)
$columns = "`EVENT_NAME`, `STATUS`, `EVENT_TYPE`, `EXECUTE_AT`, "
. "`INTERVAL_VALUE`, `INTERVAL_FIELD`, `STARTS`, `ENDS`, "
. "`EVENT_DEFINITION`, `ON_COMPLETION`, `DEFINER`, `EVENT_COMMENT`";
$where = "EVENT_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' "
$where = "EVENT_SCHEMA " . PMA_Util::getCollateForIS() . "="
. "'" . PMA_Util::sqlAddSlashes($db) . "' "
. "AND EVENT_NAME='" . PMA_Util::sqlAddSlashes($name) . "'";
$query = "SELECT $columns FROM `INFORMATION_SCHEMA`.`EVENTS` WHERE $where;";
$item = $GLOBALS['dbi']->fetchSingleRow($query);
Expand Down
9 changes: 6 additions & 3 deletions libraries/rte/rte_routines.lib.php
Expand Up @@ -55,7 +55,8 @@ function PMA_RTN_main($type)
*/
$columns = "`SPECIFIC_NAME`, `ROUTINE_NAME`, `ROUTINE_TYPE`, ";
$columns .= "`DTD_IDENTIFIER`, `ROUTINE_DEFINITION`";
$where = "ROUTINE_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "'";
$where = "ROUTINE_SCHEMA " . PMA_Util::getCollateForIS() . "="
. "'" . PMA_Util::sqlAddSlashes($db) . "'";
if (PMA_isValid($type, array('FUNCTION','PROCEDURE'))) {
$where .= " AND `ROUTINE_TYPE`='" . $type . "'";
}
Expand Down Expand Up @@ -392,7 +393,8 @@ function PMA_RTN_handleEditor()
if ($message->isSuccess()) {
$columns = "`SPECIFIC_NAME`, `ROUTINE_NAME`, `ROUTINE_TYPE`,"
. " `DTD_IDENTIFIER`, `ROUTINE_DEFINITION`";
$where = "ROUTINE_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' "
$where = "ROUTINE_SCHEMA " . PMA_Util::getCollateForIS() . "="
. "'" . PMA_Util::sqlAddSlashes($db) . "' "
. "AND ROUTINE_NAME='"
. PMA_Util::sqlAddSlashes($_REQUEST['item_name']) . "'"
. "AND ROUTINE_TYPE='"
Expand Down Expand Up @@ -625,7 +627,8 @@ function PMA_RTN_getDataFromName($name, $type, $all = true)
$fields = "SPECIFIC_NAME, ROUTINE_TYPE, DTD_IDENTIFIER, "
. "ROUTINE_DEFINITION, IS_DETERMINISTIC, SQL_DATA_ACCESS, "
. "ROUTINE_COMMENT, SECURITY_TYPE";
$where = "ROUTINE_SCHEMA='" . PMA_Util::sqlAddSlashes($db) . "' "
$where = "ROUTINE_SCHEMA " . PMA_Util::getCollateForIS() . "="
. "'" . PMA_Util::sqlAddSlashes($db) . "' "
. "AND SPECIFIC_NAME='" . PMA_Util::sqlAddSlashes($name) . "'"
. "AND ROUTINE_TYPE='" . PMA_Util::sqlAddSlashes($type) . "'";
$query = "SELECT $fields FROM INFORMATION_SCHEMA.ROUTINES WHERE $where;";
Expand Down

0 comments on commit 38f3ae9

Please sign in to comment.