From b686640a06916ddc65bc46f5a057990914ac091a Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Sun, 14 Mar 2010 08:46:01 -0400 Subject: [PATCH 1/3] bug #2966078 Incorrect LIMIT is saved and sticks while browsing --- ChangeLog | 1 + libraries/display_tbl.lib.php | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 26f8b7085..f2e37d899 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,7 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA 3.3.2.0 (not yet released) - patch #2969449 [core] Name for MERGE engine varies depending on the MySQL version, thanks to Dieter Adriaenssens - ruleant +- bug #2966078 [browse] Incorrect LIMIT is saved and sticks while browsing 3.3.1.0 (not yet released) - bug #2941037 [core] Database structure not sorted by table correctly diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php index 4f16ca58a..f4809d37a 100644 --- a/libraries/display_tbl.lib.php +++ b/libraries/display_tbl.lib.php @@ -1670,7 +1670,11 @@ function PMA_displayTable_checkConfigParams() $_SESSION['tmp_user_values']['query'][$sql_key]['repeat_cells'] = $GLOBALS['cfg']['RepeatCells']; } - if (PMA_isValid($_REQUEST['session_max_rows'], 'numeric') || $_REQUEST['session_max_rows'] == 'all') { + // as this is a form value, the type is always string so we cannot + // use PMA_isValid($_REQUEST['session_max_rows'], 'integer') + if ((PMA_isValid($_REQUEST['session_max_rows'], 'numeric') + && (int) $_REQUEST['session_max_rows'] == $_REQUEST['session_max_rows']) + || $_REQUEST['session_max_rows'] == 'all') { $_SESSION['tmp_user_values']['query'][$sql_key]['max_rows'] = $_REQUEST['session_max_rows']; unset($_REQUEST['session_max_rows']); } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['max_rows'])) { From 279d9c23d404eea626683652dfd1ca43a14663c4 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Sun, 14 Mar 2010 09:13:44 -0400 Subject: [PATCH 2/3] rename this variable to avoid confusion with SQL primary keys, for example --- libraries/display_tbl.lib.php | 86 +++++++++++++++++------------------ 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php index 602ed9515..19515f96d 100644 --- a/libraries/display_tbl.lib.php +++ b/libraries/display_tbl.lib.php @@ -1656,22 +1656,22 @@ function PMA_displayVerticalTable() */ function PMA_displayTable_checkConfigParams() { - $sql_key = md5($GLOBALS['sql_query']); + $sql_md5 = md5($GLOBALS['sql_query']); - $_SESSION['tmp_user_values']['query'][$sql_key]['sql'] = $GLOBALS['sql_query']; + $_SESSION['tmp_user_values']['query'][$sql_md5]['sql'] = $GLOBALS['sql_query']; if (PMA_isValid($_REQUEST['disp_direction'], array('horizontal', 'vertical', 'horizontalflipped'))) { - $_SESSION['tmp_user_values']['query'][$sql_key]['disp_direction'] = $_REQUEST['disp_direction']; + $_SESSION['tmp_user_values']['query'][$sql_md5]['disp_direction'] = $_REQUEST['disp_direction']; unset($_REQUEST['disp_direction']); - } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['disp_direction'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['disp_direction'] = $GLOBALS['cfg']['DefaultDisplay']; + } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_md5]['disp_direction'])) { + $_SESSION['tmp_user_values']['query'][$sql_md5]['disp_direction'] = $GLOBALS['cfg']['DefaultDisplay']; } if (PMA_isValid($_REQUEST['repeat_cells'], 'numeric')) { - $_SESSION['tmp_user_values']['query'][$sql_key]['repeat_cells'] = $_REQUEST['repeat_cells']; + $_SESSION['tmp_user_values']['query'][$sql_md5]['repeat_cells'] = $_REQUEST['repeat_cells']; unset($_REQUEST['repeat_cells']); - } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['repeat_cells'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['repeat_cells'] = $GLOBALS['cfg']['RepeatCells']; + } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_md5]['repeat_cells'])) { + $_SESSION['tmp_user_values']['query'][$sql_md5]['repeat_cells'] = $GLOBALS['cfg']['RepeatCells']; } // as this is a form value, the type is always string so we cannot @@ -1679,81 +1679,81 @@ function PMA_displayTable_checkConfigParams() if ((PMA_isValid($_REQUEST['session_max_rows'], 'numeric') && (int) $_REQUEST['session_max_rows'] == $_REQUEST['session_max_rows']) || $_REQUEST['session_max_rows'] == 'all') { - $_SESSION['tmp_user_values']['query'][$sql_key]['max_rows'] = $_REQUEST['session_max_rows']; + $_SESSION['tmp_user_values']['query'][$sql_md5]['max_rows'] = $_REQUEST['session_max_rows']; unset($_REQUEST['session_max_rows']); - } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['max_rows'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['max_rows'] = $GLOBALS['cfg']['MaxRows']; + } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_md5]['max_rows'])) { + $_SESSION['tmp_user_values']['query'][$sql_md5]['max_rows'] = $GLOBALS['cfg']['MaxRows']; } if (PMA_isValid($_REQUEST['pos'], 'numeric')) { - $_SESSION['tmp_user_values']['query'][$sql_key]['pos'] = $_REQUEST['pos']; + $_SESSION['tmp_user_values']['query'][$sql_md5]['pos'] = $_REQUEST['pos']; unset($_REQUEST['pos']); - } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['pos'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['pos'] = 0; + } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_md5]['pos'])) { + $_SESSION['tmp_user_values']['query'][$sql_md5]['pos'] = 0; } if (PMA_isValid($_REQUEST['display_text'], array('P', 'F'))) { - $_SESSION['tmp_user_values']['query'][$sql_key]['display_text'] = $_REQUEST['display_text']; + $_SESSION['tmp_user_values']['query'][$sql_md5]['display_text'] = $_REQUEST['display_text']; unset($_REQUEST['display_text']); - } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['display_text'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['display_text'] = 'P'; + } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_md5]['display_text'])) { + $_SESSION['tmp_user_values']['query'][$sql_md5]['display_text'] = 'P'; } if (PMA_isValid($_REQUEST['relational_display'], array('K', 'D'))) { - $_SESSION['tmp_user_values']['query'][$sql_key]['relational_display'] = $_REQUEST['relational_display']; + $_SESSION['tmp_user_values']['query'][$sql_md5]['relational_display'] = $_REQUEST['relational_display']; unset($_REQUEST['relational_display']); - } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_key]['relational_display'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['relational_display'] = 'K'; + } elseif (empty($_SESSION['tmp_user_values']['query'][$sql_md5]['relational_display'])) { + $_SESSION['tmp_user_values']['query'][$sql_md5]['relational_display'] = 'K'; } if (isset($_REQUEST['display_binary'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['display_binary'] = true; + $_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary'] = true; unset($_REQUEST['display_binary']); } elseif (isset($_REQUEST['display_options_form'])) { // we know that the checkbox was unchecked - unset($_SESSION['tmp_user_values']['query'][$sql_key]['display_binary']); + unset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary']); } else { // selected by default because some operations like OPTIMIZE TABLE // and all queries involving functions return "binary" contents, // according to low-level field flags - $_SESSION['tmp_user_values']['query'][$sql_key]['display_binary'] = true; + $_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary'] = true; } if (isset($_REQUEST['display_binary_as_hex'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['display_binary_as_hex'] = true; + $_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary_as_hex'] = true; unset($_REQUEST['display_binary_as_hex']); } elseif (isset($_REQUEST['display_options_form'])) { // we know that the checkbox was unchecked - unset($_SESSION['tmp_user_values']['query'][$sql_key]['display_binary_as_hex']); + unset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary_as_hex']); } else { // display_binary_as_hex config option if (isset($GLOBALS['cfg']['DisplayBinaryAsHex']) && true === $GLOBALS['cfg']['DisplayBinaryAsHex']) { - $_SESSION['tmp_user_values']['query'][$sql_key]['display_binary_as_hex'] = true; + $_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary_as_hex'] = true; } } if (isset($_REQUEST['display_blob'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['display_blob'] = true; + $_SESSION['tmp_user_values']['query'][$sql_md5]['display_blob'] = true; unset($_REQUEST['display_blob']); } elseif (isset($_REQUEST['display_options_form'])) { // we know that the checkbox was unchecked - unset($_SESSION['tmp_user_values']['query'][$sql_key]['display_blob']); + unset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_blob']); } if (isset($_REQUEST['hide_transformation'])) { - $_SESSION['tmp_user_values']['query'][$sql_key]['hide_transformation'] = true; + $_SESSION['tmp_user_values']['query'][$sql_md5]['hide_transformation'] = true; unset($_REQUEST['hide_transformation']); } elseif (isset($_REQUEST['display_options_form'])) { // we know that the checkbox was unchecked - unset($_SESSION['tmp_user_values']['query'][$sql_key]['hide_transformation']); + unset($_SESSION['tmp_user_values']['query'][$sql_md5]['hide_transformation']); } // move current query to the last position, to be removed last // so only least executed query will be removed if maximum remembered queries // limit is reached - $tmp = $_SESSION['tmp_user_values']['query'][$sql_key]; - unset($_SESSION['tmp_user_values']['query'][$sql_key]); - $_SESSION['tmp_user_values']['query'][$sql_key] = $tmp; + $tmp = $_SESSION['tmp_user_values']['query'][$sql_md5]; + unset($_SESSION['tmp_user_values']['query'][$sql_md5]); + $_SESSION['tmp_user_values']['query'][$sql_md5] = $tmp; // do not exceed a maximum number of queries to remember if (count($_SESSION['tmp_user_values']['query']) > 10) { @@ -1762,16 +1762,16 @@ function PMA_displayTable_checkConfigParams() } // populate query configuration - $_SESSION['tmp_user_values']['display_text'] = $_SESSION['tmp_user_values']['query'][$sql_key]['display_text']; - $_SESSION['tmp_user_values']['relational_display'] = $_SESSION['tmp_user_values']['query'][$sql_key]['relational_display']; - $_SESSION['tmp_user_values']['display_binary'] = isset($_SESSION['tmp_user_values']['query'][$sql_key]['display_binary']) ? true : false; - $_SESSION['tmp_user_values']['display_binary_as_hex'] = isset($_SESSION['tmp_user_values']['query'][$sql_key]['display_binary_as_hex']) ? true : false; - $_SESSION['tmp_user_values']['display_blob'] = isset($_SESSION['tmp_user_values']['query'][$sql_key]['display_blob']) ? true : false; - $_SESSION['tmp_user_values']['hide_transformation'] = isset($_SESSION['tmp_user_values']['query'][$sql_key]['hide_transformation']) ? true : false; - $_SESSION['tmp_user_values']['pos'] = $_SESSION['tmp_user_values']['query'][$sql_key]['pos']; - $_SESSION['tmp_user_values']['max_rows'] = $_SESSION['tmp_user_values']['query'][$sql_key]['max_rows']; - $_SESSION['tmp_user_values']['repeat_cells'] = $_SESSION['tmp_user_values']['query'][$sql_key]['repeat_cells']; - $_SESSION['tmp_user_values']['disp_direction'] = $_SESSION['tmp_user_values']['query'][$sql_key]['disp_direction']; + $_SESSION['tmp_user_values']['display_text'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['display_text']; + $_SESSION['tmp_user_values']['relational_display'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['relational_display']; + $_SESSION['tmp_user_values']['display_binary'] = isset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary']) ? true : false; + $_SESSION['tmp_user_values']['display_binary_as_hex'] = isset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_binary_as_hex']) ? true : false; + $_SESSION['tmp_user_values']['display_blob'] = isset($_SESSION['tmp_user_values']['query'][$sql_md5]['display_blob']) ? true : false; + $_SESSION['tmp_user_values']['hide_transformation'] = isset($_SESSION['tmp_user_values']['query'][$sql_md5]['hide_transformation']) ? true : false; + $_SESSION['tmp_user_values']['pos'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['pos']; + $_SESSION['tmp_user_values']['max_rows'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['max_rows']; + $_SESSION['tmp_user_values']['repeat_cells'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['repeat_cells']; + $_SESSION['tmp_user_values']['disp_direction'] = $_SESSION['tmp_user_values']['query'][$sql_md5]['disp_direction']; /* * debugging From a6175337a45f3fc2fc27c113c2a6ef1acdd0cbeb Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Sun, 14 Mar 2010 09:29:42 -0400 Subject: [PATCH 3/3] ChangeLog split --- ChangeLog | 240 ------------------------------------------------------ 1 file changed, 240 deletions(-) diff --git a/ChangeLog b/ChangeLog index f71bb44c1..08994a719 100644 --- a/ChangeLog +++ b/ChangeLog @@ -147,246 +147,6 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA in a BLOB, thanks to Vincent van der Tuin - [privileges] Improve escaping of hostname -3.2.4.0 (2009-12-02) -- bug [engines] Innodb_buffer_pool_pages_latched no longer returned in status -- bug #2890451 [setup] Inconsistent generated "designer_coords" -- bug #2890443 [mysqli] "No index used in query" exception is reported -- bug #2891250 [ob] Garbled data in navi frame (PHP 5.2.11 bug) -- bug #2887357 [core] Slow loading times with large databases (partial fix) -- bug #2893931 [lang] Typo and empty message -+ [lang] Russian update, thanks to Victor Volkov -- bug #2823599 [edit] UUID Primary Key wrongly updated -- bug #2895894 [structure] Empty default value not set properly -- bug #2897536 [parser] Copying table with bit field with default -- bug #2893221 [core] Statement may not be safe to log in statement format - -3.2.3.0 (2009-10-30) -- patch #2856664 [export] Date, time, and datetime column types now export correctly to - OpenOffice Spreadsheet, thanks to Thomas Pulickal - jemajoign -- patch #2859788 [parser] Double-character delimiters (bug #2846239), - thanks to Thomas Pulickal - jemajoign -- bug #2832600 [export] Slow export when having lots of databases -- bug #2537766 [import] Comments are stripped when editing store procedures -- bug #2852370 [operations] Renaming database deletes triggers -- bug #2872247 [interface] Failed opening required 'mysql_charsets.lib.php', thanks to CyberLeo Kitsana - cyberleo -- bug [structure] "In use" table incorrectly reported as "view" -- bug #2879909 [interface] Removed double htmlspecialchars when editing enum column -- bug #2868328 [relations] Adding foreign key when table name contains a dot -- bug #2883381 [doc] Side effects of MemoryLimit setting -- bug #2826128 [display] Inverting sort order when expression contains a function name - -3.2.2.1 (2009-10-12) -- [security] XSS and SQL injection, thanks to Herman van Rink - -3.2.2.0 (2009-09-13) -- bug #2825293 [structure] Default value for a BIT column -- bug [display] Red arrows were reversed in the list of tables -- bug #2813879 [export] Duplicate empty lines when exporting without comments -- bug #2825919 [export] Trigger export with database name -- bug #2823996 [data] Cannot edit row with no PK and a BIT field -- bug [export] Exporting results of a query which contains a LIMIT clause - inside a subquery -- bug #2837722 [export] Run complex SQL then export does not work -- bug #2839548 [export] Triggers order on export -- bug #2826986 [display] Order by BLOB and range display -- bug [display] After clicking on Show Function or Function, the UPDATE query - is not shown after execution -- bug [structure] Missing validation for BINARY and VARBINARY - -3.2.1.0 (2009-08-09) -- bug #2799009 Login with ipv6 IP address breaks redirect -- bug #2796066 [priv] Inconsistent display of databases list -- bug #2802870 [display] Incorrect overhead value for InnoDB -- bug [display] Incorrect display in replication status, - thanks to Tomas Srnka - tomassrnka -- bug #1601625 [display] The Ignore checkbox is not unchecked for ENUM -- bug #2809930 [setup] Notice: Undefined variable: k in setup/index.php -- bug [features] Incorrect report of missing relational features -- [security] XSS: Insufficient output sanitizing (not exploitable without a valid token) - thanks to Sven Vetsch/Disenchant for informing us in a responsible manner -- bug #2634827 [import] Using DELIMITER produces infinite cycle -+ new language files: uzbek_cyrillic and urbek_latin -- bug #2814109 [search] Right frame is blank -- bug #2816840 [priv] Cannot change a user's details -- bug #2816165 [display] Executed query not always displayed -- bug #2819944 [setup] Incorrect mention of designer_coords -- bug #2821757 [insert] "Insert another new row" no longer worked -+ [lang] Norwegian update, thanks to Sven-Erik Andersen -- bug [core] PMA_pow() can support negative exponents in the pow() case -+ [lang] Brazilian Portuguese update, thanks to Fabio Bucior - fabiobucior -- patch #2822384 [docs] Missing auth_type in docs-example, - thanks to Jürgen Wind - windkiel -- patch #2819728 [display] Slider effect jumping to top of page, - thanks to Jan Radem - summsel -- bug [display] Incorrect computation of overhead stats in server view - for tables under the InnoDB engine -+ [lang] Swedish update, thanks to Björn T. Hallberg - -3.2.0.1 (2009-06-30) -- [security] XSS: Insufficient output sanitizing in bookmarks - -3.2.0.0 (2009-06-15) -- [core] better support for vendor customisation (based on what Debian needs) -+ rfe #2127987 warn when session.gc_maxlifetime is less than cookie validity -+ rfe #2100910 configurable default charset for import -+ rfe #1913541 link to InnoDB status when error 150 occurs -+ rfe #1927189 strip ` from column names on import -+ rfe #1821619 LeftFrameDBSeparator can be an array -+ patch #1821619 [privileges] Extra back reference when editing table-specific - privileges, thanks to Herman van Rink - helmo -+ patch #2356575 [display] Sortable database columns, - thanks to Bryce Thornton - brycethornton -- patch #2486825 [lang] Wrong string in setup script hints, - thanks to Isaac Bennetch - ibennetch -- patch #2498350 [cleanup] XHTML cleanup, thanks to Virsacer - virsacer -+ patch #2494192 [display] Possibility of disabling the sliders, - thanks to Virsacer - virsacer -+ patch #2506831 [privileges] Create user for existing database, - thanks to Herman van Rink and Virsacer -+ patch #2505255 [privileges] Cleanup, thanks to Virsacer - virsacer -- bug #2414056 [auth] AllowNoPasswordRoot error message is too vague -- patch #2596230 [XHTML] View table headers/footers completely, - thanks to Virsacer - virsacer -- patch #2602633 [core] support column name having square brackets, - thanks to Herman van Rink - helmo -+ [lang] Lithuanian update, thanks to Rytis Slatkevicius - rytis_s -+ [auth] New setting AllowNoPassword (supercedes AllowNoPasswordRoot) that - applies to all accounts (even the anonymous user) -- patch #2652972 [relation] Missing code with hashing for relationship - editing, thanks to knittl - knittl -+ rfe #2123386 Added option to disable mcrypt warning. -- bug #2648502 Request-URI Too Large error from Location header -+ rfe #1731967 Check for relations support on main page. -+ rfe #2186820 Explanation for using Host table. -+ rfe #1369509 Link to download more themes. -+ rfe #1666487 Add option to generate password on change password page. -+ rfe #1694104 Allow logging of user status with Apache. -- patch #2649087 None default is different than other None in some languages. -+ [lang] Chinese Simplified update, thanks to Shanyan Baishui - rimyxp -- patch #2550286 [display] Sort arrows problem, thanks to Virsacer - virsacer -- [security] warn about existence of config directory on main page -+ patch #2706761 [lang] Polish update, - thanks to Pawel Smolinski - zipoking -+ patch #2715142 [export] (rfe 2416960, escape new line in CSV export) - thanks to Derek Schaefer - drummingds1 -- patch #2727250 Optimizations for PHP loops - thanks to Haeber -- bug #2650776 [import] SQL_MODE not saved during Partial Import -- patch #1863739 [auth] cache control missing (PHP-CGI), thanks to stmfd -- patch #2750541 [parser] Incorrect parsing of constraints in ALTER TABLE, - thanks to Yannick Betemps - arkhee -+ patch #2735162 [status] Server status - replication, - thanks to Tomas Srnka - tomassrnka -+ patch #2745215 [edit] Multi-row change with "]" improved, - thanks to Virsacer - virsacer -+ rfe #2657696 Automatically copy generated password -- bug #2787162 [interface] Table with name 'log_views' is incorrectly displayed as a view -+ patch #2665440 Detect mcrypt initialization failure -+ [lang] Galician update, thanks to Xosé Calvo - xosecalvo -+ [lang] Swedish update, thanks to Björn T. Hallberg -+ [lang] Norwegian update, thanks to Sven-Erik Andersen -+ [lang] Catalan update, thanks to Xavier Navarro -+ [lang] Finnish update, thanks to Jouni Kahkonen -+ [lang] Hungarian update, thanks to Jozsef Tamas Herczeg - dodika - -3.1.6.0 (not released) -- bug #2785912 [doc] no ON UPDATE CURRENT_TIMESTAMP in list of attributes - -3.1.5.0 (2009-05-15) -- patch #2739001 [export] XML does not allow spaces in element names, - thanks to Derek Schaefer - drummingds1 -- bug #2780722 [import] Incorrect maximum file size -- bug #2780356 [calendar] Null checkbox not unchecked when date is chosen -- bug [calendar] js error "window.parent.addEvent is not a function" -- patch #2773818 [export] Invalid "Content-Encoding" header, - thanks to abignale - abignale -- bug #2787162 [interface] Table with name 'log_views' is incorrectly displayed as a view -- bug #2784400 [parser] INVOKER not understood by parser -- [core] Compatibility with PHP 5.3.0RC2 - -3.1.4.0 (2009-04-25) -+ patch #1808339 [doc] Apache SSLOptions and StdEnvVars FAQ, - thanks to JT Justman - jtjustman -- bug #2491017 [operations] ANSI mode not supported (db rename and table move) -- bug #2609346 [operations] Fix copying views. -- rfe #2127983 Readd documentation link, it does not protect against anything. -- bug #1675249 [doc] Apache reverse proxy and cookies FAQ -- bug #2682140 UUID() and CURRENT_USER() should not accept arguments -- patch #2682833 [core] Fatal error: Call to a member function isDisplayed(), - thanks to Christian Rodriguez - judas_iscariote -- patch #2702772 [lang] Duplicate sentence in Polish, - thanks to Pawel Smolinski - zipoking -- patch #2709040 [doc] Wrong link in ChangeLog formatter, - thanks to Petr Vorel - pevik -- patch #2715417 [interface] Fixed truncation of enum/set values containing parenthesis - thanks to Marco Moreno - mmoreno -+ [lang] Spanish update, thanks to Daniel Hinostroza -- bug #2724844 Add Fields: Add index is missing quotes - thanks to Luke Armstrong -- bug #2740550 [interface] Using textarea CharEditing drops default values -- bug #2729191 [config] CheckConfigurationPermissions = false is worthless -- bug #2687046 [export] Structure export: Null always YES -- [doc] typos, thanks to Cédric Corazza - -3.1.3.2 (2009-04-14) -- [security] Insufficient output sanitizing when generating configuration file - -3.1.3.1 (2009-03-24) -- [security] HTTP Response Splitting and file inclusion vulnerabilities -- [security] XSS vulnerability on export page -- [security] Insufficient output sanitizing when generating configuration file - -3.1.3.0 (2009-02-28) -+ [lang] Turkish update, thanks to Burak Yavuz -- patch #2496403 [display] Multi-row change with "]", - thanks to Virsacer - virsacer -- bug #2027720 [parser] Missing space after BINARY used as cast -- patch #2520747 [core] E_DEPRECATED compatibility for PHP 5.3, - thanks to Giovanni Giacobbi - themnemonic -- bug [display] Message "Bookmark created" is not displaying -+ [display] Show AUTO_INCREMENT instead of A_I when in vertical mode -- patch #2538358 [display] Conditions for relational display field, - thanks to Virsacer - virsacer -+ [lang] Mongolian update, thanks to Bayarsaikhan Enkhtaivan - bayaraa -- patch #2553372 [display] DB comment tooltips not shown on navi, - thanks to Erdem - ahard -- patch #2561433 [structure] Display true number of rows in a view - if it contains less than MaxExactCountViews, - thanks to Virsacer - virsacer -+ [lang] Polish update, thanks to Fixer - fixeron -- bug #2568722 [designer] Compound key not shown -- patch #2550323 [XHTML] in server_databases.php, thanks to Virsacer - virsacer -- patch #2358861 [navi] Row count tooltip wrong for information_schema, - thanks to Herman van Rink - helmo -- bug #2565948 [core] Changing the connection collation changed the client - charset. -+ [lang] Romanian update, thanks to Sergiu Bivol - sbivol -- patch #1760205 [data] Insert as new row: BLOB is lost, - thanks to Herman van Rink - helmo -+ [lang] Georgian update, thanks to George Machitidze - -3.1.2.0 (2009-01-19) -- bug #1253252 [display] Can't NULL a column with relation defined -- bug #2009500 [SQL] Small improvements in generated SQL (partial fix) -- bug #1963184 [export] YAML export improvement, - thanks to Bryce Thornton - brycethornton -+ [lang] Dutch update, thanks to Herman van Rink - helmo -- patch #2407785 [cleanup] ereg*() deprecated in PHP 5.3, - thanks to Alex Frase - atfrase -- bug #2417058 [properties] Edit fields: losing auto-increment setting -- patch #2444082 [changelog] changelog.php linkifies one link wrong, - thanks to Robert Xiao - nneonneo -- bug #2363653 [properties] Various problems with table structure -- bug [display] BIT field contents disappear when edited -+ [lang] Czech update, thanks to Ondřej Vadinský. -- bug #2461735 [operations] Table operations adds "row_format" -- bug #2445213 [export] Commas for CSV Excel 2008 for Mac -- bug #2397877 [core] ForceSSL and http auth_type -- bug #2473127 [display] Deleting rows displays tbl structure, not contents -- patch #2478940 [core] PHP 5.2+ warning does not work, - thanks to Jürgen Wind - windkiel -- bug #2416418 [privileges] Escaping special characters - --- Older ChangeLogs can be found on our project website --- http://www.phpmyadmin.net/old-stuff/ChangeLogs/