I have downloaded postgresql-trunk-r113659.tar.gz - but after fresh SilverStripe install the Admin interface was almost dead.
The problem is under "todo" in PostgreSQLDatabase.php:
Actual PG Constraint string:
CHECK ("ClassName"::text = 'SiteTree'::text OR "ClassName"::text = 'Page'::text
OR "ClassName"::text = 'ErrorPage'::text OR "ClassName"::text = 'RedirectorPage'::text
OR "ClassName"::text = 'VirtualPage'::text)
Code from trunk (as you can see there's no chances to get classes from constraint above):
private function EnumValuesFromConstraint($constraint){
$constraint=substr($constraint, strpos($constraint, 'ANY (ARRAY[')+11);
$constraint=substr($constraint, 0, -11);
$constraints=Array();
$segments=explode(',', $constraint);
foreach($segments as $this_segment){
$bits=preg_split('/ *:: * /', $this_segment);
array_unshift($constraints, trim($bits[0], " '"));
}
return $constraints;
}
My replacement - working - code:
private function EnumValuesFromConstraint($constraint){
$matches = Array();
$constraints = Array();
if (preg_match_all("/\'(\w+)\'\:\:text/",$constraint,$matches)) {
$constraints = $matches[1];
}
return $constraints;
}