From: Clinton Ebadi Date: Mon, 10 Dec 2012 01:44:38 +0000 (-0500) Subject: Clean postgres driver variables and add postgres-9.1 support X-Git-Tag: release_20121209 X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/commitdiff_plain/a92add469211c33a0820839dae449853cd427b66 Clean postgres driver variables and add postgres-9.1 support * Like with mysql, remove magic spaces at the end of the config settings * Curry the definitions of the postgres dbms functions for multi-version support * Register new postgres-9.1 dbms backend --- diff --git a/configDefault/postgres.cfg b/configDefault/postgres.cfg index 6c91204..83dfe53 100644 --- a/configDefault/postgres.cfg +++ b/configDefault/postgres.cfg @@ -1,7 +1,10 @@ structure Postgres :> POSTGRES_CONFIG = struct -val adduser = "/usr/bin/sudo /usr/local/sbin/domtool-postgres adduser " -val createdb = "/usr/bin/sudo /usr/local/sbin/domtool-postgres createdb " -val dropdb = "/usr/bin/sudo /usr/local/sbin/domtool-postgres dropdb " +val adduser = "/usr/bin/sudo /usr/local/sbin/domtool-postgres adduser" +val createdb = "/usr/bin/sudo /usr/local/sbin/domtool-postgres createdb" +val dropdb = "/usr/bin/sudo /usr/local/sbin/domtool-postgres dropdb" + +val postgres81port = "5432"; +val postgres91port = "5433" end diff --git a/configDefault/postgres.csg b/configDefault/postgres.csg index e493dbe..12c752a 100644 --- a/configDefault/postgres.csg +++ b/configDefault/postgres.csg @@ -4,4 +4,6 @@ val adduser : string val createdb : string val dropdb : string +val postgres81port : string +val postgres91port : string end diff --git a/src/plugins/domtool-postgres b/src/plugins/domtool-postgres index d05999f..03320d0 100755 --- a/src/plugins/domtool-postgres +++ b/src/plugins/domtool-postgres @@ -1,17 +1,19 @@ #!/bin/sh -e +export PGPORT="$2" + case $1 in adduser) - USERNAME=$2 + USERNAME=$3 sudo -u postgres psql -h postgres -c "CREATE USER $USERNAME" template1 sudo -u postgres psql -h postgres -c "ALTER TABLESPACE user_$USERNAME OWNER TO $USERNAME" ;; createdb) - USERNAME=$2 - DBNAME_BASE=$3 - ENCODING=$4 + USERNAME=$3 + DBNAME_BASE=$4 + ENCODING=$5 DBNAME="${USERNAME}_${DBNAME_BASE}" if [ -n "$ENCODING" ]; then @@ -22,8 +24,8 @@ case $1 in ;; dropdb) - USERNAME=$2 - DBNAME_BASE=$3 + USERNAME=$3 + DBNAME_BASE=$4 DBNAME="${USERNAME}_${DBNAME_BASE}" sudo -u postgres dropdb -h postgres $DBNAME diff --git a/src/plugins/postgres.sml b/src/plugins/postgres.sml index 6465377..607cf0d 100644 --- a/src/plugins/postgres.sml +++ b/src/plugins/postgres.sml @@ -20,27 +20,34 @@ structure Postgres :> POSTGRES = struct -fun adduser {user, passwd} = +fun adduser port {user, passwd} = Option.map (fn s => "Error executing CREATE USER script:\n" ^ s) - (Slave.shellOutput [Config.Postgres.adduser, user]) + (Slave.shellOutput [Config.Postgres.adduser, " ", port, " ", user]) fun passwd _ = SOME "We don't use PostgreSQL passwords." -fun createdb {user, dbname, encoding} = +fun createdb port {user, dbname, encoding} = Option.map (fn s => "Error executing CREATE DATABASE script:\n" ^ s) (Slave.shellOutput [Config.Postgres.createdb, - " ", user, " ", dbname, + " ", port, " ", user, " ", dbname, case encoding of NONE => "" | SOME e => " " ^ e]) -fun dropdb {user, dbname} = +fun dropdb port {user, dbname} = Option.map (fn s => "Error executing DROP DATABASE script:\n" ^ s) - (Slave.shellOutput [Config.Postgres.dropdb, user, " ", dbname]) + (Slave.shellOutput [Config.Postgres.dropdb, " ", port, " ", user, " ", dbname]) val _ = Dbms.register ("postgres", {getpass = NONE, - adduser = adduser, + adduser = adduser Config.Postgres.postgres81port, passwd = passwd, - createdb = createdb, - dropdb = dropdb, + createdb = createdb Config.Postgres.postgres81port, + dropdb = dropdb Config.Postgres.postgres81port, grant = fn _ => SOME "You don't need to use GRANT for Postgres."}) +val _ = Dbms.register ("postgres-9.1", {getpass = NONE, + adduser = adduser Config.Postgres.postgres91port, + passwd = passwd, + createdb = createdb Config.Postgres.postgres91port, + dropdb = dropdb Config.Postgres.postgres91port, + grant = fn _ => SOME "You don't need to use GRANT for Postgres."}) + end