Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7138a1e

Browse files
author
Michael Meskes
committed
- Fixed variable handling for struct members.
- Removed check for array input. An attribut might store the complete array.
1 parent4b20cc1 commit7138a1e

File tree

6 files changed

+24
-19
lines changed

6 files changed

+24
-19
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,5 +1201,11 @@ Fri Jan 11 15:43:39 CET 2002
12011201

12021202
- clear sqlca on : [de]allocate descriptor & get descriptor and set
12031203
sqlca.sqlerrd[2] accordingly (Christof).
1204+
1205+
Sat Jan 12 22:04:02 CET 2002
1206+
1207+
- Fixed variable handling for struct members.
1208+
- Removed check for array input. An attribut might store the
1209+
complete array.
12041210
- Set ecpg version to 2.9.0.
12051211
- Set library version to 3.3.0.

‎src/interfaces/ecpg/lib/execute.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.35 2002/01/08 14:25:04 meskes Exp $ */
1+
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.36 2002/01/13 08:52:08 meskes Exp $ */
22

33
/*
44
* The aim is to get a simpler inteface to the database routines.
@@ -486,14 +486,15 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
486486
char*newcopy=NULL;
487487

488488
/*
489-
* arrays are not possible
489+
* arrays are not possible unless the attribute is an array too
490+
* FIXME: we do not know if the attribute is an array here
490491
*/
491-
492-
if (var->arrsize>1)
492+
493+
/* if (var->arrsize > 1 && ...)
493494
{
494495
ECPGraise(stmt->lineno, ECPG_ARRAY_INSERT, NULL);
495496
return false;
496-
}
497+
}*/
497498

498499
/*
499500
* Some special treatment is needed for records since we want their

‎src/interfaces/ecpg/preproc/extern.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ extern void adjust_array(enum ECPGttype, int *, int *, int, int, int);
7575
externvoidreset_variables(void);
7676
externvoidcheck_indicator(structECPGtype*);
7777
externvoidremove_variables(int);
78-
externstructvariable*new_variable(constchar*,structECPGtype*);
78+
externstructvariable*new_variable(constchar*,structECPGtype*,int);
7979
externScanKeyword*ScanKeywordLookup(char*text);
8080

8181
/* return codes */

‎src/interfaces/ecpg/preproc/preproc.y

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4417,7 +4417,7 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_initializer
44174417
}
44184418

44194419
if (struct_level ==0)
4420-
new_variable($2, type);
4420+
new_variable($2, type, braces_open);
44214421
else
44224422
ECPGmake_struct_member($2, type, &(struct_member_list[struct_level -1]));
44234423

‎src/interfaces/ecpg/preproc/variable.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
structvariable*allvariables=NULL;
66

77
structvariable*
8-
new_variable(constchar*name,structECPGtype*type)
8+
new_variable(constchar*name,structECPGtype*type,intbrace_level)
99
{
1010
structvariable*p= (structvariable*)mm_alloc(sizeof(structvariable));
1111

1212
p->name=mm_strdup(name);
1313
p->type=type;
14-
p->brace_level=braces_open;
14+
p->brace_level=brace_level;
1515

1616
p->next=allvariables;
1717
allvariables=p;
@@ -20,7 +20,7 @@ new_variable(const char *name, struct ECPGtype * type)
2020
}
2121

2222
staticstructvariable*
23-
find_struct_member(char*name,char*str,structECPGstruct_member*members)
23+
find_struct_member(char*name,char*str,structECPGstruct_member*members,intbrace_level)
2424
{
2525
char*next=strchr(++str,'.'),
2626
c='\0';
@@ -41,12 +41,12 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members)
4141
switch (members->type->type)
4242
{
4343
caseECPGt_array:
44-
return (new_variable(name,ECPGmake_array_type(members->type->u.element,members->type->size)));
44+
return (new_variable(name,ECPGmake_array_type(members->type->u.element,members->type->size),brace_level));
4545
caseECPGt_struct:
4646
caseECPGt_union:
47-
return (new_variable(name,ECPGmake_struct_type(members->type->u.members,members->type->type,members->type->struct_sizeof)));
47+
return (new_variable(name,ECPGmake_struct_type(members->type->u.members,members->type->type,members->type->struct_sizeof),brace_level));
4848
default:
49-
return (new_variable(name,ECPGmake_simple_type(members->type->type,members->type->size)));
49+
return (new_variable(name,ECPGmake_simple_type(members->type->type,members->type->size),brace_level));
5050
}
5151
}
5252
else
@@ -55,10 +55,10 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members)
5555
if (c=='-')
5656
{
5757
next++;
58-
return (find_struct_member(name,next,members->type->u.element->u.members));
58+
return (find_struct_member(name,next,members->type->u.element->u.members,brace_level));
5959
}
6060
else
61-
return (find_struct_member(name,next,members->type->u.members));
61+
return (find_struct_member(name,next,members->type->u.members,brace_level));
6262
}
6363
}
6464
}
@@ -94,7 +94,7 @@ find_struct(char *name, char *next)
9494
*next=c;
9595
next++;
9696

97-
returnfind_struct_member(name,next,p->type->u.element->u.members);
97+
returnfind_struct_member(name,next,p->type->u.element->u.members,p->brace_level);
9898
}
9999
else
100100
{
@@ -107,7 +107,7 @@ find_struct(char *name, char *next)
107107
/* restore the name, we will need it later on */
108108
*next=c;
109109

110-
returnfind_struct_member(name,next,p->type->u.members);
110+
returnfind_struct_member(name,next,p->type->u.members,p->brace_level);
111111
}
112112
}
113113

‎src/interfaces/ecpg/test/test1.pgc

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#include <string.h>
22

3-
exec sql include sqlca;
4-
53
/* just a test comment */ exec sql whenever sqlerror do PrintAndStop(msg);
64
exec sql whenever sqlwarning do warn();
75

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp