Developer's Frequently Asked Questions (FAQ) for PostgreSQL
- Last updated: Fri Jun 9 21:54:54 EDT 2000
+ Last updated: Mon Nov 26 21:48:19 EST 2001
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
14) Why don't we use threads in the backend?
15) How are RPM's packaged?
16) How are CVS branches handled?
+ 17) How do I get involved in PostgreSQL development?
_________________________________________________________________
1) What tools are available for developers?
15) How are RPM's packaged?
- This is from Lamar Owen:
+ This was written by Lamar Owen:
As to how the RPMs are built -- to answer that question sanely requires
me to know how much experience you have with the whole RPM paradigm.
'How is the RPM built?' is a multifaceted question. The obvious simple
answer is that I maintain:
- 1.) A set of patches to make certain portions of the source
- tree 'behave' in the different environment of the RPMset;
- 2.) The initscript;
- 3.) Any other ancilliary scripts and files;
- 4.) A README.rpm-dist document that tries to adequately document
- both the differences between the RPM build and the WHY of the
- differences, as well as useful RPM environment operations
- (like, using syslog, upgrading, getting postmaster to
- start at OS boot, etc);
- 5.) The spec file that throws it all together. This is not a
- trivial undertaking in a package of this size.
+ 1.) A set of patches to make certain portions of the source
+ tree 'behave' in the different environment of the RPMset;
+ 2.) The initscript;
+ 3.) Any other ancilliary scripts and files;
+ 4.) A README.rpm-dist document that tries to adequately document
+ both the differences between the RPM build and the WHY of the
+ differences, as well as useful RPM environment operations
+ (like, using syslog, upgrading, getting postmaster to
+ start at OS boot, etc);
+ 5.) The spec file that throws it all together. This is not a
+ trivial undertaking in a package of this size.
I then download and build on as many different canonical distributions
as I can -- currently I am able to build on Red Hat 6.2, 7.0, and 7.1 on
that names attached to four-number versions where the third number is
zero represent branches, the others are just tags. Here we can see that
the extant branches are
- REL7_1_STABLE
- REL7_0_PATCHES
- REL6_5_PATCHES
+ REL7_1_STABLE
+ REL7_0_PATCHES
+ REL6_5_PATCHES
The next commit to the head will be revision 1.107, whereas any changes
committed into the REL7_1_STABLE branch will have revision numbers like
1.106.2.*, corresponding to the branch number 1.106.0.2 (don't ask where
Normally, to checkout the head branch, you just cd to the place you
want to contain the toplevel "pgsql" directory and say
- cvs ... checkout pgsql
+ cvs ... checkout pgsql
To get a past branch, you cd to whereever you want it and say
- cvs ... checkout -r BRANCHNAME pgsql
+ cvs ... checkout -r BRANCHNAME pgsql
For example, just a couple days ago I did
- mkdir ~postgres/REL7_1
- cd ~postgres/REL7_1
- cvs ... checkout -r REL7_1_STABLE pgsql
+ mkdir ~postgres/REL7_1
+ cd ~postgres/REL7_1
+ cvs ... checkout -r REL7_1_STABLE pgsql
and now I have a maintenance copy of 7.1.*.
Also, Ian Lance Taylor points out that branches and tags can be
distiguished by using "cvs status -v".
+
+ 17) How go I get involved in PostgreSQL development?
+
+ This was written by Lamar Owen:
+> If someone was interested in joining the development team, where would
+> they...
+> - Find a description of the open source development process used by the
+> PostgreSQL team.
+
+Read HACKERS for six months (or a full release cycle, whichever is longer).
+Really. HACKERS _is_the process. The process is not well documented (AFAIK
+-- it may be somewhere that I am not aware of) -- and it changes continually.
+
+> - Find the development environment (OS, system, compilers, etc)
+> required to develop code.
+
+Developers Corner on the website has links to this information. The
+distribution tarball itself includes all the extra tools and documents that
+go beyond a good Unix-like development environment. In general, a modern
+unix with a modern gcc, GNU make or equivalent, autoconf (of a particular
+version), and good working knowledge of those tools are required.
+
+> - Find an area or two that needs some support.
+
+The TODO list.
+
+You've made the first step, by finding and subscribing to HACKERS. Once you
+find an area to look at in the TODO, and have read the documentation on the
+internals, etc, then you check out a current CVS,write what you are going to
+write (keeping your CVS checkout up to date in the process), and make up a
+patch (as a context diff only) and send to the PATCHES list, prefereably.
+
+Discussion on the patch typically happens here. If the patch adds a major
+feature, it would be a good idea to talk about it first on the HACKERS list,
+in order to increase the chances of it being accepted, as well as toavoid
+duplication of effort. Note that experienced developers with a proven track
+record usually get the big jobs -- for more than one reason. Also note that
+PostgreSQL is highly portable -- nonportable code will likely be dismissed
+out of hand.
+
+Once your contributions get accepted, things move from there. Typically, you
+would be added as a developer on the list on the website when one of the
+other developers recommends it. Membership on the steering committee is by
+invitation only, by the other steering committee members, from what I have
+gathered watching froma distance.
+
+I make these statements from having watched the process for over two years.
+
+To see a good example of how one goes about this, search the archives for the
+name 'Tom Lane' and see what his first post consisted of, and where he took
+things. In particular, note that this hasn't been _that_ long ago -- and his
+bugfixing and general deep knowledge with this codebase is legendary. Take a
+few days to read after him. And pay special attention to both the sheer
+quantity as well as the painstaking quality of his work. Both are in high
+demand.
# simplified Chinese translation file for libpq
# Weiping He <laser@zhengmai.com.cn>, 2001
#
-#, fuzzy
+# $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/zh_CN.po,v 1.2 2001/11/27 17:51:54 momjian Exp $
+#
msgid ""
msgstr ""
"Project-Id-Version: PostgreSQL 7.2\n"
-"POT-Creation-Date: 2001-10-01 10:02+0800\n"
-"PO-Revision-Date: 2001-10-01 23:42:27+0800\n"
+"POT-Creation-Date: 2001-11-27 20:20+0800\n"
+"PO-Revision-Date: 2001-11-27 20:22:06+0800\n"
"Last-Translator: Weiping He <laser@zhengmai.com.cn>\n"
"Language-Team: Weiping He <laser@zhengmai.com.cn>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=gb_2312\n"
+"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"
-#: fe-auth.c:229
+#: fe-auth.c:228
#, c-format
msgid "Kerberos 4 error: %s\n"
msgstr "Kerberos 4 ´íÎó: %s\n"
-#: fe-auth.c:393
+#: fe-auth.c:391
#, c-format
msgid "could not set socket to blocking mode: %s\n"
msgstr "ÎÞ·¨½«Ì×½Ó×ÖÉèÖÃΪ×èÈûģʽ: %s\n"
-#: fe-auth.c:409
+#: fe-auth.c:407
#, c-format
msgid "Kerberos 5 authentication rejected: %*s\n"
msgstr "kerberos 5 ÈÏÖ¤¾Ü¾ø: %*s\n"
-#: fe-auth.c:429
+#: fe-auth.c:427
#, c-format
msgid "could not restore non-blocking mode on socket: %s\n"
-msgstr "ÎÞ·¨ÔÚÌ×½Ó×Ö: %s Éϻظ´·Ç×èÈûģʽ\n"
+msgstr "ÎÞ·¨ÔÚÌ×½Ó×Ö: %s Éϻָ´·Ç×èÈûģʽ\n"
-#: fe-auth.c:573
+#: fe-auth.c:490
+msgid "SCM_CRED authentication method not supported\n"
+msgstr "²»Ö§³Ö SCM_CRED ÈÏÖ¤·½Ê½\n"
+
+#: fe-auth.c:576
msgid "Kerberos 4 authentication failed\n"
msgstr "Kerberos 4 ÈÏ֤ʧ°Ü\n"
-#: fe-auth.c:579
+#: fe-auth.c:582
msgid "Kerberos 4 authentication not supported\n"
msgstr "²»Ö§³Ö Kerberos 4 ÈÏÖ¤\n"
-#: fe-auth.c:590
+#: fe-auth.c:593
msgid "Kerberos 5 authentication failed\n"
msgstr "Kerberos 5 ÈÏ֤ʧ°Ü\n"
-#: fe-auth.c:596
+#: fe-auth.c:599
msgid "Kerberos 5 authentication not supported\n"
msgstr "²»Ö§³Ö Kerberos 5 ÈÏÖ¤\n"
-#: fe-auth.c:623
-msgid "SCM_CRED authentication method not supported\n"
-msgstr "²»Ö§³Ö SCM_CRED ÈÏÖ¤·½Ê½\n"
-
-#: fe-auth.c:630
+#: fe-auth.c:627
#, c-format
msgid "authentication method %u not supported\n"
msgstr "²»Ö§³Ö %u ÈÏÖ¤·½Ê½\n"
-#: fe-auth.c:667
+#: fe-auth.c:664
#, c-format
msgid "invalid authentication service name \"%s\", ignored\n"
msgstr "ºöÂÔ·Ç·¨ÈÏÖ¤·þÎñÃû \"%s\"\n"
-#: fe-auth.c:724
+#: fe-auth.c:721
#, c-format
msgid "fe_getauthname: invalid authentication system: %d\n"
msgstr "fe_getauthname: ÎÞЧµÄÈÏ֤ϵͳ: %d\n"
msgid "could not determine the PostgreSQL user name to use\n"
msgstr "ÎÞ·¨ÅжÏҪʹÓÃµÄ PostgreSQL Óû§Ãû\n"
-#: fe-connect.c:705
+#: fe-connect.c:703
#, c-format
msgid "could not set socket to non-blocking mode: %s\n"
msgstr "ÎÞ·¨½«Ì×½Ó×ÖÉèÖÃΪ·Ç×èÈûģʽ: %s\n"
-#: fe-connect.c:729
+#: fe-connect.c:727
#, c-format
msgid "could not set socket to TCP no delay mode: %s\n"
msgstr "ÎÞ·¨½«Ì×½Ó×ÖÉèÖÃΪ TCP ÎÞÑÓ³Ùģʽ: %s\n"
-#: fe-connect.c:749
+#: fe-connect.c:747
#, c-format
msgid ""
"could not connect to server: %s\n"
"\t·þÎñÆ÷ÊÇ·ñÔÚ±¾µØÔËÐв¢ÇÒÔÚ Unix ÓòÌ×½Ó×Ö\n"
"\t\"%s\"ÉÏ×¼±¸½ÓÊÜÁª½Ó?\n"
-#: fe-connect.c:758
+#: fe-connect.c:756
#, c-format
msgid ""
"could not connect to server: %s\n"
"\t·þÎñÆ÷ÊÇ·ñÔÚÖ÷»ú %s ÉÏÔËÐв¢ÇÒ×¼±¸½ÓÊÜÔڶ˿Ú\n"
"%s É쵀 TCP/IP Áª½Ó?\n"
-#: fe-connect.c:823
+#: fe-connect.c:820
#, c-format
msgid "invalid host address: %s\n"
msgstr "ÎÞЧµÄÖ÷»úµØÖ·: %s\n"
-#: fe-connect.c:842
+#: fe-connect.c:839
#, c-format
msgid "unknown host name: %s\n"
msgstr "δ֪Ö÷»úÃû: %s\n"
-#: fe-connect.c:884
+#: fe-connect.c:881
#, c-format
msgid "could not create socket: %s\n"
msgstr "ÎÞ·¨´´½¨Ì×½Ó×Ö: %s\n"
-#: fe-connect.c:947
+#: fe-connect.c:944
#, c-format
msgid "could not send SSL negotiation packet: %s\n"
msgstr "ÎÞ·¨·¢ËÍ SSL ÎÕÊÖ°ü: %s\n"
-#: fe-connect.c:955
+#: fe-connect.c:952
#, c-format
msgid "could not receive server response to SSL negotiation packet: %s\n"
msgstr "ÎÞ·¨ÊÕµ½·þÎñÆ÷¶Ô SSL ÎÕÊÖ°üµÄÏìÓ¦: %s\n"
-#: fe-connect.c:969
+#: fe-connect.c:966
#, c-format
msgid "could not create SSL context: %s\n"
msgstr "ÎÞ·¨´´½¨ SSL »·¾³: %s\n"
-#: fe-connect.c:979
+#: fe-connect.c:976
#, c-format
msgid "could not establish SSL connection: %s\n"
msgstr "ÎÞ·¨½¨Á¢ SSL Áª½Ó: %s\n"
-#: fe-connect.c:997
+#: fe-connect.c:999
#, c-format
msgid "received invalid response to SSL negotiation: %c\n"
msgstr "ÊÕµ½¶Ô SSL ÎÕÊÖµÄÎÞЧÏìÓ¦: %c\n"
-#: fe-connect.c:1006
+#: fe-connect.c:1008
msgid "server does not support SSL, but SSL was required\n"
msgstr "·þÎñÆ÷²»Ö§³Ö SSL, µ«ÊÇÒªÇóʹÓà SSL\n"
msgid "expected authentication request from server, but received %c\n"
msgstr "ÆÚ´ýÀ´×Ô·þÎñÆ÷µÄÈÏÖ¤ÇëÇó, È´ÊÕµ½ %c\n"
-#: fe-connect.c:1433
+#: fe-connect.c:1432
msgid "unexpected message from server during startup\n"
msgstr "Æô¶¯¹ý³ÌÖÐÊÕµ½À´×Ô·þÎñÆ÷µÄ·ÇÔ¤ÆÚÐÅÏ¢\n"
-#: fe-connect.c:1492
+#: fe-connect.c:1491
#, c-format
msgid "invalid connection state %c, probably indicative of memory corruption\n"
msgstr "ÎÞЧµÄÁª½Ó״̬ %c, ¿ÉÄÜÊÇ´æ´¢Æ÷Êý¾Ý±»ÆÆ»µµÄ±êÖ¾\n"
-#: fe-connect.c:1592
+#: fe-connect.c:1590
#, c-format
msgid "invalid setenv state %c, probably indicative of memory corruption\n"
msgstr "ÎÞЧµÄ setenv ״̬ %c, ¿ÉÄÜÊÇ´æ´¢Æ÷Êý¾Ý±»ÆÆ»µµÄ±êÖ¾\n"
-#: fe-connect.c:1633
+#: fe-connect.c:1630
#, c-format
msgid "invalid encoding name in PGCLIENTENCODING: %s\n"
msgstr "ÔÚ PGCLIENTENCODING ÖеķǷ¨±àÂëÃû: %s\n"
-#: fe-connect.c:1758
+#: fe-connect.c:1755
#, c-format
msgid "invalid state %c, probably indicative of memory corruption\n"
msgstr "ÎÞЧ״̬ %c, ¿ÉÄÜÊÇ´æ´¢Æ÷Êý¾Ý±»ÆÆ»µµÄ±êÖ¾\n"
-#: fe-connect.c:2379 fe-connect.c:2388 fe-exec.c:1128 fe-lobj.c:527
+#: fe-connect.c:2374 fe-connect.c:2383 fe-exec.c:1184 fe-lobj.c:536
msgid "out of memory\n"
msgstr "ÄÚ´æÓþ¡\n"
-#: fe-connect.c:2427
+#: fe-connect.c:2422
#, c-format
msgid "missing \"=\" after \"%s\" in connection info string\n"
msgstr "ÔÚÁª½ÓÐÅÏ¢×Ö´®ÀïµÄ \"%s\" ºóÃæȱÉÙ \"=\"\n"
-#: fe-connect.c:2476
+#: fe-connect.c:2471
msgid "unterminated quoted string in connection info string\n"
msgstr "Áª½ÓÐÅÏ¢×Ö´®ÖÐδ½áÊøµÄÒýºÅ×Ö´®\n"
-#: fe-connect.c:2510
+#: fe-connect.c:2505
#, c-format
msgid "invalid connection option \"%s\"\n"
msgstr "·Ç·¨Áª½ÓÑ¡Ïî \"%s\"\n"
-#: fe-connect.c:2695
+#: fe-connect.c:2720
msgid "connection pointer is NULL\n"
msgstr "Áª½ÓÖ¸ÕëÊÇ NULL\n"
-#: fe-exec.c:570
+#: fe-exec.c:633
msgid "command string is a null pointer\n"
msgstr "ÃüÁî×Ö´®ÊÇÒ»¸ö¿ÕÖ¸Õë\n"
-#: fe-exec.c:578
+#: fe-exec.c:641
msgid "no connection to the server\n"
msgstr "ûÓе½·þÎñÆ÷µÄÁª½Ó\n"
-#: fe-exec.c:585
+#: fe-exec.c:648
msgid "another command is already in progress\n"
msgstr "ÒѾÓÐÁíÍâÒ»ÌõÃüÁîÔÚ´¦Àí\n"
-#: fe-exec.c:788
+#: fe-exec.c:846
#, c-format
msgid "message type 0x%02x arrived from server while idle\n"
msgstr "¿ÕÏÐʱ´Ó·þÎñÆ÷·µ»ØÁËÀàÐÍΪ 0x%02x µÄÏûÏ¢\n"
-#: fe-exec.c:831
+#: fe-exec.c:888
#, c-format
msgid ""
"unexpected character %c following empty query response (\"I\" message)\n"
-msgstr ""
-"ÔڿյIJéѯÏìÓ¦ºóÃæ¸ú×Å·ÇÔ¤ÆÚµÄ×Ö·û %c (\"I\" ÏûÏ¢)\n"
+msgstr "ÔڿյIJéѯÏìÓ¦ºóÃæ¸ú×Å·ÇÔ¤ÆÚµÄ×Ö·û %c (\"I\" ÏûÏ¢)\n"
-#: fe-exec.c:889
+#: fe-exec.c:945
msgid ""
"server sent data (\"D\" message) without prior row description (\"T\" "
"message)\n"
-msgstr ""
-"·þÎñÆ÷ÔÚûÓз¢ËÍÐÐÃèÊöµÄÇ°ÌáÏ·¢ËÍÊý¾Ý (\"D\" ÏûÏ¢) (\"T\" "
-"ÏûÏ¢)\n"
+msgstr "·þÎñÆ÷ÔÚûÓз¢ËÍÐÐÃèÊöµÄÇ°ÌáÏ·¢ËÍÊý¾Ý (\"D\" ÏûÏ¢) (\"T\" ÏûÏ¢)\n"
-#: fe-exec.c:906
+#: fe-exec.c:962
msgid ""
"server sent binary data (\"B\" message) without prior row description (\"T\" "
"message)\n"
-msgstr ""
-"·þÎñÆ÷ÔÚûÓз¢ËÍÐÐÃèÊöµÄÇ°ÌáÏ·¢ËÍÊý¾Ý (\"B\" ÏûÏ¢) (\"T\" "
-"ÏûÏ¢)\n"
+msgstr "·þÎñÆ÷ÔÚûÓз¢ËÍÐÐÃèÊöµÄÇ°ÌáÏ·¢ËÍÊý¾Ý (\"B\" ÏûÏ¢) (\"T\" ÏûÏ¢)\n"
-#: fe-exec.c:922
+#: fe-exec.c:978
#, c-format
msgid "unexpected response from server; first received character was \"%c\"\n"
msgstr "À´×Ô·þÎñÆ÷µÄÒâÍâÏìÓ¦; ÊÕµ½µÄµÚÒ»¸ö×Ö·ûÊÇ \"%c\"\n"
-#: fe-exec.c:1216
+#: fe-exec.c:1271
#, c-format
msgid "unexpected asyncStatus: %d\n"
msgstr "ÒâÍâµÄ asyncStatus(Ò첽״̬): %d\n"
-#: fe-exec.c:1266
+#: fe-exec.c:1321
msgid "COPY state must be terminated first\n"
msgstr "COPY ״̬±ØÐëÏȽáÊø\n"
-#: fe-exec.c:1617
+#: fe-exec.c:1672
msgid "no COPY in progress\n"
msgstr "ûÓÐÕýÔÚ´¦ÀíµÄ COPY\n"
-#: fe-exec.c:1656
+#: fe-exec.c:1711
msgid "lost synchronization with server, resetting connection\n"
msgstr "ʧȥÓë·þÎñÆ÷µÄͬ²½, ÖØÖÃÁª½Ó\n"
-#: fe-exec.c:1721
+#: fe-exec.c:1776
msgid "connection in wrong state\n"
msgstr "Áª½Ó´¦ÓÚ´íÎó״̬\n"
-#: fe-exec.c:1823 fe-exec.c:1857
+#: fe-exec.c:1878 fe-exec.c:1912
#, c-format
msgid "protocol error: id=0x%x\n"
msgstr "ÐÒé´íÎó: id=0x%x\n"
-#: fe-exec.c:1892
+#: fe-exec.c:1947
msgid "invalid ExecStatusType code"
msgstr "·Ç·¨ ExecStatusType ´úÂë"
-#: fe-exec.c:1945 fe-exec.c:1978
+#: fe-exec.c:2000 fe-exec.c:2033
#, c-format
msgid "column number %d is out of range 0..%d\n"
msgstr "ÁкÅÂë %d ³¬³öÁË·¶Î§ 0..%d\n"
-#: fe-exec.c:1967
+#: fe-exec.c:2022
#, c-format
msgid "row number %d is out of range 0..%d\n"
msgstr "ÐкÅÂë %d ³¬³öÁË·¶Î§ 0..%d\n"
-#: fe-exec.c:2163
+#: fe-exec.c:2217
#, c-format
msgid "could not interpret result from server: %s\n"
msgstr "ÎÞ·¨½âÊÍÀ´×Ô·þÎñÆ÷µÄ½á¹û: %s\n"
-#: fe-exec.c:2179
+#: fe-exec.c:2233
msgid "no row count available\n"
msgstr "ûÓпɻñµÃµÄÐÐÊý\n"
-#: fe-lobj.c:398 fe-lobj.c:477
+#: fe-lobj.c:400 fe-lobj.c:483
#, c-format
msgid "could not open file \"%s\": %s\n"
msgstr "ÎÞ·¨´ò¿ªÎļþ \"%s\": %s\n"
-#: fe-lobj.c:410
+#: fe-lobj.c:412
#, c-format
msgid "could not create large object for file \"%s\"\n"
msgstr "ÎÞ·¨ÎªÎļþ \"%s\" ´´½¨´ó¶ÔÏó\n"
-#: fe-lobj.c:419 fe-lobj.c:466
+#: fe-lobj.c:422 fe-lobj.c:472
#, c-format
msgid "could not open large object %u\n"
msgstr "ÎÞ·¨´ò¿ª´ó¶ÔÏó %u\n"
-#: fe-lobj.c:433
+#: fe-lobj.c:437
#, c-format
msgid "error while reading file \"%s\"\n"
msgstr "¶ÁÈ¡Îļþ \"%s\" ʱ³ö´í\n"
-#: fe-lobj.c:491
+#: fe-lobj.c:498
#, c-format
msgid "error while writing to file \"%s\"\n"
msgstr "дÈëÎļþ \"%s\" ʱ³ö´í\n"
-#: fe-lobj.c:555
+#: fe-lobj.c:564
msgid "query to initialize large object functions did not return data\n"
msgstr "³õʼ»¯´ó¶ÔÏóº¯ÊýµÄ²éѯûÓзµ»ØÊý¾Ý\n"
-#: fe-lobj.c:593
+#: fe-lobj.c:602
msgid "cannot determine OID of function lo_open\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý lo_open µÄ OID\n"
-#: fe-lobj.c:600
+#: fe-lobj.c:609
msgid "cannot determine OID of function lo_close\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý lo_close µÄ OID\n"
-#: fe-lobj.c:607
+#: fe-lobj.c:616
msgid "cannot determine OID of function lo_creat\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý lo_creat µÄ OID\n"
-#: fe-lobj.c:614
+#: fe-lobj.c:623
msgid "cannot determine OID of function lo_unlink\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý lo_unlink µÄ OID\n"
-#: fe-lobj.c:621
+#: fe-lobj.c:630
msgid "cannot determine OID of function lo_lseek\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý lo_lseek µÄ OID\n"
-#: fe-lobj.c:628
+#: fe-lobj.c:637
msgid "cannot determine OID of function lo_tell\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý lo_tell µÄ OID\n"
-#: fe-lobj.c:635
+#: fe-lobj.c:644
msgid "cannot determine OID of function loread\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý loread µÄ OID\n"
-#: fe-lobj.c:642
+#: fe-lobj.c:651
msgid "cannot determine OID of function lowrite\n"
msgstr "ÎÞ·¨ÅжϺ¯Êý lowrite µÄ OID\n"
-#: fe-misc.c:131
+#: fe-misc.c:130
#, c-format
msgid "could not flush enough data (space available: %d, space needed %d)\n"
msgstr "ÎÞ·¨³åË¢×ã¹»µÄÊý¾Ý (¿ÉÓÿռä: %d, ÐèÒª¿Õ¼ä %d)\n"
msgid "integer of size %lu not supported by pqPutInt\n"
msgstr "pgPutInt ²»Ö§³Ö´óСΪ %lu µÄÕûÊý\n"
-#: fe-misc.c:355 fe-misc.c:389 fe-misc.c:778
+#: fe-misc.c:355 fe-misc.c:389 fe-misc.c:777
#, c-format
msgid "select() failed: %s\n"
msgstr "select() ʧ°Ü: %s\n"
-#: fe-misc.c:416 fe-misc.c:616 fe-misc.c:757
+#: fe-misc.c:416 fe-misc.c:616 fe-misc.c:756
msgid "connection not open\n"
msgstr "Áª½Óδ´ò¿ª\n"
msgid "could not receive data from server: %s\n"
msgstr "ÎÞ·¨´Ó·þÎñÆ÷½ÓÊÕÊý¾Ý: %s\n"
-#: fe-misc.c:590 fe-misc.c:675
+#: fe-misc.c:590 fe-misc.c:674
msgid ""
"server closed the connection unexpectedly\n"
"\tThis probably means the server terminated abnormally\n"
"\tÕâÖÖÏÖÏóͨ³£Òâζ×Å·þÎñÆ÷ÔÚ´¦ÀíÇëÇó֮ǰ\n"
"»òÕßÕýÔÚ´¦ÀíÇëÇóµÄʱºòÒâÍâÖÐÖ¹\n"
-#: fe-misc.c:691
+#: fe-misc.c:690
#, c-format
msgid "could not send data to server: %s\n"
msgstr "ÎÞ·¨Ïò·þÎñÆ÷·¢ËÍÊý¾Ý: %s\n"