Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
f1792b93
Commit
f1792b93
authored
Mar 25, 2003
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use PQfreemem() consistently, and document its use for Notify.
Keep PQfreeNotify() around for binary compatibility.
parent
6a19c6dc
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
47 additions
and
35 deletions
+47
-35
doc/src/sgml/libpq.sgml
doc/src/sgml/libpq.sgml
+15
-9
src/bin/psql/common.c
src/bin/psql/common.c
+2
-2
src/interfaces/ecpg/ecpglib/execute.c
src/interfaces/ecpg/ecpglib/execute.c
+2
-2
src/interfaces/libpgtcl/pgtclId.c
src/interfaces/libpgtcl/pgtclId.c
+3
-3
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/fe-exec.c
+20
-15
src/interfaces/libpq/libpq-fe.h
src/interfaces/libpq/libpq-fe.h
+3
-2
src/interfaces/python/pgmodule.c
src/interfaces/python/pgmodule.c
+1
-1
src/test/examples/testlibpq2.c
src/test/examples/testlibpq2.c
+1
-1
No files found.
doc/src/sgml/libpq.sgml
View file @
f1792b93
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.11
5 2003/03/24 18:33:52
momjian Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.11
6 2003/03/25 02:44:36
momjian Exp $
-->
<chapter id="libpq">
...
...
@@ -1049,8 +1049,7 @@ characters that are otherwise interpreted specially by the SQL parser.
<function>PQescapeString</> performs this operation.
</para>
<para>
The
parameter <parameter>from</> points to the first character of the string that
The parameter <parameter>from</> points to the first character of the string that
is to be escaped, and the <parameter>length</> parameter counts the
number of characters in this string. (A terminating zero byte is
neither necessary nor counted.) <parameter>to</> shall point to a
...
...
@@ -1117,7 +1116,9 @@ unsigned char *PQescapeBytea(const unsigned char *from,
<para>
<function>PQescapeBytea</> returns an escaped version of the
<parameter>from</parameter> parameter binary string in memory allocated with <function>malloc()</>.
<parameter>from</parameter> parameter binary string in memory
allocated with <function>malloc()</>, and must be freed using
<function>PQfreemem()</>.
The return string has all special characters replaced
so that they can be properly processed by the PostgreSQL string literal
parser, and the <type>bytea</type> input function. A terminating zero
...
...
@@ -1143,8 +1144,11 @@ unsigned char *PQunescapeBytea(const unsigned char *from, size_t *to_length);
such as might be returned by <function>PQgetvalue</function> when applied to a
<type>bytea</type> column. <function>PQunescapeBytea</function> converts
this string representation into its binary representation.
It returns a pointer to a buffer allocated with <function>malloc()</function>, or null on error, and puts the size
of the buffer in <parameter>to_length</parameter>.
It returns a pointer to a buffer allocated with
<function>malloc()</function>, or null on error, and puts the size of
the buffer in <parameter>to_length</parameter>. The memory must be
freed using <function>PQfreemem()</>.
</para>
</listitem>
</varlistentry>
...
...
@@ -1161,7 +1165,9 @@ void PQfreemem(void *ptr);
<para>
Frees memory allocated by <application>libpq</>, particularly
<function>PQescapeBytea</function> and <function>PQunescapeBytea</function>.
<function>PQescapeBytea</function>,
<function>PQunescapeBytea</function>,
and <function>PQnotifies</function>.
It is needed by Win32, which can not free memory across
DLL's, unless multithreaded DLL's (/MD in VC6) are used.
</para>
...
...
@@ -1926,7 +1932,7 @@ typedef struct pgNotify {
} PGnotify;
</synopsis>
After processing a <structname>PGnotify</structname> object returned by <function>PQnotifies</function>,
be sure to free it with <function>
free()</function> to avoid a memory leak
.
be sure to free it with <function>
PQfreemem()</function>
.
</para>
<note>
...
...
@@ -2867,7 +2873,7 @@ main()
fprintf(stderr,
"ASYNC NOTIFY of '%s' from backend pid '%d' received\n",
notify->relname, notify->be_pid);
free
(notify);
PQfreemem
(notify);
}
}
...
...
src/bin/psql/common.c
View file @
f1792b93
...
...
@@ -3,7 +3,7 @@
*
* Copyright 2000 by PostgreSQL Global Development Group
*
* $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.6
1 2003/03/20 15:39:52
momjian Exp $
* $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.6
2 2003/03/25 02:44:36
momjian Exp $
*/
#include "postgres_fe.h"
#include "common.h"
...
...
@@ -441,7 +441,7 @@ PrintNotifications(void)
{
fprintf
(
pset
.
queryFout
,
gettext
(
"Asynchronous NOTIFY '%s' from backend with pid %d received.
\n
"
),
notify
->
relname
,
notify
->
be_pid
);
free
(
notify
);
PQfreemem
(
notify
);
fflush
(
pset
.
queryFout
);
}
}
...
...
src/interfaces/ecpg/ecpglib/execute.c
View file @
f1792b93
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.
4 2003/03/20 15:56:50 meskes
Exp $ */
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.
5 2003/03/25 02:44:36 momjian
Exp $ */
/*
* The aim is to get a simpler inteface to the database routines.
...
...
@@ -1197,7 +1197,7 @@ ECPGexecute(struct statement * stmt)
{
ECPGlog
(
"ECPGexecute line %d: ASYNC NOTIFY of '%s' from backend pid '%d' received
\n
"
,
stmt
->
lineno
,
notify
->
relname
,
notify
->
be_pid
);
ECPGfree
(
notify
);
PQfreemem
(
notify
);
}
return
status
;
...
...
src/interfaces/libpgtcl/pgtclId.c
View file @
f1792b93
...
...
@@ -13,7 +13,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.4
0 2003/02/01 00:22:12 tgl
Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.4
1 2003/03/25 02:44:36 momjian
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -554,7 +554,7 @@ Pg_Notify_EventProc(Tcl_Event *evPtr, int flags)
if
(
event
->
connid
==
NULL
)
{
if
(
event
->
notify
)
PQfree
Notify
(
event
->
notify
);
PQfree
mem
(
event
->
notify
);
return
1
;
}
...
...
@@ -634,7 +634,7 @@ Pg_Notify_EventProc(Tcl_Event *evPtr, int flags)
Tcl_Release
((
ClientData
)
event
->
connid
);
if
(
event
->
notify
)
PQfree
Notify
(
event
->
notify
);
PQfree
mem
(
event
->
notify
);
return
1
;
}
...
...
src/interfaces/libpq/fe-exec.c
View file @
f1792b93
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.12
7 2003/03/22 03:29:0
6 momjian Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.12
8 2003/03/25 02:44:3
6 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1577,20 +1577,6 @@ PQnotifies(PGconn *conn)
return
event
;
}
/*
* PQfreeNotify - free's the memory associated with a PGnotify
*
* This function is needed on Windows when using libpq.dll and
* for example libpgtcl.dll: All memory allocated inside a dll
* should be freed in the context of the same dll.
*
*/
void
PQfreeNotify
(
PGnotify
*
notify
)
{
free
(
notify
);
}
/*
* PQgetline - gets a newline-terminated string from the backend.
*
...
...
@@ -2470,3 +2456,22 @@ PQsendSome(PGconn *conn)
{
return
pqSendSome
(
conn
);
}
/*
* PQfreeNotify - free's the memory associated with a PGnotify
*
* This function is here only for binary backward compatibility.
* New code should use PQfreemem(). A macro will automatically map
* calls to PQfreemem. It should be removed in the future. bjm 2003-03-24
*/
#undef PQfreeNotify
void
PQfreeNotify
(
PGnotify
*
notify
);
void
PQfreeNotify
(
PGnotify
*
notify
)
{
PQfreemem
(
notify
);
}
src/interfaces/libpq/libpq-fe.h
View file @
f1792b93
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: libpq-fe.h,v 1.9
0 2003/03/22 03:29:0
6 momjian Exp $
* $Id: libpq-fe.h,v 1.9
1 2003/03/25 02:44:3
6 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -260,7 +260,8 @@ extern void PQfreemem(void *ptr);
/* Simple synchronous query */
extern
PGresult
*
PQexec
(
PGconn
*
conn
,
const
char
*
query
);
extern
PGnotify
*
PQnotifies
(
PGconn
*
conn
);
extern
void
PQfreeNotify
(
PGnotify
*
notify
);
/* Exists for backward compatibility. bjm 2003-03-24 */
#define PQfreeNotify(ptr) PQfreemem(ptr)
/* Interface for multiple-result or asynchronous queries */
extern
int
PQsendQuery
(
PGconn
*
conn
,
const
char
*
query
);
...
...
src/interfaces/python/pgmodule.c
View file @
f1792b93
...
...
@@ -2066,7 +2066,7 @@ pg_getnotify(pgobject * self, PyObject * args)
}
PyTuple_SET_ITEM
(
notify_result
,
1
,
temp
);
free
(
notify
);
PQfreemem
(
notify
);
}
else
{
...
...
src/test/examples/testlibpq2.c
View file @
f1792b93
...
...
@@ -98,7 +98,7 @@ main()
fprintf
(
stderr
,
"ASYNC NOTIFY of '%s' from backend pid '%d' received
\n
"
,
notify
->
relname
,
notify
->
be_pid
);
free
(
notify
);
PQfreemem
(
notify
);
break
;
}
PQclear
(
res
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment