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

Commite4274d6

Browse files
author
Michael Meskes
committed
*** empty log message ***
1 parenta4ce6f0 commite4274d6

File tree

7 files changed

+85
-52
lines changed

7 files changed

+85
-52
lines changed

‎src/interfaces/ecpg/ChangeLog

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,5 +519,21 @@ Thu Mar 18 18:57:31 CET 1999
519519

520520
- Synced preproc.y with gram.y.
521521
- Added '%' operator.
522+
523+
Thu Mar 18 19:44:10 CET 1999
524+
525+
- Added ECPGstatus() function.
526+
- Cleaned up some error messages.
527+
528+
Fri Mar 19 08:49:32 CET 1999
529+
530+
- Synced preproc.y with gram.y.
531+
- Synced keywords.c.
532+
- Synced pgc.l with scan.l.
533+
534+
Sat Mar 20 19:57:42 CET 1999
535+
536+
- Synced preproc.y with gram.y.
537+
- Fixed handling of ';' character.
522538
- Set library version to 3.0.0
523539
- Set ecpg version to 2.6.0

‎src/interfaces/ecpg/include/ecpgerrno.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@
2323
#defineECPG_CONVERT_BOOL-207
2424
#defineECPG_EMPTY-208
2525

26-
#defineECPG_UNDECLARED_CURSOR-210
27-
2826
#defineECPG_NO_CONN-220
2927
#defineECPG_NOT_CONN-221
3028

‎src/interfaces/ecpg/include/ecpglib.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ extern"C"
66
#endif
77

88
voidECPGdebug(int,FILE*);
9+
boolECPGstatus(int,constchar*);
910
boolECPGsetconn(int,constchar*);
1011
boolECPGconnect(int,constchar*,constchar*,constchar*,constchar*);
1112
boolECPGdo(int,constchar*,char*,...);

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

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ ecpg_alloc(long size, int lineno)
183183
if (!new)
184184
{
185185
ECPGlog("out of memory\n");
186-
register_error(ECPG_OUT_OF_MEMORY,"out of memory in line %d",lineno);
186+
register_error(ECPG_OUT_OF_MEMORY,"Out of memory in line %d",lineno);
187187
returnNULL;
188188
}
189189

@@ -199,7 +199,7 @@ ecpg_strdup(const char *string, int lineno)
199199
if (!new)
200200
{
201201
ECPGlog("out of memory\n");
202-
register_error(ECPG_OUT_OF_MEMORY,"out of memory in line %d",lineno);
202+
register_error(ECPG_OUT_OF_MEMORY,"Out of memory in line %d",lineno);
203203
returnNULL;
204204
}
205205

