- Модуль: perfmon
- Путь к файлу: ~/bitrix/modules/perfmon/lib/sql/updater.php
- Класс: BitrixPerfmonSqlUpdater
- Вызов: Updater::handleDrop
protected function handleDrop(BaseObject $object)
{
if ($object instanceof Sequence || $object instanceof Procedure)
{
$ddl = $object->getDropDdl($this->dbType);
$stmt = $this->createStatement("$DB->Query("", $ddl, "", true);");
$stmt->addCondition("$updater->CanUpdateDatabase()");
$stmt->addCondition("$DB->type == "".EscapePHPString($this->dbType).""");
$stmt->addCondition("$updater->TableExists("".EscapePHPString($this->tableCheck->getLowercasedName())."")");
}
elseif ($object instanceof Table)
{
$ddl = $object->getDropDdl($this->dbType);
$predicate = "$updater->TableExists("".EscapePHPString($object->getLowercasedName())."")";
$cond = "ttif ($predicate)n";
$stmt = $this->createStatement("$DB->Query("", $ddl, "");");
$stmt->addCondition("$updater->CanUpdateDatabase()");
$stmt->addCondition($predicate);
}
elseif ($object instanceof Column)
{
$ddl = $object->getDropDdl($this->dbType);
$predicate = "$updater->TableExists("".EscapePHPString($object->parent->name)."")";
$cond = "ttif ($predicate)n";
$predicate2 = "$DB->Query("SELECT ".EscapePHPString($object->name)." FROM ".EscapePHPString($object->parent->getLowercasedName())." WHERE 1=0", true)";
$this->columns[$cond][] = [$predicate2, $ddl, $object->parent->getLowercasedName(), $predicate, $predicate2];
}
elseif ($object instanceof Index)
{
$ddl = $object->getDropDdl($this->dbType);
$predicate = "$updater->TableExists("".EscapePHPString($object->parent->getLowercasedName())."")";
$cond = "ttif ($predicate)n";
$predicate2 = "$DB->IndexExists("".EscapePHPString($object->parent->getUnquotedName())."", array(".$this->multiLinePhp(""", $object->getUnquotedName($object->columns), "", ")."), true)";
$stmt = $this->createStatement("$DB->Query("", $ddl, "");");
$stmt->addCondition("$updater->CanUpdateDatabase()");
$stmt->addCondition($predicate);
$stmt->addCondition($predicate2);
}
elseif ($object instanceof Trigger || $object instanceof Constraint)
{
$ddl = $object->getDropDdl($this->dbType);
$predicate = "$updater->TableExists("".EscapePHPString($object->parent->getLowercasedName())."")";
$cond = "ttif ($predicate)n";
$stmt = $this->createStatement("$DB->Query("", $ddl, "", true);");
$stmt->addCondition("$updater->CanUpdateDatabase()");
$stmt->addCondition($predicate);
}
else
{
$stmt = $this->createStatement("", "//drop for ".get_class($object)." not supported yet", "");
}
if ($stmt)
{
$this->statements[] = $stmt;
}
}