mirror of https://github.com/postgres/postgres
Fixed bug in parsing of typedef'ed array sizes.
Synced parser.
This commit is contained in:
parent
b3f3092cad
commit
ec7806db2c
|
@ -1877,6 +1877,11 @@ Mon Oct 18 15:34:51 CEST 2004
|
|||
Wed Nov 10 14:43:50 CET 2004
|
||||
|
||||
- List VALUE as a keyword.
|
||||
|
||||
Mon Dec 6 21:27:34 CET 2004
|
||||
|
||||
- Fixed bug in parsing of typedef'ed array sizes.
|
||||
- Synced parser.
|
||||
- Set ecpg version to 3.2.0.
|
||||
- Set compat library version to 1.2.
|
||||
- Set ecpg library version to 4.2.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.301 2004/11/10 13:48:10 meskes Exp $ */
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.302 2004/12/06 20:35:35 meskes Exp $ */
|
||||
|
||||
/* Copyright comment */
|
||||
%{
|
||||
|
@ -208,16 +208,16 @@ static char *
|
|||
adjust_informix(struct arguments *list)
|
||||
{
|
||||
/* Informix accepts DECLARE with variables that are out of scope when OPEN is called.
|
||||
* for instance you can declare variables in a function, and then subsequently use them
|
||||
* {
|
||||
* declare_vars();
|
||||
* exec sql ... which uses vars declared in the above function
|
||||
*
|
||||
* for instance you can declare variables in a function, and then subsequently use them
|
||||
* {
|
||||
* declare_vars();
|
||||
* exec sql ... which uses vars declared in the above function
|
||||
*
|
||||
* This breaks standard and leads to some very dangerous programming.
|
||||
* Since they do, we have to work around and accept their syntax as well.
|
||||
* But we will do so ONLY in Informix mode.
|
||||
* We have to change the variables to our own struct and just store the pointer instead of the variable
|
||||
*/
|
||||
*/
|
||||
|
||||
struct arguments *ptr;
|
||||
char *result = make_str("");
|
||||
|
@ -1955,12 +1955,8 @@ any_name: ColId { $$ = $1; }
|
|||
| ColId attrs { $$ = cat2_str($1, $2); }
|
||||
;
|
||||
|
||||
/*
|
||||
* The slightly convoluted way of writing this production avoids reduce/reduce
|
||||
* errors against indirection_el.
|
||||
*/
|
||||
attrs: '.' attr_name { $$ = cat2_str(make_str("."), $2); }
|
||||
| '.' attr_name attrs { $$ = cat_str(3, make_str("."), $2, $3); }
|
||||
| attrs '.' attr_name { $$ = cat_str(3, $1, make_str("."), $3); }
|
||||
;
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -4167,7 +4163,7 @@ qualified_name_list: qualified_name
|
|||
|
||||
qualified_name: relation_name
|
||||
{ $$ = $1; }
|
||||
| relation_name attrs
|
||||
| relation_name indirection
|
||||
{ $$ = cat2_str($1, $2); }
|
||||
;
|
||||
|
||||
|
|
|
@ -365,7 +365,7 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
|
|||
else
|
||||
sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
|
||||
|
||||
sprintf(offset, "%s*sizeof(char)", strcmp(varcharsize, "0") == 0 ? "1" : varcharsize);
|
||||
sprintf(offset, "(%s)*sizeof(char)", strcmp(varcharsize, "0") == 0 ? "1" : varcharsize);
|
||||
break;
|
||||
case ECPGt_numeric:
|
||||
|
||||
|
|
|
@ -560,7 +560,7 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
|
|||
* changed later on when the variable is defined
|
||||
*/
|
||||
*length = make_str("1");
|
||||
else if (atoi(*dimension) == 0)
|
||||
else if (strcmp(*dimension, "0") == 0)
|
||||
*length = make_str("-1");
|
||||
else
|
||||
*length = *dimension;
|
||||
|
|
Loading…
Reference in New Issue