Constraint memory used in TAR export
This commit is contained in:
parent
17a8495c2e
commit
601cdd43c1
|
@ -71,7 +71,8 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
|||
$data = (DB == "" || in_array($name, (array) $_POST["data"]));
|
||||
if ($table || $data) {
|
||||
if ($ext == "tar") {
|
||||
ob_start();
|
||||
$tmp_file = new TmpFile;
|
||||
ob_start(array($tmp_file, 'write'), 1e5);
|
||||
}
|
||||
$adminer->dumpTable($name, ($table ? $_POST["table_style"] : ""), (is_view($table_status) ? 2 : 0));
|
||||
if (is_view($table_status)) {
|
||||
|
@ -84,7 +85,8 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
|||
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
||||
}
|
||||
if ($ext == "tar") {
|
||||
tar_file((DB != "" ? "" : "$db/") . "$name.csv", ob_get_clean());
|
||||
ob_end_flush();
|
||||
tar_file((DB != "" ? "" : "$db/") . "$name.csv", $tmp_file);
|
||||
} elseif ($is_sql) {
|
||||
echo "\n";
|
||||
}
|
||||
|
|
|
@ -409,13 +409,13 @@ function remove_definer($query) {
|
|||
return preg_replace('~^([A-Z =]+) DEFINER=`' . preg_replace('~@(.*)~', '`@`(%|\\1)', logged_user()) . '`~', '\\1', $query); //! proper escaping of user
|
||||
}
|
||||
|
||||
/** Get string to add a file in TAR
|
||||
* @param string
|
||||
/** Add a file to TAR
|
||||
* @param string
|
||||
* @param TmpFile
|
||||
* @return null prints the output
|
||||
*/
|
||||
function tar_file($filename, $contents) {
|
||||
$return = pack("a100a8a8a8a12a12", $filename, 644, 0, 0, decoct(strlen($contents)), decoct(time()));
|
||||
function tar_file($filename, $tmp_file) {
|
||||
$return = pack("a100a8a8a8a12a12", $filename, 644, 0, 0, decoct($tmp_file->size), decoct(time()));
|
||||
$checksum = 8*32; // space for checksum itself
|
||||
for ($i=0; $i < strlen($return); $i++) {
|
||||
$checksum += ord($return[$i]);
|
||||
|
@ -423,8 +423,8 @@ function tar_file($filename, $contents) {
|
|||
$return .= sprintf("%06o", $checksum) . "\0 ";
|
||||
echo $return;
|
||||
echo str_repeat("\0", 512 - strlen($return));
|
||||
echo $contents;
|
||||
echo str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
|
||||
$tmp_file->send();
|
||||
echo str_repeat("\0", 511 - ($tmp_file->size + 511) % 512);
|
||||
}
|
||||
|
||||
/** Get INI bytes value
|
||||
|
|
21
adminer/include/tmpfile.inc.php
Normal file
21
adminer/include/tmpfile.inc.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
class TmpFile {
|
||||
var $handler;
|
||||
var $size;
|
||||
|
||||
function TmpFile() {
|
||||
$this->handler = tmpfile();
|
||||
}
|
||||
|
||||
function write($contents) {
|
||||
$this->size += strlen($contents);
|
||||
fwrite($this->handler, $contents);
|
||||
}
|
||||
|
||||
function send() {
|
||||
fseek($this->handler, 0);
|
||||
fpassthru($this->handler);
|
||||
fclose($this->handler);
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@
|
|||
*/
|
||||
|
||||
include "./include/bootstrap.inc.php";
|
||||
include "./include/tmpfile.inc.php";
|
||||
|
||||
$enum_length = "'(?:''|[^'\\\\]|\\\\.)*+'";
|
||||
$inout = "IN|OUT|INOUT";
|
||||
|
|
|
@ -4,6 +4,7 @@ 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
|
||||
Constraint memory used in TAR export
|
||||
Allow exporting views dependent on each other (bug #3459151)
|
||||
MySQL: Optimize create table page and Editor navigation
|
||||
MySQL: Display bit type as binary number
|
||||
|
|
1
todo.txt
1
todo.txt
|
@ -4,7 +4,6 @@ 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
|
||||
Files are missing in TAR due to exhausted memory - can be fixed by creating a temporary file
|
||||
Draggable columns in alter table (thanks to Michal Manak)
|
||||
<option class> for system databases and schemas - information_schema and driver-specific (thanks to Vaclav Novotny)
|
||||
Define foreign keys name - http://forum.zdrojak.root.cz/index.php?topic=185.msg1255#msg1255
|
||||
|
|
Loading…
Reference in a new issue