/src/postgres/src/backend/utils/adt/oid8.c
Line | Count | Source |
1 | | /*------------------------------------------------------------------------- |
2 | | * |
3 | | * oid8.c |
4 | | * Functions for the built-in type Oid8 |
5 | | * |
6 | | * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group |
7 | | * Portions Copyright (c) 1994, Regents of the University of California |
8 | | * |
9 | | * |
10 | | * IDENTIFICATION |
11 | | * src/backend/utils/adt/oid8.c |
12 | | * |
13 | | *------------------------------------------------------------------------- |
14 | | */ |
15 | | #include "postgres.h" |
16 | | |
17 | | #include "catalog/pg_type.h" |
18 | | #include "libpq/pqformat.h" |
19 | | #include "utils/builtins.h" |
20 | | |
21 | | #define MAXOID8LEN 20 |
22 | | |
23 | | /***************************************************************************** |
24 | | * USER I/O ROUTINES * |
25 | | *****************************************************************************/ |
26 | | |
27 | | Datum |
28 | | oid8in(PG_FUNCTION_ARGS) |
29 | 0 | { |
30 | 0 | char *s = PG_GETARG_CSTRING(0); |
31 | 0 | Oid8 result; |
32 | |
|
33 | 0 | result = uint64in_subr(s, NULL, "oid8", fcinfo->context); |
34 | 0 | PG_RETURN_OID8(result); |
35 | 0 | } |
36 | | |
37 | | Datum |
38 | | oid8out(PG_FUNCTION_ARGS) |
39 | 0 | { |
40 | 0 | Oid8 val = PG_GETARG_OID8(0); |
41 | 0 | char buf[MAXOID8LEN + 1]; |
42 | 0 | char *result; |
43 | 0 | int len; |
44 | |
|
45 | 0 | len = pg_ulltoa_n(val, buf) + 1; |
46 | 0 | buf[len - 1] = '\0'; |
47 | | |
48 | | /* |
49 | | * Since the length is already known, we do a manual palloc() and memcpy() |
50 | | * to avoid the strlen() call that would otherwise be done in pstrdup(). |
51 | | */ |
52 | 0 | result = palloc(len); |
53 | 0 | memcpy(result, buf, len); |
54 | 0 | PG_RETURN_CSTRING(result); |
55 | 0 | } |
56 | | |
57 | | /* |
58 | | * oid8recv - converts external binary format to oid8 |
59 | | */ |
60 | | Datum |
61 | | oid8recv(PG_FUNCTION_ARGS) |
62 | 0 | { |
63 | 0 | StringInfo buf = (StringInfo) PG_GETARG_POINTER(0); |
64 | |
|
65 | 0 | PG_RETURN_OID8(pq_getmsgint64(buf)); |
66 | 0 | } |
67 | | |
68 | | /* |
69 | | * oid8send - converts oid8 to binary format |
70 | | */ |
71 | | Datum |
72 | | oid8send(PG_FUNCTION_ARGS) |
73 | 0 | { |
74 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
75 | 0 | StringInfoData buf; |
76 | |
|
77 | 0 | pq_begintypsend(&buf); |
78 | 0 | pq_sendint64(&buf, arg1); |
79 | 0 | PG_RETURN_BYTEA_P(pq_endtypsend(&buf)); |
80 | 0 | } |
81 | | |
82 | | /***************************************************************************** |
83 | | * PUBLIC ROUTINES * |
84 | | *****************************************************************************/ |
85 | | |
86 | | Datum |
87 | | oid8eq(PG_FUNCTION_ARGS) |
88 | 0 | { |
89 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
90 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
91 | |
|
92 | 0 | PG_RETURN_BOOL(arg1 == arg2); |
93 | 0 | } |
94 | | |
95 | | Datum |
96 | | oid8ne(PG_FUNCTION_ARGS) |
97 | 0 | { |
98 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
99 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
100 | |
|
101 | 0 | PG_RETURN_BOOL(arg1 != arg2); |
102 | 0 | } |
103 | | |
104 | | Datum |
105 | | oid8lt(PG_FUNCTION_ARGS) |
106 | 0 | { |
107 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
108 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
109 | |
|
110 | 0 | PG_RETURN_BOOL(arg1 < arg2); |
111 | 0 | } |
112 | | |
113 | | Datum |
114 | | oid8le(PG_FUNCTION_ARGS) |
115 | 0 | { |
116 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
117 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
118 | |
|
119 | 0 | PG_RETURN_BOOL(arg1 <= arg2); |
120 | 0 | } |
121 | | |
122 | | Datum |
123 | | oid8ge(PG_FUNCTION_ARGS) |
124 | 0 | { |
125 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
126 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
127 | |
|
128 | 0 | PG_RETURN_BOOL(arg1 >= arg2); |
129 | 0 | } |
130 | | |
131 | | Datum |
132 | | oid8gt(PG_FUNCTION_ARGS) |
133 | 0 | { |
134 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
135 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
136 | |
|
137 | 0 | PG_RETURN_BOOL(arg1 > arg2); |
138 | 0 | } |
139 | | |
140 | | Datum |
141 | | hashoid8(PG_FUNCTION_ARGS) |
142 | 0 | { |
143 | 0 | return hashint8(fcinfo); |
144 | 0 | } |
145 | | |
146 | | Datum |
147 | | hashoid8extended(PG_FUNCTION_ARGS) |
148 | 0 | { |
149 | 0 | return hashint8extended(fcinfo); |
150 | 0 | } |
151 | | |
152 | | Datum |
153 | | oid8larger(PG_FUNCTION_ARGS) |
154 | 0 | { |
155 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
156 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
157 | |
|
158 | 0 | PG_RETURN_OID8((arg1 > arg2) ? arg1 : arg2); |
159 | 0 | } |
160 | | |
161 | | Datum |
162 | | oid8smaller(PG_FUNCTION_ARGS) |
163 | 0 | { |
164 | 0 | Oid8 arg1 = PG_GETARG_OID8(0); |
165 | 0 | Oid8 arg2 = PG_GETARG_OID8(1); |
166 | |
|
167 | 0 | PG_RETURN_OID8((arg1 < arg2) ? arg1 : arg2); |
168 | 0 | } |