mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	Fix some allocation size calculation errors that would cause pgbench
to fail with large test scripts.
This commit is contained in:
		
							parent
							
								
									4a57a4575a
								
							
						
					
					
						commit
						9ee0a7df50
					
				@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.44 2005/10/15 20:24:00 tgl Exp $
 | 
					 * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.45 2005/10/29 19:38:07 tgl Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * pgbench: a simple benchmark program for PostgreSQL
 | 
					 * pgbench: a simple benchmark program for PostgreSQL
 | 
				
			||||||
 * written by Tatsuo Ishii
 | 
					 * written by Tatsuo Ishii
 | 
				
			||||||
@ -868,7 +868,7 @@ process_file(char *filename)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	alloc_num = COMMANDS_ALLOC_NUM;
 | 
						alloc_num = COMMANDS_ALLOC_NUM;
 | 
				
			||||||
	my_commands = (Command **) malloc(sizeof(Command **) * alloc_num);
 | 
						my_commands = (Command **) malloc(sizeof(Command *) * alloc_num);
 | 
				
			||||||
	if (my_commands == NULL)
 | 
						if (my_commands == NULL)
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -876,7 +876,7 @@ process_file(char *filename)
 | 
				
			|||||||
		fd = stdin;
 | 
							fd = stdin;
 | 
				
			||||||
	else if ((fd = fopen(filename, "r")) == NULL)
 | 
						else if ((fd = fopen(filename, "r")) == NULL)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		fprintf(stderr, "%s: %s\n", strerror(errno), filename);
 | 
							fprintf(stderr, "%s: %s\n", filename, strerror(errno));
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -899,7 +899,7 @@ process_file(char *filename)
 | 
				
			|||||||
		if (lineno >= alloc_num)
 | 
							if (lineno >= alloc_num)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			alloc_num += COMMANDS_ALLOC_NUM;
 | 
								alloc_num += COMMANDS_ALLOC_NUM;
 | 
				
			||||||
			my_commands = realloc(my_commands, alloc_num);
 | 
								my_commands = realloc(my_commands, sizeof(Command *) * alloc_num);
 | 
				
			||||||
			if (my_commands == NULL)
 | 
								if (my_commands == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				fclose(fd);
 | 
									fclose(fd);
 | 
				
			||||||
@ -930,7 +930,7 @@ process_builtin(char *tb)
 | 
				
			|||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	alloc_num = COMMANDS_ALLOC_NUM;
 | 
						alloc_num = COMMANDS_ALLOC_NUM;
 | 
				
			||||||
	my_commands = malloc(sizeof(Command **) * alloc_num);
 | 
						my_commands = (Command **) malloc(sizeof(Command *) * alloc_num);
 | 
				
			||||||
	if (my_commands == NULL)
 | 
						if (my_commands == NULL)
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -965,7 +965,7 @@ process_builtin(char *tb)
 | 
				
			|||||||
		if (lineno >= alloc_num)
 | 
							if (lineno >= alloc_num)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			alloc_num += COMMANDS_ALLOC_NUM;
 | 
								alloc_num += COMMANDS_ALLOC_NUM;
 | 
				
			||||||
			my_commands = realloc(my_commands, alloc_num);
 | 
								my_commands = realloc(my_commands, sizeof(Command *) * alloc_num);
 | 
				
			||||||
			if (my_commands == NULL)
 | 
								if (my_commands == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return NULL;
 | 
									return NULL;
 | 
				
			||||||
@ -1031,7 +1031,7 @@ main(int argc, char **argv)
 | 
				
			|||||||
								 * 2: skip update of branches and tellers */
 | 
													 * 2: skip update of branches and tellers */
 | 
				
			||||||
	char	   *filename = NULL;
 | 
						char	   *filename = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	static CState *state;		/* status of clients */
 | 
						CState	   *state;			/* status of clients */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct timeval tv1;			/* start up time */
 | 
						struct timeval tv1;			/* start up time */
 | 
				
			||||||
	struct timeval tv2;			/* after establishing all connections to the
 | 
						struct timeval tv2;			/* after establishing all connections to the
 | 
				
			||||||
@ -1101,7 +1101,7 @@ main(int argc, char **argv)
 | 
				
			|||||||
				if (getrlimit(RLIMIT_OFILE, &rlim) == -1)
 | 
									if (getrlimit(RLIMIT_OFILE, &rlim) == -1)
 | 
				
			||||||
#endif   /* RLIMIT_NOFILE */
 | 
					#endif   /* RLIMIT_NOFILE */
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					fprintf(stderr, "getrlimit failed. reason: %s\n", strerror(errno));
 | 
										fprintf(stderr, "getrlimit failed: %s\n", strerror(errno));
 | 
				
			||||||
					exit(1);
 | 
										exit(1);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if (rlim.rlim_cur <= (nclients + 2))
 | 
									if (rlim.rlim_cur <= (nclients + 2))
 | 
				
			||||||
@ -1173,7 +1173,7 @@ main(int argc, char **argv)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	remains = nclients;
 | 
						remains = nclients;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	state = (CState *) malloc(sizeof(*state) * nclients);
 | 
						state = (CState *) malloc(sizeof(CState) * nclients);
 | 
				
			||||||
	if (state == NULL)
 | 
						if (state == NULL)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		fprintf(stderr, "Couldn't allocate memory for state\n");
 | 
							fprintf(stderr, "Couldn't allocate memory for state\n");
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user