From b5c4b772836e4072de9790c080af6781d3b22d0f Mon Sep 17 00:00:00 2001
From: Jan Wieck <JanWieck@Yahoo.com>
Date: Wed, 29 Sep 1999 21:13:31 +0000
Subject: [PATCH] Added nbtree operator class for NUMERIC

Jan
---
 src/backend/utils/adt/numeric.c  | 30 +++++++++++++++++++++++++++++-
 src/include/catalog/pg_amop.h    | 12 +++++++++++-
 src/include/catalog/pg_amproc.h  |  3 ++-
 src/include/catalog/pg_opclass.h |  4 +++-
 src/include/catalog/pg_proc.h    |  4 +++-
 src/include/utils/builtins.h     |  3 ++-
 6 files changed, 50 insertions(+), 6 deletions(-)

diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index 97a03d23b83..6df22995575 100644
--- a/src/backend/utils/adt/numeric.c
+++ b/src/backend/utils/adt/numeric.c
@@ -5,7 +5,7 @@
  *
  *	1998 Jan Wieck
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.19 1999/07/17 20:17:58 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.20 1999/09/29 21:13:25 wieck Exp $
  *
  * ----------
  */
@@ -690,6 +690,34 @@ numeric_floor(Numeric num)
  */
 
 
+int32
+numeric_cmp(Numeric num1, Numeric num2)
+{
+	int			result;
+	NumericVar	arg1;
+	NumericVar	arg2;
+
+	if (num1 == NULL || num2 == NULL)
+		return (int32)0;
+
+	if (NUMERIC_IS_NAN(num1) || NUMERIC_IS_NAN(num2))
+		return (int32)0;
+
+	init_var(&arg1);
+	init_var(&arg2);
+
+	set_var_from_num(num1, &arg1);
+	set_var_from_num(num2, &arg2);
+
+	result = cmp_var(&arg1, &arg2);
+
+	free_var(&arg1);
+	free_var(&arg2);
+
+	return (int32)((result == 0) ? 0 : ((result < 0) ? -1 : 1));
+}
+
+
 bool
 numeric_eq(Numeric num1, Numeric num2)
 {
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index d85b7539c49..0cbaac53225 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_amop.h,v 1.23 1999/04/03 18:07:47 tgl Exp $
+ * $Id: pg_amop.h,v 1.24 1999/09/29 21:13:30 wieck Exp $
  *
  * NOTES
  *	 the genbki.sh script reads this file and generates .bki
@@ -338,6 +338,16 @@ DATA(insert OID = 0 (  403 652 820 3 btreesel btreenpage ));
 DATA(insert OID = 0 (  403 652 825 4 btreesel btreenpage ));
 DATA(insert OID = 0 (  403 652 824 5 btreesel btreenpage ));
 
+/*
+ *	nbtree numeric
+ */
+
+DATA(insert OID = 0 (  403 1768 1754 1 btreesel btreenpage ));
+DATA(insert OID = 0 (  403 1768 1755 2 btreesel btreenpage ));
+DATA(insert OID = 0 (  403 1768 1752 3 btreesel btreenpage ));
+DATA(insert OID = 0 (  403 1768 1757 4 btreesel btreenpage ));
+DATA(insert OID = 0 (  403 1768 1756 5 btreesel btreenpage ));
+
 /*
  *	hash table _ops
  */
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index eb74e18dccd..45d1b28587a 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -9,7 +9,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_amproc.h,v 1.14 1999/03/26 07:32:41 tgl Exp $
+ * $Id: pg_amproc.h,v 1.15 1999/09/29 21:13:30 wieck Exp $
  *
  * NOTES
  *	  the genbki.sh script reads this file and generates .bki
@@ -96,6 +96,7 @@ DATA(insert OID = 0 (403 1312 1314 1));
 DATA(insert OID = 0 (403 1313 1315 1));
 DATA(insert OID = 0 (403 810 836 1));
 DATA(insert OID = 0 (403 935 926 1));
+DATA(insert OID = 0 (403 1768 1769 1));
 
 
 /* hash */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 591021fbb4e..267c19775ce 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_opclass.h,v 1.19 1999/05/25 16:13:45 momjian Exp $
+ * $Id: pg_opclass.h,v 1.20 1999/09/29 21:13:30 wieck Exp $
  *
  * NOTES
  *	  the genbki.sh script reads this file and generates .bki
@@ -115,5 +115,7 @@ DATA(insert OID = 935  (	network_ops   869	));
 DESCR("");
 DATA(insert OID = 652  (	network_ops   650	));
 DESCR("");
+DATA(insert OID = 1768 (	numeric_ops   1700	));
+DESCR("");
 
 #endif	 /* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index cc5f1e3d615..1f560064e6c 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_proc.h,v 1.102 1999/09/26 02:28:38 tgl Exp $
+ * $Id: pg_proc.h,v 1.103 1999/09/29 21:13:30 wieck Exp $
  *
  * NOTES
  *	  The script catalog/genbki.sh reads this file and generates .bki
@@ -2306,6 +2306,8 @@ DATA(insert OID = 1766 ( numeric_smaller		PGUID 11 f t t 2 f 1700 "1700 1700" 10
 DESCR("smaller of two numbers");
 DATA(insert OID = 1767 ( numeric_larger			PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_larger - ));
 DESCR("larger of two numbers");
+DATA(insert OID = 1769 ( numeric_cmp			PGUID 11 f t t 2 f 23 "1700 1700" 100 0 0 100  numeric_cmp - ));
+DESCR("compare two numbers");
 
 
 /*
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index dfe1897cbe2..b0bd050e9bc 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: builtins.h,v 1.85 1999/08/01 04:54:20 tgl Exp $
+ * $Id: builtins.h,v 1.86 1999/09/29 21:13:31 wieck Exp $
  *
  * NOTES
  *	  This should normally only be included by fmgr.h.
@@ -572,6 +572,7 @@ Numeric		numeric_round(Numeric num, int32 scale);
 Numeric		numeric_trunc(Numeric num, int32 scale);
 Numeric		numeric_ceil(Numeric num);
 Numeric		numeric_floor(Numeric num);
+int32		numeric_cmp(Numeric num1, Numeric num2);
 bool		numeric_eq(Numeric num1, Numeric num2);
 bool		numeric_ne(Numeric num1, Numeric num2);
 bool		numeric_gt(Numeric num1, Numeric num2);
-- 
GitLab