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"]));
|
$data = (DB == "" || in_array($name, (array) $_POST["data"]));
|
||||||
if ($table || $data) {
|
if ($table || $data) {
|
||||||
if ($ext == "tar") {
|
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));
|
$adminer->dumpTable($name, ($table ? $_POST["table_style"] : ""), (is_view($table_status) ? 2 : 0));
|
||||||
if (is_view($table_status)) {
|
if (is_view($table_status)) {
|
||||||
|
@ -84,7 +85,8 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||||
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
||||||
}
|
}
|
||||||
if ($ext == "tar") {
|
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) {
|
} elseif ($is_sql) {
|
||||||
echo "\n";
|
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
|
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
|
/** Add a file to TAR
|
||||||
* @param string
|
|
||||||
* @param string
|
* @param string
|
||||||
|
* @param TmpFile
|
||||||
* @return null prints the output
|
* @return null prints the output
|
||||||
*/
|
*/
|
||||||
function tar_file($filename, $contents) {
|
function tar_file($filename, $tmp_file) {
|
||||||
$return = pack("a100a8a8a8a12a12", $filename, 644, 0, 0, decoct(strlen($contents)), decoct(time()));
|
$return = pack("a100a8a8a8a12a12", $filename, 644, 0, 0, decoct($tmp_file->size), decoct(time()));
|
||||||
$checksum = 8*32; // space for checksum itself
|
$checksum = 8*32; // space for checksum itself
|
||||||
for ($i=0; $i < strlen($return); $i++) {
|
for ($i=0; $i < strlen($return); $i++) {
|
||||||
$checksum += ord($return[$i]);
|
$checksum += ord($return[$i]);
|
||||||
|
@ -423,8 +423,8 @@ function tar_file($filename, $contents) {
|
||||||
$return .= sprintf("%06o", $checksum) . "\0 ";
|
$return .= sprintf("%06o", $checksum) . "\0 ";
|
||||||
echo $return;
|
echo $return;
|
||||||
echo str_repeat("\0", 512 - strlen($return));
|
echo str_repeat("\0", 512 - strlen($return));
|
||||||
echo $contents;
|
$tmp_file->send();
|
||||||
echo str_repeat("\0", 511 - (strlen($contents) + 511) % 512);
|
echo str_repeat("\0", 511 - ($tmp_file->size + 511) % 512);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get INI bytes value
|
/** 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/bootstrap.inc.php";
|
||||||
|
include "./include/tmpfile.inc.php";
|
||||||
|
|
||||||
$enum_length = "'(?:''|[^'\\\\]|\\\\.)*+'";
|
$enum_length = "'(?:''|[^'\\\\]|\\\\.)*+'";
|
||||||
$inout = "IN|OUT|INOUT";
|
$inout = "IN|OUT|INOUT";
|
||||||
|
|
|
@ -4,6 +4,7 @@ Print run time next to executed queries
|
||||||
Disable SQL export when applying functions in select
|
Disable SQL export when applying functions in select
|
||||||
Allow using lang() in plugins (customization)
|
Allow using lang() in plugins (customization)
|
||||||
Remove bzip2 compression support
|
Remove bzip2 compression support
|
||||||
|
Constraint memory used in TAR export
|
||||||
Allow exporting views dependent on each other (bug #3459151)
|
Allow exporting views dependent on each other (bug #3459151)
|
||||||
MySQL: Optimize create table page and Editor navigation
|
MySQL: Optimize create table page and Editor navigation
|
||||||
MySQL: Display bit type as binary number
|
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)
|
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"
|
Add title to Logout, edit (in select) and select (in menu) for style "hever"
|
||||||
Export by GET parameters
|
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)
|
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)
|
<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
|
Define foreign keys name - http://forum.zdrojak.root.cz/index.php?topic=185.msg1255#msg1255
|
||||||
|
|
Loading…
Reference in a new issue