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

Commitf447344

Browse files
committed
Simplify pg_result by using new libpq PQresultErrorMessage;
fix some memory leaks in pg_select.
1 parent6428074 commitf447344

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

‎src/interfaces/libpgtcl/pgtclCmds.c

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.35 1998/09/21 01:02:01 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.36 1998/10/01 01:45:38 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -508,7 +508,6 @@ int
508508
Pg_result(ClientDatacData,Tcl_Interp*interp,intargc,char*argv[])
509509
{
510510
PGresult*result;
511-
PGconn*conn;
512511
char*opt;
513512
inti;
514513
inttupno;
@@ -538,24 +537,8 @@ Pg_result(ClientData cData, Tcl_Interp * interp, int argc, char *argv[])
538537
}
539538
elseif (strcmp(opt,"-error")==0)
540539
{
541-
switch (PQresultStatus(result)) {
542-
casePGRES_EMPTY_QUERY:
543-
casePGRES_COMMAND_OK:
544-
casePGRES_TUPLES_OK:
545-
casePGRES_COPY_OUT:
546-
casePGRES_COPY_IN:
547-
Tcl_ResetResult(interp);
548-
break;
549-
default:
550-
if (PgGetConnByResultId(interp,argv[1])!=TCL_OK)
551-
returnTCL_ERROR;
552-
conn=PgGetConnectionId(interp,interp->result,
553-
(Pg_ConnectionId**)NULL);
554-
if (conn== (PGconn*)NULL)
555-
returnTCL_ERROR;
556-
Tcl_SetResult(interp,PQerrorMessage(conn),TCL_VOLATILE);
557-
break;
558-
}
540+
Tcl_SetResult(interp, (char*)PQresultErrorMessage(result),
541+
TCL_STATIC);
559542
returnTCL_OK;
560543
}
561544
elseif (strcmp(opt,"-conn")==0)
@@ -1270,17 +1253,27 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
12701253

12711254
if ((result=PQexec(conn,argv[2]))==0)
12721255
{
1273-
/* error occurredduring the query */
1256+
/* error occurredsending the query */
12741257
Tcl_SetResult(interp,PQerrorMessage(conn),TCL_VOLATILE);
12751258
returnTCL_ERROR;
12761259
}
12771260

12781261
/* Transfer any notify events from libpq to Tcl event queue. */
12791262
PgNotifyTransferEvents(connid);
12801263

1264+
if (PQresultStatus(result)!=PGRES_TUPLES_OK)
1265+
{
1266+
/* query failed, or it wasn't SELECT */
1267+
Tcl_SetResult(interp, (char*)PQresultErrorMessage(result),
1268+
TCL_VOLATILE);
1269+
PQclear(result);
1270+
returnTCL_ERROR;
1271+
}
1272+
12811273
if ((info= (structinfo_s*)ckalloc(sizeof(*info)* (ncols=PQnfields(result))))==NULL)
12821274
{
12831275
Tcl_AppendResult(interp,"Not enough memory",0);
1276+
PQclear(result);
12841277
returnTCL_ERROR;
12851278
}
12861279

@@ -1311,7 +1304,10 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
13111304
if ((r=Tcl_Eval(interp,argv[4]))!=TCL_OK&&r!=TCL_CONTINUE)
13121305
{
13131306
if (r==TCL_BREAK)
1307+
{
1308+
PQclear(result);
13141309
returnTCL_OK;
1310+
}
13151311

13161312
if (r==TCL_ERROR)
13171313
{
@@ -1322,13 +1318,14 @@ Pg_select(ClientData cData, Tcl_Interp * interp, int argc, char **argv)
13221318
Tcl_AddErrorInfo(interp,msg);
13231319
}
13241320

1321+
PQclear(result);
13251322
returnr;
13261323
}
13271324
}
13281325

13291326
ckfree((void*)info);
13301327
Tcl_UnsetVar(interp,argv[3],0);
1331-
Tcl_AppendResult(interp,"",0);
1328+
PQclear(result);
13321329
returnTCL_OK;
13331330
}
13341331

@@ -1352,7 +1349,7 @@ Pg_have_listener (Pg_ConnectionId *connid, const char * relname)
13521349
if (interp==NULL)
13531350
continue;/* ignore deleted interpreter */
13541351

1355-
entry=Tcl_FindHashEntry(&notifies->notify_hash,relname);
1352+
entry=Tcl_FindHashEntry(&notifies->notify_hash,(char*)relname);
13561353
if (entry==NULL)
13571354
continue;/* no pg_listen in this interpreter */
13581355

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp