uawdijnntqw1x1x1
IP : 216.73.216.163
Hostname : yjpwxulqtt
Kernel : Linux yjpwxulqtt 5.15.0-126-generic #136-Ubuntu SMP Wed Nov 6 10:38:22 UTC 2024 x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,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,exec,system,passthru,shell_exec,proc_open,popen
OS : Linux
PATH:
/
home
/
user
/
web
/
pansionat-v-yaroslavle.ru
/
public_html
/
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); } } }
/home/user/web/pansionat-v-yaroslavle.ru/public_html/bitrix/modules/perfmon/./lib/sql/compare.php