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.17 1998/09/01 03:26:13 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)
39 result = (Oid **) palloc(sizeof(Oid[8]));
40 if ((nums = sscanf(oidString, "%d%d%d%d%d%d%d%d",
51 (*result)[nums++] = 0;
54 return (Oid *) result;
58 * oid8out - converts internal form to "num num ..."
61 oid8out(Oid **oidArray)
70 result = (char *) palloc(2);
76 /* assumes sign, 10 digits, ' ' */
77 rp = result = (char *) palloc(8 * 12);
79 for (num = 8; num != 0; num--)
102 /*****************************************************************************
104 *****************************************************************************/
107 * If you change this function, change heap_keytest()
108 * because we have hardcoded this in there as an optimization
111 oideq(Oid arg1, Oid arg2)
117 oidne(Oid arg1, Oid arg2)
123 oid8eq(Oid *arg1, Oid *arg2)
125 return (bool) (memcmp(arg1, arg2, 8 * sizeof(Oid)) == 0);
129 oid8lt(Oid *arg1, Oid *arg2)
132 for (i=0; i < 8; i++)
133 if (!int4eq(arg1[i], arg2[i]))
134 return int4lt(arg1[i], arg2[i]);
139 oid8le(Oid *arg1, Oid *arg2)
142 for (i=0; i < 8; i++)
143 if (!int4eq(arg1[i], arg2[i]))
144 return int4le(arg1[i], arg2[i]);
149 oid8ge(Oid *arg1, Oid *arg2)
152 for (i=0; i < 8; i++)
153 if (!int4eq(arg1[i], arg2[i]))
154 return int4ge(arg1[i], arg2[i]);
159 oid8gt(Oid *arg1, Oid *arg2)
162 for (i=0; i < 8; i++)
163 if (!int4eq(arg1[i], arg2[i]))
164 return int4gt(arg1[i], arg2[i]);
169 oideqint4(Oid arg1, int32 arg2)
171 /* oid is unsigned, but int4 is signed */
172 return arg2 >= 0 && arg1 == arg2;
176 int4eqoid(int32 arg1, Oid arg2)
178 /* oid is unsigned, but int4 is signed */
179 return arg1 >= 0 && arg1 == arg2;
191 len = (strlen(str) + VARHDRSZ);
193 result = palloc(len);
195 VARSIZE(result) = len;
196 memmove(VARDATA(result), str, (len - VARHDRSZ));
203 text_oid(text *string)
210 len = (VARSIZE(string) - VARHDRSZ);
212 str = palloc(len + 1);
213 memmove(str, VARDATA(string), len);