[development] Supporting PostgreSQL schema level
Jean-Michel Pouré
jm at poure.com
Thu Jan 17 12:05:27 UTC 2008
Here is the proposed patch for PostgreSQL schema support:
http://drupal.org/node/211117
Kind regards,
Jean-Michel
*******************************************************************
Index: includes/database.pgsql.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database.pgsql.inc,v
retrieving revision 1.68
diff -u -r1.68 database.pgsql.inc
--- includes/database.pgsql.inc 4 Jan 2008 09:31:48 -0000 1.68
+++ includes/database.pgsql.inc 17 Jan 2008 11:56:03 -0000
@@ -52,8 +52,12 @@
$url = parse_url($url);
$conn_string = '';
+ $schema='';
// Decode url-encoded information in the db connection string
+ // Syntax is 'pgsql://username:password@localhost/databasename'
+ // or 'pgsql://username:password@localhost/databasename/schema'
+
if (isset($url['user'])) {
$conn_string .= ' user='. urldecode($url['user']);
}
@@ -64,7 +68,9 @@
$conn_string .= ' host='. urldecode($url['host']);
}
if (isset($url['path'])) {
- $conn_string .= ' dbname='. substr(urldecode($url['path']), 1);
+ $conn_string .= ' dbname='.strtok(urldecode($url['path']), '/');
+ // check for additional schema information if required
+ $schema .= strtok( '/');
}
if (isset($url['port'])) {
$conn_string .= ' port='. urldecode($url['port']);
@@ -85,6 +91,11 @@
// Restore error tracking setting
ini_set('track_errors', $track_errors_previous);
+ if ($schema !== '')
+ {
+ @pg_query($connection, 'SET search_path TO ' . $schema);
+ }
+
return $connection;
}
More information about the development
mailing list