forked from GNUsocial/gnu-social
getTableDef() mostly working in postgres
This commit is contained in:
parent
4de09d6bd4
commit
c467bc0f3f
@ -94,7 +94,12 @@ class Schema
|
||||
|
||||
public function getTableDef($name)
|
||||
{
|
||||
$res = $this->conn->query('DESCRIBE ' . $name);
|
||||
if(common_config('db','type') == 'pgsql') {
|
||||
$res = $this->conn->query("select column_default as default, is_nullable as Null, udt_name as Type, column_name AS Field from INFORMATION_SCHEMA.COLUMNS where table_name = '$name'");
|
||||
}
|
||||
else {
|
||||
$res = $this->conn->query('DESCRIBE ' . $name);
|
||||
}
|
||||
|
||||
if (PEAR::isError($res)) {
|
||||
throw new Exception($res->getMessage());
|
||||
@ -108,12 +113,16 @@ class Schema
|
||||
$row = array();
|
||||
|
||||
while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
|
||||
//lower case the keys, because the php postgres driver is case insentive for column names
|
||||
foreach($row as $k=>$v) {
|
||||
$row[strtolower($k)] = $row[$k];
|
||||
}
|
||||
|
||||
$cd = new ColumnDef();
|
||||
|
||||
$cd->name = $row['Field'];
|
||||
$cd->name = $row['field'];
|
||||
|
||||
$packed = $row['Type'];
|
||||
$packed = $row['type'];
|
||||
|
||||
if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
|
||||
$cd->type = $match[1];
|
||||
@ -122,9 +131,9 @@ class Schema
|
||||
$cd->type = $packed;
|
||||
}
|
||||
|
||||
$cd->nullable = ($row['Null'] == 'YES') ? true : false;
|
||||
$cd->nullable = ($row['null'] == 'YES') ? true : false;
|
||||
$cd->key = $row['Key'];
|
||||
$cd->default = $row['Default'];
|
||||
$cd->default = $row['default'];
|
||||
$cd->extra = $row['Extra'];
|
||||
|
||||
$td->columns[] = $cd;
|
||||
|
Loading…
Reference in New Issue
Block a user