@@ -116,6 +116,12 @@ int fillfactor = 100;
116
116
*/
117
117
int foreign_keys = 0 ;
118
118
119
+ /*
120
+ * Don't create tables and indexes
121
+ */
122
+ int no_ddl = 0 ;
123
+
124
+
119
125
/*
120
126
* use unlogged tables?
121
127
*/
@@ -479,6 +485,7 @@ usage(void)
479
485
" -n, --no-vacuum do not run VACUUM after initialization\n"
480
486
" -q, --quiet quiet logging (one message each 5 seconds)\n"
481
487
" -s, --scale=NUM scaling factor\n"
488
+ " --no-ddl don't create tables and indexes"
482
489
" --foreign-keys create foreign key constraints between tables\n"
483
490
" --index-tablespace=TABLESPACE\n"
484
491
" create indexes in the specified tablespace\n"
@@ -2648,40 +2655,55 @@ init(bool is_no_vacuum)
2648
2655
if ((con = doConnect ()) == NULL )
2649
2656
exit (1 );
2650
2657
2651
- for ( i = 0 ; i < lengthof ( DDLs ); i ++ )
2658
+ if (! no_ddl )
2652
2659
{
2653
- char opts [256 ];
2654
- char buffer [256 ];
2655
- const struct ddlinfo * ddl = & DDLs [i ];
2656
- const char * cols ;
2657
-
2658
- /* Remove old table, if it exists. */
2659
- snprintf (buffer , sizeof (buffer ), "drop table if exists %s" , ddl -> table );
2660
- executeStatement (con , buffer );
2661
-
2662
- /* Construct new create table statement. */
2663
- opts [0 ] = '\0' ;
2664
- if (ddl -> declare_fillfactor )
2665
- snprintf (opts + strlen (opts ), sizeof (opts ) - strlen (opts ),
2666
- " with (fillfactor=%d)" , fillfactor );
2667
- if (tablespace != NULL )
2660
+ for (i = 0 ; i < lengthof (DDLs ); i ++ )
2668
2661
{
2669
- char * escape_tablespace ;
2662
+ char opts [256 ];
2663
+ char buffer [256 ];
2664
+ const struct ddlinfo * ddl = & DDLs [i ];
2665
+ const char * cols ;
2666
+
2667
+ /* Remove old table, if it exists. */
2668
+ snprintf (buffer , sizeof (buffer ), "drop table if exists %s" , ddl -> table );
2669
+ executeStatement (con , buffer );
2670
+
2671
+ /* Construct new create table statement. */
2672
+ opts [0 ] = '\0' ;
2673
+ if (ddl -> declare_fillfactor )
2674
+ snprintf (opts + strlen (opts ), sizeof (opts ) - strlen (opts ),
2675
+ " with (fillfactor=%d)" , fillfactor );
2676
+ if (tablespace != NULL )
2677
+ {
2678
+ char * escape_tablespace ;
2670
2679
2671
- escape_tablespace = PQescapeIdentifier (con , tablespace ,
2672
- strlen (tablespace ));
2673
- snprintf (opts + strlen (opts ), sizeof (opts ) - strlen (opts ),
2674
- " tablespace %s" , escape_tablespace );
2675
- PQfreemem (escape_tablespace );
2676
- }
2680
+ escape_tablespace = PQescapeIdentifier (con , tablespace ,
2681
+ strlen (tablespace ));
2682
+ snprintf (opts + strlen (opts ), sizeof (opts ) - strlen (opts ),
2683
+ " tablespace %s" , escape_tablespace );
2684
+ PQfreemem (escape_tablespace );
2685
+ }
2686
+
2687
+ cols = (scale >= SCALE_32BIT_THRESHOLD ) ? ddl -> bigcols : ddl -> smcols ;
2677
2688
2678
- cols = (scale >= SCALE_32BIT_THRESHOLD ) ? ddl -> bigcols : ddl -> smcols ;
2689
+ snprintf (buffer , sizeof (buffer ), "create%s table %s(%s)%s" ,
2690
+ unlogged_tables ? " unlogged" : "" ,
2691
+ ddl -> table , cols , opts );
2679
2692
2680
- snprintf (buffer , sizeof (buffer ), "create%s table %s(%s)%s" ,
2681
- unlogged_tables ? " unlogged" : "" ,
2682
- ddl -> table , cols , opts );
2693
+ executeStatement (con , buffer );
2694
+ }
2695
+ }
2696
+ else
2697
+ {
2698
+ fprintf (stderr , "erasing tables...\n" );
2699
+ for (i = 0 ; i < lengthof (DDLs ); i ++ )
2700
+ {
2701
+ char buffer [256 ];
2702
+ const struct ddlinfo * ddl = & DDLs [i ];
2683
2703
2684
- executeStatement (con , buffer );
2704
+ snprintf (buffer , sizeof (buffer ), "delete from %s;" , ddl -> table );
2705
+ executeStatement (con , buffer );
2706
+ }
2685
2707
}
2686
2708
2687
2709
executeStatement (con , "begin" );
@@ -2709,10 +2731,9 @@ init(bool is_no_vacuum)
2709
2731
/*
2710
2732
* fill the pgbench_accounts table with some data
2711
2733
*/
2712
- fprintf (stderr , "creating tables ...\n" );
2734
+ fprintf (stderr , "inserting data into pgbench_accounts ...\n" );
2713
2735
2714
2736
executeStatement (con , "begin" );
2715
- executeStatement (con , "truncate pgbench_accounts" );
2716
2737
2717
2738
res = PQexec (con , "copy pgbench_accounts from stdin" );
2718
2739
if (PQresultStatus (res ) != PGRES_COPY_IN )
@@ -2802,31 +2823,34 @@ init(bool is_no_vacuum)
2802
2823
/*
2803
2824
* create indexes
2804
2825
*/
2805
- fprintf (stderr , "set primary keys...\n" );
2806
- for (i = 0 ; i < lengthof (DDLINDEXes ); i ++ )
2826
+ if (!no_ddl )
2807
2827
{
2808
- char buffer [256 ];
2828
+ fprintf (stderr , "set primary keys...\n" );
2829
+ for (i = 0 ; i < lengthof (DDLINDEXes ); i ++ )
2830
+ {
2831
+ char buffer [256 ];
2809
2832
2810
- strlcpy (buffer , DDLINDEXes [i ], sizeof (buffer ));
2833
+ strlcpy (buffer , DDLINDEXes [i ], sizeof (buffer ));
2811
2834
2812
- if (index_tablespace != NULL )
2813
- {
2814
- char * escape_tablespace ;
2835
+ if (index_tablespace != NULL )
2836
+ {
2837
+ char * escape_tablespace ;
2815
2838
2816
- escape_tablespace = PQescapeIdentifier (con , index_tablespace ,
2817
- strlen (index_tablespace ));
2818
- snprintf (buffer + strlen (buffer ), sizeof (buffer ) - strlen (buffer ),
2819
- " using index tablespace %s" , escape_tablespace );
2820
- PQfreemem (escape_tablespace );
2821
- }
2839
+ escape_tablespace = PQescapeIdentifier (con , index_tablespace ,
2840
+ strlen (index_tablespace ));
2841
+ snprintf (buffer + strlen (buffer ), sizeof (buffer ) - strlen (buffer ),
2842
+ " using index tablespace %s" , escape_tablespace );
2843
+ PQfreemem (escape_tablespace );
2844
+ }
2822
2845
2823
- executeStatement (con , buffer );
2846
+ executeStatement (con , buffer );
2847
+ }
2824
2848
}
2825
2849
2826
2850
/*
2827
2851
* create foreign keys
2828
2852
*/
2829
- if (foreign_keys )
2853
+ if (foreign_keys && ! no_ddl )
2830
2854
{
2831
2855
fprintf (stderr , "set foreign keys...\n" );
2832
2856
for (i = 0 ; i < lengthof (DDLKEYs ); i ++ )
@@ -3630,6 +3654,7 @@ main(int argc, char **argv)
3630
3654
{"vacuum-all" , no_argument , NULL , 'v' },
3631
3655
/* long-named only options */
3632
3656
{"foreign-keys" , no_argument , & foreign_keys , 1 },
3657
+ {"no-ddl" , no_argument , & no_ddl , 1 },
3633
3658
{"index-tablespace" , required_argument , NULL , 3 },
3634
3659
{"tablespace" , required_argument , NULL , 2 },
3635
3660
{"unlogged-tables" , no_argument , & unlogged_tables , 1 },
@@ -3940,7 +3965,7 @@ main(int argc, char **argv)
3940
3965
break ;
3941
3966
case 0 :
3942
3967
/* This covers long options which take no argument. */
3943
- if (foreign_keys || unlogged_tables )
3968
+ if (foreign_keys || unlogged_tables || no_ddl )
3944
3969
initialization_option_set = true;
3945
3970
break ;
3946
3971
case 2 : /* tablespace */
0 commit comments