1 /*-------------------------------------------------------------------------
4 * Functions for the built-in type Oid.
6 * Copyright (c) 1994, Regents of the University of California
10 * $Header: /cvsroot/pgsql/src/backend/utils/adt/oid.c,v 1.22 1999/02/13 23:19:29 momjian Exp $
12 *-------------------------------------------------------------------------
19 #include "utils/builtins.h" /* where function declarations go */
21 /*****************************************************************************
23 *****************************************************************************/
26 * oid8in - converts "num num ..." to internal form
29 * Fills any nonexistent digits with NULL oids.
32 oid8in(char *oidString)
37 if (oidString == NULL)
40 result = (Oid *) palloc(sizeof(Oid[8]));
41 if ((nums = sscanf(oidString, "%d%d%d%d%d%d%d%d",
59 * oid8out - converts internal form to "num num ..."
62 oid8out(Oid *oidArray)
71 result = (char *) palloc(2);
77 /* assumes sign, 10 digits, ' ' */
78 rp = result = (char *) palloc(8 * 12);
80 for (num = 8; num != 0; num--)
103 /*****************************************************************************
105 *****************************************************************************/
108 * If you change this function, change heap_keytest()
109 * because we have hardcoded this in there as an optimization
112 oideq(Oid arg1, Oid arg2)
118 oidne(Oid arg1, Oid arg2)
124 oid8eq(Oid *arg1, Oid *arg2)
126 return (bool) (memcmp(arg1, arg2, 8 * sizeof(Oid)) == 0);
130 oid8ne(Oid *arg1, Oid *arg2)
132 return (bool) (memcmp(arg1, arg2, 8 * sizeof(Oid)) != 0);
136 oid8lt(Oid *arg1, Oid *arg2)
140 for (i = 0; i < 8; i++)
141 if (!int4eq(arg1[i], arg2[i]))
142 return int4lt(arg1[i], arg2[i]);
147 oid8le(Oid *arg1, Oid *arg2)
151 for (i = 0; i < 8; i++)
152 if (!int4eq(arg1[i], arg2[i]))
153 return int4le(arg1[i], arg2[i]);
158 oid8ge(Oid *arg1, Oid *arg2)
162 for (i = 0; i < 8; i++)
163 if (!int4eq(arg1[i], arg2[i]))
164 return int4ge(arg1[i], arg2[i]);
169 oid8gt(Oid *arg1, Oid *arg2)
173 for (i = 0; i < 8; i++)
174 if (!int4eq(arg1[i], arg2[i]))
175 return int4gt(arg1[i], arg2[i]);
180 oideqint4(Oid arg1, int32 arg2)
182 /* oid is unsigned, but int4 is signed */
183 return arg2 >= 0 && arg1 == arg2;
187 int4eqoid(int32 arg1, Oid arg2)
189 /* oid is unsigned, but int4 is signed */
190 return arg1 >= 0 && arg1 == arg2;
202 len = (strlen(str) + VARHDRSZ);
204 result = palloc(len);
206 VARSIZE(result) = len;
207 memmove(VARDATA(result), str, (len - VARHDRSZ));
214 text_oid(text *string)
221 len = (VARSIZE(string) - VARHDRSZ);
223 str = palloc(len + 1);
224 memmove(str, VARDATA(string), len);