uawdijnntqw1x1x1
IP : 18.217.160.127
Hostname : axolotl
Kernel : Linux axolotl 4.9.0-13-amd64 #1 SMP Debian 4.9.228-1 (2020-07-05) x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
OS : Linux
PATH:
/
var
/
www
/
axolotl
/
data
/
www
/
.
/
kirov.axolotls.ru
/
bitrix
/
modules
/
perfmon
/
lib
/
sql
/
compare.php
/
/
<?php namespace Bitrix\Perfmon\Sql; class Compare { private $difference = array(); /** * Compares two database schemas and returns array of pairs. * <p> * Pair is the two element array: * - First element with index "0" is the object from the source collection. * - Second element with index "1" is the object from $targetList. * - if pair element is null when no such element found (by name) in the collection. * * @param Schema $source Source schema. * @param Schema $target Target schema. * * @return array */ public static function diff(Schema $source, Schema $target) { $compare = new Compare; $compare->compareSequences($source, $target); $compare->compareProcedures($source, $target); $compare->compareTables($source, $target); return $compare->difference; } /** * Compares sequences. * * @param Schema $source Source schema. * @param Schema $target Target schema. * * @return void */ private function compareSequences(Schema $source, Schema $target) { foreach ($source->sequences->compare($target->sequences) as $pair) { $this->difference[] = $pair; } } /** * Compares procedures. * * @param Schema $source Source schema. * @param Schema $target Target schema. * * @return void */ private function compareProcedures(Schema $source, Schema $target) { foreach ($source->procedures->compare($target->procedures) as $pair) { $this->difference[] = $pair; } } /** * Compares tables. * * @param Schema $source Source schema. * @param Schema $target Target schema. * * @return void */ private function compareTables(Schema $source, Schema $target) { foreach ($source->tables->compare($target->tables, false) as $pair) { if (isset($pair[0]) && isset($pair[1])) { $this->compareTable($pair[0], $pair[1]); } elseif (!isset($pair[0]) && isset($pair[1])) //Table created { $this->difference[] = $pair; $emptyCollection = new Collection; foreach ($emptyCollection->compare($pair[1]->indexes) as $pair2) { $this->difference[] = $pair2; } $emptyCollection = new Collection; foreach ($emptyCollection->compare($pair[1]->triggers) as $pair2) { $this->difference[] = $pair2; } } else { $this->difference[] = $pair; } } } /** * Compares tables columns, indexes, constraints, and triggers.. * * @param Table $source Source table. * @param Table $target Target table. * * @return void */ private function compareTable(Table $source, Table $target) { foreach ($source->columns->compare($target->columns) as $pair) { if (isset($pair[0]) && isset($pair[1])) { $this->compareColumn($pair[0], $pair[1]); } else { $this->difference[] = $pair; } } foreach ($source->indexes->compare($target->indexes) as $pair) { $this->difference[] = $pair; } foreach ($source->constraints->compare($target->constraints) as $pair) { $this->difference[] = $pair; } foreach ($source->triggers->compare($target->triggers) as $pair) { $this->difference[] = $pair; } } /** * Compares columns * * @param Column $source Source column. * @param Column $target Target column. * * @return void */ private function compareColumn(Column $source, Column $target) { if ($source->type !== $target->type) { $this->difference[] = array($source, $target); } elseif ($source->length !== $target->length) { $this->difference[] = array($source, $target); } elseif ($source->nullable !== $target->nullable) { $this->difference[] = array($source, $target); } elseif ($source->default !== $target->default) { $this->difference[] = array($source, $target); } } }
/var/www/axolotl/data/www/./kirov.axolotls.ru/bitrix/modules/perfmon/lib/sql/compare.php