From d2b53713896eb9c9a934760849ac5d2d6757fba9 Mon Sep 17 00:00:00 2001
From: wangxiaoran <fanfuxiaoran@gmail.com>
Date: Mon, 19 Aug 2024 11:49:12 +0800
Subject: [PATCH 2/2] Test pg_re_throw checking invalid sigjmp_buf

---
 src/test/regress/regress.c          | 31 +++++++++++++++++++++++++++++
 src/test/regress/sql/test_setup.sql |  5 +++++
 2 files changed, 36 insertions(+)

diff --git a/src/test/regress/regress.c b/src/test/regress/regress.c
index 14aad5a0c6..b7d5224c5d 100644
--- a/src/test/regress/regress.c
+++ b/src/test/regress/regress.c
@@ -1136,3 +1136,34 @@ binary_coercible(PG_FUNCTION_ARGS)
 
 	PG_RETURN_BOOL(IsBinaryCoercible(srctype, targettype));
 }
+
+/* Test pg_re_throw check the invalid sigjmp_buf and report error */
+static void
+wrong_pg_try()
+{
+	PG_TRY();
+	{
+		return;
+	}
+	PG_CATCH();
+	{
+		PG_RE_THROW();
+	}
+	PG_END_TRY();
+}
+
+PG_FUNCTION_INFO_V1(pg_re_throw_crash);
+Datum
+pg_re_throw_crash(PG_FUNCTION_ARGS)
+{
+	PG_TRY();
+	{
+		wrong_pg_try();
+		ereport(ERROR,(errmsg("called wrong_pg_try")));
+	}
+	PG_CATCH();
+	{
+	}
+	PG_END_TRY();
+	PG_RETURN_NULL();
+}
diff --git a/src/test/regress/sql/test_setup.sql b/src/test/regress/sql/test_setup.sql
index 06b0e2121f..24d9b5e1ac 100644
--- a/src/test/regress/sql/test_setup.sql
+++ b/src/test/regress/sql/test_setup.sql
@@ -294,3 +294,8 @@ create function fipshash(text)
     returns text
     strict immutable parallel safe leakproof
     return substr(encode(sha256($1::bytea), 'hex'), 1, 32);
+
+create function pg_re_throw_crash()
+	RETURNS void
+	AS :'regresslib', 'pg_re_throw_crash'
+    LANGUAGE C STRICT STABLE PARALLEL SAFE;
-- 
2.39.3 (Apple Git-146)

