diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml
index 4cd047ab34..1b76dca7a6 100644
--- a/doc/src/sgml/dfunc.sgml
+++ b/doc/src/sgml/dfunc.sgml
@@ -208,8 +208,8 @@ If the file you specify is
very simple, since the commands to do it are just:
# simple HP-UX example
-% cc +z +u -c foo.c
-% ld -b -o foo.sl foo.o
+% cc +z +u -c foo.c
+% ld -b -o foo.sl foo.o
@@ -221,21 +221,21 @@ If the file you specify is
Under SunOS 4.x, the commands look like:
# simple SunOS 4.x example
-% cc -PIC -c foo.c
-% ld -dc -dp -Bdynamic -o foo.so foo.o
+% cc -PIC -c foo.c
+% ld -dc -dp -Bdynamic -o foo.so foo.o
and the equivalent lines under Solaris 2.x are:
# simple Solaris 2.x example
-% cc -K PIC -c foo.c
-% ld -G -Bdynamic -o foo.so foo.o
+% cc -K PIC -c foo.c
+% ld -G -Bdynamic -o foo.so foo.o
or
# simple Solaris 2.x example
-% gcc -fPIC -c foo.c
-% ld -G -Bdynamic -o foo.so foo.o
+% gcc -fPIC -c foo.c
+% ld -G -Bdynamic -o foo.so foo.o
diff --git a/doc/src/sgml/libpgtcl.sgml b/doc/src/sgml/libpgtcl.sgml
index ed6758be9b..f917fb5b64 100644
--- a/doc/src/sgml/libpgtcl.sgml
+++ b/doc/src/sgml/libpgtcl.sgml
@@ -47,7 +47,7 @@ This package was originally written by Jolly Chen.
pg_select
- loop over the result of a select statement
+ loop over the result of a SELECT statement
pg_listen
@@ -76,7 +76,7 @@ This package was originally written by Jolly Chen.
pg_lo_lseek
- seek to a position on a large object
+ seek to a position in a large object
pg_lo_tell
@@ -168,14 +168,33 @@ proc getDBs { {host "localhost"} {port "5432"} } {
pg_connect -conninfo connectOptions
pg_connect dbName -host hostName
-port portNumber -tty
- pqtty
+ CLASS="PARAMETER">portNumber -tty pqtty
-options optionalBackendArgs
+1998-10-07
+
+Inputs (new style)
+
+
+
+
+ connectOptions
+
+
+A string of connection options, each written in the form keyword = value.
+
+
+
+
+
+
+
+
1997-12-24
Inputs (old style)
@@ -213,7 +232,7 @@ pg_connect dbName -host <
-tty pqtty
-(need information thomas 1997-12-24)
+Specifies file or tty for optional debug output from backend.
@@ -229,25 +248,6 @@ pg_connect dbName -host <
-
-
-1998-10-07
-
-Inputs (new style)
-
-
-
-
- connectOptions
-
-
-A string of connection options, each written in the form keyword = value.
-
-
-
-
-
-
1997-12-24
@@ -423,7 +423,8 @@ Each entry in the list is a sublist of the format:
{optname label dispchar dispsize value}
-where the optname is usable as an option in pg_connect -conninfo.
+where the optname is usable as an option in
+pg_connect -conninfo.
@@ -785,7 +786,7 @@ created too many query result objects.
pg_select
-loop over the result of a select statement
+loop over the result of a SELECT statement
pgtclconnecting
pg_connect
@@ -1500,7 +1501,7 @@ the actual string to write, not a variable name.
pg_lo_lseek
-seek to a position on a large object
+seek to a position in a large object
pgtclpositioning
pg_lo_lseek
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index 7caa0ce444..2291c88ae4 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -149,7 +149,7 @@ accepts and ignores this keyword for backward compatibility.)
-tty -- file or tty for optional debug output.
+tty -- file or tty for optional debug output from backend.
@@ -166,20 +166,20 @@ default values for unspecified options.
PQconninfoOption *PQconndefaults(void)
struct PQconninfoOption
- {
- char *keyword; /* The keyword of the option */
- char *envvar; /* Fallback environment variable name */
- char *compiled; /* Fallback compiled in default value */
- char *val; /* Options value */
- char *label; /* Label for field in connect dialog */
- char *dispchar; /* Character to display for this field
- in a connect dialog. Values are:
- "" Display entered value as is
- "*" Password field - hide value
- "D" Debug options - don't
- create a field by default */
- int dispsize; /* Field size in characters for dialog */
- };
+ {
+ char *keyword; /* The keyword of the option */
+ char *envvar; /* Fallback environment variable name */
+ char *compiled; /* Fallback compiled in default value */
+ char *val; /* Option's value */
+ char *label; /* Label for field in connect dialog */
+ char *dispchar; /* Character to display for this field
+ in a connect dialog. Values are:
+ "" Display entered value as is
+ "*" Password field - hide value
+ "D" Debug options - don't
+ create a field by default */
+ int dispsize; /* Field size in characters for dialog */
+ };
Returns the address of the connection options structure. This may
@@ -409,18 +409,18 @@ soon.)
Returns the result status of the query. PQresultStatus can return one of the following values:
PGRES_EMPTY_QUERY,
-PGRES_COMMAND_OK, /* the query was a command returning no data */
-PGRES_TUPLES_OK, /* the query successfully returned tuples */
-PGRES_COPY_OUT, /* Copy Out (from server) data transfer started */
-PGRES_COPY_IN, /* Copy In (to server) data transfer started */
-PGRES_BAD_RESPONSE, /* an unexpected response was received */
+PGRES_COMMAND_OK, /* the query was a command returning no data */
+PGRES_TUPLES_OK, /* the query successfully returned tuples */
+PGRES_COPY_OUT, /* Copy Out (from server) data transfer started */
+PGRES_COPY_IN, /* Copy In (to server) data transfer started */
+PGRES_BAD_RESPONSE, /* an unexpected response was received */
PGRES_NONFATAL_ERROR,
PGRES_FATAL_ERROR
If the result status is PGRES_TUPLES_OK, then the
routines described below can be used to retrieve the
tuples returned by the query. Note that a SELECT that
- happens to retrieve zero tuples still shows PGRES_TUPLES_OK;
+ happens to retrieve zero tuples still shows PGRES_TUPLES_OK.
PGRES_COMMAND_OK is for commands that can never return tuples.
@@ -522,13 +522,15 @@ Oid PQftype(PGresult *res,
PQfsize
Returns the size in bytes of the field
- associated with the given field index. If the size
- returned is -1, the field is a variable length
- field. Field indices start at 0.
+ associated with the given field index.
+ Field indices start at 0.
int PQfsize(PGresult *res,
int field_index);
+ PQfsize returns the space allocated for this field in a database
+ tuple, in other words the size of the server's binary representation
+ of the data type. -1 is returned if the field is variable size.
@@ -558,11 +560,12 @@ char* PQgetvalue(PGresult *res,
For most queries, the value returned by PQgetvalue
is a null-terminated ASCII string representation
- of the attribute value. If the query extracted data from
- a BINARY cursor, then the value returned by
+ of the attribute value. But if PQbinaryTuples() is TRUE,
+ the value returned by
PQgetvalue is the binary representation of the
- type in the internal format of the backend server.
- It is the programmer's responsibility to cast and
+ type in the internal format of the backend server
+ (but not including the size word, if the field is variable-length).
+ It is then the programmer's responsibility to cast and
convert the data to the correct C type. The pointer
returned by PQgetvalue points to storage that is
part of the PGresult structure. One should not modify it,
@@ -572,6 +575,22 @@ char* PQgetvalue(PGresult *res,
+
+
+PQgetlength
+ Returns the length of a field (attribute) in bytes.
+ Tuple and field indices start at 0.
+
+int PQgetlength(PGresult *res,
+ int tup_num,
+ int field_num);
+
+This is the actual data length for the particular data value, that is the
+size of the object pointed to by PQgetvalue. Note that for ASCII-represented
+values, this size has little to do with the binary size reported by PQfsize.
+
+
+
PQgetisnull
@@ -589,27 +608,6 @@ int PQgetisnull(PGresult *res,
-
-
-PQgetlength
- Returns the length of a field
- (attribute) in bytes.
- Tuple and field indices start at 0.
-
-int PQgetlength(PGresult *res,
- int tup_num,
- int field_num);
-
-This is the actual data length for the particular data value,
-whereas PQfsize shows the allocated space for all entries in
-this column.
-If the field is a struct
- varlena, the length returned here does not include
- the size field of the varlena, i.e., it is 4 bytes
- less.
-
-
-
PQcmdStatus
@@ -658,18 +656,18 @@ void PQprint(FILE* fout, /* output stream */
PQprintOpt* po);
struct _PQprintOpt
- {
- pqbool header; /* print output field headings and row count */
- pqbool align; /* fill align the fields */
- pqbool standard; /* old brain dead format */
- pqbool html3; /* output html tables */
- pqbool expanded; /* expand tables */
- pqbool pager; /* use pager for output if needed */
- char *fieldSep; /* field separator */
- char *tableOpt; /* insert to HTML <table ...> */
- char *caption; /* HTML <caption> */
- char **fieldName; /* null terminated array of replacement field names */
- };
+ {
+ pqbool header; /* print output field headings and row count */
+ pqbool align; /* fill align the fields */
+ pqbool standard; /* old brain dead format */
+ pqbool html3; /* output html tables */
+ pqbool expanded; /* expand tables */
+ pqbool pager; /* use pager for output if needed */
+ char *fieldSep; /* field separator */
+ char *tableOpt; /* insert to HTML <table ...> */
+ char *caption; /* HTML <caption> */
+ char **fieldName; /* null terminated array of replacement field names */
+ };
This function is intended to replace PQprintTuples(), which is
now obsolete. The psql program uses
@@ -855,8 +853,8 @@ was actually collected. After calling PQconsumeInput,
the application may check PQisBusy and/or PQnotifies to see if their state
has changed.
PQconsumeInput may be called even if the application is not
- prepared to deal with a result or notification just yet.
- It will read available data and save it in a buffer, thereby
+ prepared to deal with a result or notification just yet. The
+ routine will read available data and save it in a buffer, thereby
causing a select(2) read-ready indication to go away. The
application can thus use PQconsumeInput to clear the select
condition immediately, and then examine the results at leisure.
@@ -958,14 +956,17 @@ or the backend is not currently processing a query.
Fast Path
+
+Postgres provides a fast path interface to send
+function calls to the backend. This is a trapdoor into system internals and
+can be a potential security hole. Most users will not need this feature.
+
-Postgres provides a fast path interface to send function
- calls to the backend. This is a trapdoor into
- system internals and can be a potential security hole.
- Most users will not need this feature.
+PQfn
+ Request execution of a backend function via the fast path interface.
PGresult* PQfn(PGconn* conn,
int fnid,
@@ -979,12 +980,15 @@ PGresult* PQfn(PGconn* conn,
executed.
result_buf is the buffer in which
to place the return value. The caller must have allocated
- sufficient space to store the return value. The
- result length will be returned in the storage pointed
- to by result_len. If the result is to be an integer
- value, than result_is_int should be set to 1; otherwise
- it should be set to 0. args and nargs specify the
- arguments to the function.
+ sufficient space to store the return value (there is no check!).
+ The actual result length will be returned in the integer pointed
+ to by result_len. If a 4-byte integer result is expected, set
+ result_is_int to 1; otherwise set it to 0. (Setting result_is_int to 1
+ tells libpq to byte-swap the value if necessary, so that it is
+ delivered as a proper int value for the client machine. When
+ result_is_int is 0, the byte string sent by the backend is returned
+ unmodified.)
+ args and nargs specify the arguments to be passed to the function.
typedef struct {
int len;
@@ -1037,9 +1041,19 @@ messages can be detected by calling PQnotifies().
removed from the list of notifications.
PGnotify* PQnotifies(PGconn *conn);
+
+typedef struct pgNotify
+ {
+ char relname[NAMEDATALEN]; /* name of relation
+ * containing data */
+ int be_pid; /* process id of backend */
+ } PGnotify;
After processing a PGnotify object returned by PQnotifies,
be sure to free it with free() to avoid a memory leak.
+ NOTE: in Postgres 6.4 and later,
+ the be_pid is the notifying backend's, whereas in earlier versions
+ it was always your own backend's PID.
@@ -1307,7 +1321,7 @@ defaultNoticeProcessor(void * arg, const char * message)
To use a special notice processor, call PQsetNoticeProcessor just after
-any creation of a new PGconn object.
+creation of a new PGconn object.
@@ -1565,8 +1579,8 @@ main()
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
- fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
+ fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
@@ -1612,14 +1626,14 @@ main()
/* first, print out the attribute names */
nFields = PQnfields(res);
for (i = 0; i < nFields; i++)
- printf("%-15s", PQfname(res, i));
+ printf("%-15s", PQfname(res, i));
printf("\n\n");
/* next, print out the instances */
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < nFields; j++)
- printf("%-15s", PQgetvalue(res, i, j));
+ printf("%-15s", PQgetvalue(res, i, j));
printf("\n");
}
@@ -1713,8 +1727,8 @@ main()
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
- fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
+ fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
@@ -1746,7 +1760,7 @@ main()
while ((notify = PQnotifies(conn)) != NULL)
{
fprintf(stderr,
- "ASYNC NOTIFY of '%s' from backend pid '%d' received\n",
+ "ASYNC NOTIFY of '%s' from backend pid '%d' received\n",
notify->relname, notify->be_pid);
free(notify);
}
@@ -1841,8 +1855,8 @@ main()
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
- fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
- fprintf(stderr, "%s", PQerrorMessage(conn));
+ fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
+ fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
@@ -1888,7 +1902,7 @@ main()
for (i = 0; i < 3; i++)
{
- printf("type[%d] = %d, size[%d] = %d\n",
+ printf("type[%d] = %d, size[%d] = %d\n",
i, PQftype(res, i),
i, PQfsize(res, i));
}
@@ -1910,13 +1924,13 @@ main()
*/
pval = (POLYGON *) malloc(plen + VARHDRSZ);
pval->size = plen;
- memmove((char *) &pval->npts, PQgetvalue(res, i, p_fnum), plen);
- printf("tuple %d: got\n", i);
- printf(" i = (%d bytes) %d,\n",
+ memmove((char *) &pval->npts, PQgetvalue(res, i, p_fnum), plen);
+ printf("tuple %d: got\n", i);
+ printf(" i = (%d bytes) %d,\n",
PQgetlength(res, i, i_fnum), *ival);
- printf(" d = (%d bytes) %f,\n",
+ printf(" d = (%d bytes) %f,\n",
PQgetlength(res, i, d_fnum), *dval);
- printf(" p = (%d bytes) %d points \tboundbox = (hi=%f/%f, lo = %f,%f)\n",
+ printf(" p = (%d bytes) %d points \tboundbox = (hi=%f/%f, lo = %f,%f)\n",
PQgetlength(res, i, d_fnum),
pval->npts,
pval->boundbox.xh,
diff --git a/doc/src/sgml/lobj.sgml b/doc/src/sgml/lobj.sgml
index a7bed5001a..0ec632f241 100644
--- a/doc/src/sgml/lobj.sgml
+++ b/doc/src/sgml/lobj.sgml
@@ -284,7 +284,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
*/
fd = open(filename, O_RDONLY, 0666);
if (fd < 0) { /* error */
- fprintf(stderr, "can't open unix file
+ fprintf(stderr, "can't open unix file %s\n", filename);
}
/*
@@ -292,7 +292,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
*/
lobjId = lo_creat(conn, INV_READ|INV_WRITE);
if (lobjId == 0) {
- fprintf(stderr, "can't create large object");
+ fprintf(stderr, "can't create large object\n");
}
lobj_fd = lo_open(conn, lobjId, INV_WRITE);
@@ -302,7 +302,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
while ((nbytes = read(fd, buf, BUFSIZE)) > 0) {
tmp = lo_write(conn, lobj_fd, buf, nbytes);
if (tmp < nbytes) {
- fprintf(stderr, "error while reading
+ fprintf(stderr, "error while reading large object\n");
}
}
@@ -321,7 +321,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
lobj_fd = lo_open(conn, lobjId, INV_READ);
if (lobj_fd < 0) {
- fprintf(stderr,"can't open large object %d",
+ fprintf(stderr,"can't open large object %d\n",
lobjId);
}
@@ -335,7 +335,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
fprintf(stderr,">>> %s", buf);
nread += nbytes;
}
- fprintf(stderr,"0);
+ fprintf(stderr,"\n");
lo_close(conn, lobj_fd);
}
@@ -349,7 +349,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
lobj_fd = lo_open(conn, lobjId, INV_READ);
if (lobj_fd < 0) {
- fprintf(stderr,"can't open large object %d",
+ fprintf(stderr,"can't open large object %d\n",
lobjId);
}
@@ -365,7 +365,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
nbytes = lo_write(conn, lobj_fd, buf + nwritten, len - nwritten);
nwritten += nbytes;
}
- fprintf(stderr,"0);
+ fprintf(stderr,"\n");
lo_close(conn, lobj_fd);
}
@@ -385,7 +385,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
*/
lobj_fd = lo_open(conn, lobjId, INV_READ);
if (lobj_fd < 0) {
- fprintf(stderr,"can't open large object %d",
+ fprintf(stderr,"can't open large object %d\n",
lobjId);
}
@@ -394,7 +394,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
*/
fd = open(filename, O_CREAT|O_WRONLY, 0666);
if (fd < 0) { /* error */
- fprintf(stderr, "can't open unix file
+ fprintf(stderr, "can't open unix file %s\n",
filename);
}
@@ -404,7 +404,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
while ((nbytes = lo_read(conn, lobj_fd, buf, BUFSIZE)) > 0) {
tmp = write(fd, buf, nbytes);
if (tmp < nbytes) {
- fprintf(stderr,"error while writing
+ fprintf(stderr,"error while writing %s\n",
filename);
}
}
@@ -432,7 +432,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
PGresult *res;
if (argc != 4) {
- fprintf(stderr, "Usage: %s database_name in_filename out_filename0,
+ fprintf(stderr, "Usage: %s database_name in_filename out_filename\n",
argv[0]);
exit(1);
}
@@ -448,7 +448,7 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
/* check to see that the backend connection was successfully made */
if (PQstatus(conn) == CONNECTION_BAD) {
- fprintf(stderr,"Connection to database '%s' failed.0, database);
+ fprintf(stderr,"Connection to database '%s' failed.\n", database);
fprintf(stderr,"%s",PQerrorMessage(conn));
exit_nicely(conn);
}
@@ -456,20 +456,20 @@ SELECT lo_export(image.raster, "/tmp/motd") from image
res = PQexec(conn, "begin");
PQclear(res);
- printf("importing file
+ printf("importing file %s\n", in_filename);
/* lobjOid = importFile(conn, in_filename); */
lobjOid = lo_import(conn, in_filename);
/*
- printf("as large object %d.0, lobjOid);
+ printf("as large object %d.\n", lobjOid);
- printf("picking out bytes 1000-2000 of the large object0);
+ printf("picking out bytes 1000-2000 of the large object\n");
pickout(conn, lobjOid, 1000, 1000);
- printf("overwriting bytes 1000-2000 of the large object with X's0);
+ printf("overwriting bytes 1000-2000 of the large object with X's\n");
overwrite(conn, lobjOid, 1000, 1000);
*/
- printf("exporting large object to file
+ printf("exporting large object to file %s\n", out_filename);
/* exportFile(conn, lobjOid, out_filename); */
lo_export(conn, lobjOid,out_filename);
diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index 582b0b1208..5bad947016 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -691,13 +691,14 @@ AsciiRow (B)
-
A bit map with one bit for each field in the row. The 1st
- field corresponds to bit 7 of the 1st byte, the 2nd field
- corresponds to bit 6 of the 1st byte, the 8th field corresponds
- to bit 0 of the 1st byte, the 9th field corresponds to bit 8 of
- the 2nd byte, and so on. The bit is set if the value of the
- corresponding field is not NULL.
+ field corresponds to bit 7 (MSB) of the 1st byte, the 2nd
+ field corresponds to bit 6 of the 1st byte, the 8th field
+ corresponds to bit 0 (LSB) of the 1st byte, the 9th field
+ corresponds to bit 7 of the 2nd byte, and so on. Each bit
+ is set if the value of the corresponding field is not NULL.
+ If the number of fields is not a multiple of 8, the remainder
+ of the last byte in the bit map is wasted.
Then, for each field with a non-NULL value, there is the following:
@@ -720,7 +721,10 @@ AsciiRow (B)
Specifies the value of the field itself in ASCII
- characters. n is the above size minus 4.
+ characters. n is the above
+ size minus 4.
+ There is no trailing '\0' in the field data; the front
+ end must add one if it wants one.
@@ -985,11 +989,13 @@ BinaryRow (B)
A bit map with one bit for each field in the row. The 1st
- field corresponds to bit 7 of the 1st byte, the 2nd field
- corresponds to bit 6 of the 1st byte, the 8th field corresponds
- to bit 0 of the 1st byte, the 9th field corresponds to bit 8 of
- the 2nd byte, and so on. The bit is set if the value of the
- corresponding field is not NULL.
+ field corresponds to bit 7 (MSB) of the 1st byte, the 2nd
+ field corresponds to bit 6 of the 1st byte, the 8th field
+ corresponds to bit 0 (LSB) of the 1st byte, the 9th field
+ corresponds to bit 7 of the 2nd byte, and so on. Each bit
+ is set if the value of the corresponding field is not NULL.
+ If the number of fields is not a multiple of 8, the remainder
+ of the last byte in the bit map is wasted.
Then, for each field with a non-NULL value, there is the following:
@@ -1561,7 +1567,7 @@ NotificationResponse (B)
- The process ID of the backend process.
+ The process ID of the notifying backend process.
@@ -1571,7 +1577,7 @@ NotificationResponse (B)
- The name of the relation that the notify has been raised on.
+ The name of the condition that the notify has been raised on.
@@ -1664,7 +1670,7 @@ RowDescription (B)
- Specifies the number of fields in a row (and may be zero).
+ Specifies the number of fields in a row (may be zero).
Then, for each field, there is the following:
@@ -1756,7 +1762,7 @@ StartupPacket (F)
- The database name, defaults to the user name if omitted.
+ The database name, defaults to the user name if empty.
diff --git a/doc/src/sgml/ref/notify.sgml b/doc/src/sgml/ref/notify.sgml
index 0404de2c30..90b361b060 100644
--- a/doc/src/sgml/ref/notify.sgml
+++ b/doc/src/sgml/ref/notify.sgml
@@ -73,6 +73,9 @@ Acknowledgement that notify command has executed.
+
+
+
Notify events
@@ -84,9 +87,6 @@ application reacts depends on its programming.
-
-
-
diff --git a/doc/src/sgml/ref/unlisten.sgml b/doc/src/sgml/ref/unlisten.sgml
index b353ff6f68..5ba9f2c551 100644
--- a/doc/src/sgml/ref/unlisten.sgml
+++ b/doc/src/sgml/ref/unlisten.sgml
@@ -104,7 +104,7 @@ The backend does not complain if you UNLISTEN something you were not
listening for.
-Each backend will automatically execute UNLISTEN "*" when
+Each backend will automatically execute UNLISTEN * when
exiting.
diff --git a/doc/src/sgml/start.sgml b/doc/src/sgml/start.sgml
index 0567e3a554..520823646b 100644
--- a/doc/src/sgml/start.sgml
+++ b/doc/src/sgml/start.sgml
@@ -27,7 +27,7 @@ to this guide when the installation is complete.
Throughout this manual, any examples that begin with
- the character &percnt
are commands that should be typed
+ the character %
are commands that should be typed
at the UNIX shell prompt. Examples that begin with the
character *
are commands in the Postgres query
language, Postgres SQL.
diff --git a/doc/src/sgml/xtypes.sgml b/doc/src/sgml/xtypes.sgml
index b1e592ea49..8d8b73bc60 100644
--- a/doc/src/sgml/xtypes.sgml
+++ b/doc/src/sgml/xtypes.sgml
@@ -51,7 +51,7 @@
{
double x, y;
Complex *result;
- if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2) {
+ if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2) {
elog(WARN, "complex_in: error in parsing
return NULL;
}
@@ -71,7 +71,7 @@
if (complex == NULL)
return(NULL);
result = (char *) palloc(60);
- sprintf(result, "(%g,%g)", complex->x, complex->y);
+ sprintf(result, "(%g,%g)", complex->x, complex->y);
return(result);
}