From 0460f0502b8bd0cf19ebe1fd3bb75a9704be9857 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 22 May 2000 02:34:23 +0000
Subject: [PATCH] I am attempting to integrate postgres (v 7.0) with an open
 source project I am working on (Recall - a distributed, fault-tolerant,
 replicated, storage framework @ http://www.fault-tolerant.org). Recall is
 written in C++.  I need to include the postgres headers and there are some
 problems when including the headers w/C++.

Attached is a patch generated from postgres/src that fixes my problems.
I was hoping to get this into the main source.  It's very small (2k) and
3 files are changed: backend/utils/fmgr/fmgr.c,
backend/utils/Gen_fmgrtab.sh.in, and include/access/tupdesc.h.

In C++, you get a multiply defined symbol because the variable
(FmgrInfo *fmgr_pl_finfo) is defined in the header (the patch moves it
to the .c file).  The other problem in tupdesc.h is the use of typeid
is a problem in c++ (I renamed it to oidtypeid).

Thanks,
Neal Norwitz
---
 src/backend/access/common/tupdesc.c | 8 ++++----
 src/backend/utils/Gen_fmgrtab.sh.in | 8 ++++----
 src/backend/utils/fmgr/fmgr.c       | 3 ++-
 src/include/access/tupdesc.h        | 4 ++--
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index 1e8d2ae0034..f0301c4d6c3 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.62 2000/04/12 17:14:37 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.63 2000/05/22 02:34:20 momjian Exp $
  *
  * NOTES
  *	  some of the executor utility code such as "ExecTypeFromTL" should be
@@ -304,7 +304,7 @@ bool
 TupleDescInitEntry(TupleDesc desc,
 				   AttrNumber attributeNumber,
 				   char *attributeName,
-				   Oid typeid,
+				   Oid oidtypeid,
 				   int32 typmod,
 				   int attdim,
 				   bool attisset)
@@ -378,7 +378,7 @@ TupleDescInitEntry(TupleDesc desc,
 	 * ----------------
 	 */
 	tuple = SearchSysCacheTuple(TYPEOID,
-								ObjectIdGetDatum(typeid),
+								ObjectIdGetDatum(oidtypeid),
 								0, 0, 0);
 	if (!HeapTupleIsValid(tuple))
 	{
@@ -431,7 +431,7 @@ TupleDescInitEntry(TupleDesc desc,
 	   */
 	if (attisset)
 	{
-		Type		t = typeidType(OIDOID);
+		Type		t = oidtypeidType(OIDOID);
 
 		att->attlen = typeLen(t);
 		att->attbyval = typeByVal(t);
diff --git a/src/backend/utils/Gen_fmgrtab.sh.in b/src/backend/utils/Gen_fmgrtab.sh.in
index 1f2e7f82ed8..975e2a0f9a2 100644
--- a/src/backend/utils/Gen_fmgrtab.sh.in
+++ b/src/backend/utils/Gen_fmgrtab.sh.in
@@ -8,7 +8,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.20 2000/05/16 02:14:14 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.21 2000/05/22 02:34:21 momjian Exp $
 #
 # NOTES
 #    Passes any -D options on to cpp prior to generating the list
@@ -83,7 +83,7 @@ cat > $HFILE <<FuNkYfMgRsTuFf
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: Gen_fmgrtab.sh.in,v 1.20 2000/05/16 02:14:14 tgl Exp $
+ * $Id: Gen_fmgrtab.sh.in,v 1.21 2000/05/22 02:34:21 momjian Exp $
  *
  * NOTES
  *	******************************
@@ -136,7 +136,7 @@ extern void load_file(char *filename);
  */
 
 /* We don't make this static so fmgr_faddr() macros can access it */
-FmgrInfo        *fmgr_pl_finfo;
+extern FmgrInfo        *fmgr_pl_finfo;
 
 #define fmgr_faddr(finfo) \
 ( \
@@ -197,7 +197,7 @@ cat > $TABCFILE <<FuNkYfMgRtAbStUfF
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.20 2000/05/16 02:14:14 tgl Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/utils/Attic/Gen_fmgrtab.sh.in,v 1.21 2000/05/22 02:34:21 momjian Exp $
  *
  * NOTES
  *
diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c
index 18dbb84345c..bdac32a2551 100644
--- a/src/backend/utils/fmgr/fmgr.c
+++ b/src/backend/utils/fmgr/fmgr.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.38 2000/05/16 20:48:50 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.39 2000/05/22 02:34:22 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -28,6 +28,7 @@
  *
  * XXX: use of global fmgr_pl_finfo variable is really ugly.  FIXME
  */
+FmgrInfo        *fmgr_pl_finfo;
 
 static char *
 fmgr_pl(char *arg0,...)
diff --git a/src/include/access/tupdesc.h b/src/include/access/tupdesc.h
index dbdc27931a5..662842cf45d 100644
--- a/src/include/access/tupdesc.h
+++ b/src/include/access/tupdesc.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tupdesc.h,v 1.28 2000/04/12 17:16:26 momjian Exp $
+ * $Id: tupdesc.h,v 1.29 2000/05/22 02:34:23 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -68,7 +68,7 @@ extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
 extern bool TupleDescInitEntry(TupleDesc desc,
 				   AttrNumber attributeNumber,
 				   char *attributeName,
-				   Oid typeid,
+				   Oid oidtypeid,
 				   int32 typmod,
 				   int attdim,
 				   bool attisset);
-- 
GitLab