/** * Generates the sql to create a spatial index. * * @param SpatialIndex $index * @param Table | string $table * @return string The sql to create a spatial index on the database. * @throws \InvalidArgumentException */ public function getCreateSpatialIndexSQL(Index $index, $table) { if ($table instanceof Table) { $table = $table->getQuotedName($this); } $name = $index->getQuotedName($this); $columns = $index->getColumns(); if (count($columns) == 0) { throw new \InvalidArgumentException("Incomplete definition. 'columns' required."); } $query = 'CREATE INDEX ' . $name . ' ON ' . $table; $query .= ' USING GIST (' . $this->getIndexFieldDeclarationListSQL($columns) . ')'; return $query; }
public function getSql(Index $index, $table) { if ($table instanceof Table) { $table = $table->getQuotedName($this->platform); } $name = $index->getQuotedName($this->platform); $columns = $index->getQuotedColumns($this->platform); if (count($columns) == 0) { throw new \InvalidArgumentException("Incomplete definition. 'columns' required."); } if ($index->isPrimary()) { return $this->platform->getCreatePrimaryKeySQL($index, $table); } $query = 'CREATE INDEX ' . $name . ' ON ' . $table; $query .= ' USING gist(' . $this->platform->getIndexFieldDeclarationListSQL($columns) . ')'; return $query; }
/** * {@inheritdoc} */ protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) { return array('ALTER INDEX ' . $oldIndexName . ' ON ' . $tableName . ' RENAME TO ' . $index->getQuotedName($this)); }
/** * {@inheritdoc} */ protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) { if (strpos($tableName, '.') !== false) { list($schema) = explode('.', $tableName); $oldIndexName = $schema . '.' . $oldIndexName; } return array('ALTER INDEX ' . $oldIndexName . ' RENAME TO ' . $index->getQuotedName($this)); }
/** * {@inheritdoc} */ protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) { return array(sprintf("EXEC sp_RENAME N'%s.%s', N'%s', N'INDEX'", $tableName, $oldIndexName, $index->getQuotedName($this))); }
/** * Gets the SQL to create an index on a table on this platform. * * @param Index $index * @param string|Table $table name of the table on which the index is to be created * @return string */ public function getCreateIndexSQL(Index $index, $table) { if ($table instanceof Table) { $table = $table->getQuotedName($this); } $name = $index->getQuotedName($this); $columns = $index->getColumns(); if (count($columns) == 0) { throw new \InvalidArgumentException("Incomplete definition. 'columns' required."); } if ($index->isPrimary()) { return $this->getCreatePrimaryKeySQL($index, $table); } else { $type = ''; if ($index->isUnique()) { $type = 'UNIQUE '; } $query = 'CREATE ' . $type . 'INDEX ' . $name . ' ON ' . $table; $query .= ' (' . $this->getIndexFieldDeclarationListSQL($columns) . ')'; } return $query; }
/** * Drops and creates a new index on a table. * * @param \Doctrine\DBAL\Schema\Index $index * @param \Doctrine\DBAL\Schema\Table|string $table The name of the table on which the index is to be created. * * @return void */ public function dropAndCreateIndex(Index $index, $table) { $this->tryMethod('dropIndex', $index->getQuotedName($this->_platform), $table); $this->createIndex($index, $table); }
/** * Gets the SQL to drop an index of a table. * * @param Index $index name of the index to be dropped * @param string|Table $table name of table that should be used in method * @override */ public function getDropIndexSQL($index, $table = null) { if ($index instanceof Index) { $indexName = $index->getQuotedName($this); } else { if (is_string($index)) { $indexName = $index; } else { throw new \InvalidArgumentException('MysqlPlatform::getDropIndexSQL() expects $index parameter to be string or \\Doctrine\\DBAL\\Schema\\Index.'); } } if ($table instanceof Table) { $table = $table->getQuotedName($this); } else { if (!is_string($table)) { throw new \InvalidArgumentException('MysqlPlatform::getDropIndexSQL() expects $table parameter to be string or \\Doctrine\\DBAL\\Schema\\Table.'); } } if ($index instanceof Index && $index->isPrimary()) { // mysql primary keys are always named "PRIMARY", // so we cannot use them in statements because of them being keyword. return $this->getDropPrimaryKeySQL($table); } return 'DROP INDEX ' . $indexName . ' ON ' . $table; }
/** * {@inheritDoc} */ public function getCreatePrimaryKeySQL(Index $index, $table) { $sql = 'ALTER TABLE ' . $table . ' ADD CONSTRAINT PRIMARY KEY (' . $this->getIndexFieldDeclarationListSQL($index->getQuotedColumns($this)) . ')'; if ($index->getName()) { $sql .= ' CONSTRAINT ' . $index->getQuotedName($this); } return $sql; }