public function getSql(Table $table, array $columns, array $options = array())
{
$spatialGeometryColumns = array();
if (!$this->isPostGis2) {
$normalColumns = array();
foreach ($columns as $name => $columnData) {
if ('geometry' !== $columnData['type']->getName()) {
$normalColumns[$name] = $columnData;
} else {
$spatialGeometryColumns[] = $table->getColumn($name);
}
}
$columns = $normalColumns;
}
$spatialIndexes = array();
if (isset($options['indexes']) && !empty($options['indexes'])) {
$indexes = array();
foreach ($options['indexes'] as $index) {
if (!$index->hasFlag('spatial')) {
$indexes[] = $index;
} else {
$spatialIndexes[] = $index;
}
}
$options['indexes'] = $indexes;
}
$sql = $this->getCreateTableSQL($table, $columns, $options);
foreach ($spatialGeometryColumns as $column) {
$sql = array_merge($sql, $this->spatialColumnSqlGenerator->getSql($column, $table));
}
foreach ($spatialIndexes as $index) {
$sql[] = $this->spatialIndexSqlGenerator->getSql($index, $table);
}
return $sql;
}