public function addColumnDefinition(ColumnDefinition $column) { if (!is_array($this->columnDefinition)) { $this->columnDefinition = array(); } if (isset($this->columnDefinition[$column->getName()])) { throw new MalformedSqlException("Column '{$column->getName()}' already defined!"); } $this->columnDefinition[$column->getName()] = $column; if ($column->getIsPrimaryKey()) { $index = new Index(); $index->setIsPrimary(true); $index->setName("PRIMARY"); $index->addColumn(ColumnSpecifier::factory($column->getName())); $this->addIndex($index); } elseif ($column->getIsUnique()) { $index = new Index(); $index->setIsUnique(true); $index->setName($column->getName()); $index->addColumn(ColumnSpecifier::factory($column->getName())); $this->addIndex($index); } }
protected function convertColumnDefinitionToColumnSchema(ColumnDefinition $columnDefinition, ExecutionContext $executionContext) { $columnPage = new ColumnSchema(); $columnPage->setName($columnDefinition->getName()); /* @var $dataType DataType */ $dataType = $columnDefinition->getDataType(); $columnPage->setDataType($dataType); if (!is_null($columnDefinition->getDataTypeLength())) { $columnPage->setLength($columnDefinition->getDataTypeLength()); } if (!is_null($columnDefinition->getDataTypeSecondLength())) { $columnPage->setSecondLength($columnDefinition->getDataTypeSecondLength()); } $flags = 0; if ($columnDefinition->getIsAutoIncrement()) { $flags = $flags ^ ColumnSchema::EXTRA_AUTO_INCREMENT; } if (!$columnDefinition->getIsNullable()) { $flags = $flags ^ ColumnSchema::EXTRA_NOT_NULL; } if ($columnDefinition->getIsPrimaryKey()) { $flags = $flags ^ ColumnSchema::EXTRA_PRIMARY_KEY; } if ($columnDefinition->getIsUnique()) { $flags = $flags ^ ColumnSchema::EXTRA_UNIQUE_KEY; } if ($columnDefinition->getIsUnsigned()) { $flags = $flags ^ ColumnSchema::EXTRA_UNSIGNED; } if (false) { $flags = $flags ^ ColumnSchema::EXTRA_ZEROFILL; } $columnPage->setExtraFlags($flags); #$columnPage->setFKColumnIndex($index); #$columnPage->setFKTableIndex($index); /* @var $defaultValue Value */ $defaultValue = $columnDefinition->getDefaultValue(); if (!is_null($defaultValue)) { if (!$dataType->mustResolveDefaultValue()) { # default value must be resolved at insertion-time => save unresolved $defaultValueData = $this->valueResolver->resolveValue($defaultValue, $executionContext); $defaultValueData = $this->dataConverter->convertStringToBinary($defaultValueData, $columnPage->getDataType()); } else { $defaultValueData = (string) $defaultValue; } } else { $defaultValueData = null; } $columnPage->setDefaultValue($defaultValueData); $comment = $columnDefinition->getComment(); # TODO: save column comment return $columnPage; }