v2-0002-Test-code-to-exercise-palloc_aligned-and-repalloc.patch

text/plain

Filename: v2-0002-Test-code-to-exercise-palloc_aligned-and-repalloc.patch
Type: text/plain
Part: 1
Message: Re: Add palloc_aligned() to allow arbitrary power of 2 memory alignment

Patch

Format: format-patch
Series: patch v2-0002
Subject: Test code to exercise palloc_aligned and repalloc
File+
src/backend/optimizer/plan/planner.c 15 0
From 4ae1d6163d919a58a437e22c7cd9a5da350b4237 Mon Sep 17 00:00:00 2001
From: David Rowley <dgrowley@gmail.com>
Date: Wed, 16 Nov 2022 12:48:47 +1300
Subject: [PATCH v2 2/2] Test code to exercise palloc_aligned and repalloc

---
 src/backend/optimizer/plan/planner.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 493a3af0fa..09e40567c7 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -606,6 +606,21 @@ subquery_planner(PlannerGlobal *glob, Query *parse,
 	RelOptInfo *final_rel;
 	ListCell   *l;
 
+	for (int align = 8; align <= 8192; align *= 2)
+	{
+		void *a = palloc0(512);
+		void *p = palloc_aligned(512, align, 0);
+		memset(p, 0, 512);
+
+		Assert(memcmp(p, a, 512) == 0);
+		p = repalloc(p, 1024);
+		Assert(memcmp(p, a, 512) == 0);
+		p = repalloc(p, 256);
+		Assert(memcmp(p, a, 256) == 0);
+		pfree(a);
+		pfree(p);
+	}
+
 	/* Create a PlannerInfo data structure for this subquery */
 	root = makeNode(PlannerInfo);
 	root->parse = parse;
-- 
2.35.1.windows.2