Merge branch 'madhuracj-Bug4552' into QA_4_2

This commit is contained in:
Chanaka Dharmarathna 2014-10-17 00:41:32 +05:30
commit 38f3ae91ce
7 changed files with 53 additions and 17 deletions

View File

@ -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)

View File

@ -1903,7 +1903,8 @@ class PMA_DatabaseInterface
. ', 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 = '"

View File

@ -4380,6 +4380,24 @@ class PMA_Util
}
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 "";
}
}
?>

View File

@ -117,7 +117,8 @@ class Node_Database extends Node
$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) {
@ -140,7 +141,8 @@ class Node_Database extends Node
$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) {
@ -163,7 +165,8 @@ class Node_Database extends Node
$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` = '";
@ -250,7 +253,8 @@ class Node_Database extends Node
$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 '%";
@ -267,7 +271,8 @@ class Node_Database extends Node
$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 '%";
@ -284,7 +289,8 @@ class Node_Database extends Node
$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(

View File

@ -98,8 +98,10 @@ class Node_Table extends Node_DatabaseChild
$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:
@ -161,8 +163,10 @@ class Node_Table extends Node_DatabaseChild
$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);

View File

@ -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);
@ -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
@ -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);

View File

@ -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 . "'";
}
@ -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='"
@ -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;";