From 43f77c06bb7fcf9931da7dacd5e9175f9474997d Mon Sep 17 00:00:00 2001
From: Tatsuo Ishii <ishii@postgresql.org>
Date: Wed, 26 Nov 2003 06:53:18 +0000
Subject: [PATCH] Patches from Yutaka Tanida. Create primary key indexes after
 data insertion to reduce initialization time.

---
 contrib/pgbench/README.pgbench     |  6 +++++-
 contrib/pgbench/README.pgbench_jis |  7 ++++++-
 contrib/pgbench/pgbench.c          | 27 ++++++++++++++++++++++-----
 3 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/contrib/pgbench/README.pgbench b/contrib/pgbench/README.pgbench
index 855e6abc429..5ac8bace3fe 100644
--- a/contrib/pgbench/README.pgbench
+++ b/contrib/pgbench/README.pgbench
@@ -1,4 +1,4 @@
-pgbench README		2002/07/20 Tatsuo Ishii (t-ishii@sra.co.jp)
+pgbench README		2003/11/26 Tatsuo Ishii (t-ishii@sra.co.jp)
 
 o What is pgbench?
 
@@ -164,6 +164,10 @@ Basically it is same as BSD license. See pgbench.c for more details.
 
 o History
 
+2003/11/26
+	* create indexes after data insertion to reduce time.
+	  patch from Yutaka Tanida.
+
 2003/06/10
 	* fix uninitialized memory bug
 	* add support for PGHOST, PGPORT, PGUSER environment variables
diff --git a/contrib/pgbench/README.pgbench_jis b/contrib/pgbench/README.pgbench_jis
index d7e261deca1..82a2f6a39bf 100644
--- a/contrib/pgbench/README.pgbench_jis
+++ b/contrib/pgbench/README.pgbench_jis
@@ -1,4 +1,4 @@
-pgbench README		2002/07/20 Tatsuo Ishii (t-ishii@sra.co.jp)
+pgbench README		2003/11/26 Tatsuo Ishii (t-ishii@sra.co.jp)
 
 $B"#(Bpgbench $B$H$O!)(B
 
@@ -184,6 +184,11 @@ pgbench $B$O@P0f(B $BC#IW$K$h$C$F=q$+$l$^$7$?!%%i%$%;%s%9>r7o$O(B pgbench.c
 
 $B"#2~DjMzNr(B
 
+2003/11/26
+	* $BC+ED$5$s$N%Q%C%A$rE,MQ!%(Bpgbench -i$B$N:]$K!$8e$+$i<g%-!<$r:n@.(B
+	  $B$9$k$h$&$K$7$?!%$3$l$K$h$C$F=i4|2=$N<B9T;~4V$,BgI}$KC;=L$G$-(B
+	  $B$k(B($B$O$:(B)$B!%(B
+
 2003/06/10
 	* $B%a%b%j$,=i4|2=$5$l$F$$$J$$%P%0$r=$@5(B
 	* $B4D6-JQ?t(BPGHOST, PGPORT, PGUSER$B$rG'<1$9$k$h$&$K$7$?!%(B
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index 94e79ba021f..8d817d9c6e2 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -1,10 +1,10 @@
 /*
- * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.27 2003/09/27 19:15:34 wieck Exp $
+ * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.28 2003/11/26 06:53:18 ishii Exp $
  *
  * pgbench: a simple TPC-B like benchmark program for PostgreSQL
  * written by Tatsuo Ishii
  *
- * Copyright (c) 2000-2002	Tatsuo Ishii
+ * Copyright (c) 2000-2003	Tatsuo Ishii
  *
  * Permission to use, copy, modify, and distribute this software and
  * its documentation for any purpose and without fee is hereby
@@ -482,13 +482,19 @@ init(void)
 	PGresult   *res;
 	static char *DDLs[] = {
 		"drop table branches",
-		"create table branches(bid int, primary key(bid),bbalance int,filler char(88))",
+		"create table branches(bid int not null,bbalance int,filler char(88))",
 		"drop table tellers",
-		"create table tellers(tid int, primary key(tid),bid int,tbalance int,filler char(84))",
+		"create table tellers(tid int not null,bid int,tbalance int,filler char(84))",
 		"drop table accounts",
-		"create table accounts(aid int,primary key(aid),bid int,abalance int,filler char(84))",
+		"create table accounts(aid int not null,bid int,abalance int,filler char(84))",
 		"drop table history",
 	"create table history(tid int,bid int,aid int,delta int,mtime timestamp,filler char(22))"};
+	static char *DDLAFTERs[] = {
+		"alter table branches add primary key (bid)",
+		"alter table tellers add primary key (tid)",
+		"alter table accounts add primary key (aid)"};
+
+
 	char		sql[256];
 
 	int			i;
@@ -608,6 +614,17 @@ init(void)
 #endif   /* NOT_USED */
 		}
 	}
+	fprintf(stderr, "set primary key...\n");
+	for (i = 0; i < (sizeof(DDLAFTERs) / sizeof(char *)); i++)
+	{
+		res = PQexec(con, DDLAFTERs[i]);
+		if (strncmp(DDLs[i], "drop", 4) && PQresultStatus(res) != PGRES_COMMAND_OK)
+		{
+			fprintf(stderr, "%s", PQerrorMessage(con));
+			exit(1);
+		}
+		PQclear(res);
+	}
 
 	/* vacuum */
 	fprintf(stderr, "vacuum...");
-- 
GitLab