Bruce Momjian wrote:
> Tom Lane wrote:
> > Bruce Momjian <br...@momjian.us> writes:
> > > Prior to PG 8.2, this was necessary to put the comment on the database,
> > > but now that we have the shared comment/description table
> > > pg_shdescription, this is not necessary.
> > 
> > > Do we need createdb to be able to create databases for pre-8.2 clusters?
> > > If not, the attached patch fixes the double-prompting.
> > 
> > Well, if you're only going to change this in HEAD, that might be an
> > acceptable limitation, but if you intend to back-patch I think not.
> > Older versions of createdb are probably significantly more likely to
> > be used with even-older servers.
> 
> This code has been that way since pre-8.2 so I see no need to backpatch;
> this is the first such complaint I have seen.
> 
> > Seems like it wouldn't be that hard to test the server version and only
> > reconnect if it's pre-8.2.
> 
> I am not excited about adding more code for this so I am thinking
> head-only.

Attached patch applied to head only.

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +
diff --git a/src/bin/scripts/createdb.c b/src/bin/scripts/createdb.c
new file mode 100644
index 9b72eac..544f2f6
*** a/src/bin/scripts/createdb.c
--- b/src/bin/scripts/createdb.c
*************** main(int argc, char *argv[])
*** 192,197 ****
--- 192,202 ----
  
  	appendPQExpBuffer(&sql, ";\n");
  
+     /*
+      * Connect to the 'postgres' database by default, except have
+      * the 'postgres' user use 'template1' so he can create the
+      * 'postgres' database.
+      */
  	conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres",
  						   host, port, username, prompt_password, progname);
  
*************** main(int argc, char *argv[])
*** 208,219 ****
  	}
  
  	PQclear(result);
- 	PQfinish(conn);
  
  	if (comment)
  	{
- 		conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
- 
  		printfPQExpBuffer(&sql, "COMMENT ON DATABASE %s IS ", fmtId(dbname));
  		appendStringLiteralConn(&sql, comment, conn);
  		appendPQExpBuffer(&sql, ";\n");
--- 213,221 ----
*************** main(int argc, char *argv[])
*** 231,239 ****
  		}
  
  		PQclear(result);
- 		PQfinish(conn);
  	}
  
  	exit(0);
  }
  
--- 233,242 ----
  		}
  
  		PQclear(result);
  	}
  
+ 	PQfinish(conn);
+ 
  	exit(0);
  }
  
diff --git a/src/bin/scripts/dropdb.c b/src/bin/scripts/dropdb.c
new file mode 100644
index 1cf18fd..48f73ae
*** a/src/bin/scripts/dropdb.c
--- b/src/bin/scripts/dropdb.c
*************** main(int argc, char *argv[])
*** 113,118 ****
--- 113,123 ----
  	appendPQExpBuffer(&sql, "DROP DATABASE %s;\n",
  					  fmtId(dbname));
  
+     /*
+      * Connect to the 'postgres' database by default, except have
+      * the 'postgres' user use 'template1' so he can drop the
+      * 'postgres' database.
+      */
  	conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres",
  						   host, port, username, prompt_password, progname);
  
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to