I haven't tried the 7.4 beta, so it may be fixed there - but in
7.3.4, pg_dumpall doesn't output global database ACL's. Try this
in a fresh database after an initdb:
template1=# create user test nocreatedb nocreateuser;
CREATE USER
template1=# create database testdb;
CREATE DATABASE
template1=# grant create on database testdb to test;
GRANT
template1=# select datname, datacl from pg_database ;
datname | datacl
-----------+-------------------------
testdb | {=T,postgres=CT,test=C}
template1 | {=,postgres=CT}
template0 | {=,postgres=CT}
(3 rows)
template1=# \q
$ pg_dumpall -U postgres
--
-- PostgreSQL database cluster dump
--
\connect "template1"
--
-- Users
--
DELETE FROM pg_shadow WHERE usesysid <> (SELECT datdba FROM pg_database WHERE datname = 'template0');
CREATE USER test WITH SYSID 100 NOCREATEDB NOCREATEUSER;
--
-- Groups
--
DELETE FROM pg_group;
--
-- Database creation
--
CREATE DATABASE testdb WITH OWNER = postgres TEMPLATE = template0 ENCODING = 'SQL_ASCII';
\connect template1
--
-- PostgreSQL database dump
--
--
-- TOC entry 2 (OID 1)
-- Name: DATABASE template1; Type: COMMENT; Schema: -; Owner:
--
COMMENT ON DATABASE template1 IS 'Default template database';
\connect testdb
--
-- PostgreSQL database dump
--