pgbench: Fix overflow in table populating when rows >= 2^31-1
authorMichael Paquier <[email protected]>
Sun, 24 Dec 2023 02:49:14 +0000 (11:49 +0900)
committerMichael Paquier <[email protected]>
Sun, 24 Dec 2023 02:49:14 +0000 (11:49 +0900)
Using a scale factor large enough so as the number of rows to insert
gets larger than INT32_MAX would cause an infinite loop in
initPopulateTable(), preventing pgbench to finish its initialization.

Oversight in e35cc3b3f2d0 that has refactored the data generation logic.

Author: John Hsu
Reviewed-by: Tatsuo Ishii, Japin Li
Discussion: https://postgr.es/m/CA+-JvFvHsOafjHcuFPfkyouHNZvbOXhBNhwZxKm3WNgYz9bwzA@mail.gmail.com

src/bin/pgbench/pgbench.c

index 2e1650d0ad343aed641b1dec9820f91e6fc8cc2b..1253f1989e6bb7846ad9340747e432cb43594731 100644 (file)
@@ -4908,7 +4908,7 @@ initPopulateTable(PGconn *con, const char *table, int64 base,
                  initRowMethod init_row)
 {
    int         n;
-   int         k;
+   int64       k;
    int         chars = 0;
    PGresult   *res;
    PQExpBufferData sql;