@@ -336,7 +336,7 @@ create_statement(int lineno, struct connection *connection, struct statement **
336336
if (var->pointer==NULL)
337337
{
338338
ECPGlog("create_statement: invalid statement name\n");
339-
register_error(ECPG_INVALID_STMT,"Invalid statement name in line %d",lineno);
339+
register_error(ECPG_INVALID_STMT,"Invalid statement name in line %d.",lineno);
340340
free(var);
341341
return false;
342342
}
@@ -387,7 +387,7 @@ next_insert(char *text)
387387
staticbool
388388
ECPGexecute(structstatement*stmt)
389389
{
390-
boolstatus= false;
390+
boolstatus= false;
391391
char*copiedquery;
392392
PGresult*results;
393393
PGnotify*notify;
@@ -637,7 +637,7 @@ ECPGexecute(struct statement * stmt)
637637
{
638638
if ((results=PQexec(stmt->connection->connection,"begin transaction"))==NULL)
639639
{
640-
register_error(ECPG_TRANS,"Errorstarting transaction line %d.",stmt->lineno);
640+
register_error(ECPG_TRANS,"Errorin transaction processing line %d.",stmt->lineno);
641641
return false;
642642
}
643643
PQclear(results);
@@ -708,42 +708,36 @@ ECPGexecute(struct statement * stmt)
708708
/*
709709
* allocate memory for NULL pointers
710710
*/
711-
if (var->arrsize==0||var->varcharsize==0)
711+
if ((var->arrsize==0||var->varcharsize==0)&&var->value==NULL)
712712
{
713713
intlen=0;
714714

715715
switch(var->type)
716716
{
717717
caseECPGt_char:
718718
caseECPGt_unsigned_char:
719-
if (var->value==NULL)
719+
var->varcharsize=0;
720+
/* check strlen for each tuple */
721+
for (act_tuple=0;act_tuple<ntuples;act_tuple++)
720722
{
721-
var->varcharsize=0;
722-
/* check strlen for each tuple */
723-
for (act_tuple=0;act_tuple<ntuples;act_tuple++)
724-
{
725-
intlen=strlen(PQgetvalue(results,act_tuple,act_field))+1;
726-
727-
if (len>var->varcharsize)
728-
var->varcharsize=len;
729-
}
730-
var->offset *=var->varcharsize;
731-
len=var->offset*ntuples;
723+
intlen=strlen(PQgetvalue(results,act_tuple,act_field))+1;
724+
725+
if (len>var->varcharsize)
726+
var->varcharsize=len;
732727
}
728+
var->offset *=var->varcharsize;
729+
len=var->offset*ntuples;
733730
break;
734731
caseECPGt_varchar:
735-
if (var->value==NULL)
736-
len=ntuples* (var->varcharsize+sizeof (int));
732+
len=ntuples* (var->varcharsize+sizeof (int));
737733
break;
738734
default:
739-
if (var->value==NULL)
740-
len=var->offset*ntuples;
735+
len=var->offset*ntuples;
741736
break;
742737
}
743-
744-
var->pointer= (void*)ecpg_alloc(len,stmt->lineno);
745-
var->value= (void**)var->pointer;
746-
add_mem((void*)var->value,stmt->lineno);
738+
var->value= (void*)ecpg_alloc(len,stmt->lineno);
739+
*((void**)var->pointer)=var->value;
740+
add_mem(var->value,stmt->lineno);
747741
}
748742

749743
for (act_tuple=0;act_tuple<ntuples&&status;act_tuple++)
@@ -1004,7 +998,7 @@ ECPGexecute(struct statement * stmt)
1004998
casePGRES_BAD_RESPONSE:
1005999
ECPGlog("ECPGexecute line %d: Error: %s",
10061000
stmt->lineno,PQerrorMessage(stmt->connection->connection));
1007-
register_error(ECPG_PGSQL,"Error: %s line %d.",
1001+
register_error(ECPG_PGSQL,"Postgres error: %s line %d.",
10081002
PQerrorMessage(stmt->connection->connection),stmt->lineno);
10091003
status= false;
10101004
break;
@@ -1019,7 +1013,8 @@ ECPGexecute(struct statement * stmt)
10191013
default:
10201014
ECPGlog("ECPGexecute line %d: Got something else, postgres error.\n",
10211015
stmt->lineno);
1022-
register_error(ECPG_PGSQL,"Postgres error line %d.",stmt->lineno);
1016+
register_error(ECPG_PGSQL,"Postgres error: %s line %d.",
1017+
PQerrorMessage(stmt->connection->connection),stmt->lineno);
10231018
status= false;
10241019
break;
10251020
}
@@ -1046,7 +1041,7 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
10461041

10471042
if (con==NULL)
10481043
{
1049-
register_error(ECPG_NO_CONN,"No such connection %s in line %d",connection_name,lineno);
1044+
register_error(ECPG_NO_CONN,"No such connection %s in line %d.",connection_name,lineno);
10501045
return (false);
10511046
}
10521047

@@ -1059,13 +1054,34 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
10591054
if (con==NULL||con->connection==NULL)
10601055
{
10611056
ECPGlog("ECPGdo: not connected to %s\n",con->name);
1062-
register_error(ECPG_NOT_CONN,"Not connected in line %d",lineno);
1057+
register_error(ECPG_NOT_CONN,"Not connected in line %d.",lineno);
10631058
return false;
10641059
}
10651060

10661061
return (ECPGexecute(stmt));
10671062
}
10681063

1064+
bool
1065+
ECPGstatus(intlineno,constchar*connection_name)
1066+
{
1067+
structconnection*con=get_connection(connection_name);
1068+
1069+
if (con==NULL)
1070+
{
1071+
register_error(ECPG_NO_CONN,"No such connection %s in line %d",connection_name,lineno);
1072+
return (false);
1073+
}
1074+
1075+
/* are we connected? */
1076+
if (con->connection==NULL)
1077+
{
1078+
ECPGlog("ECPGdo: not connected to %s\n",con->name);
1079+
register_error(ECPG_NOT_CONN,"Not connected in line %d",lineno);
1080+
return false;
1081+
}
1082+
1083+
return (true);
1084+
}
10691085

10701086
bool
10711087
ECPGtrans(intlineno,constchar*connection_name,constchar*transaction)

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.11 1999/02/2007:01:00 scrappy Exp $
10+
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.12 1999/03/2019:46:53 meskes Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -188,7 +188,6 @@ static ScanKeyword ScanKeywords[] = {
188188
{"procedure",PROCEDURE},
189189
{"public",PUBLIC},
190190
{"read",READ},
191-
{"recipe",RECIPE},
192191
{"references",REFERENCES},
193192
{"relative",RELATIVE},
194193
{"rename",RENAME},

‎src/interfaces/ecpg/preproc/pgc.l

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ identifier{letter}{letter_or_digit}*
134134

135135
typecast"::"
136136

137-
self[,()\[\].$\:\+\-\*\/\<\>\=\|]
138-
op_and_self[\~\!\@\#\%\^\&\|\`\?\$\:\+\-\*\/\<\>\=]
137+
self[,()\[\].;$\:\+\-\*\/\%\<\>\=\|]
138+
op_and_self[\~\!\@\#\^\&\|\?\$\:\+\-\*\/\%\<\>\=]
139139
operator{op_and_self}+
140140

141141
xmstop-
@@ -299,7 +299,15 @@ cppline{space}*#.*(\\{space}*\n)*\n*
299299
BEGIN(xm);
300300
return yytext[0];
301301
}
302-
<SQL>{self}{return yytext[0]; }
302+
<SQL>{self}{/*
303+
* We may find a ';' inside a structure
304+
* definition in a TYPE or VAR statement.
305+
* This is not an EOL marker.
306+
*/
307+
if (yytext[0] ==';' && struct_level ==0)
308+
BEGIN C;
309+
return yytext[0];
310+
}
303311
<SQL>{operator}/-[\.0-9]{
304312
yylval.str =mm_strdup((char*)yytext);
305313
return Op;
@@ -510,14 +518,6 @@ cppline{space}*#.*(\\{space}*\n)*\n*
510518
}
511519
}
512520
<SQL>{space}{/* ignore */ }
513-
<SQL>";" {/*
514-
* We may find a ';' inside a structure
515-
* definition in a TYPE or VAR statement.
516-
* This is not a EOL marker.
517-
*/
518-
if (struct_level ==0)
519-
BEGIN C;
520-
return SQL_SEMI; }
521521
<SQL>{other}{return yytext[0]; }
522522
<C>{exec}{space}{sql}{ BEGIN SQL;return SQL_START; }
523523
<C>{ccomment}{/* ignore */ }

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
652652
%tokenSQL_FOUNDSQL_FREESQL_GOSQL_GOTO
653653
%tokenSQL_IDENTIFIEDSQL_IMMEDIATESQL_INDICATORSQL_INTSQL_LONG
654654
%tokenSQL_OPENSQL_PREPARESQL_RELEASESQL_REFERENCE
655-
%tokenSQL_SECTIONSQL_SEMISQL_SHORTSQL_SIGNEDSQL_SQLERRORSQL_SQLPRINT
655+
%tokenSQL_SECTIONSQL_SHORTSQL_SIGNEDSQL_SQLERRORSQL_SQLPRINT
656656
%tokenSQL_SQLWARNINGSQL_STARTSQL_STOPSQL_STRUCTSQL_UNSIGNED
657657
%tokenSQL_VARSQL_WHENEVER
658658

@@ -710,7 +710,7 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
710710
LANCOMPILER,LIMIT,LISTEN,UNLISTEN,LOAD,LOCATION,LOCK_P,MAXVALUE,MINVALUE,MOVE,
711711
NEW,NOCREATEDB,NOCREATEUSER,NONE,NOTHING,NOTIFY,NOTNULL,
712712
OFFSET,OIDS,OPERATOR,PASSWORD,PROCEDURAL,
713-
RECIPE,RENAME,RESET,RETURNS,ROW,RULE,
713+
RENAME,RESET,RETURNS,ROW,RULE,
714714
SERIAL,SEQUENCE,SETOF,SHOW,START,STATEMENT,STDIN,STDOUT,TRUSTED,
715715
UNLISTEN,UNTIL,VACUUM,VALID,VERBOSE,VERSION
716716

@@ -734,6 +734,7 @@ adjust_array(enum ECPGttype type_enum, int *dimension, int *length, int type_dim
734734
%leftOp/* multi-character ops and user-defined operators*/
735735
%nonassocNOTNULL
736736
%nonassocISNULL
737+
%nonassocNULL_P
737738
%nonassocIS
738739
%left'+''-'
739740
%left'*''/''%'
@@ -839,8 +840,8 @@ prog: statements;
839840
statements:/* empty*/
840841
|statementsstatement
841842

842-
statement:ecpgstartopt_atstmtSQL_SEMI { connection =NULL; }
843-
|ecpgstartstmtSQL_SEMI
843+
statement:ecpgstartopt_atstmt';' { connection =NULL; }
844+
|ecpgstartstmt';'
844845
|ECPGDeclaration
845846
|c_thing { fprintf(yyout,"%s",$1); free($1); }
846847
|cpp_line{ fprintf(yyout,"%s",$1); free($1); }
@@ -3587,6 +3588,8 @@ a_expr: attr opt_indirection
35873588
{$$ = cat3_str($1, make1_str(">"),$3); }
35883589
|a_expr'='NULL_P
35893590
{$$ = cat2_str($1, make1_str("= NULL")); }
3591+
|NULL_P'='a_expr
3592+
{$$ = cat2_str(make1_str("= NULL"),$3); }
35903593
|a_expr'='a_expr
35913594
{$$ = cat3_str($1, make1_str("="),$3); }
35923595
/* not possible in embedded sql| ':' a_expr
@@ -4798,9 +4801,9 @@ ECPGDeclaration: sql_startdeclare
47984801
output_line_number();
47994802
}
48004803

4801-
sql_startdeclare :ecpgstartBEGIN_TRANSDECLARESQL_SECTIONSQL_SEMI {}
4804+
sql_startdeclare :ecpgstartBEGIN_TRANSDECLARESQL_SECTION';' {}
48024805

4803-
sql_enddeclare:ecpgstartEND_TRANSDECLARESQL_SECTIONSQL_SEMI {}
4806+
sql_enddeclare:ecpgstartEND_TRANSDECLARESQL_SECTION';' {}
48044807

48054808
variable_declarations:/* empty*/
48064809
{
@@ -5389,7 +5392,7 @@ sql_declaration: ctype
53895392
actual_type[struct_level].type_dimension =$1.type_dimension;
53905393
actual_type[struct_level].type_index =$1.type_index;
53915394
}
5392-
sql_variable_listSQL_SEMI
5395+
sql_variable_list';'
53935396
{
53945397
$$ = cat3_str($1.type_str,$3, make1_str(";"));
53955398
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp