PostgreSQL Source Code: src/backend/commands/define.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
21
22#include <ctype.h>
23#include <math.h>
24
29#include "utils/fmgrprotos.h"
30
31
32
33
34char *
36{
37 if (def->arg == NULL)
39 (errcode(ERRCODE_SYNTAX_ERROR),
40 errmsg("%s requires a parameter",
43 {
44 case T_Integer:
46 case T_Float:
48 case T_Boolean:
49 return boolVal(def->arg) ? "true" : "false";
50 case T_String:
52 case T_TypeName:
54 case T_List:
56 case T_A_Star:
58 default:
60 }
61 return NULL;
62}
63
64
65
66
67double
69{
70 if (def->arg == NULL)
72 (errcode(ERRCODE_SYNTAX_ERROR),
73 errmsg("%s requires a numeric value",
76 {
77 case T_Integer:
79 case T_Float:
81 default:
83 (errcode(ERRCODE_SYNTAX_ERROR),
84 errmsg("%s requires a numeric value",
86 }
87 return 0;
88}
89
90
91
92
93bool
95{
96
97
98
99 if (def->arg == NULL)
100 return true;
101
102
103
104
106 {
107 case T_Integer:
109 {
110 case 0:
111 return false;
112 case 1:
113 return true;
114 default:
115
116 break;
117 }
118 break;
119 default:
120 {
122
123
124
125
126
128 return true;
130 return false;
132 return true;
134 return false;
135 }
136 break;
137 }
139 (errcode(ERRCODE_SYNTAX_ERROR),
140 errmsg("%s requires a Boolean value",
142 return false;
143}
144
145
146
147
150{
151 if (def->arg == NULL)
153 (errcode(ERRCODE_SYNTAX_ERROR),
154 errmsg("%s requires an integer value",
157 {
158 case T_Integer:
160 default:
162 (errcode(ERRCODE_SYNTAX_ERROR),
163 errmsg("%s requires an integer value",
165 }
166 return 0;
167}
168
169
170
171
174{
175 if (def->arg == NULL)
177 (errcode(ERRCODE_SYNTAX_ERROR),
178 errmsg("%s requires a numeric value",
181 {
182 case T_Integer:
184 case T_Float:
185
186
187
188
189
190
193 default:
195 (errcode(ERRCODE_SYNTAX_ERROR),
196 errmsg("%s requires a numeric value",
198 }
199 return 0;
200}
201
202
203
204
207{
208 if (def->arg == NULL)
210 (errcode(ERRCODE_SYNTAX_ERROR),
211 errmsg("%s requires a numeric value",
214 {
215 case T_Integer:
217 case T_Float:
218
219
220
221
222
223
226 default:
228 (errcode(ERRCODE_SYNTAX_ERROR),
229 errmsg("%s requires a numeric value",
231 }
232 return 0;
233}
234
235
236
237
240{
241 if (def->arg == NULL)
243 (errcode(ERRCODE_SYNTAX_ERROR),
244 errmsg("%s requires a parameter",
247 {
248 case T_TypeName:
250 case T_List:
252 case T_String:
253
255 default:
257 (errcode(ERRCODE_SYNTAX_ERROR),
258 errmsg("argument of %s must be a name",
260 }
261 return NIL;
262}
263
264
265
266
267
268
269
272{
273 if (def->arg == NULL)
275 (errcode(ERRCODE_SYNTAX_ERROR),
276 errmsg("%s requires a parameter",
279 {
280 case T_TypeName:
282 case T_String:
283
285 default:
287 (errcode(ERRCODE_SYNTAX_ERROR),
288 errmsg("argument of %s must be a type name",
290 }
291 return NULL;
292}
293
294
295
296
297
298int
300{
301 if (def->arg == NULL)
303 (errcode(ERRCODE_SYNTAX_ERROR),
304 errmsg("%s requires a parameter",
307 {
308 case T_Integer:
310 case T_Float:
312 (errcode(ERRCODE_SYNTAX_ERROR),
313 errmsg("%s requires an integer value",
315 break;
316 case T_String:
318 return -1;
319 break;
320 case T_TypeName:
321
323 "variable") == 0)
324 return -1;
325 break;
326 case T_List:
327
328 break;
329 default:
331 }
333 (errcode(ERRCODE_SYNTAX_ERROR),
334 errmsg("invalid argument for %s: \"%s\"",
336 return 0;
337}
338
339
340
341
344{
346
347 if (def->arg == NULL)
349 (errcode(ERRCODE_SYNTAX_ERROR),
350 errmsg("%s requires a parameter",
354
355 foreach(cell, (List *) def->arg)
356 {
358
360 elog(ERROR, "unexpected node type in name list: %d",
362 }
363
365}
366
367
368
369
370void
372{
374 errcode(ERRCODE_SYNTAX_ERROR),
375 errmsg("conflicting or redundant options"),
377}
TypeName * defGetTypeName(DefElem *def)
int32 defGetInt32(DefElem *def)
int defGetTypeLength(DefElem *def)
char * defGetString(DefElem *def)
bool defGetBoolean(DefElem *def)
List * defGetQualifiedName(DefElem *def)
int64 defGetInt64(DefElem *def)
void errorConflictingDefElem(DefElem *defel, ParseState *pstate)
Oid defGetObjectId(DefElem *def)
double defGetNumeric(DefElem *def)
List * defGetStringList(DefElem *def)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define DirectFunctionCall1(func, arg1)
Datum int8in(PG_FUNCTION_ARGS)
TypeName * makeTypeNameFromNameList(List *names)
char * pstrdup(const char *in)
char * NameListToString(const List *names)
#define IsA(nodeptr, _type_)
#define castNode(_type_, nodeptr)
Datum oidin(PG_FUNCTION_ARGS)
int parser_errposition(ParseState *pstate, int location)
char * TypeNameToString(const TypeName *typeName)
int pg_strcasecmp(const char *s1, const char *s2)
static int64 DatumGetInt64(Datum X)
static Oid DatumGetObjectId(Datum X)
static Datum CStringGetDatum(const char *X)
char * psprintf(const char *fmt,...)