|
@@ -49,8 +49,8 @@ discard block |
|
|
block discarded – undo |
|
49
|
49
|
protected function addCommonOptions() |
|
50
|
50
|
{ |
|
51
|
51
|
$this |
|
52
|
|
- ->addOption('only-instances', 'o', InputOption::VALUE_REQUIRED|InputOption::VALUE_IS_ARRAY, 'Filter the database servers to run this command against. Usage of * and ? wildcards is allowed. To see all instances available, use `instance:list`', null) |
|
53
|
|
- ->addOption('except-instances', 'x', InputOption::VALUE_REQUIRED|InputOption::VALUE_IS_ARRAY, 'Filter the database servers to run this command against', null) |
|
|
52
|
+ ->addOption('only-instances', 'o', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Filter the database servers to run this command against. Usage of * and ? wildcards is allowed. To see all instances available, use `instance:list`', null) |
|
|
53
|
+ ->addOption('except-instances', 'x', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Filter the database servers to run this command against', null) |
|
54
|
54
|
->addOption('output-type', null, InputOption::VALUE_REQUIRED, 'The format for the output: json, php, text or yml', self::DEFAULT_OUTPUT_FORMAT) |
|
55
|
55
|
->addOption('output-file', null, InputOption::VALUE_REQUIRED, 'Save output to a file instead of writing it to stdout. NB: take care that dbconsole runs in a container, which has a different view of the filesystem. A good dir for output is ./shared') |
|
56
|
56
|
->addOption('timeout', null, InputOption::VALUE_REQUIRED, 'The maximum time to wait for subprocess execution (secs)', self::DEFAULT_PROCESS_TIMEOUT) |
|
@@ -77,7 +77,7 @@ discard block |
|
|
block discarded – undo |
|
77
|
77
|
// On Debian, which we use by default, SF has troubles understanding that php was compiled with --enable-sigchild |
|
78
|
78
|
// We thus force it, but give end users an option to disable this |
|
79
|
79
|
// For more details, see comment 12 at https://bugs.launchpad.net/ubuntu/+source/php5/+bug/516061 |
|
80
|
|
- if (! $input->getOption('dont-force-enabled-sigchild')) { |
|
|
80
|
+ if (!$input->getOption('dont-force-enabled-sigchild')) { |
|
81
|
81
|
Process::forceSigchildEnabled(true); |
|
82
|
82
|
} |
|
83
|
83
|
|
|
@@ -121,7 +121,7 @@ discard block |
|
|
block discarded – undo |
|
121
|
121
|
$sql = null; |
|
122
|
122
|
} else { |
|
123
|
123
|
// this is a coding error, not a sql execution error |
|
124
|
|
- throw new \Exception("Unsupported action type: " . get_class($sqlAction)); |
|
|
124
|
+ throw new \Exception("Unsupported action type: ".get_class($sqlAction)); |
|
125
|
125
|
} |
|
126
|
126
|
$filterCallable = $sqlAction->getResultsFilterCallable(); |
|
127
|
127
|
|
|
@@ -132,7 +132,7 @@ discard block |
|
|
block discarded – undo |
|
132
|
132
|
$outputFilters[$instanceName] = $filterCallable; |
|
133
|
133
|
|
|
134
|
134
|
if ($filename === null && !$sqlAction->isSingleStatement()) { |
|
135
|
|
- $filename = tempnam(sys_get_temp_dir(), 'db3v4l_') . '.sql'; |
|
|
135
|
+ $filename = tempnam(sys_get_temp_dir(), 'db3v4l_').'.sql'; |
|
136
|
136
|
file_put_contents($filename, $sql); |
|
137
|
137
|
$tempSQLFileNames[] = $filename; |
|
138
|
138
|
} |
|
@@ -155,7 +155,7 @@ discard block |
|
|
block discarded – undo |
|
155
|
155
|
} |
|
156
|
156
|
|
|
157
|
157
|
if ($this->outputFormat === 'text') { |
|
158
|
|
- $this->writeln('Command line: ' . $process->getCommandLine(), OutputInterface::VERBOSITY_VERY_VERBOSE); |
|
|
158
|
+ $this->writeln('Command line: '.$process->getCommandLine(), OutputInterface::VERBOSITY_VERY_VERBOSE); |
|
159
|
159
|
} |
|
160
|
160
|
|
|
161
|
161
|
$process->setTimeout($this->processTimeout); |
|
@@ -177,7 +177,7 @@ discard block |
|
|
block discarded – undo |
|
177
|
177
|
$succeeded++; |
|
178
|
178
|
} catch (\Throwable $t) { |
|
179
|
179
|
$failed++; |
|
180
|
|
- $this->writeErrorln("\n<error>$actionName in instance '$instanceName' failed! Reason: " . $t->getMessage() . "</error>\n", OutputInterface::VERBOSITY_NORMAL); |
|
|
180
|
+ $this->writeErrorln("\n<error>$actionName in instance '$instanceName' failed! Reason: ".$t->getMessage()."</error>\n", OutputInterface::VERBOSITY_NORMAL); |
|
181
|
181
|
} |
|
182
|
182
|
} |
|
183
|
183
|
|
|
@@ -199,7 +199,7 @@ discard block |
|
|
block discarded – undo |
|
199
|
199
|
//$result = null; |
|
200
|
200
|
$failed++; |
|
201
|
201
|
$succeeded--; |
|
202
|
|
- $this->writeErrorln("\n<error>$actionName in instance '$instanceName' failed! Reason: " . $t->getMessage() . "</error>\n", OutputInterface::VERBOSITY_NORMAL); |
|
|
202
|
+ $this->writeErrorln("\n<error>$actionName in instance '$instanceName' failed! Reason: ".$t->getMessage()."</error>\n", OutputInterface::VERBOSITY_NORMAL); |
|
203
|
203
|
} |
|
204
|
204
|
} |
|
205
|
205
|
$results[$instanceName] = $output; |
|
@@ -210,19 +210,19 @@ discard block |
|
|
block discarded – undo |
|
210
|
210
|
'exitcode' => $process->getExitCode() |
|
211
|
211
|
]; |
|
212
|
212
|
$failed++; |
|
213
|
|
- $this->writeErrorln("\n<error>$actionName in instance '$instanceName' failed! Reason: " . $process->getErrorOutput() . "</error>\n", OutputInterface::VERBOSITY_NORMAL); |
|
|
213
|
+ $this->writeErrorln("\n<error>$actionName in instance '$instanceName' failed! Reason: ".$process->getErrorOutput()."</error>\n", OutputInterface::VERBOSITY_NORMAL); |
|
214
|
214
|
} |
|
215
|
215
|
} |
|
216
|
216
|
} |
|
217
|
217
|
|
|
218
|
218
|
} finally { |
|
219
|
219
|
// make sure that we clean up temp files, as they might contain sensitive data |
|
220
|
|
- foreach($tempSQLFileNames as $tempSQLFileName) { |
|
|
220
|
+ foreach ($tempSQLFileNames as $tempSQLFileName) { |
|
221
|
221
|
unlink($tempSQLFileName); |
|
222
|
222
|
} |
|
223
|
223
|
} |
|
224
|
224
|
|
|
225
|
|
- uksort($results, function ($a, $b) { |
|
|
225
|
+ uksort($results, function($a, $b) { |
|
226
|
226
|
$aParts = explode('_', $a, 2); |
|
227
|
227
|
$bParts = explode('_', $b, 2); |
|
228
|
228
|
$cmp = strcasecmp($aParts[0], $bParts[0]); |
|
@@ -281,11 +281,11 @@ discard block |
|
|
block discarded – undo |
|
281
|
281
|
if ($this->outputFile != null) { |
|
282
|
282
|
file_put_contents($this->outputFile, $formattedResults); |
|
283
|
283
|
} else { |
|
284
|
|
- $this->writeln($formattedResults, OutputInterface::VERBOSITY_QUIET, OutputInterface::OUTPUT_RAW); |
|
|
284
|
+ $this->writeln($formattedResults, OutputInterface::VERBOSITY_QUIET, OutputInterface::OUTPUT_RAW); |
|
285
|
285
|
} |
|
286
|
286
|
|
|
287
|
287
|
if ($this->outputFormat === 'text' || $this->outputFile != null) { |
|
288
|
|
- $this->writeln($results['succeeded'] . ' succeeded, ' . $results['failed'] . ' failed'); |
|
|
288
|
+ $this->writeln($results['succeeded'].' succeeded, '.$results['failed'].' failed'); |
|
289
|
289
|
if ($this->outputFile != null) { |
|
290
|
290
|
$this->writeln("Results saved to file {$this->outputFile}"); |
|
291
|
291
|
} |