mirror of
https://github.com/silverstripe/silverstripe-postgresql
synced 2024-10-22 17:05:45 +02:00
SQL definition function included
This commit is contained in:
parent
5d9364721d
commit
59bc2da75f
@ -308,23 +308,7 @@ class PostgreSQLDatabase extends Database {
|
|||||||
* @param string $fieldSpec The new field specification
|
* @param string $fieldSpec The new field specification
|
||||||
*/
|
*/
|
||||||
public function alterField($tableName, $fieldName, $fieldSpec) {
|
public function alterField($tableName, $fieldName, $fieldSpec) {
|
||||||
// This wee function was built for MoT. It will preserve the binary format of the content,
|
|
||||||
// but change the character set
|
|
||||||
/*
|
|
||||||
$changes = $this->query("SELECT ID, \"$fieldName\" FROM \"$tableName\"")->map();
|
|
||||||
*/
|
|
||||||
|
|
||||||
$this->query("ALTER TABLE \"$tableName\" CHANGE \"$fieldName\" \"$fieldName\" $fieldSpec");
|
$this->query("ALTER TABLE \"$tableName\" CHANGE \"$fieldName\" \"$fieldName\" $fieldSpec");
|
||||||
|
|
||||||
// This wee function was built for MoT. It will preserve the binary format of the content,
|
|
||||||
// but change the character set
|
|
||||||
/*
|
|
||||||
echo "<li>Fixing " . sizeof($changes) . " page's contnet";
|
|
||||||
foreach($changes as $id => $text) {
|
|
||||||
$SQL_text = Convert::raw2sql($text);
|
|
||||||
$this->query("UPDATE \"$tableName\" SET \"$fieldName\" = '$SQL_text' WHERE \"ID\" = '$id'");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -366,6 +350,29 @@ class PostgreSQLDatabase extends Database {
|
|||||||
$this->query($this->getIndexSqlDefinition($tableName, $indexName, $indexSpec));
|
$this->query($this->getIndexSqlDefinition($tableName, $indexName, $indexSpec));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This takes the index spec which has been provided by a class (ie static $indexes = blah blah)
|
||||||
|
* and turns it into a proper string.
|
||||||
|
* Some indexes may be arrays, such as fulltext and unique indexes, and this allows database-specific
|
||||||
|
* arrays to be created.
|
||||||
|
*/
|
||||||
|
public function convertIndexSpec($indexSpec){
|
||||||
|
if(is_array($indexSpec)){
|
||||||
|
//Here we create a db-specific version of whatever index we need to create.
|
||||||
|
switch($indexSpec['type']){
|
||||||
|
case 'fulltext':
|
||||||
|
$indexSpec='fulltext (' . str_replace(' ', '', $indexSpec['value']) . ')';
|
||||||
|
break;
|
||||||
|
case 'unique':
|
||||||
|
$indexSpec='unique (' . $indexSpec['value'] . ')';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//return $indexSpec;
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
protected function getIndexSqlDefinition($tableName, $indexName, $indexSpec) {
|
protected function getIndexSqlDefinition($tableName, $indexName, $indexSpec) {
|
||||||
//$indexSpec = trim($indexSpec);
|
//$indexSpec = trim($indexSpec);
|
||||||
//if($indexSpec[0] != '(') list($indexType, $indexFields) = explode(' ',$indexSpec,2);
|
//if($indexSpec[0] != '(') list($indexType, $indexFields) = explode(' ',$indexSpec,2);
|
||||||
|
Loading…
Reference in New Issue
Block a user