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:

251 return (List *) def->arg;

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

364 return (List *) def->arg;

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,...)