diff --git a/build_tools/patches/pgcopydbv017.patch b/build_tools/patches/pgcopydbv017.patch index 6be0245843..c309d8fe59 100644 --- a/build_tools/patches/pgcopydbv017.patch +++ b/build_tools/patches/pgcopydbv017.patch @@ -3,11 +3,11 @@ index d730b03..69a9be9 100644 --- a/src/bin/pgcopydb/copydb.c +++ b/src/bin/pgcopydb/copydb.c @@ -44,6 +44,7 @@ GUC dstSettings[] = { - { "synchronous_commit", "'off'" }, - { "statement_timeout", "0" }, - { "lock_timeout", "0" }, -+ { "idle_in_transaction_session_timeout", "0" }, - { NULL, NULL }, + { "synchronous_commit", "'off'" }, + { "statement_timeout", "0" }, + { "lock_timeout", "0" }, ++ { "idle_in_transaction_session_timeout", "0" }, + { NULL, NULL }, }; diff --git a/src/bin/pgcopydb/pgsql.c b/src/bin/pgcopydb/pgsql.c @@ -15,23 +15,23 @@ index 94f2f46..86b9448 100644 --- a/src/bin/pgcopydb/pgsql.c +++ b/src/bin/pgcopydb/pgsql.c @@ -3174,11 +3174,18 @@ pgcopy_log_error(PGSQL *pgsql, PGresult *res, const char *context) - /* errors have already been logged */ - return; - } + /* errors have already been logged */ + return; + } - - if (res != NULL) - { - char *sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE); -- strlcpy(pgsql->sqlstate, sqlstate, sizeof(pgsql->sqlstate)); -+ if (sqlstate == NULL) -+ { -+ // PQresultErrorField returned NULL! -+ pgsql->sqlstate[0] = '\0'; // Set to an empty string to avoid segfault -+ } -+ else -+ { -+ strlcpy(pgsql->sqlstate, sqlstate, sizeof(pgsql->sqlstate)); -+ } - } + if (res != NULL) + { + char *sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE); +- strlcpy(pgsql->sqlstate, sqlstate, sizeof(pgsql->sqlstate)); ++ if (sqlstate == NULL) ++ { ++ // PQresultErrorField returned NULL! ++ pgsql->sqlstate[0] = '\0'; // Set to an empty string to avoid segfault ++ } ++ else ++ { ++ strlcpy(pgsql->sqlstate, sqlstate, sizeof(pgsql->sqlstate)); ++ } + } - char *endpoint = + char *endpoint =