• Модуль: perfmon
  • Путь к файлу: ~/bitrix/modules/perfmon/lib/sql/updater.php
  • Класс: BitrixPerfmonSqlUpdater
  • Вызов: Updater::handleCreate
protected function handleCreate(BaseObject $object)
{
	if ($object instanceof Sequence || $object instanceof Procedure)
	{
		$ddl = $object->getCreateDdl($this->dbType);

		$stmt = $this->createStatement("$DB->Query("", $ddl, "", true);");
		$stmt->dependOn = $this->tableCheck->getLowercasedName();
		$stmt->addCondition("$updater->CanUpdateDatabase()");
		$stmt->addCondition("$updater->TableExists("".EscapePHPString($this->tableCheck->getLowercasedName())."")");
	}
	elseif ($object instanceof Table)
	{
		$ddl = $object->getCreateDdl($this->dbType);
		$predicate = "!$updater->TableExists("".EscapePHPString($object->name)."")";
		$cond = "tif ($predicate)n";

		$stmt = $this->createStatement("$DB->Query("", $ddl, "", true);");
		$stmt->tableName = $object->getLowercasedName();
		$stmt->addCondition("$updater->CanUpdateDatabase()");
		$stmt->addCondition("$updater->TableExists("".EscapePHPString($this->tableCheck->getLowercasedName())."")");
		$stmt->addCondition("!$updater->TableExists("".EscapePHPString($object->getLowercasedName())."")");
	}
	elseif ($object instanceof Column)
	{
		$ddl = $object->getCreateDdl($this->dbType);
		$predicate = "$updater->TableExists("".EscapePHPString($object->parent->getLowercasedName())."")";
		$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->getCreateDdl($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->dependOn = $object->parent->getLowercasedName();
		$stmt->addCondition("$updater->CanUpdateDatabase()");
		$stmt->addCondition($predicate);
		$stmt->addCondition($predicate2);
	}
	elseif ($object instanceof Trigger || $object instanceof Constraint)
	{
		$ddl = $object->getCreateDdl($this->dbType);
		$predicate = "$updater->TableExists("".EscapePHPString($object->parent->getLowercasedName())."")";
		$cond = "ttif ($predicate)n";

		$stmt = $this->createStatement("$DB->Query("", $ddl, "", true);");
		$stmt->dependOn = $object->parent->getLowercasedName();
		$stmt->addCondition("$updater->CanUpdateDatabase()");
		$stmt->addCondition($predicate);
	}
	else
	{
		$stmt = $this->createStatement("", "//create for ".get_class($object)." not supported yet", "");
	}
	
	if ($stmt)
	{
		$this->statements[] = $stmt;
	}
}