set($params); } /** * If the Index has an expression */ public function hasExpression(): bool { return $this->expression !== null; } /** * The Index expression if it has one */ public function getExpression(): ?string { return $this->expression; } /** * Sets parameters of the index column * * @param array $params an array containing the parameters of the index column */ public function set(array $params): void { if (isset($params['Column_name'])) { $this->name = $params['Column_name']; } if (isset($params['Seq_in_index'])) { $this->seqInIndex = $params['Seq_in_index']; } if (isset($params['Collation'])) { $this->collation = $params['Collation']; } if (isset($params['Cardinality'])) { $this->cardinality = $params['Cardinality']; } if (isset($params['Sub_part'])) { $this->subPart = $params['Sub_part']; } if (isset($params['Expression'])) { $this->expression = $params['Expression']; } if (! isset($params['Null'])) { return; } $this->null = $params['Null']; } /** * Returns the column name * * @return string column name */ public function getName() { return $this->name; } /** * Return the column collation * * @return string|null column collation */ public function getCollation() { return $this->collation; } /** * Returns the cardinality of the column * * @return int|null cardinality of the column */ public function getCardinality() { return $this->cardinality; } /** * Returns whether the column is nullable * * @param bool $as_text whether to returned the string representation * * @return string nullability of the column. True/false or Yes/No depending * on the value of the $as_text parameter */ public function getNull($as_text = false): string { if ($as_text) { if (! $this->null || $this->null === 'NO') { return __('No'); } return __('Yes'); } return $this->null; } /** * Returns the sequence number of the column in the index * * @return int sequence number of the column in the index */ public function getSeqInIndex() { return $this->seqInIndex; } /** * Returns the number of indexed characters if the column is only * partly indexed * * @return int|null the number of indexed characters */ public function getSubPart() { return $this->subPart; } /** * Gets the properties in an array for comparison purposes * * @return array an array containing the properties of the index column */ public function getCompareData() { return [ 'Column_name' => $this->name, 'Seq_in_index' => $this->seqInIndex, 'Collation' => $this->collation, 'Sub_part' => $this->subPart, 'Null' => $this->null, ]; } }