/** * Function to get the sql query for index creation or edit * * @param string $db current db * @param string $table current table * @param PMA_Index $index current index * @param bool &$error whether error occurred or not * * @return string */ function PMA_getSqlQueryForIndexCreateOrEdit($db, $table, $index, &$error) { // $sql_query is the one displayed in the query box $sql_query = 'ALTER TABLE ' . PMA_Util::backquote($db) . '.' . PMA_Util::backquote($table); // Drops the old index if (!empty($_REQUEST['old_index'])) { if ($_REQUEST['old_index'] == 'PRIMARY') { $sql_query .= ' DROP PRIMARY KEY,'; } else { $sql_query .= ' DROP INDEX ' . PMA_Util::backquote($_REQUEST['old_index']) . ','; } } // end if // Builds the new one switch ($index->getType()) { case 'PRIMARY': if ($index->getName() == '') { $index->setName('PRIMARY'); } elseif ($index->getName() != 'PRIMARY') { $error = PMA_Message::error(__('The name of the primary key must be "PRIMARY"!')); } $sql_query .= ' ADD PRIMARY KEY'; break; case 'FULLTEXT': case 'UNIQUE': case 'INDEX': case 'SPATIAL': if ($index->getName() == 'PRIMARY') { $error = PMA_Message::error(__('Can\'t rename index to PRIMARY!')); } $sql_query .= ' ADD ' . $index->getType() . ' ' . ($index->getName() ? PMA_Util::backquote($index->getName()) : ''); break; } // end switch $index_fields = array(); foreach ($index->getColumns() as $key => $column) { $index_fields[$key] = PMA_Util::backquote($column->getName()); if ($column->getSubPart()) { $index_fields[$key] .= '(' . $column->getSubPart() . ')'; } } // end while if (empty($index_fields)) { $error = PMA_Message::error(__('No index parts defined!')); } else { $sql_query .= ' (' . implode(', ', $index_fields) . ')'; } $sql_query .= " COMMENT '" . PMA_Util::sqlAddSlashes($index->getComment()) . "'"; $sql_query .= ';'; return $sql_query; }
$sql_query = 'ALTER TABLE ' . PMA_backquote($db) . '.' . PMA_backquote($table); // Drops the old index if (! empty($_REQUEST['old_index'])) { if ($_REQUEST['old_index'] == 'PRIMARY') { $sql_query .= ' DROP PRIMARY KEY,'; } else { $sql_query .= ' DROP INDEX ' . PMA_backquote($_REQUEST['old_index']) . ','; } } // end if // Builds the new one switch ($index->getType()) { case 'PRIMARY': if ($index->getName() == '') { $index->setName('PRIMARY'); } elseif ($index->getName() != 'PRIMARY') { $error = PMA_Message::error('strPrimaryKeyName'); } $sql_query .= ' ADD PRIMARY KEY'; break; case 'FULLTEXT': case 'UNIQUE': case 'INDEX': if ($index->getName() == 'PRIMARY') { $error = PMA_Message::error('strCantRenameIdxToPrimary'); } $sql_query .= ' ADD ' . $index->getType() . ' ' . ($index->getName() ? PMA_backquote($index->getName()) : ''); break; } // end switch
public static function singleton($schema, $table, $index_name = '') { PMA_Index::_loadIndexes($table, $schema); if (!isset(PMA_Index::$_registry[$schema][$table][$index_name])) { $index = new PMA_Index(); if (strlen($index_name)) { $index->setName($index_name); PMA_Index::$_registry[$schema][$table][$index->getName()] = $index; } return $index; } else { return PMA_Index::$_registry[$schema][$table][$index_name]; } }
/** * Function to get the sql query for index creation or edit * * @param PMA_Index $index current index * @param bool &$error whether error occurred or not * * @return string */ public function getSqlQueryForIndexCreateOrEdit($index, &$error) { // $sql_query is the one displayed in the query box $sql_query = sprintf('ALTER TABLE %s.%s', PMA_Util::backquote($this->_db_name), PMA_Util::backquote($this->_name)); // Drops the old index if (!empty($_REQUEST['old_index'])) { if ($_REQUEST['old_index'] == 'PRIMARY') { $sql_query .= ' DROP PRIMARY KEY,'; } else { $sql_query .= sprintf(' DROP INDEX %s,', PMA_Util::backquote($_REQUEST['old_index'])); } } // end if // Builds the new one switch ($index->getChoice()) { case 'PRIMARY': if ($index->getName() == '') { $index->setName('PRIMARY'); } elseif ($index->getName() != 'PRIMARY') { $error = PMA_Message::error(__('The name of the primary key must be "PRIMARY"!')); } $sql_query .= ' ADD PRIMARY KEY'; break; case 'FULLTEXT': case 'UNIQUE': case 'INDEX': case 'SPATIAL': if ($index->getName() == 'PRIMARY') { $error = PMA_Message::error(__('Can\'t rename index to PRIMARY!')); } $sql_query .= sprintf(' ADD %s ', $index->getChoice()); if ($index->getName()) { $sql_query .= PMA_Util::backquote($index->getName()); } break; } // end switch $index_fields = array(); foreach ($index->getColumns() as $key => $column) { $index_fields[$key] = PMA_Util::backquote($column->getName()); if ($column->getSubPart()) { $index_fields[$key] .= '(' . $column->getSubPart() . ')'; } } // end while if (empty($index_fields)) { $error = PMA_Message::error(__('No index parts defined!')); } else { $sql_query .= ' (' . implode(', ', $index_fields) . ')'; } $keyBlockSizes = $index->getKeyBlockSize(); if (!empty($keyBlockSizes)) { $sql_query .= sprintf(' KEY_BLOCK_SIZE = ', PMA_Util::sqlAddSlashes($keyBlockSizes)); } // specifying index type is allowed only for primary, unique and index only $type = $index->getType(); if ($index->getChoice() != 'SPATIAL' && $index->getChoice() != 'FULLTEXT' && in_array($type, PMA_Index::getIndexTypes())) { $sql_query .= ' USING ' . $type; } $parser = $index->getParser(); if ($index->getChoice() == 'FULLTEXT' && !empty($parser)) { $sql_query .= ' WITH PARSER ' . PMA_Util::sqlAddSlashes($parser); } $comment = $index->getComment(); if (!empty($comment)) { $sql_query .= sprintf(" COMMENT '%s'", PMA_Util::sqlAddSlashes($comment)); } $sql_query .= ';'; return $sql_query; }
/** * Test for get Name & set Name * * @return void */ public function testName() { $index = new PMA_Index(); $index->setName('PMA_name'); $this->assertEquals('PMA_name', $index->getName()); }