From: Tom Lane Date: Fri, 20 Jan 2017 00:52:13 +0000 (-0500) Subject: Avoid core dump for empty prepared statement in an aborted transaction. X-Git-Tag: REL_10_BETA1~1065 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ba61a04bc7fefeee03416d9911eb825c4897c223;p=postgresql Avoid core dump for empty prepared statement in an aborted transaction. Brown-paper-bag bug in commit ab1f0c822: the old code here coped with null CachedPlanSource.raw_parse_tree, the new code not so much. Per report from Dave Cramer. No regression test, because our core testing infrastructure doesn't provide any easy way to exercise this path. Fortunately, the JDBC crew test it regularly. Discussion: https://postgr.es/m/CADK3HH+Ug3xCysKqw_dZOnaNnytZ1Rh5yP05hjO-e4NoyRxVvA@mail.gmail.com --- diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index bb89cce8cb..c15303c7bb 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -1559,7 +1559,8 @@ exec_bind_message(StringInfo input_message) * functions. */ if (IsAbortedTransactionBlockState() && - (!IsTransactionExitStmt(psrc->raw_parse_tree->stmt) || + (!(psrc->raw_parse_tree && + IsTransactionExitStmt(psrc->raw_parse_tree->stmt)) || numParams != 0)) ereport(ERROR, (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),