Parser recognizes collations / Include DB charset and collation in SQL export
This commit is contained in:
@@ -5,6 +5,12 @@ phpMyAdmin - Changelog
|
|||||||
$Id$
|
$Id$
|
||||||
$Source$
|
$Source$
|
||||||
|
|
||||||
|
2004-01-02 Alexander M. Turek <wecantdance@derrabus.de>
|
||||||
|
* libraries/mysql_charsets.lib.php, libraries/sqlparser.lib.php:
|
||||||
|
MySQL collations are now parsed and highlighted.
|
||||||
|
* libraries/export/sql.php: Include charset / collation information in db
|
||||||
|
export.
|
||||||
|
|
||||||
2004-01-02 Marc Delisle <lem9@users.sourceforge.net>
|
2004-01-02 Marc Delisle <lem9@users.sourceforge.net>
|
||||||
* db_details_structure.php: bug 868996, debug code still in place,
|
* db_details_structure.php: bug 868996, debug code still in place,
|
||||||
thanks to Matthias Fichtner (mfichtner)
|
thanks to Matthias Fichtner (mfichtner)
|
||||||
|
@@ -80,7 +80,17 @@ function PMA_exportDBCreate($db) {
|
|||||||
if (isset($GLOBALS['drop_database'])) {
|
if (isset($GLOBALS['drop_database'])) {
|
||||||
if (!PMA_exportOutputHandler('DROP DATABASE ' . (isset($GLOBALS['use_backquotes']) ? PMA_backquote($db) : $db) . ';' . $crlf)) return FALSE;
|
if (!PMA_exportOutputHandler('DROP DATABASE ' . (isset($GLOBALS['use_backquotes']) ? PMA_backquote($db) : $db) . ';' . $crlf)) return FALSE;
|
||||||
}
|
}
|
||||||
if (!PMA_exportOutputHandler('CREATE DATABASE ' . (isset($GLOBALS['use_backquotes']) ? PMA_backquote($db) : $db) . ';' . $crlf)) return FALSE;
|
$create_query = 'CREATE DATABASE ' . (isset($GLOBALS['use_backquotes']) ? PMA_backquote($db) : $db);
|
||||||
|
if (PMA_MYSQL_INT_VERSION >= 40101) {
|
||||||
|
$collation = PMA_getDbCollation($db);
|
||||||
|
if (strpos($collation, '_')) {
|
||||||
|
$create_query .= ' DEFAULT CHARACTER SET ' . substr($collation, 0, strpos($collation, '_')) . ' COLLATE ' . $collation;
|
||||||
|
} else {
|
||||||
|
$create_query .= ' DEFAULT CHARACTER SET ' . $collation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$create_query .= ';' . $crlf;
|
||||||
|
if (!PMA_exportOutputHandler($create_query)) return FALSE;
|
||||||
return PMA_exportOutputHandler('USE ' . $db . ';' . $crlf);
|
return PMA_exportOutputHandler('USE ' . $db . ';' . $crlf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,24 +19,26 @@ if (PMA_MYSQL_INT_VERSION >= 40100){
|
|||||||
$res = PMA_mysql_query('SHOW COLLATION;', $userlink)
|
$res = PMA_mysql_query('SHOW COLLATION;', $userlink)
|
||||||
or PMA_mysqlDie(PMA_mysql_error($userlink), 'SHOW COLLATION;');
|
or PMA_mysqlDie(PMA_mysql_error($userlink), 'SHOW COLLATION;');
|
||||||
|
|
||||||
|
$mysql_charsets_count = count($mysql_charsets);
|
||||||
sort($mysql_charsets, SORT_STRING);
|
sort($mysql_charsets, SORT_STRING);
|
||||||
|
|
||||||
$mysql_collations = array_flip($mysql_charsets);
|
$mysql_collations = array_flip($mysql_charsets);
|
||||||
$mysql_default_collations = array();;
|
$mysql_default_collations = $mysql_collations_flat = array();;
|
||||||
while ($row = PMA_mysql_fetch_array($res, MYSQL_ASSOC)) {
|
while ($row = PMA_mysql_fetch_array($res, MYSQL_ASSOC)) {
|
||||||
if (!is_array($mysql_collations[$row['Charset']])) {
|
if (!is_array($mysql_collations[$row['Charset']])) {
|
||||||
$mysql_collations[$row['Charset']] = array($row['Collation']);
|
$mysql_collations[$row['Charset']] = array($row['Collation']);
|
||||||
} else {
|
} else {
|
||||||
$mysql_collations[$row['Charset']][] = $row['Collation'];
|
$mysql_collations[$row['Charset']][] = $row['Collation'];
|
||||||
}
|
}
|
||||||
|
$mysql_collations_flat[] = $row['Collation'];
|
||||||
if ((isset($row['D']) && $row['D'] == 'Y') || (isset($row['Default']) && $row['Default'] == 'Yes')) {
|
if ((isset($row['D']) && $row['D'] == 'Y') || (isset($row['Default']) && $row['Default'] == 'Yes')) {
|
||||||
$mysql_default_collations[$row['Charset']] = $row['Collation'];
|
$mysql_default_collations[$row['Charset']] = $row['Collation'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$mysql_collations_count = 0;
|
$mysql_collations_count = count($mysql_collations_flat);
|
||||||
|
sort($mysql_collations_flat, SORT_STRING);
|
||||||
foreach($mysql_collations AS $key => $value) {
|
foreach($mysql_collations AS $key => $value) {
|
||||||
$mysql_collations_count += count($mysql_collations[$key]);
|
|
||||||
sort($mysql_collations[$key], SORT_STRING);
|
sort($mysql_collations[$key], SORT_STRING);
|
||||||
reset($mysql_collations[$key]);
|
reset($mysql_collations[$key]);
|
||||||
}
|
}
|
||||||
|
@@ -52,6 +52,9 @@ if ($is_minimum_common == FALSE) {
|
|||||||
require_once('./libraries/mysql_charsets.lib.php');
|
require_once('./libraries/mysql_charsets.lib.php');
|
||||||
if (!isset($mysql_charsets)) {
|
if (!isset($mysql_charsets)) {
|
||||||
$mysql_charsets = array();
|
$mysql_charsets = array();
|
||||||
|
$mysql_charsets_count = 0;
|
||||||
|
$mysql_collations_flat = array();
|
||||||
|
$mysql_collations_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined('DEBUG_TIMING')) {
|
if (!defined('DEBUG_TIMING')) {
|
||||||
@@ -191,6 +194,9 @@ if ($is_minimum_common == FALSE) {
|
|||||||
* @global integer MySQL column types count
|
* @global integer MySQL column types count
|
||||||
* @global integer MySQL function names count
|
* @global integer MySQL function names count
|
||||||
* @global array List of available character sets
|
* @global array List of available character sets
|
||||||
|
* @global array List of available collations
|
||||||
|
* @global integer Character sets count
|
||||||
|
* @global integer Collations count
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
@@ -199,7 +205,7 @@ if ($is_minimum_common == FALSE) {
|
|||||||
global $cfg;
|
global $cfg;
|
||||||
global $PMA_SQPdata_column_attrib, $PMA_SQPdata_reserved_word, $PMA_SQPdata_column_type, $PMA_SQPdata_function_name,
|
global $PMA_SQPdata_column_attrib, $PMA_SQPdata_reserved_word, $PMA_SQPdata_column_type, $PMA_SQPdata_function_name,
|
||||||
$PMA_SQPdata_column_attrib_cnt, $PMA_SQPdata_reserved_word_cnt, $PMA_SQPdata_column_type_cnt, $PMA_SQPdata_function_name_cnt;
|
$PMA_SQPdata_column_attrib_cnt, $PMA_SQPdata_reserved_word_cnt, $PMA_SQPdata_column_type_cnt, $PMA_SQPdata_function_name_cnt;
|
||||||
global $mysql_charsets;
|
global $mysql_charsets, $mysql_collations_flat, $mysql_charsets_count, $mysql_collations_count;
|
||||||
|
|
||||||
// rabus: Convert all line feeds to Unix style
|
// rabus: Convert all line feeds to Unix style
|
||||||
$sql = str_replace("\r\n", "\n", $sql);
|
$sql = str_replace("\r\n", "\n", $sql);
|
||||||
@@ -623,7 +629,8 @@ if ($is_minimum_common == FALSE) {
|
|||||||
) && PMA_STR_binarySearchInArr($d_cur, $mysql_charsets, count($mysql_charsets))) {
|
) && PMA_STR_binarySearchInArr($d_cur, $mysql_charsets, count($mysql_charsets))) {
|
||||||
$t_suffix = '_charset';
|
$t_suffix = '_charset';
|
||||||
}
|
}
|
||||||
} elseif (PMA_STR_binarySearchInArr($d_cur, $mysql_charsets, count($mysql_charsets))) {
|
} elseif (PMA_STR_binarySearchInArr($d_cur, $mysql_charsets, $mysql_charsets_count)
|
||||||
|
|| PMA_STR_binarySearchInArr($d_cur, $mysql_collations_flat, $mysql_collations_count)) {
|
||||||
$t_suffix = '_charset';
|
$t_suffix = '_charset';
|
||||||
} else {
|
} else {
|
||||||
// Do nothing
|
// Do nothing
|
||||||
|
Reference in New Issue
Block a user