• Модуль: 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;
	}
}