7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.70 1997/06/03 06:17:34 vadim Exp $
10
+ * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.71 1997/06/06 01:41:24 scrappy Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -184,7 +184,8 @@ slashUsage(PsqlSettings * ps)
184
184
static PGresult *
185
185
PSQLexec (PsqlSettings * ps , char * query )
186
186
{
187
- PGresult * res = PQexec (ps -> db , query );
187
+ PGresult * res ;
188
+ res = PQexec (ps -> db , query );
188
189
if (!res )
189
190
fputs (PQerrorMessage (ps -> db ), stderr );
190
191
else {
@@ -259,7 +260,6 @@ tableList(PsqlSettings * ps, bool deep_tablelist, char table_index_both)
259
260
strcat (listbuf , " ORDER BY relname " );
260
261
if (!(res = PSQLexec (ps , listbuf )))
261
262
return -1 ;
262
-
263
263
/* first, print out the attribute names */
264
264
nColumns = PQntuples (res );
265
265
if (nColumns > 0 ) {
@@ -278,7 +278,7 @@ tableList(PsqlSettings * ps, bool deep_tablelist, char table_index_both)
278
278
strcpy (table [i ], PQgetvalue (res , i , 1 ));
279
279
}
280
280
281
- PQclear (res );
281
+ PQclear (res ); /* PURIFY */
282
282
for (i = 0 ; i < nColumns ; i ++ ) {
283
283
tableDesc (ps , table [i ]);
284
284
}
@@ -309,6 +309,7 @@ tableList(PsqlSettings * ps, bool deep_tablelist, char table_index_both)
309
309
return (0 );
310
310
311
311
} else {
312
+ PQclear (res ); /* PURIFY */
312
313
switch (table_index_both ) {
313
314
case 't' : fprintf (stderr , "Couldn't find any tables!\n" );
314
315
break ;
@@ -507,7 +508,10 @@ gets_fromFile(char *prompt, FILE * source)
507
508
508
509
/* read up to MAX_QUERY_BUFFER characters */
509
510
if (fgets (line , MAX_QUERY_BUFFER , source ) == NULL )
511
+ {
512
+ free (line );
510
513
return NULL ;
514
+ }
511
515
512
516
line [MAX_QUERY_BUFFER - 1 ] = '\0' ;
513
517
len = strlen (line );
@@ -579,17 +583,14 @@ SendQuery(bool * success_p, PsqlSettings * settings, const char *query,
579
583
& (settings -> opt ));
580
584
fflush (settings -> queryFout );
581
585
}
582
- PQclear (results );
583
586
break ;
584
587
case PGRES_EMPTY_QUERY :
585
588
* success_p = true;
586
- PQclear (results );
587
589
break ;
588
590
case PGRES_COMMAND_OK :
589
591
* success_p = true;
590
592
if (!settings -> quiet )
591
593
fprintf (stdout , "%s\n" , PQcmdStatus (results ));
592
- PQclear (results );
593
594
break ;
594
595
case PGRES_COPY_OUT :
595
596
* success_p = true;
@@ -601,15 +602,13 @@ SendQuery(bool * success_p, PsqlSettings * settings, const char *query,
601
602
602
603
handleCopyOut (results , settings -> quiet , stdout );
603
604
}
604
- PQclear (results );
605
605
break ;
606
606
case PGRES_COPY_IN :
607
607
* success_p = true;
608
608
if (copy_in )
609
609
handleCopyIn (results , false, copystream );
610
610
else
611
611
handleCopyIn (results , !settings -> quiet , stdin );
612
- PQclear (results );
613
612
break ;
614
613
case PGRES_NONFATAL_ERROR :
615
614
case PGRES_FATAL_ERROR :
@@ -634,6 +633,7 @@ SendQuery(bool * success_p, PsqlSettings * settings, const char *query,
634
633
notify -> relname , notify -> be_pid );
635
634
free (notify );
636
635
}
636
+ if (results ) PQclear (results );
637
637
}
638
638
}
639
639
@@ -1434,7 +1434,6 @@ MainLoop(PsqlSettings * settings, FILE * source)
1434
1434
}
1435
1435
1436
1436
query_start = line ;
1437
-
1438
1437
if (line == NULL ) { /* No more input. Time to quit */
1439
1438
if (!settings -> quiet )
1440
1439
printf ("EOF\n" ); /* Goes on prompt line */
@@ -1544,23 +1543,25 @@ MainLoop(PsqlSettings * settings, FILE * source)
1544
1543
fprintf (stderr , "query buffer max length of %d exceeded\n" ,
1545
1544
MAX_QUERY_BUFFER );
1546
1545
fprintf (stderr , "query line ignored\n" );
1546
+ free (line );
1547
1547
} else {
1548
1548
if (query_start [0 ] != '\0' ) {
1549
+
1549
1550
querySent = false;
1550
1551
if (query [0 ] != '\0' ) {
1551
1552
strcat (query , "\n" );
1552
1553
strcat (query , query_start );
1553
1554
} else
1554
1555
strcpy (query , query_start );
1555
1556
}
1557
+ free (line ); /* PURIFY */
1556
1558
}
1557
1559
1558
1560
if (slashCmdStatus == 0 ) {
1559
1561
SendQuery (& success , settings , query , false, false, 0 );
1560
1562
successResult &= success ;
1561
1563
querySent = true;
1562
1564
}
1563
- free (line ); /* free storage malloc'd by GetNextLine */
1564
1565
}
1565
1566
} /* while */
1566
1567
return successResult ;
@@ -1702,6 +1703,7 @@ main(int argc, char **argv)
1702
1703
if (PQstatus (settings .db ) == CONNECTION_BAD ) {
1703
1704
fprintf (stderr , "Connection to database '%s' failed.\n" , dbname );
1704
1705
fprintf (stderr , "%s" , PQerrorMessage (settings .db ));
1706
+ PQfinish (settings .db );
1705
1707
exit (1 );
1706
1708
}
1707
1709
if (listDatabases ) {
@@ -1731,6 +1733,8 @@ main(int argc, char **argv)
1731
1733
sprintf (line , "\\i %s" , qfilename );
1732
1734
}
1733
1735
HandleSlashCmds (& settings , line , "" );
1736
+ if (!singleSlashCmd ) free (line ); /* PURIFY */
1737
+
1734
1738
} else {
1735
1739
if (singleQuery ) {
1736
1740
bool success ; /* The query succeeded at the backend */
@@ -1741,6 +1745,8 @@ main(int argc, char **argv)
1741
1745
}
1742
1746
1743
1747
PQfinish (settings .db );
1748
+ free (settings .opt .fieldSep ); /* PURIFY */
1749
+ if (settings .prompt ) free (settings .prompt ); /* PURIFY */
1744
1750
1745
1751
return !successResult ;
1746
1752
}
0 commit comments