mirror of
https://github.com/silverstripe/silverstripe-postgresql
synced 2024-06-27 15:09:23 +02:00
Merge branch '1.1' into 1.2
This commit is contained in:
commit
1c953025e6
|
@ -1,15 +1,23 @@
|
|||
language: php
|
||||
|
||||
dist: precise
|
||||
|
||||
sudo: false
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 5.3
|
||||
env: DB=POSTGRESQL CORE_RELEASE=3.4
|
||||
- php: 5.4
|
||||
env: DB=POSTGRESQL CORE_RELEASE=3.5
|
||||
- php: 5.5
|
||||
env: DB=POSTGRESQL CORE_RELEASE=3.6
|
||||
- php: 5.6
|
||||
env: DB=POSTGRESQL CORE_RELEASE=3
|
||||
- php: 7.0
|
||||
env: DB=POSTGRESQL CORE_RELEASE=3
|
||||
- php: 7.1
|
||||
env: DB=POSTGRESQL CORE_RELEASE=3
|
||||
|
||||
before_script:
|
||||
- composer self-update || true
|
||||
|
|
|
@ -149,7 +149,7 @@ class PostgreSQLDatabase extends SS_Database {
|
|||
}
|
||||
}
|
||||
|
||||
// Connect to the actual database we're requesting
|
||||
// Connect to the actual database we 're requesting
|
||||
$this->connectDefault();
|
||||
|
||||
// Set up the schema if required
|
||||
|
@ -354,12 +354,14 @@ class PostgreSQLDatabase extends SS_Database {
|
|||
|
||||
$fullQuery = "SELECT * FROM (" . implode(" UNION ", $tables) . ") AS q1 $orderBy LIMIT $limit OFFSET $offset";
|
||||
|
||||
// Get the total items in this search
|
||||
$totalItemsQuery = "SELECT COUNT(*) AS totalitems FROM (" . implode(" UNION ", $tables) . ") AS q1";
|
||||
$totalCount = DB::query($totalItemsQuery);
|
||||
|
||||
// Get records
|
||||
$records = $this->preparedQuery($fullQuery, $tableParameters);
|
||||
$totalCount=0;
|
||||
foreach($records as $record){
|
||||
$objects[] = new $record['ClassName']($record);
|
||||
$totalCount++;
|
||||
}
|
||||
|
||||
if(isset($objects)) $results = new ArrayList($objects);
|
||||
|
@ -368,7 +370,7 @@ class PostgreSQLDatabase extends SS_Database {
|
|||
$list->setLimitItems(false);
|
||||
$list->setPageStart($start);
|
||||
$list->setPageLength($pageLength);
|
||||
$list->setTotalItems($totalCount);
|
||||
$list->setTotalItems($totalCount->value());
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
@ -414,6 +416,7 @@ class PostgreSQLDatabase extends SS_Database {
|
|||
$this->query('COMMIT;');
|
||||
}
|
||||
|
||||
|
||||
public function comparisonClause($field, $value, $exact = false, $negate = false, $caseSensitive = null, $parameterised = false) {
|
||||
if($exact && $caseSensitive === null) {
|
||||
$comp = ($negate) ? '!=' : '=';
|
||||
|
@ -422,12 +425,10 @@ class PostgreSQLDatabase extends SS_Database {
|
|||
if($negate) $comp = 'NOT ' . $comp;
|
||||
$field.='::text';
|
||||
}
|
||||
|
||||
if($parameterised) {
|
||||
return sprintf("%s %s ?", $field, $comp);
|
||||
} else {
|
||||
return sprintf("%s %s '%s'", $field, $comp, $value);
|
||||
}
|
||||
return sprintf("%s %s '%s'", $field, $comp, $value);}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -464,7 +464,8 @@ class PostgreSQLSchemaManager extends DBSchemaManager {
|
|||
}
|
||||
|
||||
// SET check constraint (The constraint HAS to be dropped)
|
||||
$existing_constraint=$this->query("SELECT conname FROM pg_constraint WHERE conname='{$tableName}_{$colName}_check';")->value();
|
||||
$constraint_name = "{$tableName}_{$colName}_check";
|
||||
$existing_constraint = $this->constraintExists($constraint_name);
|
||||
if(isset($matches[4])) {
|
||||
//Take this new constraint and see what's outstanding from the target table:
|
||||
$constraint_bits=explode('(', $matches[4]);
|
||||
|
@ -488,12 +489,12 @@ class PostgreSQLSchemaManager extends DBSchemaManager {
|
|||
|
||||
//First, delete any existing constraint on this column, even if it's no longer an enum
|
||||
if($existing_constraint) {
|
||||
$alterCol .= ",\nDROP CONSTRAINT \"{$tableName}_{$colName}_check\"";
|
||||
$alterCol .= ",\nDROP CONSTRAINT \"{$constraint_name}\"";
|
||||
}
|
||||
|
||||
//Now create the constraint (if we've asked for one)
|
||||
if(!empty($matches[4])) {
|
||||
$alterCol .= ",\nADD CONSTRAINT \"{$tableName}_{$colName}_check\" $matches[4]";
|
||||
$alterCol .= ",\nADD CONSTRAINT \"{$constraint_name}\" $matches[4]";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -903,10 +904,13 @@ class PostgreSQLSchemaManager extends DBSchemaManager {
|
|||
WHERE c.relname = ? AND pg_catalog.pg_table_is_visible(c.oid) AND n.nspname = ?
|
||||
);";
|
||||
|
||||
$result = $this->preparedQuery($query, $tableName, $this->database->currentSchema());
|
||||
$result = $this->preparedQuery(
|
||||
$query,
|
||||
array($tableName, $this->database->currentSchema())
|
||||
);
|
||||
|
||||
$table = array();
|
||||
while($row = pg_fetch_assoc($result)) {
|
||||
foreach ($result as $row) {
|
||||
$table[] = array(
|
||||
'Column' => $row['Column'],
|
||||
'DataType' => $row['DataType']
|
||||
|
@ -1388,12 +1392,10 @@ class PostgreSQLSchemaManager extends DBSchemaManager {
|
|||
$this->query("CREATE TABLE \"$partition_name\" (CHECK (" . str_replace('NEW.', '', $partition_value) . ")) INHERITS (\"$tableName\")$tableSpace;");
|
||||
} else {
|
||||
//Drop the constraint, we will recreate in in the next line
|
||||
$existing_constraint = $this->preparedQuery(
|
||||
"SELECT conname FROM pg_constraint WHERE conname = ?;",
|
||||
array("{$partition_name}_pkey")
|
||||
);
|
||||
$constraint_name = "{$partition_name}_pkey";
|
||||
$existing_constraint = $this->constraintExists($constraint_name);
|
||||
if($existing_constraint){
|
||||
$this->query("ALTER TABLE \"$partition_name\" DROP CONSTRAINT \"{$partition_name}_pkey\";");
|
||||
$this->query("ALTER TABLE \"$partition_name\" DROP CONSTRAINT \"{$constraint_name}\";");
|
||||
}
|
||||
$this->dropTrigger(strtolower('trigger_' . $tableName . '_insert'), $tableName);
|
||||
}
|
||||
|
|
|
@ -10,11 +10,6 @@
|
|||
}
|
||||
],
|
||||
"require": {
|
||||
"silverstripe/framework": "^3.2.0"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2.x-dev"
|
||||
}
|
||||
"silverstripe/framework": "^3.2"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user