From 3b8161723c645853021b57330dd2ea0484ec6131 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Tue, 8 Nov 2011 22:39:43 +0200
Subject: [PATCH] Make DatumGetInetP() unpack inet datums with a 1-byte header,
 and add a new macro, DatumGetInetPP(), that does not. This brings these
 macros in line with other DatumGet*P() macros.

Backpatch to 8.3, where 1-byte header varlenas were introduced.
---
 src/backend/utils/adt/network.c | 2 +-
 src/include/utils/inet.h        | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c
index 9aca1cc101f..e929d6beff0 100644
--- a/src/backend/utils/adt/network.c
+++ b/src/backend/utils/adt/network.c
@@ -907,7 +907,7 @@ convert_network_to_scalar(Datum value, Oid typid)
 		case INETOID:
 		case CIDROID:
 			{
-				inet	   *ip = DatumGetInetP(value);
+				inet	   *ip = DatumGetInetPP(value);
 				int			len;
 				double		res;
 				int			i;
diff --git a/src/include/utils/inet.h b/src/include/utils/inet.h
index 9626a2de81f..fa217b66116 100644
--- a/src/include/utils/inet.h
+++ b/src/include/utils/inet.h
@@ -70,9 +70,11 @@ typedef struct macaddr
 /*
  * fmgr interface macros
  */
-#define DatumGetInetP(X)	((inet *) PG_DETOAST_DATUM_PACKED(X))
+#define DatumGetInetP(X)	((inet *) PG_DETOAST_DATUM(X))
+#define DatumGetInetPP(X)	((inet *) PG_DETOAST_DATUM_PACKED(X))
 #define InetPGetDatum(X)	PointerGetDatum(X)
 #define PG_GETARG_INET_P(n) DatumGetInetP(PG_GETARG_DATUM(n))
+#define PG_GETARG_INET_PP(n) DatumGetInetP(PG_GETARG_DATUM_PACKED(n))
 #define PG_RETURN_INET_P(x) return InetPGetDatum(x)
 /* macaddr is a fixed-length pass-by-reference datatype */
 #define DatumGetMacaddrP(X)    ((macaddr *) DatumGetPointer(X))
-- 
GitLab