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