From 1ecdde0500e36e7441a8cf610a5e2968637ae631 Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Mon, 29 Apr 2013 14:00:35 -0700 Subject: [PATCH] Remove bzip2 compression support It didn't work for exports bigger than 1 MB. An alternative would be to remove the limit from output buffer which would need memory for the whole export. Another alternative would be to create a temporary file in output handler and bzwrite() to this file - that would work but it's complicated, especially if we want to output the file progressively - bzopen($tmp, 'w'), fopen($tmp, 'r'). --- adminer/include/adminer.inc.php | 9 +-------- adminer/include/functions.inc.php | 6 +++--- adminer/sql.inc.php | 16 +++++----------- changes.txt | 1 + todo.txt | 2 +- 5 files changed, 11 insertions(+), 23 deletions(-) diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 0a92e068..02bd4a97 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -570,9 +570,6 @@ username.form['auth[driver]'].onchange(); if (function_exists('gzencode')) { $return['gz'] = 'gzip'; } - if (function_exists('bzcompress')) { - $return['bz2'] = 'bzip2'; - } return $return; } @@ -704,14 +701,10 @@ username.form['auth[driver]'].onchange(); $output = $_POST["output"]; $ext = (ereg('sql', $_POST["format"]) ? "sql" : ($multi_table ? "tar" : "csv")); // multiple CSV packed to TAR header("Content-Type: " . - ($output == "bz2" ? "application/x-bzip" : ($output == "gz" ? "application/x-gzip" : ($ext == "tar" ? "application/x-tar" : ($ext == "sql" || $output != "file" ? "text/plain" : "text/csv") . "; charset=utf-8" - )))); - if ($output == "bz2") { - ob_start('bzcompress', 1e6); - } + ))); if ($output == "gz") { ob_start('gzencode', 1e6); } diff --git a/adminer/include/functions.inc.php b/adminer/include/functions.inc.php index 872ed506..a44a3daa 100644 --- a/adminer/include/functions.inc.php +++ b/adminer/include/functions.inc.php @@ -602,10 +602,10 @@ function get_file($key, $decompress = false) { } $name = $file["name"][$key]; $tmp_name = $file["tmp_name"][$key]; - $content = file_get_contents($decompress && ereg('\\.gz$', $name) ? "compress.zlib://$tmp_name" - : ($decompress && ereg('\\.bz2$', $name) ? "compress.bzip2://$tmp_name" + $content = file_get_contents($decompress && ereg('\\.gz$', $name) + ? "compress.zlib://$tmp_name" : $tmp_name - )); //! may not be reachable because of open_basedir + ); //! may not be reachable because of open_basedir if ($decompress) { $start = substr($content, 0, 3); if (function_exists("iconv") && ereg("^\xFE\xFF|^\xFF\xFE", $start, $regs)) { // not ternary operator to save memory diff --git a/adminer/sql.inc.php b/adminer/sql.inc.php index 67d26d64..7ad14ef5 100644 --- a/adminer/sql.inc.php +++ b/adminer/sql.inc.php @@ -20,10 +20,10 @@ if (!$error && $_POST) { $fp = false; $query = $_POST["query"]; if ($_POST["webfile"]) { - $fp = @fopen((file_exists("adminer.sql") ? "adminer.sql" - : (file_exists("adminer.sql.gz") ? "compress.zlib://adminer.sql.gz" - : "compress.bzip2://adminer.sql.bz2" - )), "rb"); + $fp = @fopen((file_exists("adminer.sql") + ? "adminer.sql" + : "compress.zlib://adminer.sql.gz" + ), "rb"); $query = ($fp ? fread($fp, 1e6) : false); } elseif ($_FILES && $_FILES["sql_file"]["error"][0] != 4) { // 4 - UPLOAD_ERR_NO_FILE $query = get_file("sql_file", true); @@ -194,13 +194,7 @@ echo checkbox("error_stops", 1, $_POST["error_stops"], lang('Stop on error')) . echo checkbox("only_errors", 1, $_POST["only_errors"], lang('Show only errors')) . "\n"; print_fieldset("webfile", lang('From server'), $_POST["webfile"], "document.getElementById('form')['only_errors'].checked = true; "); -$compress = array(); -foreach (array("gz" => "zlib", "bz2" => "bz2") as $key => $val) { - if (extension_loaded($val)) { - $compress[] = ".$key"; - } -} -echo lang('Webserver file %s', "adminer.sql" . ($compress ? "[" . implode("|", $compress) . "]" : "") . ""); +echo lang('Webserver file %s', "adminer.sql" . (extension_loaded("zlib") ? "[.gz]" : "") . ""); echo ' '; echo "\n"; diff --git a/changes.txt b/changes.txt index 2f3890b9..4a3d6702 100644 --- a/changes.txt +++ b/changes.txt @@ -3,6 +3,7 @@ Allow more SQL files to be uploaded at the same time Print run time next to executed queries Disable SQL export when applying functions in select Allow using lang() in plugins (customization) +Remove bzip2 compression support MySQL: Optimize create table page and Editor navigation MySQL: Display bit type as binary number MySQL: Improve export of binary data types diff --git a/todo.txt b/todo.txt index 6448feba..f1b63c71 100644 --- a/todo.txt +++ b/todo.txt @@ -4,7 +4,7 @@ Variables editation Blob download and image display in edit form (important for Editor with hidden fields in select and SQL command) Add title to Logout, edit (in select) and select (in menu) for style "hever" Export by GET parameters -Only first part of big BZ2 export is readable, files are missing in TAR +Files are missing in TAR Draggable columns in alter table (thanks to Michal Manak)