From: Tom Lane Date: Sat, 17 Oct 1998 22:02:21 +0000 (+0000) Subject: Minor documentation improvements and markup fixes. X-Git-Tag: REL9_0_0~26326 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=5f27ac6b5ec198715dd2e888e83b304867d09a4c;p=pg-rex%2Fsyncrep.git Minor documentation improvements and markup fixes. --- 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 <REPLACEABLE CLASS="PARAMETER">dbName</REPLACEABLE> <OPTIONAL>-host < <OPTIONAL>-tty <REPLACEABLE CLASS="PARAMETER">pqtty</REPLACEABLE></OPTIONAL> </TERM> <LISTITEM> -<PARA>(need information thomas 1997-12-24) +<PARA>Specifies file or tty for optional debug output from backend. </PARA> </LISTITEM> </VARLISTENTRY> @@ -229,25 +248,6 @@ pg_connect <REPLACEABLE CLASS="PARAMETER">dbName</REPLACEABLE> <OPTIONAL>-host < </VARIABLELIST> </REFSECT2> -<REFSECT2 ID="R2-PGTCL-PGCONNECT-2"> -<REFSECT2INFO> -<DATE>1998-10-07</DATE> -</REFSECT2INFO> -<TITLE>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, @@ -574,39 +577,34 @@ char* PQgetvalue(PGresult *res, -PQgetisnull - Tests a field for a NULL entry. - Tuple and field indices start at 0. +PQgetlength + Returns the length of a field (attribute) in bytes. + Tuple and field indices start at 0. -int PQgetisnull(PGresult *res, +int PQgetlength(PGresult *res, int tup_num, int field_num); - This function returns 1 if the field contains a NULL, 0 if - it contains a non-null value. (Note that PQgetvalue - will return an empty string, not a null pointer, for a NULL - field.) +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. -PQgetlength - Returns the length of a field - (attribute) in bytes. - Tuple and field indices start at 0. +PQgetisnull + Tests a field for a NULL entry. + Tuple and field indices start at 0. -int PQgetlength(PGresult *res, +int PQgetisnull(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. + This function returns 1 if the field contains a NULL, 0 if + it contains a non-null value. (Note that PQgetvalue + will return an empty string, not a null pointer, for a NULL + field.) @@ -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. @@ -959,13 +957,16 @@ 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); }