restr += collection->GetServer()->GetDbRestriction() + wxT(")\n");
}
- if (collection->GetConnection()->BackendMinimumVersion(7, 5))
+ // In 8.5+, database config options are in pg_db_role_setting
+ if (collection->GetConnection()->BackendMinimumVersion(8, 5))
+ databases = collection->GetServer()->ExecuteSet(
+ wxT("SELECT db.oid, datname, db.dattablespace AS spcoid, spcname, datallowconn, setconfig AS datconfig, datacl, ")
+ wxT("pg_encoding_to_char(encoding) AS serverencoding, pg_get_userbyid(datdba) AS datowner,")
+ wxT("has_database_privilege(db.oid, 'CREATE') as cancreate, \n")
+ wxT("current_setting('default_tablespace') AS default_tablespace, \n")
+ wxT("descr.description\n") +
+ datconnlimit + datcollate + datctype +
+ wxT(" FROM pg_database db\n")
+ wxT(" LEFT OUTER JOIN pg_tablespace ta ON db.dattablespace=ta.OID\n")
+ wxT(" LEFT OUTER JOIN pg_shdescription descr ON db.oid=descr.objoid\n")
+ wxT(" LEFT OUTER JOIN pg_db_role_setting setting ON (db.oid=setting.setdatabase AND setting.setrole=0)\n")
+ + restr +
+ wxT(" ORDER BY datname"));
+ else if (collection->GetConnection()->BackendMinimumVersion(8, 0))
databases = collection->GetServer()->ExecuteSet(
wxT("SELECT db.oid, datname, db.dattablespace AS spcoid, spcname, datallowconn, datconfig, datacl, ")
wxT("pg_encoding_to_char(encoding) AS serverencoding, pg_get_userbyid(datdba) AS datowner,")
pgObject *role=0;
pgCollection *coll=browser->GetParentCollection(item);
if (coll)
- role = loginRoleFactory.CreateObjects(coll, 0, wxT("\n WHERE oid=") + GetOidStr());
+ {
+ if (coll->GetServer()->GetConnection()->BackendMinimumVersion(8, 5))
+ role = loginRoleFactory.CreateObjects(coll, 0, wxT("\n WHERE tab.oid=") + GetOidStr());
+ else
+ role = loginRoleFactory.CreateObjects(coll, 0, wxT("\n WHERE oid=") + GetOidStr());
+ }
return role;
}
else
tabname=wxT("pg_roles");
- if (collection->GetServer()->GetConnection()->BackendMinimumVersion(8, 2))
- roles = collection->GetServer()->ExecuteSet(wxT(" SELECT oid, *, pg_catalog.shobj_description(oid, 'pg_authid') AS description FROM ")
+ // In 8.5+, role config options are in pg_db_role_setting
+ if (collection->GetServer()->GetConnection()->BackendMinimumVersion(8, 5))
+ roles = collection->GetServer()->ExecuteSet(wxT("SELECT tab.oid, tab.*, pg_catalog.shobj_description(tab.oid, 'pg_authid') AS description, setting.setconfig AS rolconfig FROM ") +
+ tabname + wxT(" tab") +
+ wxT(" LEFT OUTER JOIN pg_db_role_setting setting ON (tab.oid=setting.setrole AND setting.setdatabase=0)\n") +
+ restriction + wxT(" ORDER BY rolname"));
+ else if (collection->GetServer()->GetConnection()->BackendMinimumVersion(8, 2))
+ roles = collection->GetServer()->ExecuteSet(wxT("SELECT oid, *, pg_catalog.shobj_description(oid, 'pg_authid') AS description FROM ")
+ tabname + restriction + wxT(" ORDER BY rolname"));
else
- roles = collection->GetServer()->ExecuteSet(wxT(" SELECT oid, *, '' AS description FROM ")
+ roles = collection->GetServer()->ExecuteSet(wxT("SELECT oid, *, '' AS description FROM ")
+ tabname + restriction + wxT(" ORDER BY rolname"));
if (roles)