diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index 9183ac386860f2e30e2eec352ac5c88aaac7e408..822cb849461ba944f23f5611c87a1b7f4832b5f9 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -1,5 +1,5 @@
 /*
- * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.50 2006/07/26 07:24:50 ishii Exp $
+ * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.51 2006/07/28 22:58:26 ishii Exp $
  *
  * pgbench: a simple benchmark program for PostgreSQL
  * written by Tatsuo Ishii
@@ -134,10 +134,13 @@ int			num_files;			/* its number */
 
 /* default scenario */
 static char *tpc_b = {
-	"\\setrandom aid 1 100000\n"
-	"\\setrandom bid 1 1\n"
-	"\\setrandom tid 1 10\n"
-	"\\setrandom delta 1 10000\n"
+	"\\set nbranches :tps\n"
+	"\\set ntellers 10 * :tps\n"
+    "\\set naccounts 100000 * :tps\n"
+	"\\setrandom aid 1 :naccounts\n"
+	"\\setrandom bid 1 :nbranches\n"
+	"\\setrandom tid 1 :ntellers\n"
+	"\\setrandom delta -5000 5000\n"
 	"BEGIN;\n"
 	"UPDATE accounts SET abalance = abalance + :delta WHERE aid = :aid;\n"
 	"SELECT abalance FROM accounts WHERE aid = :aid;\n"
@@ -149,10 +152,13 @@ static char *tpc_b = {
 
 /* -N case */
 static char *simple_update = {
-	"\\setrandom aid 1 100000\n"
-	"\\setrandom bid 1 1\n"
-	"\\setrandom tid 1 10\n"
-	"\\setrandom delta 1 10000\n"
+	"\\set nbranches :tps\n"
+	"\\set ntellers 10 * :tps\n"
+    "\\set naccounts 100000 * :tps\n"
+	"\\setrandom aid 1 :naccounts\n"
+	"\\setrandom bid 1 :nbranches\n"
+	"\\setrandom tid 1 :ntellers\n"
+	"\\setrandom delta -5000 5000\n"
 	"BEGIN;\n"
 	"UPDATE accounts SET abalance = abalance + :delta WHERE aid = :aid;\n"
 	"SELECT abalance FROM accounts WHERE aid = :aid;\n"
@@ -162,7 +168,8 @@ static char *simple_update = {
 
 /* -S case */
 static char *select_only = {
-	"\\setrandom aid 1 100000\n"
+    "\\set naccounts 100000 * :tps\n"
+	"\\setrandom aid 1 :naccounts\n"
 	"SELECT abalance FROM accounts WHERE aid = :aid;\n"
 };
 
@@ -570,12 +577,14 @@ top:
 			else
 				min = atoi(argv[2]);
 
+#ifdef NOT_USED
 			if (min < 0)
 			{
 				fprintf(stderr, "%s: invalid minimum number %d\n", argv[0], min);
 				st->ecnt++;
 				return;
 			}
+#endif
 
 			if (*argv[3] == ':')
 			{
@@ -597,6 +606,9 @@ top:
 				return;
 			}
 
+#ifdef DEBUG
+			printf("min: %d max: %d random: %d\n", min, max, getrand(min, max));
+#endif
 			snprintf(res, sizeof(res), "%d", getrand(min, max));
 
 			if (putVariable(st, argv[1], res) == false)
@@ -1477,38 +1489,21 @@ main(int argc, char **argv)
 	/* process bultin SQL scripts */
 	switch (ttype)
 	{
-			char		buf[128];
-
 		case 0:
 			sql_files[0] = process_builtin(tpc_b);
-			snprintf(buf, sizeof(buf), "%d", 100000 * tps);
-			sql_files[0][0]->argv[3] = strdup(buf);
-			snprintf(buf, sizeof(buf), "%d", 1 * tps);
-			sql_files[0][1]->argv[3] = strdup(buf);
-			snprintf(buf, sizeof(buf), "%d", 10 * tps);
-			sql_files[0][2]->argv[3] = strdup(buf);
-			snprintf(buf, sizeof(buf), "%d", 10000 * tps);
-			sql_files[0][3]->argv[3] = strdup(buf);
 			num_files = 1;
 			break;
+
 		case 1:
 			sql_files[0] = process_builtin(select_only);
-			snprintf(buf, sizeof(buf), "%d", 100000 * tps);
-			sql_files[0][0]->argv[3] = strdup(buf);
 			num_files = 1;
 			break;
+
 		case 2:
 			sql_files[0] = process_builtin(simple_update);
-			snprintf(buf, sizeof(buf), "%d", 100000 * tps);
-			sql_files[0][0]->argv[3] = strdup(buf);
-			snprintf(buf, sizeof(buf), "%d", 1 * tps);
-			sql_files[0][1]->argv[3] = strdup(buf);
-			snprintf(buf, sizeof(buf), "%d", 10 * tps);
-			sql_files[0][2]->argv[3] = strdup(buf);
-			snprintf(buf, sizeof(buf), "%d", 10000 * tps);
-			sql_files[0][3]->argv[3] = strdup(buf);
 			num_files = 1;
 			break;
+
 		default:
 			break;
 	}