Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2d6fee0

Browse files
committed
Add new pgbench switch, --unlogged-tables.
This entails adjusting pgbench to use getopt_long() ratherthan getopt().
1 parentbcf23ba commit2d6fee0

File tree

2 files changed

+46
-14
lines changed

2 files changed

+46
-14
lines changed

‎contrib/pgbench/pgbench.c

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
#include"postgres_fe.h"
3535

36+
#include"getopt_long.h"
3637
#include"libpq-fe.h"
3738
#include"libpq/pqsignal.h"
3839
#include"portability/instr_time.h"
@@ -44,10 +45,6 @@
4445
#include<unistd.h>
4546
#endif/* ! WIN32 */
4647

47-
#ifdefHAVE_GETOPT_H
48-
#include<getopt.h>
49-
#endif
50-
5148
#ifdefHAVE_SYS_SELECT_H
5249
#include<sys/select.h>
5350
#endif
@@ -122,6 +119,11 @@ intscale = 1;
122119
*/
123120
intfillfactor=100;
124121

122+
/*
123+
* use unlogged tables?
124+
*/
125+
intunlogged_tables=0;
126+
125127
/*
126128
* end of configurable parameters
127129
*********************************************************************/
@@ -357,6 +359,8 @@ usage(const char *progname)
357359
" -h HOSTNAME database server host or socket directory\n"
358360
" -p PORT database server port number\n"
359361
" -U USERNAME connect as specified database user\n"
362+
" --unlogged-tables\n"
363+
" create tables as unlogged tables\n"
360364
" --help show this help, then exit\n"
361365
" --version output version information, then exit\n"
362366
"\n"
@@ -1259,21 +1263,31 @@ init(void)
12591263

12601264
for (i=0;i<lengthof(DDLs);i++)
12611265
{
1266+
charbuffer1[128];
1267+
charbuffer2[128];
1268+
char*qry=DDLs[i];
1269+
12621270
/*
12631271
* set fillfactor for branches, tellers and accounts tables
12641272
*/
1265-
if ((strstr(DDLs[i],"create table pgbench_branches")==DDLs[i])||
1266-
(strstr(DDLs[i],"create table pgbench_tellers")==DDLs[i])||
1267-
(strstr(DDLs[i],"create table pgbench_accounts")==DDLs[i]))
1273+
if ((strstr(qry,"create table pgbench_branches")==DDLs[i])||
1274+
(strstr(qry,"create table pgbench_tellers")==DDLs[i])||
1275+
(strstr(qry,"create table pgbench_accounts")==DDLs[i]))
12681276
{
1269-
charddl_stmt[128];
1277+
snprintf(buffer1,128,qry,fillfactor);
1278+
qry=buffer1;
1279+
}
12701280

1271-
snprintf(ddl_stmt,128,DDLs[i],fillfactor);
1272-
executeStatement(con,ddl_stmt);
1273-
continue;
1281+
/*
1282+
* set unlogged tables, if requested
1283+
*/
1284+
if (unlogged_tables&&strncmp(qry,"create table",12)==0)
1285+
{
1286+
snprintf(buffer2,128,"create unlogged%s",qry+6);
1287+
qry=buffer2;
12741288
}
1275-
else
1276-
executeStatement(con,DDLs[i]);
1289+
1290+
executeStatement(con,qry);
12771291
}
12781292

12791293
executeStatement(con,"begin");
@@ -1767,6 +1781,7 @@ main(int argc, char **argv)
17671781
intdo_vacuum_accounts=0;/* do vacuum accounts before testing? */
17681782
intttype=0;/* transaction type. 0: TPC-B, 1: SELECT only,
17691783
* 2: skip update of branches and tellers */
1784+
intoptindex;
17701785
char*filename=NULL;
17711786
boolscale_given= false;
17721787

@@ -1780,6 +1795,11 @@ main(int argc, char **argv)
17801795

17811796
inti;
17821797

1798+
staticstructoptionlong_options[]= {
1799+
{"unlogged-tables",no_argument,&unlogged_tables,1},
1800+
{NULL,0,NULL,0}
1801+
};
1802+
17831803
#ifdefHAVE_GETRLIMIT
17841804
structrlimitrlim;
17851805
#endif
@@ -1823,7 +1843,7 @@ main(int argc, char **argv)
18231843
state= (CState*)xmalloc(sizeof(CState));
18241844
memset(state,0,sizeof(CState));
18251845

1826-
while ((c=getopt(argc,argv,"ih:nvp:dSNc:j:Crs:t:T:U:lf:D:F:M:"))!=-1)
1846+
while ((c=getopt_long(argc,argv,"ih:nvp:dSNc:j:Crs:t:T:U:lf:D:F:M:",long_options,&optindex))!=-1)
18271847
{
18281848
switch (c)
18291849
{
@@ -1975,6 +1995,9 @@ main(int argc, char **argv)
19751995
exit(1);
19761996
}
19771997
break;
1998+
case0:
1999+
/* This covers the long options. */
2000+
break;
19782001
default:
19792002
fprintf(stderr,_("Try \"%s --help\" for more information.\n"),progname);
19802003
exit(1);

‎doc/src/sgml/pgbench.sgml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,15 @@ pgbench <optional> <replaceable>options</> </optional> <replaceable>dbname</>
159159
</listitem>
160160
</varlistentry>
161161

162+
<varlistentry>
163+
<term><option>--unlogged-tables</option></term>
164+
<listitem>
165+
<para>
166+
Create all tables as unlogged tables, rather than permanent tables.
167+
</para>
168+
</listitem>
169+
</varlistentry>
170+
162171
</variablelist>
163172
</para>
164173

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp