PostgreSQL Source Code: src/interfaces/ecpg/preproc/type.h File Reference (original) (raw)

223{

225

229 {

230 char *str;

231

235

236 if ((var->type->type != type->type) ||

237 (var->type->type_name && type->type_name) ||

238 (!var->type->type_name && type->type_name) ||

239 (var->type->type_name && type->type_name && strcmp(var->type->type_name, type->type_name) != 0))

243

245 {

249

251 (var->type->type_name && ind\_type->type_name) ||

252 (!var->type->type_name && ind_type->type_name) ||

253 (var->type->type_name && ind_type->type_name && strcmp(var->type->type_name, ind_type->type_name) != 0))

254 mmerror(PARSE_ERROR, ET_ERROR, "indicator variable \"%s\" is hidden by a local variable of a different type", ind_name);

255 else if (var->brace_level != ind_brace_level)

257 }

258 }

259

260 switch (type->type)

261 {

265 switch (type->u.element->type)

266 {

268 mmerror(PARSE_ERROR, ET_ERROR, "nested arrays are not supported (except strings)");

269 break;

273 ind_name,

275 type->u.element,

277 prefix, ind_prefix);

278 break;

279 default:

281 base_yyerror("internal error: unknown datatype, please report this to <" PACKAGE_BUGREPORT ">");

282

284 type->u.element->type,

285 type->u.element->size, type->size, struct_sizeof ? struct_sizeof : NULL,

286 prefix, type->u.element->counter);

287

289 {

291 {

292 char *str_neg_one = mm_strdup("-1");

293

295 free(str_neg_one);

296 }

297 else

298 {

300 ind_type->u.element->size, ind_type->size, NULL, ind_prefix, 0);

301 }

302 }

303 }

304 break;

306 {

308

311

313 free(str_one);

314 }

315 break;

316 case ECPGt_union:

317 base_yyerror("type of union has to be specified");

318 break;

320 {

321

322

323

324

325 char *str_varchar_one = mm_strdup("1");

326 char *str_arr_one = mm_strdup("1");

327 char *str_neg_one = mm_strdup("-1");

328

331

332 ECPGdump_a_simple(o, name, type->type, str_varchar_one, (arr_str_size && strcmp(arr_str_size, "0") != 0) ? arr_str_size : str_arr_one, struct_sizeof, prefix, 0);

334 ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, (arr_str_size && strcmp(arr_str_size, "0") != 0) ? arr_str_size : str_neg_one, ind_struct_sizeof, ind_prefix, 0);

335

336 free(str_varchar_one);

337 free(str_arr_one);

338 free(str_neg_one);

339 }

340 break;

342 {

343

344

345

346

347 char *str_neg_one = mm_strdup("-1");

348 char *ind_type_neg_one = mm_strdup("-1");

349

352

356

357 free(str_neg_one);

358 free(ind_type_neg_one);

359 }

360 break;

361 default:

362 {

363

364

365

366

367 char *str_neg_one = mm_strdup("-1");

368 char *ind_type_neg_one = mm_strdup("-1");

369

372

373 ECPGdump_a_simple(o, name, type->type, type->size, (arr_str_size && strcmp(arr_str_size, "0") != 0) ? arr_str_size : str_neg_one, struct_sizeof, prefix, type->counter);

375 ECPGdump_a_simple(o, ind_name, ind_type->type, ind_type->size, (arr_str_size && strcmp(arr_str_size, "0") != 0) ? arr_str_size : ind_type_neg_one, ind_struct_sizeof, ind_prefix, 0);

376

377 free(str_neg_one);

378 free(ind_type_neg_one);

379 }

380 break;

381 }

382}

#define IS_SIMPLE_TYPE(type)

char * mm_strdup(const char *string)

void base_yyerror(const char *error)

void pg_noreturn void mmfatal(int error_code, const char *error,...) pg_attribute_printf(2

void mmerror(int error_code, enum errortype type, const char *error,...) pg_attribute_printf(3

#define INDICATOR_NOT_SIMPLE

#define INDICATOR_NOT_STRUCT

#define INDICATOR_NOT_ARRAY

struct variable * find_variable(const char *name)

static void ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, char *arrsize, struct ECPGtype *type, struct ECPGtype *ind_type, const char *prefix, const char *ind_prefix)

static void ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type, char *varcharsize, char *arrsize, const char *size, const char *prefix, int counter)