+@echo "All of PostgreSQL successfully made. Ready to install."
docs:
- $(MAKE) -C doc-xc all
+ $(MAKE) -C doc all
-$(call recurse,world,doc-xc src config contrib,all)
+$(call recurse,world,doc src config contrib,all)
world:
+@echo "PostgreSQL, contrib, and documentation successfully made. Ready to install."
world-contrib-recurse: world-src-recurse
html man:
- $(MAKE) -C doc-xc $@
+ $(MAKE) -C doc $@
install:
+@echo "PostgreSQL installation complete."
install-docs:
- $(MAKE) -C doc-xc install
+ $(MAKE) -C doc install
-$(call recurse,install-world,doc-xc src config contrib,install)
+$(call recurse,install-world,doc src config contrib,install)
install-world:
+@echo "PostgreSQL, contrib, and documentation installation complete."
# build src/ before contrib/
install-world-contrib-recurse: install-world-src-recurse
-$(call recurse,installdirs uninstall coverage init-po update-po,doc-xc src config)
+$(call recurse,installdirs uninstall coverage init-po update-po,doc src config)
-$(call recurse,distprep,doc-xc src config contrib)
+$(call recurse,distprep,doc src config contrib)
# clean, distclean, etc should apply to contrib too, even though
# it's not built by default
-$(call recurse,clean,doc-xc contrib src config)
+$(call recurse,clean,doc contrib src config)
clean:
rm -rf tmp_install/
# Garbage from autoconf:
# Important: distclean `src' last, otherwise Makefile.global
# will be gone too soon.
distclean maintainer-clean:
- $(MAKE) -C doc-xc $@
+ $(MAKE) -C doc $@
$(MAKE) -C contrib $@
$(MAKE) -C config $@
$(MAKE) -C src $@
+++ /dev/null
-PostgreSQL has a single combined bugs, missing features, and todo list
-simply called TODO, in this directory. A current copy is always
-available on our web site.
+++ /dev/null
-PostgreSQL has a single combined bugs, missing features, and todo list
-simply called TODO, in this directory. A current copy is always
-available on our web site.
+++ /dev/null
-#----------------------------------------------------------------------------
-#
-# PostgreSQL documentation top-level makefile
-#
-# Copyright (c) 1994, Regents of the University of California
-#
-# doc/Makefile
-#
-#----------------------------------------------------------------------------
-
-subdir = doc
-top_builddir = ..
-include $(top_builddir)/src/Makefile.global
-
-all distprep html man install installdirs uninstall clean distclean maintainer-clean maintainer-check:
- $(MAKE) -C src $@
+++ /dev/null
-PostgreSQL 7.0.1 multi-byte (MB) support README May 20 2000
-
- Tatsuo Ishii
- http://www.sra.co.jp/people/t-ishii/PostgreSQL/
-
-[µù] 1. ·PÁÂ¥Û¤«¹F¤Ò (Tatsuo Ishii) ¥ý¥Í!
-
-
-0. ²¤¶
-
-MB ¤ä´©¬O¬°¤FÅý PostgreSQL ¯à³B²z¦h¦ì¤¸²Õ¦r¤¸ (multi-byte character),
-¨Ò¦p: EUC (Extended Unix Code), Unicode (²Î¤@½X) ©M Mule internal code
-(¦h°ê»y¨¥¤º½X). ¦b MB ªº¤ä´©¤U, §A¥i¥H¦b¥¿³Wªí¥Ü¦¡ (regexp), LIKE ¤Î
-¨ä¥L¤@¨Ç¨ç¦¡¤¤¨Ï¥Î¦h¦ì¤¸²Õ¦r¤¸. ¹w³]ªº½s½X¨t²Î¥i¨ú¨M©ó§A¦w¸Ë PostgreSQL
-®Éªº initdb(1) ©R¥O, ¥ç¥i¥Ñ createdb(1) ©R¥O©Î«Ø¥ß¸ê®Æ®wªº SQL ©R¥O¨M©w.
-©Ò¥H§A¥i¥H¦³¦hÓ¤£¦P½s½X¨t²Îªº¸ê®Æ®w.
-
-MB ¤ä´©¤]¸Ñ¨M¤F¤@¨Ç 8 ¦ì¤¸³æ¦ì¤¸²Õ¦r¤¸¶° (¥]§t ISO-8859-1) ªº¬ÛÃö°ÝÃD,
-(§Ú¨Ã¨S¦³»¡©Ò¦³ªº¬ÛÃö°ÝÃD³£¸Ñ¨M¤F, §Ú¥u¬O½T»{¤F°jÂk´ú¸Õ°õ¦æ¦¨¥\,
-¦Ó¤@¨Çªk»y¦r¤¸¦b MB ׸ɤU¥i¥H¨Ï¥Î. ¦pªG§A¦b¨Ï¥Î 8 ¦ì¤¸¦r¤¸®Éµo²{¤F
-¥ô¦ó°ÝÃD, ½Ð³qª¾§Ú)
-
-1. ¦p¦ó¨Ï¥Î
-
-½sĶ PostgreSQL «e, °õ¦æ configure ®É¨Ï¥Î multibyte ªº¿ï¶µ
-
- % ./configure --enable-multibyte[=encoding_system]
- % ./configure --enable-multibyte[=½s½X¨t²Î]
-
-¨ä¤¤ªº½s½X¨t²Î¥i¥H«ü©w¬°¤U±¨ä¤¤¤§¤@:
-
- SQL_ASCII ASCII
- EUC_JP Japanese EUC
- EUC_CN Chinese EUC
- EUC_KR Korean EUC
- EUC_TW Taiwan EUC
- UNICODE Unicode(UTF-8)
- MULE_INTERNAL Mule internal
- LATIN1 ISO 8859-1 English and some European languages
- LATIN2 ISO 8859-2 English and some European languages
- LATIN3 ISO 8859-3 English and some European languages
- LATIN4 ISO 8859-4 English and some European languages
- LATIN5 ISO 8859-5 English and some European languages
- KOI8 KOI8-R
- WIN Windows CP1251
- ALT Windows CP866
-
-¨Ò¦p:
-
- % ./configure --enable-multibyte=EUC_JP
-
-¦pªG¬Ù²¤«ü©w½s½X¨t²Î, ¨º»ò¹w³]È´N¬O SQL_ASCII.
-
-2. ¦p¦ó³]©w½s½X
-
-initdb ©R¥O©w¸q PostgresSQL ¦w¸Ë«áªº¹w³]½s½X, ¨Ò¦p:
-
- % initdb -E EUC_JP
-
-±N¹w³]ªº½s½X³]©w¬° EUC_JP (Extended Unix Code for Japanese), ¦pªG§A³ßÅw
-¸ûªøªº¦r¦ê, §A¤]¥i¥H¥Î "--encoding" ¦Ó¤£¥Î "-E". ¦pªG¨S¦³¨Ï¥Î -E ©Î
---encoding ªº¿ï¶µ, ¨º»ò½sö®Éªº³]©w·|¦¨¬°¹w³]È.
-
-§A¥i¥H«Ø¥ß¨Ï¥Î¤£¦P½s½Xªº¸ê®Æ®w:
-
- % createdb -E EUC_KR korean
-
-³oÓ©R¥O·|«Ø¥ß¤@Ó¥s°µ "korean" ªº¸ê®Æ®w, ¦Ó¨ä±Ä¥Î EUC_KR ½s½X.
-¥t¥~¦³¤@Ó¤èªk, ¬O¨Ï¥Î SQL ©R¥O, ¤]¥i¥H¹F¨ì¦P¼Ëªº¥Øªº:
-
- CREATE DATABASE korean WITH ENCODING = 'EUC_KR';
-
-¦b pg_database ¨t²Î³W®æªí (system catalog) ¤¤¦³¤@Ó "encoding" ªºÄæ¦ì,
-´N¬O¥Î¨Ó¬ö¿ý¤@Ó¸ê®Æ®wªº½s½X. §A¥i¥H¥Î psql -l ©Î¶i¤J psql «á¥Î \l ªº
-©R¥O¨Ó¬d¬Ý¸ê®Æ®w±Ä¥Î¦óºØ½s½X:
-
-$ psql -l
- List of databases
- Database | Owner | Encoding
----------------+---------+---------------
- euc_cn | t-ishii | EUC_CN
- euc_jp | t-ishii | EUC_JP
- euc_kr | t-ishii | EUC_KR
- euc_tw | t-ishii | EUC_TW
- mule_internal | t-ishii | MULE_INTERNAL
- regression | t-ishii | SQL_ASCII
- template1 | t-ishii | EUC_JP
- test | t-ishii | EUC_JP
- unicode | t-ishii | UNICODE
-(9 rows)
-
-3. «eºÝ»P«áºÝ½s½Xªº¦Û°ÊÂà´«
-
-[µù: «eºÝªx«ü«È¤áºÝªºµ{¦¡, ¥i¯à¬O psql ©R¥O¸Ñ;¹, ©Î±Ä¥Î libpq ªº C
-µ{¦¡, Perl µ{¦¡, ©ÎªÌ¬O³z¹L ODBC ªºµøµ¡À³¥Îµ{¦¡. ¦Ó«áºÝ´N¬O«ü PostgreSQL
-¸ê®Æ®wªº¦øªAµ{¦¡]
-
-PostgreSQL ¤ä´©¬Y¨Ç½s½X¦b«eºÝ»P«áºÝ¶¡°µ¦Û°ÊÂà´«: [µù: ³o¸Ì©Ò¿×ªº¦Û°Ê
-Âà´«¬O«ü§A¦b«eºÝ¤Î«áºÝ©Ò«Å§i±Ä¥Îªº½s½X¤£¦P, ¦ý¥un PostgreSQL ¤ä´©³o
-¨âºØ½s½X¶¡ªºÂà´«, ¨º»ò¥¦·|À°§A¦b¦s¨ú«e°µÂà´«]
-
- encoding of backend available encoding of frontend
- --------------------------------------------------------------------
- EUC_JP EUC_JP, SJIS
-
- EUC_TW EUC_TW, BIG5
-
- LATIN2 LATIN2, WIN1250
-
- LATIN5 LATIN5, WIN, ALT
-
- MULE_INTERNAL EUC_JP, SJIS, EUC_KR, EUC_CN,
- EUC_TW, BIG5, LATIN1 to LATIN5,
- WIN, ALT, WIN1250
-
-¦b±Ò°Ê¦Û°Ê½s½XÂà´«¤§«e, §A¥²¶·§i¶D PostgreSQL §An¦b«eºÝ±Ä¥Î¦óºØ½s½X.
-¦³¦n´XÓ¤èªk¥i¥H¹F¨ì³oӥتº:
-
-o ¦b psql ©R¥O¸Ñ;¹¤¤¨Ï¥Î \encoding ³oÓ©R¥O
-
-\encoding ³oÓ©R¥O¥i¥HÅý§A°¨¤W¤Á´««eºÝ½s½X, ¨Ò¦p, §An±N«eºÝ½s½X¤Á´«¬° SJIS,
-¨º»ò½Ð¥´:
-
- \encoding SJIS
-
-o ¨Ï¥Î libpq [µù: PostgreSQL ¸ê®Æ®wªº C API µ{¦¡®w] ªº¨ç¦¡
-
-psql ªº \encoding ©R¥O¨ä¹ê¥u¬O¥h©I¥s PQsetClientEncoding() ³oӨ禡¨Ó¹F¨ì¥Øªº.
-
- int PQsetClientEncoding(PGconn *conn, const char *encoding)
-
-¤W¦¡¤¤ conn ³oӰѼƥNªí¤@Ó¹ï«áºÝªº³s½u, encoding ³oӰѼÆn©ñ§A·Q¥Îªº½s½X,
-°²¦p¥¦¦¨¥\¦a³]©w¤F½s½X, «K·|¶Ç¦^ 0 È, ¥¢±Ñªº¸Ü¶Ç¦^ -1. ¦Ü©ó¥Ø«e³s½uªº½s½X¥i
-§Q¥Î¥H¤U¨ç¦¡¬dª¾:
-
- int PQclientEncoding(const PGconn *conn)
-
-³o¸Ìnª`·Nªº¬O: ³oӨ禡¶Ç¦^ªº¬O½s½Xªº¥N¸¹ (encoding id, ¬OÓ¾ã¼ÆÈ),
-¦Ó¤£¬O½s½Xªº¦WºÙ¦r¦ê (¦p "EUC_JP"), ¦pªG§An¥Ñ½s½X¥N¸¹±oª¾½s½X¦WºÙ,
-¥²¶·©I¥s:
-
-char *pg_encoding_to_char(int encoding_id)
-
-o ¨Ï¥Î PGCLIENTENCODING ³oÓÀô¹ÒÅܼÆ
-
-¦pªG«eºÝ©³³]©w¤F PGCLIENTENCODING ³o¤@ÓÀô¹ÒÅܼÆ, ¨º»ò«áºÝ·|°µ½s½X¦Û°ÊÂà´«.
-
-[µù] PostgreSQL 7.0.0 ~ 7.0.3 ¦³Ó bug -- ¤£»{³oÓÀô¹ÒÅܼÆ
-
-o ¨Ï¥Î SET CLIENT_ENCODING TO ³oÓ SQL ªº©R¥O
-
-n³]©w«eºÝªº½s½X¥i¥H¥Î¥H¤U³oÓ SQL ©R¥O:
-
- SET CLIENT_ENCODING TO 'encoding';
-
-§A¤]¥i¥H¨Ï¥Î SQL92 ªº»yªk "SET NAMES" ¹F¨ì¦P¼Ëªº¥Øªº:
-
- SET NAMES 'encoding';
-
-¬d¸ß¥Ø«eªº«eºÝ½s½X¥i¥H¥Î¥H¤U³oÓ SQL ©R¥O:
-
- SHOW CLIENT_ENCODING;
-
-¤Á´«¬°ì¨Ó¹w³]ªº½s½X, ¥Î¥H¤U³oÓ SQL ©R¥O:
-
- RESET CLIENT_ENCODING;
-
-[µù] ¨Ï¥Î psql ©R¥O¸Ñ;¹®É, «ØÄ³¤£n¥Î³oÓ¤èªk, ½Ð¥Î \encoding
-
-4. Ãö©ó Unicode (²Î¤@½X)
-
-²Î¤@½X©M¨ä¥L½s½X¶¡ªºÂà´«¥i¯àn¦b 7.1 ª©«á¤~·|¹ê²{.
-
-5. ¦pªGµLªkÂà´«·|µo¥Í¤°»ò¨Æ?
-
-°²³]§A¦b«áºÝ¿ï¾Ü¤F EUC_JP ³oÓ½s½X, «eºÝ¨Ï¥Î LATIN1, (¬Y¨Ç¤é¤å¦r¤¸µLªkÂà´«¦¨
-LATIN1) ¦b³oÓª¬ªp¤U, ¬YÓ¦r¤¸Y¤£¯àÂন LATIN1 ¦r¤¸¶°, ´N·|³QÂন¥H¤Uªº«¬¦¡:
-
- (¤Q¤»¶i¦ìÈ)
-
-6. °Ñ¦Ò¸ê®Æ
-
-These are good sources to start learning various kind of encoding
-systems.
-
-ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf
- Detailed explanations of EUC_JP, EUC_CN, EUC_KR, EUC_TW
- appear in section 3.2.
-
-Unicode: http://www.unicode.org/
- The homepage of UNICODE.
-
- RFC 3629
- UTF-8 is defined here.
-
-5. History
-
-May 20, 2000
- * SJIS UDC (NEC selection IBM kanji) support contributed
- by Eiji Tokuya
- * Changes above will appear in 7.0.1
-
-Mar 22, 2000
- * Add new libpq functions PQsetClientEncoding, PQclientEncoding
- * ./configure --with-mb=EUC_JP
- now deprecated. use
- ./configure --enable-multibyte=EUC_JP
- instead
- * Add SQL_ASCII regression test case
- * Add SJIS User Defined Character (UDC) support
- * All of above will appear in 7.0
-
-July 11, 1999
- * Add support for WIN1250 (Windows Czech) as a client encoding
- (contributed by Pavel Behal)
- * fix some compiler warnings (contributed by Tomoaki Nishiyama)
-
-Mar 23, 1999
- * Add support for KOI8(KOI8-R), WIN(CP1251), ALT(CP866)
- (thanks Oleg Broytmann for testing)
- * Fix problem with MB and locale
-
-Jan 26, 1999
- * Add support for Big5 for fronend encoding
- (you need to create a database with EUC_TW to use Big5)
- * Add regression test case for EUC_TW
-
-Dec 15, 1998
- * Bugs related to SQL_ASCII support fixed
-
-Nov 5, 1998
- * 6.4 release. In this version, pg_database has "encoding"
- column that represents the database encoding
-
-Jul 22, 1998
- * determine encoding at initdb/createdb rather than compile time
- * support for PGCLIENTENCODING when issuing COPY command
- * support for SQL92 syntax "SET NAMES"
- * support for LATIN2-5
- * add UNICODE regression test case
- * new test suite for MB
- * clean up source files
-
-Jun 5, 1998
- * add support for the encoding translation between the backend
- and the frontend
- * new command SET CLIENT_ENCODING etc. added
- * add support for LATIN1 character set
- * enhance 8 bit cleaness
-
-April 21, 1998 some enhancements/fixes
- * character_length(), position(), substring() are now aware of
- multi-byte characters
- * add octet_length()
- * add --with-mb option to configure
- * new regression tests for EUC_KR
- * add some test cases to the EUC_JP regression test
- * fix problem in regress/regress.sh in case of System V
- * fix toupper(), tolower() to handle 8bit chars
-
-Mar 25, 1998 MB PL2 is incorporated into PostgreSQL 6.3.1
-
-Mar 10, 1998 PL2 released
- * add regression test for EUC_JP, EUC_CN and MULE_INTERNAL
- * add an English document (this file)
- * fix problems concerning 8-bit single byte characters
-
-Mar 1, 1998 PL1 released
-
-Appendix:
-
-[Here is a good documentation explaining how to use WIN1250 on
-Windows/ODBC from Pavel Behal. Please note that Installation step 1)
-is not necceary in 6.5.1 -- Tatsuo]
-
-Version: 0.91 for PgSQL 6.5
-Author: Pavel Behal
-Revised by: Tatsuo Ishii
-Licence: The Same as PostgreSQL
-
-Sorry for my Eglish and C code, I'm not native :-)
-
-!!!!!!!!!!!!!!!!!!!!!!!!! NO WARRANTY !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-Instalation:
-------------
-1) Change three affected files in source directories
- (I don't have time to create proper patch diffs, I don't know how)
-2) Compile with enabled locale and multibyte set to LATIN2
-3) Setup properly your instalation, do not forget to create locale
- variables in your profile (environment). Ex. (may not be exactly true):
- LC_ALL=cs_CZ.ISO8859-2
- LC_COLLATE=cs_CZ.ISO8859-2
- LC_CTYPE=cs_CZ.ISO8859-2
- LC_MONETARY=cs_CZ.ISO8859-2
- LC_NUMERIC=cs_CZ.ISO8859-2
- LC_TIME=cs_CZ.ISO8859-2
-4) You have to start the postmaster with locales set!
-5) Try it with Czech language, it have to sort
-5) Install ODBC driver for PgSQL into your M$ Windows
-6) Setup properly your data source. Include this line in your ODBC
- configuration dialog in field "Connect Settings:" :
- SET CLIENT_ENCODING = 'WIN1250';
-7) Now try it again, but in Windows with ODBC.
-
-Description:
-------------
-- Depends on proper system locales, tested with RH6.0 and Slackware 3.6,
- with cs_CZ.iso8859-2 loacle
-- Never try to set-up server multibyte database encoding to WIN1250,
- always use LATIN2 instead. There is not WIN1250 locale in Unix
-- WIN1250 encoding is useable only for M$W ODBC clients. The characters are
- on thy fly re-coded, to be displayed and stored back properly
-
-Important:
-----------
-- it reorders your sort order depending on your LC_... setting, so don't be
- confused with regression tests, they don't use locale
-- "ch" is corectly sorted only in some newer locales (Ex. RH6.0)
-- you have to insert money as '162,50' (with comma in aphostrophes!)
-- not tested properly
+++ /dev/null
-PostgreSQL 7.3 multi-byte (MB) support README 2002/10/21 \e$B:n@.\e(B
-
- \e$B@P0fC#IW\e(B
-
-\e$B"#$O$8$a$K\e(B
-
- PostgreSQL \e$B$K$*$1$k%^%k%A%P%$%H%5%]!<%H$O0J2<$N$h$&$JFCD'$r;}$C$F$$$^$9!%\e(B
-
- 1. \e$B%^%k%A%P%$%HJ8;z$H$7$F!$F|K\8l!$Cf9q8l$J$I$N3F9q$N\e(B EUC\e$B!$\e(BUnicode\e$B!$\e(B
- mule internal code, ISO-8859-* \e$B$,%G!<%?%Y!<%9:n@.;~$KA*Br2DG=!%\e(B
- \e$B%G!<%?%Y!<%9$K$O$3$N%(%s%3!<%G%#%s%0$N$^$^3JG<$5$l$^$9!%\e(B
- 2. \e$B%F!<%V%kL>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=\e(B
- 3. \e$B%+%i%`L>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=\e(B
- 4. \e$B%G!<%?$=$N$b$N$K$b%^%k%A%P%$%HJ8;z$,;HMQ2DG=\e(B
- 5. \e$B%^%k%A%P%$%HJ8;z$N@55,I=8=8!:w$,;HMQ2DG=\e(B
- 6. \e$B%^%k%A%P%$%HJ8;z$N\e(B LIKE \e$B8!:w$,;HMQ2DG=\e(B
- 7. character_length(), position(), substring() \e$B$J$I$NJ8;zNs4X?t$G\e(B
- \e$B$N%^%k%A%P%$%H%5%]!<%H\e(B
- 8. \e$B%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$,%P%C%/%(%s%IB&$H0[$k>l9g$K!$\e(B
- \e$B<+F0E*$K%(%s%3!<%G%#%s%0JQ49$r9T$J$$$^$9!%\e(B
-
- \e$B%^%k%A%P%$%H%5%]!<%H$,07$&$3$H$N$G$-$k%(%s%3!<%G%#%s%0$O0J2<$K$J$j$^\e(B
- \e$B$9!%\e(B
-
- SQL_ASCII ASCII
- EUC_JP \e$BF|K\8l\e(B EUC
- EUC_CN GB \e$B$r%Y!<%9$K$7$?CfJ8\e(BEUC\e$B!%\e(Bcode set 2 \e$B$O\e(B
- SS2+2\e$B%P%$%H%3!<%I\e(B = 3\e$B%P%$%HI=8=$G$9!%\e(B
- EUC_KR \e$B4Z9q8l\e(B EUC\e$B!%\e(B
- JOHAB \e$B%O%s%0%k%Y!<%9$N4Z9q8l\e(BEUC.
- EUC_TW \e$BBfOQ$N\e(B EUC\e$B!%\e(Bcode set 2 \e$B$O\e(B
- SS2+\e$BLLHV9f\e(B+2\e$B%P%$%H%3!<%I\e(B = 4\e$B%P%$%HI=8=$G$9!%\e(B
- UNICODE UTF-8\e$B!%$?$@$7%5%]!<%H$9$k$N$O\e(B UCS-2 \e$B$NHO0O!$\e(B
- \e$B$9$J$o$A\e(B 0xffff \e$B$^$G$G$9!%\e(B
- MULE_INTERNAL mule \e$B$NFbIt%3!<%I!%$?$@$7!$\e(BType N \e$B$NITDjD9J8;z$O\e(B
- \e$B%5%]!<%H$7$F$$$^$;$s!%\e(B
- LATIN1 \e$B$+$i\e(B LATIN10\e$B$^$G\e(B
- ISO_8859_1 \e$B$+$i\e(B 16\e$B$^$G\e(B
- \e$B%-%j%kJ8;z\e(B KOI8(KOI8-R), WIN(CP1251), ALT(CP866)\e$B$r%5%]!<%H\e(B
- \e$B$7$F$$$^$9!%$b$A$m$s\e(B ISO 8859-5 \e$B$b;HMQ2DG=$G$9!%\e(B
- \e$B$3$N>l9g!$\e(B"LATIN5" \e$B$H$7$F;XDj$7$F2<$5$$!%\e(B
- WIN1256 \e$B%"%i%V=t9q8l\e(BWindows\e$BMQ%(%s%3!<%G%#%s%0\e(B.
- TCVN \e$B%Y%H%J%`8l\e(B."ABC"\e$B$d\e(B"VSCII"\e$B$b;HMQ2DG=\e(B.
- WIN874 \e$B%?%$8l\e(B.
-
- \e$B%U%m%s%H%(%s%IB&$G$O$5$i$K0J2<$N%(%s%3!<%G%#%s%0$,;HMQ$G$-$^$9!%\e(B
-
- SJIS \e$B%7%U%H\e(BJIS(MS932\e$B$H$[$\8_49\e(B)
- BIG5 \e$BBfOQ$d9a9A$G;HMQ$5$l$F$$$kCf9q8l!%\e(BEUC_TW\e$B$H8_49\e(B
- \e$B@-$,$"$j$^$9!%\e(B
- GBK Windows-936
- UHC Windows-949
- WIN1250 Windows-1250
- GB18030 GB18030
-
-\e$B"#F|K\8l$r;HMQ$9$k$3$H$N$G$-$k%(%s%3!<%G%#%s%0\e(B
-
- \e$BA*Br$NL\0B$H$7$F$O!$1Q8l$HF|K\8l$7$+;H$o$J$$>l9g$O\e(B EUC_JP(\e$BF1MM$K!$Cf\e(B
- \e$B9q8l$7$+;H$o$J$$>l9g$O\e(B EUC_CN... \e$B$J$I$H$J$j$^$9\e(B)\e$B!$$=$NB>$N8@8l$b;H$$$?\e(B
- \e$B$$>l9g$O\e(B UNICODE \e$B$b$7$/$O\e(B MULE_INTERNAL \e$B$H$J$k$G$7$g$&!%\e(B
-
- \e$BCm0U!'\e(BMULE_INTERNAL \e$B$rA*$V$H!$$?$/$5$s$NJ8;z=89g$KBP1~$G$-$FJXMx$G$9\e(B
- \e$B$,!$@55,I=8=$GJ#?t$NJ8;z=89g$K$^$?$,$k$h$&$JHO0O;XDj\e(B(\e$B$?$H$($P!$\e(B[a-\e$BHO\e(B]
- \e$B$H$+!$\e(B[abc\e$BHO0O\e(B]\e$B$N$h$&$J\e(B)\e$B$O;H$($^$;$s!%J#?t$NHO0O;XDj$G0[$J$kJ8;z=89g\e(B
- \e$B$r;H$&$N$O9=$$$^$;$s\e(B(\e$B$?$H$($P\e(B [abc][\e$BHO\e(B-\e$B0O\e(B])\e$B!%$^$?!$\e(B[^a] \e$B$N$h$&$JI=8=\e(B
- \e$B$O!$\e(B"a" \e$B$NB0$9$kJ8;z=89g\e(B(\e$B$3$N>l9g!$\e(BUS-ASCII)\e$B$K$*$$$F\e(B "a" \e$B0J30$G$"$k\e(B
- \e$B$3$H$rI=$7$^$9!%7h$7$F4A;z$dJ?2>L>$J$I\e(B "a" \e$B0J30$r$9$Y$FI=$9$o$1$G$O\e(B
- \e$B$J$$$3$H$KCm0U$7$F2<$5$$!%\e(B
-
-\e$B"#%$%s%9%H!<%k\e(B
-
- PostgreSQL 7.3\e$B$+$i$O\e(Bconfigure\e$B$N%*%W%7%g%s;XDj$NM-L5$K4X$o$i$:!$%^%k\e(B
- \e$B%A%P%$%H%5%]!<%H$,M-8z$K$J$C$F$$$^$9$N$G!$FC$K\e(Bconifgure\e$B;~$K%^%k%A%P\e(B
- \e$B%$%HMQ$NFCJL$J%*%W%7%g%s$r;XDj$9$kI,MW$O$"$j$^$;$s!%\e(B
-
-\e$B"#\e(Binitdb/createdb/create database \e$B$K$*$1$k%(%s%3!<%G%#%s%0$N;XDj$K$D$$$F\e(B
-
- initdb \e$B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!%\e(B
-
- -E \e$B%(%s%3!<%G%#%s%0\e(B
- --encoding=\e$B%(%s%3!<%G%#%s%0\e(B
-
- \e$B$3$3$G;XDj$7$?%(%s%3!<%G%#%s%0$O!$0J8e\e(B createdb/create database \e$B$G%(\e(B
- \e$B%s%3!<%G%#%s%0$r>JN,$7$?>l9g$K@_Dj$5$l$k%(%s%3!<%G%#%s%0$K$J$j$^$9!%\e(B
- -E \e$B$^$?$O\e(B --encoding \e$B%*%W%7%g%s$r>JN,$7$?>l9g$O!$%(%s%3!<%G%#%s%0$H\e(B
- \e$B$7$F\e(BSQL_ASCII\e$B$,:NMQ$5$l$F$7$^$&$N$G!$F|K\8l$r%G%U%)%k%H$G;HMQ$9$k>l\e(B
- \e$B9g$O!$\e(B
-
- -E EUC_JP
-
- \e$B$"$k$$$O\e(B
-
- --encoding=EUC_JP
-
- \e$B$H$7$FI,$:L@<(E*$K%(%s%3!<%G%#%s%0$r;XDj$7$F$/$@$5$$!%\e(B
-
- \e$B$J$*!$\e(BPostgreSQL 7.3\e$B0J9_%m%1!<%k%5%]!<%H$,I,$:M-8z$K$J$C$F$$$^$9$,!$\e(B
- \e$B$3$l$OF|K\8l$J$I$r;HMQ$9$k:]$K$O2?$N%a%C%j%H$b$J$$$P$+$j$G$J$/!$>c32\e(B
- \e$B$N860x$K$J$C$?$j!$\e(BLIKE\e$B8!:w$d@55,I=8=8!:w$G%$%s%G%C%/%9$,M-8z$K$J$i$J\e(B
- \e$B$$$J$I$NLdBj$r0z$-5/$3$9$N$G!$L58z$K$7$F$*$/$3$H$r$*$9$9$a$7$^$9!%%m\e(B
- \e$B%1!<%k%5%]!<%H$rL58z$K$9$k$?$a$K$O!$\e(B
-
- --no-locale
-
- \e$B%*%W%7%g%s$r;XDj$7$^$9!%\e(B
-
- createdb \e$B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!%\e(B
-
- -E \e$B%(%s%3!<%G%#%s%0\e(B
- --encoding=\e$B%(%s%3!<%G%#%s%0\e(B
-
- create database \e$B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!%\e(B
-
- CREATE DATABASE dbanme WITH ENCODING = '\e$B%(%s%3!<%G%#%s%0\e(B';
-
- LOCATION \e$B$rF1;~$K;XDj$9$k>l9g$O0J2<$N$h$&$K$J$j$^$9!%\e(B
-
- CREATE DATABASE dbanme WITH LOCATION = 'path' ENCODING = '\e$B%(%s%3!<%G%#%s%0\e(B';
-
- createdb/create database \e$B$G$O!$%(%s%3!<%G%#%s%0;XDj$r>JN,$7$?>l9g$O!$\e(Binitdb
- \e$B$G;XDj$7$?%(%s%3!<%G%#%s%0$,:NMQ$5$l$^$9!%$3$l$O!$\e(Binitdb \e$B$,:n@.$9$k\e(B
- \e$B%F%s%W%l!<%H%G!<%?%Y!<%9\e(B(template1)\e$B$N\e(B encoding \e$B%"%H%j%S%e!<%H$r7Q>5\e(B
- \e$B$9$k$+$i$G$9!%\e(B
-
- \e$B%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$O!$\e(Bpsql -l\e$B!$\e(Bpsql \e$B$N\e(B \l \e$B$G;2>H$G$-$^$9!%\e(B
-
-$ psql -l
- List of databases
- Database | Owner | Encoding
----------------+---------+---------------
- euc_cn | t-ishii | EUC_CN
- euc_jp | t-ishii | EUC_JP
- euc_kr | t-ishii | EUC_KR
- euc_tw | t-ishii | EUC_TW
- mule_internal | t-ishii | MULE_INTERNAL
- regression | t-ishii | SQL_ASCII
- template1 | t-ishii | EUC_JP
- test | t-ishii | EUC_JP
- unicode | t-ishii | UNICODE
-(9 rows)
-
-\e$B"#J8;z7?$N%G!<%?7?$K$D$$$F\e(B
-
- 7.2\e$B$G$O!$\e(BCHAR(n)\e$B$H\e(BVARCHAR(n)\e$B$N\e(B n \e$B$OJ8;z?t$r0UL#$7$^$9!%\e(Bn \e$B$,%P%$%H?t$r\e(B
- \e$B0UL#$9$k\e(B 7.1 \e$B0JA0$H$O0[$J$j$^$9$N$G$4Cm0U2<$5$$!%\e(B
-
- \e$BNc$r<($7$^$9!%\e(B
-
- 7.2\e$B$G$O!$\e(BCHAR(1)\e$B$K\e(B"\e$B$"\e(B"\e$B$r3JG<$G$-$^$9$,!$\e(B7.1\e$B0JA0$G$O3JG<$G$-$^$;$s$3\e(B
- \e$B$l$O!$\e(B"\e$B$"\e(B"\e$B$r3JG<$9$k$?$a$K>/$J$/$H$b\e(B2\e$B%P%$%H0J>e$rMW$9$k$+$i$G$9!%\e(B
- \e$B5U$K!$\e(B"a" \e$B$O\e(B1\e$B%P%$%H$7$+>CHq$7$J$$$?$a!$\e(B7.1\e$B$G$b\e(B CHAR(1) \e$B$K3JG<$G$-$^\e(B
- \e$B$9!%\e(B
-
- \e$B$J$*!$\e(B7.2\e$B$G$O!$\e(B7.1\e$B$^$G$H0[$J$j!$\e(BCHAR(n)\e$B$K3JG<$G$-$J$$\e(B n \e$BJ8;z$h$jBg$-\e(B
- \e$B$$J8;zNs$O\e(B n \e$BJ8;z$G@Z$j<N$F$i$l$k$N$G$O$J$/!$%(%i!<$K$J$k$3$H$K$4Cm\e(B
- \e$B0U2<$5$$!%$3$l$O!$%^%k%A%P%$%HBP1~$NM-L5$K4X$o$i$:!$J8;zNs$N07$$$,\e(B
- SQL\e$BI8=`$K1h$&$h$&$KJQ$C$?$+$i$G$9!%\e(B
-
-\e$B"#%U%m%s%H%(%s%I$H%P%C%/%(%s%I$N<+F0%(%s%3!<%G%#%s%0JQ49$K$D$$$F\e(B
-
- \e$B%P%C%/%(%s%I\e(B(\e$B%G!<%?%Y!<%9\e(B)\e$B$H\e(B psql \e$B$J$I$N%U%m%s%H%(%s%I$N%(%s%3!<%G%#\e(B
- \e$B%s%0$O0lCW$7$F$$$k$N$,86B'$G$9$,!$$$$/$D$+$N%(%s%3!<%G%#%s%0$K$D$$$F\e(B
- \e$B$O%P%C%/%(%s%I$H%U%m%s%H%(%s%I$N4V$G0[$J$k$b$N$r;HMQ$9$k$3$H$,$G$-$^\e(B
- \e$B$9!%$3$N>l9g!$<+F0E*$K%P%C%/%(%s%I$G%(%s%3!<%G%#%s%0JQ49$,9T$o$l$^$9!%\e(B
-
- \e$B%P%C%/%(%s%I$N%(%s%3!<%G%#%s%0\e(B \e$B5vMF$5$l$k%U%m%s%H%(%s%I$N\e(B
- \e$B%(%s%3!<%G%#%s%0\e(B
- ----------------------------------------------------------------
- EUC_JP EUC_JP, SJIS, UNICODE
-
- EUC_TW EUC_TW, BIG5, UNICODE
-
- EUC_CN EUC_CN, UNICODE
-
- EUC_KR EUC_KR, UNICODE
-
- JOHAB JOHAB, UNICODE
-
- LATIN1,3,4 LATIN1,3,4, UNICODE
-
- LATIN2 LATIN2, WIN1250, UNICODE
-
- LATIN5 LATIN5, WIN, ALT, UNICODE
-
- LATIN6,7,8,9,10 LATIN6,7,8,9,10, UNICODE
-
- ISO_8859_5,6,7,8 ISO_8859_5,6,7,8, UNICODE
-
- WIN1256 WIN1256, UNICODE
-
- TCVN TCVN, UNICODE
-
- WIN874 WIN874, UNICODE
-
- MULE_INTERNAL EUC_JP, SJIS, EUC_KR, EUC_CN,
- EUC_TW, BIG5, LATIN1\e$B$+$i\e(B5,
- WIN, ALT, WIN1250
-
- UNICODE EUC_JP, SJIS, EUC_KR, UHC,
- EUC_CN, GBK, EUC_TW, BIG5,
- LATIN1\e$B$+$i\e(B10, ISO_8859_5\e$B$+$i\e(B8,
- WIN, ALT, WIN1250, WIN1256,
- TCVN, WIN874, JOHAB
- ----------------------------------------------------------------
-
- \e$B%P%C%/%(%s%I$H%U%m%s%H%(%s%I$N%(%s%3!<%G%#%s%0$,0[$J$k>l9g!$$=$N$3$H\e(B
- \e$B$r%P%C%/%(%s%I$KEA$($kI,MW$,$"$j$^$9!%$=$N$?$a$NJ}K!$,$$$/$D$+$"$j$^\e(B
- \e$B$9!%\e(B
-
-o psql \e$B$N\e(B \encoding \e$B%3%^%s%I$r;H$&J}K!\e(B
-
- psql\e$B$G$O!$\e(B\encoding\e$B%3%^%s%I$r;H$C$FF0E*$K%U%m%s%H%(%s%IB&$NJ8;z%3!<\e(B
- \e$B%I$r@ZBX$($k$3$H$,$G$-$^$9!%Nc\e(B:
-
- \encoding SJIS
-
-o libpq \e$B$N4X?t\e(B PQsetClientEncoding \e$B$r;H$&J}K!\e(B
-
- 7.0 \e$B$+$i?7$7$$\e(B libpq \e$B4X?t\e(B PQsetClientEncoding \e$B$,DI2C$5$l$F$$$^$9!%\e(B
-
- PQsetClientEncoding(PGconn *conn, const char *encoding)
-
- \e$B$3$N4X?t$r;H$($P!$%3%M%/%7%g%sKh$K%(%s%3!<%G%#%s%0$r@ZBX$($k$3$H$,$G\e(B
- \e$B$-$^$9!%8=:_$N%(%s%3!<%G%#%s%0$NLd$$9g$o$;$O\e(B
-
- int PQclientEncoding(const PGconn *conn)
-
- \e$B$G$9!%\e(B
-
-o postgresql.conf \e$B$G@_Dj$9$kJ}K!\e(B
-
- \e$B%U%m%s%H%(%s%I$N%G%U%)%k%H%(%s%3!<%G%#%s%0$r;XDj$9$k$K$O!$\e(B
- postgresql.conf \e$B$N\e(B client_encoding \e$B$r;XDj$7$^$9!%;XDjNc\e(B:
-
- client_encoding = SJIS
-
-o \e$B4D6-JQ?t\e(B PGCLIENTENCODING \e$B$r;H$&J}K!\e(B
-
- (1) postmaster \e$B5/F0;~$K4D6-JQ?t$r@_Dj$9$kJ}K!\e(B
-
- \e$B4D6-JQ?t\e(B PGCLIENTENCODING \e$B$r@_Dj$9$k$3$H$K$h$j!$\e(B postgresql.conf \e$B$G\e(B
- \e$B%(%s%3!<%G%#%s%0$r;XDj$9$k$N$HF1$88z2L$,F@$i$l$^$9!%$?$@$7!$$3$l$ONr\e(B
- \e$B;KE*7P0^$+$i;D$5$l$F$$$k5!G=$G!$:#8e$O$3$N5!G=$rMxMQ$7$J$$$3$H$r$*$9\e(B
- \e$B$9$a$7$^$9!%@_DjNc\e(B:
-
- export PGCLIENTENCODING=SJIS postmaster -S
-
- (2) \e$B%/%i%$%"%s%H!$%U%m%s%H%(%s%IKh$K%(%s%3!<%G%#%s%0$r@_Dj$7$?$$>l9g\e(B
-
- \e$B$=$N%U%m%s%H%(%s%I\e(B(\e$B$?$H$($P\e(B psql)\e$B$r5/F0$9$kA0$K4D6-JQ?t\e(B
- PGCLIENTENCODING \e$B$r@_Dj$7$^$9!%\e(B
-
-o set client_encoding \e$B%3%^%s%I$r;H$&J}K!\e(B
-
- SET CLIENT_ENCODING SQL\e$B%3%^%s%I$r;H$C$FF0E*$K%U%m%s%H%(%s%I$N%(%s%3!<\e(B
- \e$B%G%#%s%0$rJQ99$G$-$^$9!%Nc\e(B:
-
- SET CLIENT_ENCODING TO SJIS;
-
-\e$B"#8=:_@_Dj$5$l$F$$$k%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$rD4$Y$k\e(B
-
- \e$B8=:_@_Dj$5$l$F$$$k%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$O\e(B
-
- show client_encoding;
-
- \e$B$G;2>H$G$-$^$9\e(B(\e$B>.J8;z$GI=<($5$l$^$9\e(B)\e$B!%\e(B
-
-\e$B"#%G%U%)%k%H$N%(%s%3!<%G%#%s%0$X$NI|5"\e(B
-
- SQL\e$B%3%^%s%I\e(B:
-
- RESET CLIENT_ENCODING;
-
- \e$B$O!$%G%U%)%k%H$N%U%m%s%H%(%s%I%(%s%3!<%G%#%s%0@_Dj$KI|5"$5$;$^$9!%\e(B
- postmaster\e$B$rN)$A>e$2$k$H$-$K\e(B postgresql.conf \e$B$N\e(B client_encoding \e$B$d4D\e(B
- \e$B6-JQ?t\e(B PGCLIENTENCODING \e$B$,@_Dj$5$l$F$$$k$H$=$N%(%s%3!<%G%#%s%0$K!$$=\e(B
- \e$B$&$G$J$1$l$P%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$HF1$8$K$J$j$^$9!%\e(B
-
-\e$B"#L@<(E*$J%(%s%3!<%G%#%s%0JQ49\e(B
-
- 7.2\e$B$G$O!$\e(Bconvert\e$B$H$$$&4X?t$r;H$$!$L@<(E*$J%(%s%3!<%G%#%s%0JQ49$,$G$-\e(B
- \e$B$^$9!%\e(B
-
- convert(string text, [src_encoding name,] dest_encoding name)
-
- \e$B$3$3$G\e(Bsrc_encoding\e$B$O\e(Btext\e$B$N%(%s%3!<%G%#%s%0L>$G$9!%>JN,$9$k$H!$%G!<%?\e(B
- \e$B%Y!<%9%(%s%3!<%G%#%s%0L>$HF1$8$G$"$k$H8+$J$5$l$^$9!%\e(Bdest_encoding\e$B$O!$\e(B
- \e$BJQ498e$N%(%s%3!<%G%#%s%0L>$G$9!%\e(B
-
- \e$BNc$r<($7$^$9!%\e(B
-
- SELECT convert(text, EUC_JP) FROM unicode_tbl;
-
- \e$B$O!$\e(BUnicode\e$B$N%F!<%V%k\e(Bunicode_tbl\e$B$N\e(Btext\e$BNs$r\e(BEUC_JP\e$B$KJQ49$7$FJV$7$^$9!%\e(B
-
- 7.3\e$B$G$O$5$i$K\e(BSQL\e$BI8=`$N\e(BCONVERT\e$B4X?t$,;H$($^$9!%\e(BSQL\e$BI8=`$N\e(BCONVERT\e$B$O\e(B
- PostgreSQL\e$B$N\e(BCONVERT\e$B$H5!G=$O$[$H$s$IF1$8$G$9$,!$8F$S=P$77A<0$,0[$j$^\e(B
- \e$B$9!%\e(B
-
- SELECT convert(text using euc_jp_to_utf8) FROM unicode_tbl;
-
- "using" \e$B$N8e$N0z?t$O!V%3%s%P!<%8%g%sL>!W$G$9!%$3$NNc$G$O!$\e(BEUC_JP \e$B$+\e(B
- \e$B$i\e(B UTF-8 \e$B$KJQ49$9$k%3%s%P!<%8%g%s$r;XDj$7$F$$$^$9!%Dj5A:Q$N%3%s%P!<\e(B
- \e$B%8%g%s$K$D$$$F$O!$%f!<%6!<%:%,%$%I$N\e(B "String Functions and
- Operators" \e$B$NI=\e(B"Built-in Conversions" \e$B$r8+$F$/$@$5$$!%\e(B
-
-\e$B"#%(%s%3!<%G%#%s%0JQ49ITG=$N>l9g$N=hM}\e(B
-
- \e$B%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$H%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0\e(B
- \e$B$,$$$D$bAj8_JQ49$G$-$k$H$O8B$j$^$;$s!%6KC<$JOC!$%P%C%/%(%s%IB&$,\e(B
- EUC_JP \e$B$J$N$K!$%U%m%s%H%(%s%IB&$,\e(B EUC_KR \e$B$@$C$?$i$I$&$J$k$G$7$g$&!%\e(B
- \e$B$3$N>l9g\e(B PostgreSQL \e$B$OJQ49$G$-$J$$%3!<%I$r\e(B 16\e$B?JI=8=$KJQ49$7$^$9!%\e(B
- \e$B$?$H$($P!$\e(B"(bdae)" \e$B$N$h$&$K!%$J$*!$$3$N\e(B 16\e$B?JI=8=$O\e(B mule
- internal code \e$B$N%3!<%I$G$"$k$3$H$KCm0U$7$F2<$5$$!%$3$l$O!$D>@\%U%m%s\e(B
- \e$B%H%(%s%I\e(B <--> \e$B%P%C%/%(%s%I$N%(%s%3!<%G%#%s%0$rJQ49$9$k$N$G$O$J$/!$0l\e(B
- \e$BEYFbItI=8=$G$"$k\e(B mule internal code \e$B$r7PM3$7$F$$$k$?$a$G$9!%\e(B
-
- \e$B$J$*!$\e(BUnicode\e$B$H$=$l0J30$N%(%s%3!<%G%#%s%0$NJQ49$@$1$ONc30$G!$\e(BNOTICE
- \e$B%a%C%;!<%8$,I=<($5$l!$JQ49ITG=$NJ8;z$OL5;k$5$l$^$9!%\e(B
-
-\e$B"#%G%U%)%k%H%3%s%P!<%8%g%s\e(B
-
- \e$B%G%U%)%k%H%3%s%P!<%8%g%s$O!$%P%C%/%(%s%I$H%U%m%s%H%(%s%I$H$N4V$N%(%s\e(B
- \e$B%3!<%G%#%s%0$N<+F0JQ49$K;H$o$l$kFCJL$J%3%s%P!<%8%g%s$G$9!%%G%U%)%k%H\e(B
- \e$B%3%s%P!<%8%g%s$O3F!9$N\e(B{\e$B%9%-!<%^!$%=!<%9%(%s%3!<%G%#%s%0!$%G%9%F%#%M!<\e(B
- \e$B%7%g%s%(%s%3!<%G%#%s%0\e(B}\e$B$NAH$_9g$o$;$K$*$$$F!$$?$@0l8D$@$1B8:_$7$^$9!%\e(B
- \e$B>e5-$G@bL@$7$?AH$_9~$_:Q$N%3%s%P!<%8%g%s$O!$\e(Bpg_catalog\e$B%9%-!<%^$K$*$$\e(B
- \e$B$FDj5A$5$l$F$*$j!$%9%-!<%^%5!<%A%Q%9$N@_Dj$K4X$o$i$:I,$:MxMQ$G$-$k%3\e(B
- \e$B%s%P!<%8%g%s$K$J$C$F$$$^$9!%\e(B
-
- \e$B5U$K8@$&$H!$\e(B pg_catalog \e$B0J30$N%9%-!<%^$K%G%U%)%k%H%3%s%P!<%8%g%s$r:n\e(B
- \e$B@.$9$k$3$H$K$h$j!$%G%U%)%k%H%3%s%P!<%8%g%s$r<+M3$KA*Br$9$k$3$H$b$G$-\e(B
- \e$B$k$o$1$G$9!%$?$H$($P\e(B SJIS \e$B$H$NJQ49$K$*$$$F!$\e(BPostgreSQL \e$B$,MQ0U$7$F$$\e(B
- \e$B$k\e(B MS932\e$B8_49\e(B \e$B$NJQ49$G$O$J$/!$\e(BJIS \e$B5,3J$N%7%U%H%8%9$KAjEv$9$kJQ49$r9T\e(B
- \e$B$&$h$&$J%3%s%P!<%8%g%s$r:n@.$9$k$3$H$b2DG=$G$9!%\e(B
-
-\e$B"#%f!<%6Dj5A%3%s%P!<%8%g%s$N:n@.\e(B
-
- PostgreSQL 7.3\e$B0J9_!$%f!<%6Dj5A$N%3%s%P!<%8%g%s$r:n@.$G$-$k$h$&$K$J$C\e(B
- \e$B$F$$$^$9!%%3%s%P!<%8%g%s$NDj5A$O\e(B CREATE CONVERSION \e$B$H$$$&\e(B SQL \e$B%3%^%s\e(B
- \e$B%I$r;H$C$F9T$$$^$9!%\e(B
-
- CREATE [DEFAULT] CONVERSION conversion_name
- FOR source_encoding
- TO dest_encoding FROM funcname
-
- \e$B>\:Y$O%j%U%!%l%s%9%^%K%e%"%k$r$4Mw2<$5$$!%\e(B
-
-\e$B"#\e(BSJIS\e$B%f!<%6Dj5AJ8;z$X$NBP1~\e(B
-
- 7.0 \e$B$+$i\e(B SJIS\e$B%f!<%6Dj5AJ8;z\e(B (UDC) \e$B$KBP1~$7$F$$$^$9!%\e(BUDC \e$B$r$I$&07$&$+\e(B
-
\e$B$H8@$&$3$H$K$D$$$FCf>r$5$s
\e(B(
[email protected])
\e$B$+$iLdBjDs5/$H>\:Y$J2r@b$r
\e(B
- \e$BD:$-$^$7$?$N$G!$;29M$N$?$a$K$3$N%I%-%e%a%s%H$N:G8e$KIU$1$F$*$-$^$9!%\e(B
- \e$B$^$?!$$3$NLdBj$K$D$$$F$O!$\e(BPostgreSQL\e$BF|K\8l%a!<%j%s%0%j%9%H$N\e(B
- [pgsql-jp 12288] (1999/12/17\e$BIU\e(B)\e$B$H\e(B [pgsql-jp 12486] (2000/1/5\e$BIU\e(B) \e$B$+$i\e(B
- \e$B;O$^$k%9%l%C%I$G5DO@$r8+$k$3$H$,$G$-$^$9\e(B(\e$B%a!<%k$N%"!<%+%$%V$O\e(B
- http://www.sra.co.jp/people/t-ishii/PostgreSQL/ \e$B$G;2>H$G$-$^$9\e(B)\e$B!%\e(B
-
- \e$B$3$3$G$O!$$=$l$i$N5DO@$r$U$^$(!$4JC1$K2r@b$7$^$9!%\e(B
-
- PostgreSQL\e$B$G$O!$F|K\8l$r;HMQ$9$k:]$K%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0\e(B
- \e$B$r\e(B EUC_JP \e$B$^$?$O\e(B MULE_INTERNAL or Unicode \e$B$K$9$kI,MW$,$"$j$^$9!%\e(B
- MULE_INTERNAL \e$B$O\e(B EUC_JP \e$B$KJ8;z=89g$rI=$9%3!<%I$rIU$1$?$b$N$J$N$G!$K\\e(B
- \e$B<AE*$KF1$8$G$9!%$^$?!$\e(BUnicode <---> SJIS \e$BJQ49$O8=:_$N$H$3$m%5%]!<%H\e(B
- \e$B$5$l$F$$$^$;$s$N$GL5;k$7$^$9!%$7$?$,$C$F!$$3$3$G$O\e(B EUC_JP \e$B$H\e(B SJIS \e$B$N\e(B
- \e$BAj8_JQ49$N$_$r9M$($^$9!%\e(B
-
- \e$BM=HwCN<1\e(B
-
- \e$B0l8}$K\e(B EUC_JP \e$B$H$$$C$F$b!$<B:]$K$OCf?H$OJ#?t$NJ8;z=89g$+$i@.$jN)$C$F\e(B
- \e$B$$$^$9!%\e(B
-
- G0: JIS ROMAN (ASCII \e$B$H$[$\F1$8\e(B)
- G1: JIS X 0208 (JIS \e$B4A;z\e(B)
- G2: JIS X 0201 (1\e$B%P%$%H%+%J\e(B)
- G3: JIS X 0212 (JIS \e$BJd=u4A;z\e(B)
-
- \e$B0lJ}\e(B SJIS \e$B$O$3$N$&$A4pK\E*$K\e(B G0, G1, G2 \e$B$r%5%]!<%H$7$F$*$j!$\e(BG3 \e$B$O%5\e(B
- \e$B%]!<%H$7$F$$$^$;$s!%$7$?$,$C$F!$\e(BSJIS \e$B$O\e(B EUC_JP \e$B$NItJ,=89g$H$_$J$9$3\e(B
- \e$B$H$,$G$-!$<B:]\e(B PostgreSQL 6.5 \e$B$^$G$O$3$N9M$($G<BAu$5$l$F$$$^$7$?!%\e(B
-
- \e$B$H$3$m$,!$\e(BWindows PC \e$B$N\e(B SJIS \e$B$N@$3&$G$O!$>e5-\e(B JIS \e$B5,3J$GDj5A$5$l$F$$\e(B
- \e$B$J$$J8;z%3!<%I$,0lItMxMQ$5$l$F$*$j!$$3$NItJ,\e(B (UDC) \e$B$O=>Mh\e(B PostgreSQL
- \e$B$G$OA4$/9MN8$5$l$F$$$^$;$s$G$7$?!%<B:]\e(B UDC \e$B$r4^$`\e(B SJIS \e$B$r\e(B EUC_JP \e$B$K\e(B
- \e$BJQ49$9$k$H$-$KIT@5$JJQ49$,9T$o$l$F$$$^$7$?!%$=$3$G\e(B PostgreSQL 7.0 \e$B$G\e(B
- \e$B$O!$$^$:$3$NLdBj$r2r7h$9$k$3$H$K$7$^$7$?!%\e(B
-
- \e$B$^$?!$\e(BUDC \e$B$NMxMQJ}$K$D$$$F$OI8=`5,3J$N$h$&$J$b$N$O$"$j$^$;$s$,!$<B$O\e(B
- \e$B6H3&CDBN$G$N<h$j7h$a$,$"$j!$$$$o$f$k%G%U%!%/%H%9%?%s%@!<%I$J$i$PB8:_\e(B
- \e$B$9$k$3$H$,J,$+$j$^$7$?!%$=$3$G$3$l$K$D$$$F$b$G$-$k$@$1%5%]!<%H$9$k$3\e(B
- \e$B$H$K$7$^$7$?!%\e(B
-
- PostgreSQL 7.0 \e$B$G$N\e(B UDC \e$BBP1~$N<BAu\e(B
-
- (1) \e$B%f!<%6Dj5AJ8;zNN0h$O\e(B JIS \e$B$N%f!<%6Dj5AJ8;zNN0h$K%^%C%T%s%0$9$k!%\e(B
- SJIS \e$B$H\e(B EUC_JP \e$B$G\e(B1\e$BBP\e(B1\e$B$NBP1~$K$J$j$^$9!%\e(B
-
- - SJIS \e$B%f!<%6Dj5AJ8;zNN0h\e(B A (\e$B2>>N\e(B)
- 95\e$B!A\e(B104 \e$B6h\e(B \e$B"+"*\e(B \e$BF|K\8l\e(B EUC / G1 (JIS X 0208) 85\e$B!A\e(B95 \e$B6h\e(B
-
- - SJIS \e$B%f!<%6Dj5AJ8;zNN0h\e(B B (\e$B2>>N\e(B)
- 105\e$B!A\e(B114 \e$B6h\e(B \e$B"+"*\e(B \e$BF|K\8l\e(B EUC / G3 (JIS X 0212) 85\e$B!A\e(B95 \e$B6h\e(B
-
- (2) IBM \e$B3HD%J8;zNN0h\e(B (SJIS 115\e$B!A\e(B120 \e$B6h\e(B)
-
- \e$BJQ49%F!<%V%k$K$h$C$F\e(B G1 (JIS X 0208)\e$B$H!$\e(BG3 (JIS X 0212)\e$B$KJQ49$5$l$^\e(B
- \e$B$9!%$J$*!$$3$NJQ49$K$*$$$F$O!$\e(BSJIS --> EUC_JP \e$B$GJQ49$7!$:F$S\e(B EUC_JP --
- > SJIS \e$B$KJQ49$9$k$H85$N\e(B SJIS \e$B$KLa$i$J$$$3$H$,$"$j$^$9!%$^$?!$\e(BEUC_JP --
- > SJIS \e$B$NJQ49$G$O!$$9$Y$F$NJ8;z$rJQ49$G$-$k$o$1$G$O$J$$$N$G!$$=$N>l\e(B
- \e$B9g$OJQ49ITG=J8;z$H$7$F!V".!W$KCV$-49$($^$9!%\e(B
-
- *\e$B6H3&CDBN$N<h$j7h$a$G$O!$JQ49ITG=J8;z$O!V<BAu0MB8!W$H$J$C$F$$$^$9$,!$\e(B
- Solaris \e$B$r$O$8$a!$B?$/$N%7%9%F%`$,!V".!W$rJQ49ITG=J8;z$K:NMQ$7$F$$$^\e(B
- \e$B$9!%\e(BPostgreSQL\e$B$b$3$l$K9g$o$;$^$7$?!%\e(B
-
- (3) NEC \e$BA*Dj\e(B IBM \e$B3HD%J8;zNN0h\e(B (SJIS 89\e$B!A\e(B92 \e$B6h\e(B)
-
- PostgreSQL 7.0\e$B$G$O$9$Y$FJQ49ITG=J8;z!V".!W$KCV$-49$($i$l$^$9!%\e(B
-
- PostgreSQL 7.0.1\e$B0J9_$G$O!$0lC6\e(B IBM \e$B3HD%J8;zNN0h$KJQ49$5$l$?8e!$\e(BG1
- (JIS X 0208)\e$B$H!$\e(BG3 (JIS X 0212)\e$B$KJQ49$5$l$^$9!%\e(B
-
-\e$B<U<-!'\e(B
-
- o \e$BFA2H\e(B@\e$B;06(1?M"%5!<%S%9$5$s$+$i!$\e(BNEC \e$BA*Dj\e(B IBM \e$B4A;zBP1~%Q%C%A$rDs6!$7\e(B
- \e$B$F$$$?$@$-$^$7$?!%\e(B
-
- o \e$B3F<oJ8;z%;%C%H!$%3!<%I7O$K$D$$$F!$F|K\8l\e(B PostgreSQL \e$B%a!<%j%s%0%j%9%H\e(B
- \e$B$N%a%s%P$NJ}$+$i%"%I%P%$%9$rD:$-$^$7$?!%$3$3$K46<U$7$^$9!%\e(B
- \e$B$^$?!$\e(BSJIS \e$BBP1~$K$D$$$F$O!$;T@n\e(B@\e$B$*CcBg$5$s$N%Q%C%A$r;29M$K$5$;$F$$\e(B
- \e$B$?$@$-$^$7$?!%\e(B
-
- o SJIS\e$B%f!<%6Dj5AJ8;z\e(B (UDC) \e$B$r$I$&07$&$+$H8@$&$3$H$K$D$$$FCf>r$5$s\e(B
-
-\e$B"#\e(BUnicode\e$B$H$=$l0J30$N%(%s%3!<%G%#%s%0$H$NAj8_JQ49$K$D$$$F\e(B
-
- PostgreSQL 7.1\e$B$+$i\e(BUnicode\e$B$H$=$l0J30$N%(%s%3!<%G%#%s%0$H$NAj8_JQ49$,\e(B
- \e$B2DG=$K$J$j$^$7$?!%$3$NJQ49$O$4$/0lIt$NJ8;z%3!<%I\e(B(ISO 8859-1)\e$B$r$N$>$-!$\e(B
- \e$B%m%8%C%/$K$h$kJQ49$,$G$-$J$$$?$a!$JQ49$N:]$K$O%F!<%V%k$,I,MW$K$J$j$^\e(B
- \e$B$9!%\e(BPostgreSQL\e$B$N<BAu$G$O!$\e(BUnicode\e$BJQ49%F!<%V%k$O\e(B Unicode organization
- \e$B$,Ds6!$9$k$b$N$r;HMQ!$$3$l$r\e(BPerl\e$B%W%m%0%i%`$G\e(BC\e$B8@8l$N%F!<%V%k$KJQ49$7\e(B
- \e$B$F:n@.$7$F$$$^$9\e(B(Perl\e$B%W%m%0%i%`$O\e(BNARITA Tomio\e$B;a:n@.$N\e(Blv\e$B%P!<%8%g%s\e(B
- 4.3.6 \e$B$KIUB0$9$k$b$N$r2~B$$N>e!$MxMQ$7$F$$$^$9\e(B)\e$B!%\e(BUnicode
- organization\e$B$NDs6!$9$kJQ49%F!<%V%k$O:FG[I[$,5v2D$5$l$F$$$J$$$?$a!$\e(B
- PostgreSQL\e$B$N%=!<%9%3!<%I$K$O4^$^$l$F$$$^$;$s!%0J2<!$;HMQ$7$?JQ49%F!<\e(B
- \e$B%V%k$rNs5s$7$^$9!%\e(B
-
- \e$B%(%s%3!<%G%#%s%0\e(B \e$BJQ49%F!<%V%k\e(B
- ============================================================
- ISO 8859-1 \e$B$J$7\e(B
- ISO 8859-2 8859-2.TXT
- ISO 8859-3 8859-3.TXT
- ISO 8859-4 8859-4.TXT
- ISO 8859-5 8859-5.TXT
- ISO 8859-6 8859-6.TXT
- ISO 8859-7 8859-7.TXT
- ISO 8859-8 8859-8.TXT
- ISO 8859-9 8859-9.TXT
- ISO 8859-10 8859-10.TXT
- ISO 8859-13 8859-13.TXT
- ISO 8859-14 8859-14.TXT
- ISO 8859-15 8859-15.TXT
- ISO 8859-16 8859-16.TXT
- EUC_JP JIS0201.TXT, JIS0208.TXT, JIS0212.TXT,
- CP932.TXT, sjis.map
- SJIS CP932.TXT
- EUC_CN GB2312.TXT
- GBK CP936.TXT
- EUC_KR KSX1001.TXT
- UHC CP949.TXT
- JOHAB JOHAB.TXT
- EUC_TW CNS11643.TXT
- Big5 BIG5.TXT
- WIN1256 CP1256.TXT
- TCVN CP1258.TXT
- WIN874 CP874.TXT
- ============================================================
-
-\e$B<U<-!'\e(B
-
- o \e$BFA2H\e(B@\e$B;06(1?M"%5!<%S%9$5$s$+$i!$\e(BCP932.TXT\e$B$h$j@8@.$7$?\e(BSJIS\e$BMQ$NJQ49%F!<\e(B
- \e$B%V%k$rDs6!$7$F$$$?$@$-$^$7$?!%$3$l$K$h$j!$\e(BIBM \e$B3HD%J8;zNN0h\e(B (SJIS
- 115\e$B!A\e(B120 \e$B6h\e(B), NEC \e$BA*Dj\e(B IBM \e$B3HD%J8;zNN0h\e(B (SJIS 89\e$B!A\e(B92 \e$B6h\e(B)\e$B$KBP1~$9$k\e(B
- \e$B$3$H$,$G$-$k$h$&$K$J$j$^$7$?!%\e(B
-
-
-\e$B;29M\e(B1\e$B!'\e(B
-
- Pavel Behal\e$B;a$K$h$jDs6!$5$l$?\e(BWIN1250\e$B%5%]!<%H$G$9$,!$\e(BWindows\e$B4D6-$G$N\e(B
- \e$BMxMQ$N;EJ}$K$D$$$F;29M$K$J$k%I%-%e%a%s%H$,IUB0$7$F$$$k$N$G!$$3$3$KE:\e(B
- \e$BIU$7$F$*$-$^$9!%\e(B
-
- -------------------------------------------------------------------
-Version: 0.91 for PgSQL 6.5
-Author: Pavel Behal
-Revised by: Tatsuo Ishii
-Licence: The Same as PostgreSQL
-
-Sorry for my Eglish and C code, I'm not native :-)
-
-!!!!!!!!!!!!!!!!!!!!!!!!! NO WARRANTY !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-Instalation:
-------------
-1) Change three affected files in source directories
- (I don't have time to create proper patch diffs, I don't know how)
- [PostgreSQL 6.5.1\e$B$G$O$3$N%9%F%C%W$OI,MW$"$j$^$;$s!%\e(B-- \e$B@P0f\e(B]
-2) Compile with enabled locale and multibyte set to LATIN2
-3) Setup properly your instalation, do not forget to create locale
- variables in your profile (environment). Ex. (may not be exactly true):
- LC_ALL=cs_CZ.ISO8859-2
- LC_COLLATE=cs_CZ.ISO8859-2
- LC_CTYPE=cs_CZ.ISO8859-2
- LC_MONETARY=cs_CZ.ISO8859-2
- LC_NUMERIC=cs_CZ.ISO8859-2
- LC_TIME=cs_CZ.ISO8859-2
-4) You have to start the postmaster with locales set!
-5) Try it with Czech language, it have to sort
-5) Install ODBC driver for PgSQL into your M$ Windows
-6) Setup properly your data source. Include this line in your ODBC
- configuration dialog in field "Connect Settings:" :
- SET CLIENT_ENCODING = 'WIN1250';
-7) Now try it again, but in Windows with ODBC.
-
-Description:
-------------
-- Depends on proper system locales, tested with RH6.0 and Slackware 3.6,
- with cs_CZ.iso8859-2 loacle
-- Never try to set-up server multibyte database encoding to WIN1250,
- always use LATIN2 instead. There is not WIN1250 locale in Unix
-- WIN1250 encoding is useable only for M$W ODBC clients. The characters are
- on thy fly re-coded, to be displayed and stored back properly
-
-Important:
-----------
-- it reorders your sort order depending on your LC_... setting, so don't be
- confused with regression tests, they don't use locale
-- "ch" is corectly sorted only in some newer locales (Ex. RH6.0)
-- you have to insert money as '162,50' (with comma in aphostrophes!)
-- not tested properly
- -------------------------------------------------------------------
-
-\e$B;29M\e(B2\e$B!'\e(BSJIS\e$B%f!<%6Dj5AJ8;z\e(B (UDC) \e$B$r$I$&07$&$+$H8@$&$3$H$K$D$$$FCf>r$5$s\e(B
-
--------------------------- \e$B0zMQ3+;O\e(B ----------------------------------
----
-1. SJIS \e$B%3!<%I$NHO0O\e(B
-
- 1 \e$B%P%$%HL\\e(B 0x81 - 0x9F\e$B!$\e(B0xE0 - 0xFC
- 2 \e$B%P%$%HL\\e(B 0x40 - 0x7E\e$B!$\e(B0x80 - 0xFC
-
- \e$B$$$o$f$k!V30;zNN0h!W$NHO0O\e(B:
-
- - X0208 \e$B6&DL<+M3NN0h\e(B
-
- |--------------------
- | 85 \e$B6h\e(B 0xEB40 \e$B!A\e(B
- |...
- |--------------------
- | 89 \e$B6h\e(B 0xED40 \e$B!A\e(B ; 89\e$B!A\e(B92 \e$B6h$O\e(B
- |... ; \e$B!V\e(BNEC \e$BA*Dj\e(B IBM \e$B3HD%J8;zNN0h!W\e(B
- |-------------------- ; \e$B$H8F$P$l$k\e(B
- | 93 \e$B6h\e(B 0xEF40 \e$B!A\e(B
- | 94 \e$B6h\e(B 0xEF9F \e$B!A\e(B 0xEFFC
-
- - \e$B%f!<%6Dj5AJ8;zNN0h\e(B
-
- |--------------------
- | 95 \e$B6h\e(B 0xF040 \e$B!A\e(B ; 95\e$B!A\e(B104 \e$B6h\e(B
- |... ; \e$B!V%f!<%6Dj5AJ8;zNN0h\e(B A\e$B!W\e(B(\e$B2>>N\e(B)
- |--------------------
- |105 \e$B6h\e(B 0xF540 \e$B!A\e(B ; 105\e$B!A\e(B114 \e$B6h\e(B
- |... ; \e$B!V%f!<%6Dj5AJ8;zNN0h\e(B B\e$B!W\e(B(\e$B2>>N\e(B)
- |--------------------
- |115 \e$B6h\e(B 0xFA40 \e$B!A\e(B ; 115\e$B!A\e(B120 \e$B6h$O0lHL$K\e(B
- |... ; \e$B!V\e(BIBM \e$B3HD%J8;zNN0h!W\e(B
- |120 \e$B6h\e(B ... ; \e$B$H8F$P$l$k\e(B
- |--------------------
-
----
-2. i-mode \e$BC<Kv$,;H$C$F$$$k?^7AJ8;z%3!<%I$NHO0O\e(B
-
- 0xF89F - 0xF8FC (112 \e$B6h\e(B)
- 0xF940 - 0xF949 (113 \e$B6h\e(B)
- 0xF972 - 0xF97E (113 \e$B6h\e(B)
- 0xF980 - 0xF990 (113 \e$B6h\e(B)
- 0xF9B0 (114 \e$B6h\e(B)
-
----
-3. \e$B0lHLE*$J\e(B EUC \e$BF|K\8l%3!<%I$NDj5A\e(B
-
- G0 : [0x21-0x7E] ; \e$B$$$o$f$k\e(B JIS ROMAN
- G1 : [0xA1-0xFE] [0xA1-0xFE] ; JIS X 0208
- G2 : 0x8E [0xA1-0xDF] ; JIS X 0201 \e$B%+%J\e(B
- G3 : 0x8F [0xA1-0xFE] [0x21-0x7E] ; JIS X 0212 \e$BJd=u4A;z\e(B
-
----
-[\e$BLdBjE@\e(B]
-
-SJIS 95\e$B!A\e(B120 \e$B6h$O\e(B JIS X0208 \e$B$K3:Ev$9$kNN0h$,B8:_$7$J$$\e(B
-\e$B$?$a!$$3$NNN0h$N\e(B EUC - SJIS \e$BJ8;z%3!<%IJQ49$O3F%Y%s%@$K\e(B
-\e$B$h$C$F0[$J$k$N$G$O$J$$$+!$$H$$$&$N$,@P0fMM$+$i$N$4;XE&\e(B
-\e$B$G$7$?!%\e(B
-
----
-[\e$B5DO@\e(B]
-
-\e$BD4::$N7k2L!$\e(BSJIS 95\e$B!A\e(B120 \e$B6h$r\e(B EUC \e$B$KJQ49$9$k$?$a$NI8=`E*$J\e(B
-\e$B%k!<%k$,$J$$$o$1$G$O$J$$!$$H$$$&$3$H$,$o$+$j$^$7$?!%>\:Y$O\e(B
-\e$B8e=R$N;29M;qNA$r$4Mw$$$?$@$/$H$7$F!$$3$3$G$O$=$N%k!<%k$r\e(B
-\e$B4JC1$K$4@bL@$$$?$7$^$9!%\e(B
-
- - SJIS \e$B%f!<%6Dj5AJ8;zNN0h\e(B A (\e$B2>>N\e(B)
- 95\e$B!A\e(B104 \e$B6h\e(B \e$B"+"*\e(B \e$BF|K\8l\e(B EUC / G1 85\e$B!A\e(B95 \e$B6h\e(B
-
- \e$B$?$H$($P\e(B SJIS \e$B$N\e(B (95, 1) = 0xF040 \e$B$O\e(B
- EUC \e$B$N\e(B 0xF5A1 \e$B$K$J$j$^$9!%\e(B
-
- - SJIS \e$B%f!<%6Dj5AJ8;zNN0h\e(B B (\e$B2>>N\e(B)
- 105\e$B!A\e(B114 \e$B6h\e(B \e$B"+"*\e(B \e$BF|K\8l\e(B EUC / G3 85\e$B!A\e(B95 \e$B6h\e(B
-
- \e$B$?$H$($P\e(B SJIS \e$B$N\e(B (105, 1) = 0xF540 \e$B$O\e(B
- EUC \e$B$N\e(B 0x8FF5A1 \e$B$K$J$j$^$9!%\e(B
-
- - IBM \e$B3HD%J8;zNN0h\e(B
- 115\e$B!A\e(B120 \e$B6h\e(B
-
- JIS X 0208 (\e$BF|K\8l\e(B EUC / G1)\e$B!$\e(BJIS X 0212
- (\e$BF|K\8l\e(B EUC / G3) \e$B$K3:Ev$9$kJ8;z$,$"$k>l9g\e(B
- \e$B$O$=$NJ8;z$K%^%C%T%s%0!%$=$&$G$J$$>l9g$O\e(B
- \e$BF|K\8l\e(B EUC / G3 83\e$B!A\e(B84 \e$B6h$r!$6hE@%3!<%I$N>e0L\e(B
- \e$B$+$i=g$K3d$jEv$F$F$$$/\e(B (\e$BJQ49%F!<%V%kJ}<0\e(B)
-
-\e$B$3$N;EMM$O!$9-$/;H$o$l$F$$$k\e(B SJIS \e$B$H\e(B EUC \e$B$N%^%C%T%s%0$,%Y%s%@$K\e(B
-\e$B$h$C$F0[$J$k$?$a!$Aj8_1?MQ$N:]$KLdBj$K$J$C$F$$$k$3$H$+$i!$\e(B1996
-\e$BG/$K\e(B OSF \e$BF|K\%Y%s%@6(5D2q$,8!F$:n@.$7$?Js9p=q$,%Y!<%9$K$J$C$F$$\e(B
-\e$B$k$h$&$G$9!%\e(B
-
-Solaris \e$B$N%I%-%e%a%s%H$K$O!V\e(BTOG \e$BF|K\%Y%s%@6(5D2q?d>)\e(B EUC\e$B!&%7%U%H\e(B
-JIS \e$B%3!<%IJQ49;EMM!W$K$b$H$E$/$H=q$$$F$"$j!$\e(BSolaris 2.6 \e$B$+$iF3F~\e(B
-\e$B$7$F$$$k$N$@$=$&$G!$;d$+$i8+$l$P;v<B>e$NI8=`$H9M$($F$bIT<+A3$G$O\e(B
-\e$B$J$$$H46$8$^$9!%\e(B
-
-\e$B$J$*!$>/$J$/$H$b\e(B 1996 \e$BG/Ev;~$K$*$$$F$O!$\e(BOracle \e$B$d\e(B Sybase \e$B$O\e(B
-SJIS \e$B$N%f!<%6Dj5A\e(B/\e$B%Y%s%@Dj5AJ8;zNN0h$r\e(B EUC \e$B$KJQ49$9$k:]!$H=JLIT\e(B
-\e$B2DG=J8;z$H$7$F07$C$F$$$k$i$7$$$H$$$&$3$H$bJdB-$7$F$*$-$^$9!%\e(B
-
----
-[\e$B;29M;qNA\e(B]
-
-// URL \e$B$,D9$$$N$G!$ESCf$G@Z$l$J$$$H$$$$$N$G$9$,\e(B...
-
--\e$B!VF|K\8l\e(B EUC\e$B!&%7%U%H\e(B JIS \e$B%3!<%IJQ49;EMM$H%3!<%I7O<BBVD4::!W\e(B
- 1966, OSF \e$BF|K\%Y%s%@6(5D2q\e(B
- http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
-
--\e$B!VJ8;z%3!<%IJQ495,B'!W\e(B
- Solaris 7\e$B!$\e(BJFP \e$B%f!<%6!<%:%,%$%I\e(B
- http://docs.sun.com/ab2/coll.139.3/JFPUG/@Ab2PageView/11683?Ab2Lang=ja&Ab2Enc=euc-jp
-
--\e$B!VF|K\8lJ8;z%3!<%I!W\e(B
- Solaris 7\e$B!$\e(BJFP \e$B%f!<%6!<%:%,%$%I\e(B
- http://docs.sun.com/ab2/coll.139.3/JFPUG/@Ab2PageView/879;td=5?Ab2Lang=ja&Ab2Enc=euc-jp
-
- // \e$BFf$N!V\e(B1\e$B!A\e(B20 \e$B6h!W$N5-=R$O$3$3$+$i$-$F$$$^$9!%\e(B
-
----
--------------------------- \e$B0zMQ$3$3$^$G\e(B ---------------------------------
-
-\e$B2~DjMzNr!'\e(B
-
- 2002/10/21
- * \e$B%^%k%A%P%$%HBP1~$,%*%W%7%g%s$G$O$J$/!$8GDj$GI,$:AH$_9~$^$l$k\e(B
- \e$B$h$&$K$J$j$^$7$?!%\e(B
-
- * CREATE CONVERSION/DROP CONVERSION\e$B$NDI2C!%$3$l$K$H$b$J$$!$%(\e(B
- \e$B%s%3!<%G%#%s%0JQ494X?t$,%m!<%@%V%k4X?t$K$J$j!$%P%C%/%(%s%I$N\e(B
- \e$B%m!<%I%b%8%e!<%k%5%$%:$,\e(B7.2\e$B$h$j$b>.$5$/$J$C$F$$$^$9!%$^$?!$\e(B
- SQL\e$BI8=`$N\e(BCONVERT\e$B4X?t$rDI2C$7$^$7$?!%\e(B
- * \e$B$$$/$D$+%(%s%3!<%G%#%s%0$,DI2C$5$l$F$$$^$9!%\e(B
- * \e$B0J>e!$\e(B7.3\e$B$KH?1G$5$l$^$9!%\e(B
-
- 2001/10/01
- * CONVERT\e$B$NDI2C!%\e(Blpad/rpad/trim/btrim/ltrim/rtrim/translate\e$B$N\e(B
- \e$B%^%k%A%P%$%HBP1~DI2C!%\e(Bchar/varchar\e$B$G%P%$%H?t$G$O$J$/!$J8;z?t\e(B
- \e$B$G%5%$%:$rDj5A$9$k$h$&$KJQ99!%0J>e!$\e(B7.2\e$B$KH?1G$5$l$^$9!%\e(B
-
- 2001/2/15
- * \e$BFA2H\e(B@\e$B;06(1?M"%5!<%S%9$5$s$+$i!$\e(BCP932.TXT\e$B$h$j@8@.$7$?\e(BSJIS\e$BMQ$N\e(B
- \e$BJQ49%F!<%V%k$rDs6!$7$F$$$?$@$-$^$7$?!%\e(B7.1\e$B$KH?1G$5$l$^$9!%\e(B
-
- 2001/1/6
- * UNICODE\e$B$HB>$N%(%s%3!<%G%#%s%0$H$NAj8_JQ495!G=$rDI2C!%\e(B
- * 7.1\e$B$KH?1G$5$l$^$9!%\e(B
-
- 2000/5/20
- * NEC \e$BA*Dj\e(B IBM \e$B4A;zBP1~$rDI2C$7$^$7$?!%$3$l$O\e(B \e$BFA2H\e(B@\e$B;06(1?M"%5!<%S%9\e(B
- \e$B$5$s$+$i$N\e(B contribute \e$B$G$9!%\e(B
- * \e$B$3$l$i$O!$\e(B7.0.1 \e$B$KH?1G$5$l$^$9!%\e(B
-
- 2000/3/22
- * PQsetClientEncoding, PQclientEncoding \e$B$r\e(Blibpq \e$B4X?t$KDI2C!$\e(B
- \e$B%3%M%/%7%g%sKh$K%(%s%3!<%G%#%s%0$rJQ992DG=$K!%\e(B
- * SJIS \e$B%f!<%6Dj5AJ8;z\e(B (UDC) \e$B$X$NBP1~\e(B
- * ./configure --with-mb=EUC_JP \e$B$+$i\e(B
- ./configure --enable-multibyte=EUC_JP \e$B$KJQ99\e(B
- * SQL_ASCII \e$B$N\e(B regression test \e$BDI2C\e(B
- * \e$B$3$l$i$O\e(B 7.0 \e$B$KH?1G$5$l$^$9!%\e(B
-
- 1999/7/11 WIN1250(Windows\e$BMQ$N%A%'%38l\e(B)\e$B%5%]!<%H$rDI2C$7$^$7$?!%\e(B
- * WIN1250 \e$B$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$H$7$FMxMQ$G$-$k$h\e(B
- \e$B$&$K$J$j$^$7$?!%$3$N>l9g!$%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$O\e(B
- LATIN2 \e$B$^$?$O\e(B MULE_INTERNAL \e$B$H$7$^$9!%\e(B
- (contributed by Pavel Behal)
- * backend/utils/mb/conv.c\e$B$K$*$1$k7?$NIT@09g$r=$@5$7$^$7$?!%\e(B
- (contributed by Tomoaki Nishiyama)
- * \e$B$3$l$i$O\e(B6.5.1\e$B$KH?1G$5$l$^$9!%\e(B
-
- 1999/3/23 \e$B%-%j%kJ8;z%5%]!<%HDI2CB>\e(B(6.5 \e$B$KH?1G:Q\e(B)
- * \e$B%(%s%3!<%G%#%s%0$H$7$F\e(B KOI8(KOI8-R), WIN(CP1251), ALT(CP866) \e$B$r\e(B
- \e$B%5%]!<%H$7$F$$$^$9!%$3$l$i$O!$%U%m%s%H%(%s%I!$%P%C%/%(%s%I!$\e(B
- \e$B$I$A$i$N%(%s%3!<%G%#%s%0$H$7$F$b;HMQ2DG=$G$"$j!$%(%s%3!<%G%#%s%0$N\e(B
- \e$BAj8_JQ49$,2DG=$G$9!%$^$?!$=>Mh$+$i%5%]!<%H$7$F$$$k\e(B ISO 8859-5 \e$B$b\e(B
- \e$BF1MM$K;HMQ2DG=$G$9!%\e(B
- \e$B%j%/%(%9%H5Z$S6(NO$K$h$j<B8=$7$^$7$?!%$3$l$O!$=>Mh$+$i$"$k\e(B
- RCODE \e$B%5%]!<%H$N5!G=$r<h$j9~$`$b$N$G$b$"$j$^$9!%\e(B
- * MB \e$B$H\e(B locale \e$B$rF1;~$K;XDj$7$?>l9g$KBgJ8;z!?>.J8;z$rL5;k$7$?\e(B
- \e$B@55,I=8=8!:w$,@5>o$KF0:n$7$J$$%P%0$r=$@5\e(B
-
- 1999/1/26 Big5 \e$B%5%]!<%HDI2C\e(B(6.4.2-patched/6.5 \e$B$KH?1G:Q\e(B)
- * Big5 \e$B$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$H$7$FMxMQ$G$-$k$h\e(B
- \e$B$&$K$J$j$^$7$?!%$3$N>l9g!$%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$O\e(B
- EUC_TW \e$B$^$?$O\e(B MULE_INTERNAL \e$B$H$7$^$9!%\e(B
- * EUC_TW \e$B$N\e(B regression test \e$B%1!<%9$rDI2C\e(B
-
- 1998/12/16 \e$BK\%I%-%e%a%s%H=$@5\e(B(6.4.2 \e$B$KH?1G:Q\e(B)\e$B!%\e(B
- * Makefile.custom \e$B$G\e(B MB=EUC_JP \e$B$J$I$H@_Dj$9$kJ}K!$O\e(B 6.4 \e$B0J9_\e(B
- \e$B%5%]!<%H$5$l$F$$$J$$$N$G:o=|$7$?!%\e(B
- * \e$BJ8;z%3!<%I\e(B \e$B"*\e(B \e$B%(%s%3!<%G%#%s%0!$%/%i%$%"%s%H"*%U%m%s%H%(%s%I\e(B
- \e$B%5!<%P"*%P%C%/%(%s%I\e(B \e$B$K$=$l$>$l8l6g$r=$@5!%\e(B
-
- 1998/12/15 6.4 \e$B8~$1%P%0=$@5%Q%C%A%j%j!<%9\e(B(6.4.2 \e$B$KH?1G:Q\e(B)\e$B!%\e(B
- * SQL_ASCII \e$B%5%]!<%H$N%P%0=$@5\e(B
-
- 1998/11/21 6.4 \e$B8~$1%P%0=$@5%Q%C%A%j%j!<%9\e(B(6.4.2 \e$B$KH?1G:Q\e(B)\e$B!%\e(B
- * BINARY CURSOR \e$B$NLdBj$r=$@5\e(B
- * pg_dumpall \e$B$N%P%0=$@5\e(B
-
- 1998/11/5 6.4 \e$B%j%j!<%9!%\e(B
- * pg_database \e$B$N\e(B encoding \e$B%+%i%`$,\e(B MB \e$B$,M-8z$G$J$$$H$-$K$b\e(B
- \e$BDI2C$5$l$k$h$&$K$J$C$?!%$=$N$?$a!$\e(BMB \e$B$,M-8z$G$J$$$H$-$K$O!$\e(B
- ASCII \e$B$N%(%s%3!<%G%#%s%0$rI=$9\e(B SQL_ASCII \e$B$r?7$7$$%(%s%3!<%G%#%s%0\e(B
- \e$B$H$7$FDI2C$7$?!%$3$l$K$H$b$J$$!$%(%s%3!<%G%#%s%0L>$KBP1~$9$k\e(B
- \e$B%(%s%3!<%G%#%s%0\e(BID\e$B$,\e(B SQL_ASCII \e$B$r\e(B 0 \e$B$H$9$kHV9f$KJQ99$K$J$C$?!%\e(B
-
- 1998/7/22 6.4 \e$B&A8~$1$K%Q%C%A$r%j%j!<%9!%\e(B
- * initdb/createdb/create database \e$B$G%P%C%/%(%s%IB&$N\e(B
- \e$B%(%s%3!<%G%#%s%0$r@_Dj$-$k5!G=<BAu!%$3$N$?$a!$%7%9%F%`%+%?%m\e(B
- \e$B%0$N\e(B pg_database \e$B$K?7$7$$%+%i%`\e(B encoding \e$B$rDI2C\e(B(MB\e$B$,M-8z$J;~$@$1\e(B)
- * copy \e$B$,\e(B PGCLIENTENCODING \e$B$KBP1~\e(B
- * SQL92 \e$B$N\e(B "SET NAMES" \e$B$r%5%]!<%H\e(B(MB\e$B$,M-8z$J;~$@$1\e(B)
- * LATIN2-5 \e$B$r%5%]!<%H\e(B
- * regression test \e$B$K\e(B unicode \e$B$N%F%9%H%1!<%9$rDI2C\e(B
- * MB \e$B@lMQ$N\e(B regression \e$B%F%9%H%G%#%l%/%H%j\e(B test/mb \e$B$rDI2C\e(B
- * \e$B%=!<%9%U%!%$%k$NCV$->l=j$rBgI}8+D>$7!%\e(BMB \e$B4X78$O\e(B
- include/mb, backend/utils/mb \e$B$KCV$/$h$&$K$7$?\e(B
-
- 1998/5/25 \e$B%P%0=$@5\e(B(mb_b3.patch \e$B$H$7$F\e(B pgsql-jp ML \e$B$K%j%j!<%9!$\e(B
- \e$BK\2H$G$O\e(B 6.4 snapshot \e$B$K<h$j9~$^$l$kM=Dj\e(B)
-
- 1998/5/18 \e$B5!G=DI2C!?%P%0=$@5\e(B(mb_b2.patch \e$B$H$7$F\e(B pgsql-jp ML \e$B$K%j%j!<%9!$\e(B
- \e$BK\2H$G$O\e(B 6.4 snapshot \e$B$K<h$j9~$^$l$kM=Dj\e(B)
- * \e$B4D6-JQ?t\e(B PGCLIENTENCODING \e$B$N%5%]!<%H!%%U%m%s%H%(%s%IB&$N\e(B
- \e$B%(%s%3!<%G%#%s%0$r;XDj$9$k!%8=:_!$\e(BSJIS, EUC_*, MULE_INTERNAL,
- LATIN1 \e$B$,;XDj$G$-$k!%$^$?!$\e(B
- set client_encoding to 'sjis';
- \e$B$G$b2DG=\e(B
- * 8bit \e$BJ8;z$,EO$k$HLdBj$,5/$-$k2U=j$K$G$-$k$@$1BP1~\e(B
-
- 1998/4/21 \e$B5!G=DI2C!?%P%0=$@5\e(B(mb_b1.patch \e$B$H$7$F\e(B pgsql-jp ML \e$B$K%j%j!<%9!$\e(B
- \e$BK\2H$G$O\e(B 6.4 snapshot \e$B$K<h$j9~$^$l$F$$$k\e(B)
- * character_length(), position(), substring() \e$B$N%^%k%A%P%$%H\e(B
- \e$BBP1~\e(B
- * octet_length() \e$BDI2C\e(B \e$B"*\e(B initdb \e$B$N$d$jD>$7I,MW\e(B
- * configure \e$B$N%*%W%7%g%s$K\e(B MB \e$B%5%]!<%HDI2C\e(B
- (ex. configure --with-mb=EUC_JP)
- * EUC_KR \e$B$N\e(B regression test \e$BDI2C\e(B
- * EUC_JP \e$B$N\e(B regression test \e$B$K\e(B character_length(), position(),
- substring(), octet_length() \e$BDI2C\e(B
- * regress.sh \e$B$N\e(B SystemV \e$B$K$*$1$kHs8_49@-=$@5\e(B
- * toupper(), tolower() \e$B$K\e(B 8bit \e$BJ8;z$,EO$k$HMn$A$k$3$H$,\e(B
- \e$B$"$k$N$r=$@5\e(B
-
- 1998/3/25 PostgreSQL 6.3.1 \e$B%j%j!<%9!$\e(BMB PL2 \e$B$,<h$j9~$^$l$k\e(B
-
- 1998/3/10 PL2 \e$B$r%j%j!<%9\e(B
- * EUC_JP, EUC_CN, MULE_INTERNAL \e$B$N\e(B regression test \e$B$rDI2C\e(B
- * regexp \e$B$K$*$$$F!$\e(Bisalpha \e$B$J$I$K\e(B unsigend char \e$B0J30$NCM$,\e(B
- \e$BEO$i$J$$$h$&$K%,!<%I$r$+$1$k\e(B
- * \e$B1Q8l$N%I%-%e%a%s%H$rDI2C\e(B
- * MB \e$B$rDj5A$7$J$$>l9g$KH/@8$9$k%P%0$r=$@5\e(B
-
- 1998/3/1 PL1 \e$B$r%j%j!<%9\e(B
-
-\e$B0J>e!%\e(B
+++ /dev/null
-The TODO list is now maintained at:
-
- http://wiki.postgresql.org/wiki/Todo
+++ /dev/null
-If PostgreSQL failed to compile on your computer or you found a bug,
-
-If your bug report has security implications and you'd prefer that it not
-become immediately visible in public archives, don't send it to postgres-xl-bugs.
-
-If you not only found the problem but solved it and generated a patch
-command "diff -c" to generate the patch.
-
-You may also enter a bug report at http://sourceforge.net/projects/postgres-xl/
-instead of e-mailing this form.
-
-============================================================================
- POSTGRES-XL BUG REPORT TEMPLATE
-============================================================================
-
-
-Your name :
-Your email address :
-
-
-System Configuration:
----------------------
- Architecture (example: Intel Pentium) :
-
- Operating System (example: Linux 2.4.18) :
-
- Postgres-XL version (example: Postgres-XL 9.2): Postgres-XL 9.2
-
- Compiler used (example: gcc 3.3.5) :
-
-
-Please enter a FULL description of your problem:
-------------------------------------------------
-
-
-
-
-
-Please describe a way to repeat the problem. Please try to provide a
-concise reproducible example, if at all possible:
-----------------------------------------------------------------------
-
-
-
-
-
-If you know how this problem might be fixed, list the solution below:
----------------------------------------------------------------------
-
-
+++ /dev/null
-# doc/src/Makefile
-
-subdir = doc/src
-top_builddir = ../..
-include $(top_builddir)/src/Makefile.global
-
-all distprep html man install installdirs uninstall clean distclean maintainer-clean maintainer-check:
- $(MAKE) -C sgml $@
+++ /dev/null
-# Stuff shipped in tarballs
-/html/
-/html-stamp
-/man1/
-/man3/
-/man7/
-/man-stamp
-# Other popular build targets
-/HISTORY
-/INSTALL
-/regress_README
-/postgres-US.pdf
-/postgres-A4.pdf
-/postgres.html
-/postgres.txt
-# GENERATED_SGML
-/features-supported.sgml
-/features-unsupported.sgml
-/errcodes-table.sgml
-/version.sgml
-/bookindex.sgml
-/HTML.index
-# Assorted byproducts from building the above
-/postgres.xml
-/HISTORY.html
-/INSTALL.html
-/regress_README.html
-/postgres-US.aux
-/postgres-US.log
-/postgres-US.out
-/postgres-A4.aux
-/postgres-A4.log
-/postgres-A4.out
+++ /dev/null
-#----------------------------------------------------------------------------
-#
-# PostgreSQL documentation makefile
-#
-# doc/src/sgml/Makefile
-#
-#----------------------------------------------------------------------------
-
-# This makefile is for building and installing the documentation.
-# When a release tarball is created, the documentation files are
-# prepared using the distprep target. In Git-based trees these files
-# don't exist, unless explicitly built, so we skip the installation in
-# that case.
-
-
-# Make "html" the default target, since that is what most people tend
-# to want to use.
-html:
-
-subdir = doc-xc/src/sgml
-top_builddir = ../../..
-include $(top_builddir)/src/Makefile.global
-
-MAKESGMLDIR = $(top_builddir)/src/pgxc/tools/makesgml
-MAKESGML = $(MAKESGMLDIR)/makesgml
-
-
-all: html man
-
-distprep: html distprep-man
-
-
-ifndef COLLATEINDEX
-COLLATEINDEX = $(DOCBOOKSTYLE)/bin/collateindex.pl
-endif
-
-ifndef JADE
-JADE = jade
-endif
-SGMLINCLUDE = -D . -D $(srcdir)
-
-ifndef NSGMLS
-NSGMLS = nsgmls
-endif
-
-ifndef OSX
-OSX = osx
-endif
-
-ifndef XSLTPROC
-XSLTPROC = xsltproc
-endif
-
-VERSION = 9.2
-
-override XSLTPROCFLAGS += --stringparam pg.version '$(VERSION)'
-
-
-GENERATED_SGML = bookindex.sgml version.sgml \
- features-supported.sgml features-unsupported.sgml errcodes-table.sgml
-
-ALLSGMLIN := $(wildcard $(srcdir)/*.sgmlin $(srcdir)/ref/*.sgmlin)
-
-#ALLSGML := $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) $(GENERATED_SGML)
-ALLSGML := $(ALLSGMLIN:%sgmlin=%sgml) $(GENERATED_SGML)
-
-ALLSGMLTOREMOVE := $(ALLSGMLIN:%sgmlin=%sgml)
-
-
-# Sometimes we don't want this one.
-ALMOSTALLSGML := $(filter-out %bookindex.sgml,$(ALLSGML))
-
-ifdef DOCBOOKSTYLE
-CATALOG = -c $(DOCBOOKSTYLE)/catalog
-endif
-
-# Enable some extra warnings
-# -wfully-tagged needed to throw a warning on missing tags
-# for older tool chains, 2007-08-31
-# Note: try "make SPFLAGS=-wxml" to catch a lot of other dubious constructs,
-# in particular < and & that haven't been made into entities. It's far too
-# noisy to turn on by default, unfortunately.
-override SPFLAGS += -wall -wno-unused-param -wno-empty -wfully-tagged
-
-##
-## SGML files
-##
-
-sgml-files: $(ALLSGMLIN:%sgmlin=%sgml)
-
-##
-## Man pages
-##
-
-man distprep-man: man-stamp
-
-man-stamp: stylesheet-man.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_MAN_FLAGS) $^
- touch $@
-
-
-##
-## HTML
-##
-
-.PHONY: draft
-
-JADE.html.call = $(JADE) $(JADEFLAGS) $(SPFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -t sgml -i output-html
-
-# The draft target creates HTML output in draft mode, without index (for faster build).
-draft: postgres.sgml $(ALMOSTALLSGML) stylesheet.dsl
- $(MKDIR_P) html
- $(JADE.html.call) -V draft-mode $<
- cp $(srcdir)/stylesheet.css html/
-
-html: html-stamp
-
-html-stamp: postgres.sgml $(ALLSGML) stylesheet.dsl
- $(MKDIR_P) html
- $(JADE.html.call) -i include-index $<
- cp $(srcdir)/stylesheet.css html/
- touch $@
-
-# single-page HTML
-postgres.html: postgres.sgml $(ALLSGML) stylesheet.dsl
- $(JADE.html.call) -V nochunks -V rootchunk -V '(define %root-filename% #f)' -V '(define use-output-dir #f)' -i include-index $<
-
-# single-page text
-postgres.txt: postgres.html
- $(LYNX) -force_html -dump -nolist $< > $@
-
-HTML.index: postgres.sgml $(ALMOSTALLSGML) stylesheet.dsl
- @$(MKDIR_P) html
- $(JADE.html.call) -V html-index $<
-
-bookindex.sgml: HTML.index
- LC_ALL=C $(PERL) $(COLLATEINDEX) -f -g -i 'bookindex' -o $@ $<
-
-# Technically, this should depend on Makefile.global, but then
-# version.sgml would need to be rebuilt after every configure run,
-# even in distribution tarballs. So this is cheating a bit, but it
-# will achieve the goal of updating the version number when it
-# changes.
-version.sgml: $(top_srcdir)/configure
- { \
- echo "<!ENTITY version \"$(VERSION)\">"; \
- echo "<!ENTITY majorversion \"$(MAJORVERSION)\">"; \
- } > $@
-
-features-supported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
- $(PERL) $(srcdir)/mk_feature_tables.pl YES $^ > $@
-
-features-unsupported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
- $(PERL) $(srcdir)/mk_feature_tables.pl NO $^ > $@
-
-errcodes-table.sgml: $(top_srcdir)/src/backend/utils/errcodes.txt generate-errcodes-table.pl
- $(PERL) $(srcdir)/generate-errcodes-table.pl $< > $@
-
-##
-## Print
-##
-
-
-# RTF to allow minor editing for hardcopy
-%.rtf: %.sgml $(ALLSGML)
- $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -t rtf -V rtf-backend -i output-print -i include-index postgres.sgml
-
-# TeX
-# Regular TeX and pdfTeX have slightly differing requirements, so we
-# need to distinguish the path we're taking.
-
-JADE.tex.call = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d $(srcdir)/stylesheet.dsl -t tex -V tex-backend -i output-print -i include-index
-
-%-A4.tex-ps: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=A4 -o $@ $<
-
-%-US.tex-ps: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=USletter -o $@ $<
-
-%-A4.tex-pdf: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texpdf-output -V '%paper-type%'=A4 -o $@ $<
-
-%-US.tex-pdf: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texpdf-output -V '%paper-type%'=USletter -o $@ $<
-
-%.dvi: %.tex-ps
- @rm -f $*.aux $*.log
-# multiple runs are necessary to create proper intra-document links
- jadetex $<
- jadetex $<
- jadetex $<
-
-# PostScript from TeX
-postgres.ps:
- $(error Invalid target; use postgres-A4.ps or postgres-US.ps as targets)
-
-%.ps: %.dvi
- dvips -o $@ $<
-
-postgres.pdf:
- $(error Invalid target; use postgres-A4.pdf or postgres-US.pdf as targets)
-
-%.pdf: %.tex-pdf
- @rm -f $*.aux $*.log $*.out
-# multiple runs are necessary to create proper intra-document links
- pdfjadetex $<
- pdfjadetex $<
- pdfjadetex $<
-
-# Cancel built-in suffix rules, interfering with PS building
-.SUFFIXES:
-.SUFFIXES: .sgml .sgmlin
-
-INC_LIST = -I PG -I EN
-#INC_LIST = -I PGXC -I EN
-
-.sgmlin.sgml:
- $(MAKE) -C $(MAKESGMLDIR)
- $(MAKESGML) -i $< -o $@ $(INC_LIST) $(EXC_LIST)
-
-
-# This generates an XML version of the flow-object tree. It's useful
-# for debugging DSSSL code, and possibly to interface to some other
-# tools that can make use of this.
-%.fot: %.sgml $(ALLSGML)
- $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -t fot -i output-print -i include-index -o $@ $<
-
-
-##
-## Semi-automatic generation of some text files.
-##
-
-JADE.text = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -i output-text -t sgml
-LYNX = lynx
-
-INSTALL HISTORY regress_README: % : %.html
- $(PERL) -p -e 's/<H(1|2)$$/<H\1 align=center/g' $< | $(LYNX) -force_html -dump -nolist -stdin > $@
-
-INSTALL.html: standalone-install.sgml installation.sgml version.sgml
- $(JADE.text) -V nochunks standalone-install.sgml installation.sgml > $@
-
-HISTORY.html: generate_history.pl $(wildcard $(srcdir)/release*.sgml)
- $(PERL) $< "$(srcdir)" release.sgml >tempfile_HISTORY.sgml
- $(JADE.text) -V nochunks tempfile_HISTORY.sgml > $@
- rm tempfile_HISTORY.sgml
-
-regress_README.html: regress.sgml
- ( echo '<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.2//EN" ['; \
- echo '<!ENTITY % standalone-ignore "IGNORE">'; \
- echo '<!ENTITY % standalone-include "INCLUDE"> ]>'; \
- cat $< ) >tempfile_regress_README.sgml
- $(JADE.text) -V nochunks tempfile_regress_README.sgml > $@
- rm tempfile_regress_README.sgml
-
-
-##
-## XSLT processing
-##
-
-# For obscure reasons, gmake 3.81 complains about circular dependencies
-# if we try to do "make all" in a VPATH build without the explicit
-# $(srcdir) on the postgres.sgml dependency in this rule. gmake bug?
-postgres.xml: $(srcdir)/postgres.sgml $(ALMOSTALLSGML)
- $(OSX) -D. -x lower $< >postgres.xmltmp
- $(PERL) -p -e 's/\[(amp|copy|egrave|gt|lt|mdash|nbsp|ouml|pi|quot|uuml) *\]/\&\1;/g;' \
- -e '$$_ .= qq{<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">\n} if $$. == 1;' \
- <postgres.xmltmp > $@
- rm postgres.xmltmp
-# ' hello Emacs
-
-xslthtml: stylesheet.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $^
-
-htmlhelp: stylesheet-hh.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $^
-
-%-A4.fo: stylesheet-fo.xsl %.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) --stringparam paper.type A4 -o $@ $^
-
-%-US.fo: stylesheet-fo.xsl %.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) --stringparam paper.type USletter -o $@ $^
-
-
-##
-## Experimental Texinfo targets
-##
-
-DB2X_TEXIXML = db2x_texixml
-DB2X_XSLTPROC = db2x_xsltproc
-MAKEINFO = makeinfo
-
-%.texixml: %.xml
- $(DB2X_XSLTPROC) -s texi -g output-file=$(basename $@) $< -o $@
-
-%.texi: %.texixml
- $(DB2X_TEXIXML) --encoding=iso-8859-1//TRANSLIT $< --to-stdout > $@
-
-%.info: %.texi
- $(MAKEINFO) --enable-encoding --no-split --no-validate $< -o $@
-
-
-##
-## Check
-##
-
-# Quick syntax check without style processing
-check maintainer-check: postgres.sgml $(ALMOSTALLSGML) check-tabs
- $(NSGMLS) $(SPFLAGS) $(SGMLINCLUDE) -s $<
-
-
-##
-## Install
-##
-
-install: install-html
-
-ifneq ($(PORTNAME), sco)
-install: install-man
-endif
-
-installdirs:
- $(MKDIR_P) '$(DESTDIR)$(htmldir)'/html $(addprefix '$(DESTDIR)$(mandir)'/man, 1 3 $(sqlmansectnum))
-
-uninstall:
- rm -f '$(DESTDIR)$(htmldir)/html/'* $(addprefix '$(DESTDIR)$(mandir)'/man, 1/* 3/* $(sqlmansectnum)/*)
-
-
-## Install html
-
-install-html: html installdirs
- cp -R $(call vpathsearch,html) '$(DESTDIR)$(htmldir)'
-
-
-## Install man
-
-install-man: man installdirs
-
-sqlmansect ?= 7
-sqlmansectnum = $(shell expr X'$(sqlmansect)' : X'\([0-9]\)')
-
-# Before we install the man pages, we massage the section numbers to
-# follow the local conventions.
-#
-ifeq ($(sqlmansectnum),7)
-install-man:
- cp -R $(foreach dir,man1 man3 man7,$(call vpathsearch,$(dir))) '$(DESTDIR)$(mandir)'
-
-else # sqlmansectnum != 7
-fix_sqlmansectnum = sed -e '/^\.TH/s/"7"/"$(sqlmansect)"/' \
- -e 's/\\fR(7)/\\fR($(sqlmansectnum))/g' \
- -e '1s/^\.so man7/.so man$(sqlmansectnum)/g;1s/^\(\.so.*\)\.7$$/\1.$(sqlmansect)/g'
-
-man: fixed-man-stamp
-
-fixed-man-stamp: man-stamp
- @$(MKDIR_P) $(addprefix fixedman/,man1 man3 man$(sqlmansectnum))
- for file in $(call vpathsearch,man1)/*.1; do $(fix_sqlmansectnum) $$file >fixedman/man1/`basename $$file` || exit; done
- for file in $(call vpathsearch,man3)/*.3; do $(fix_sqlmansectnum) $$file >fixedman/man3/`basename $$file` || exit; done
- for file in $(call vpathsearch,man7)/*.7; do $(fix_sqlmansectnum) $$file >fixedman/man$(sqlmansectnum)/`basename $$file | sed s/\.7$$/.$(sqlmansect)/` || exit; done
-
-install-man:
- cp -R $(foreach dir,man1 man3 man$(sqlmansectnum),fixedman/$(dir)) '$(DESTDIR)$(mandir)'
-
-clean: clean-man clean-sgml
-
-.PHONY: clean-man
-clean-man:
- rm -rf fixedman/ fixed-man-stamp
-
-.PHONY: clean-sgml:
-clean-sgml:
- rm -rf $(ALLSGML)
-
-endif # sqlmansectnum != 7
-
-# tabs are harmless, but it is best to avoid them in SGML files
-check-tabs:
- @( ! grep ' ' $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) ) || (echo "Tabs appear in SGML files"; exit 1)
-
-##
-## Clean
-##
-
-# This allows removing some files from the distribution tarballs while
-# keeping the dependencies satisfied.
-.SECONDARY: postgres.xml $(GENERATED_SGML) HTML.index
-.SECONDARY: INSTALL.html HISTORY.html regress_README.html
-.SECONDARY: %-A4.tex-ps %-US.tex-ps %-A4.tex-pdf %-US.tex-pdf
-
-clean:
-# text --- these are shipped, but not in this directory
- rm -f INSTALL HISTORY regress_README
- rm -f INSTALL.html HISTORY.html regress_README.html
-# single-page output
- rm -f postgres.html postgres.txt
-# print
- rm -f *.rtf *.tex-ps *.tex-pdf *.dvi *.aux *.log *.ps *.pdf *.out *.fot
-# index
- rm -f HTML.index $(GENERATED_SGML)
-# XSLT
- rm -f postgres.xml postgres.xmltmp htmlhelp.hhp toc.hhc index.hhk *.fo
-# Texinfo
- rm -f *.texixml *.texi *.info db2texi.refs
-# sgml
- rm -f $(ALLSGMLTOREMOVE)
-
-distclean: clean
-
-maintainer-clean: distclean
-# HTML
- rm -fr html/ html-stamp
-# man
- rm -rf man1/ man3/ man7/ man-stamp
-
-.PHONY: sgmlfiles
-
-INC_LIST = -I XL -I EN
-EXC_LIST = -E PG -E JP
-
-sgmlfiles:
- ./makesgmlfiles $(INC_LIST) $(EXC_LIST)
+++ /dev/null
-#----------------------------------------------------------------------------
-#
-# PostgreSQL documentation makefile
-#
-# $PostgreSQL: pgsql/doc/src/sgml/Makefile,v 1.148 2010/06/12 21:40:31 tgl Exp $
-#
-#----------------------------------------------------------------------------
-
-# This makefile is for building and installing the documentation.
-# When a release tarball is created, the documentation files are
-# prepared using the distprep target. In Git-based trees these files
-# don't exist, unless explicitly built, so we skip the installation in
-# that case.
-
-
-# Make "html" the default target, since that is what most people tend
-# to want to use.
-html:
-
-subdir = doc/src/sgml
-top_builddir = ../../..
-include $(top_builddir)/src/Makefile.global
-
-
-all: html man
-
-distprep: html distprep-man
-
-
-ifndef COLLATEINDEX
-COLLATEINDEX = $(DOCBOOKSTYLE)/bin/collateindex.pl
-endif
-
-ifndef JADE
-JADE = jade
-endif
-SGMLINCLUDE = -D . -D $(srcdir)
-
-ifndef NSGMLS
-NSGMLS = nsgmls
-endif
-
-ifndef OSX
-OSX = osx
-endif
-
-ifndef XSLTPROC
-XSLTPROC = xsltproc
-endif
-
-override XSLTPROCFLAGS += --stringparam pg.version '$(VERSION)'
-
-
-GENERATED_SGML = bookindex.sgml version.sgml \
- features-supported.sgml features-unsupported.sgml
-
-ALLSGMLIN := $(wildcard $(srcdir)/*.sgmlin $(srcdir)/ref/*.sgmlin)
-
-#ALLSGML := $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) $(GENERATED_SGML)
-ALLSGML := $(ALLSGMLIN:%sgmlin=%sgml) $(GENERATED_SGML)
-
-ALLSGMLTOREMOVE := $(ALLSGMLIN:%sgmlin=%sgml)
-
-
-# Sometimes we don't want this one.
-ALMOSTALLSGML := $(filter-out %bookindex.sgml,$(ALLSGML))
-
-ifdef DOCBOOKSTYLE
-CATALOG = -c $(DOCBOOKSTYLE)/catalog
-endif
-
-# Enable some extra warnings
-# -wfully-tagged needed to throw a warning on missing tags
-# for older tool chains, 2007-08-31
-# Note: try "make SPFLAGS=-wxml" to catch a lot of other dubious constructs,
-# in particular < and & that haven't been made into entities. It's far too
-# noisy to turn on by default, unfortunately.
-override SPFLAGS += -wall -wno-unused-param -wno-empty -wfully-tagged
-
-##
-## Man pages
-##
-
-man distprep-man: man-stamp
-
-man-stamp: stylesheet-man.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_MAN_FLAGS) $^
- touch $@
-
-
-##
-## HTML
-##
-
-.PHONY: draft
-
-JADE.html.call = $(JADE) $(JADEFLAGS) $(SPFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -t sgml -i output-html
-
-# The draft target creates HTML output in draft mode, without index (for faster build).
-draft: postgres.sgml $(ALMOSTALLSGML) stylesheet.dsl
- $(MKDIR_P) html
- $(JADE.html.call) -V draft-mode $<
- cp $(srcdir)/stylesheet.css html/
-
-html: html-stamp
-
-html-stamp: postgres.sgml $(ALLSGML) stylesheet.dsl
- $(MKDIR_P) html
- $(JADE.html.call) -i include-index $<
- cp $(srcdir)/stylesheet.css html/
- touch $@
-
-# single-page HTML
-postgres.html: postgres.sgml $(ALLSGML) stylesheet.dsl
- $(JADE.html.call) -V nochunks -V rootchunk -V '(define %root-filename% #f)' -V '(define use-output-dir #f)' -i include-index $<
-
-# single-page text
-postgres.txt: postgres.html
- $(LYNX) -force_html -dump -nolist $< > $@
-
-HTML.index: postgres.sgml $(ALMOSTALLSGML) stylesheet.dsl
- @$(MKDIR_P) html
- $(JADE.html.call) -V html-index $<
-
-bookindex.sgml: HTML.index
- LC_ALL=C $(PERL) $(COLLATEINDEX) -f -g -i 'bookindex' -o $@ $<
-
-# Technically, this should depend on Makefile.global, but then
-# version.sgml would need to be rebuilt after every configure run,
-# even in distribution tarballs. So this is cheating a bit, but it
-# will achieve the goal of updating the version number when it
-# changes.
-version.sgml: $(top_srcdir)/configure
- { \
- echo "<!entity version \"$(VERSION)\">"; \
- echo "<!entity majorversion \"$(MAJORVERSION)\">"; \
- } > $@
-
-features-supported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
- $(PERL) $(srcdir)/mk_feature_tables.pl YES $^ > $@
-
-features-unsupported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
- $(PERL) $(srcdir)/mk_feature_tables.pl NO $^ > $@
-
-
-##
-## Print
-##
-
-
-# RTF to allow minor editing for hardcopy
-%.rtf: %.sgml $(ALLSGML)
- $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -t rtf -V rtf-backend -i output-print -i include-index postgres.sgml
-
-# TeX
-# Regular TeX and pdfTeX have slightly differing requirements, so we
-# need to distinguish the path we're taking.
-
-JADE.tex.call = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d $(srcdir)/stylesheet.dsl -t tex -V tex-backend -i output-print -i include-index
-
-%-A4.tex-ps: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=A4 -o $@ $<
-
-%-US.tex-ps: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texdvi-output -V '%paper-type%'=USletter -o $@ $<
-
-%-A4.tex-pdf: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texpdf-output -V '%paper-type%'=A4 -o $@ $<
-
-%-US.tex-pdf: %.sgml $(ALLSGML)
- $(JADE.tex.call) -V texpdf-output -V '%paper-type%'=USletter -o $@ $<
-
-%.dvi: %.tex-ps
- @rm -f $*.aux $*.log
-# multiple runs are necessary to create proper intra-document links
- jadetex $<
- jadetex $<
- jadetex $<
-
-# PostScript from TeX
-postgres.ps:
- $(error Invalid target; use postgres-A4.ps or postgres-US.ps as targets)
-
-%.ps: %.dvi
- dvips -o $@ $<
-
-postgres.pdf:
- $(error Invalid target; use postgres-A4.pdf or postgres-US.pdf as targets)
-
-%.pdf: %.tex-pdf
- @rm -f $*.aux $*.log $*.out
-# multiple runs are necessary to create proper intra-document links
- pdfjadetex $<
- pdfjadetex $<
- pdfjadetex $<
-
-# Cancel built-in suffix rules, interfering with PS building
-.SUFFIXES:
-.SUFFIXES: .sgml .sgmlin
-
-INC_LIST = -I PG -I EN
-#INC_LIST = -I PGXC -I EN
-
-.sgmlin.sgml:
- makesgml -i $< -o $@ $(INC_LIST) $(EXC_LIST)
-
-
-# This generates an XML version of the flow-object tree. It's useful
-# for debugging DSSSL code, and possibly to interface to some other
-# tools that can make use of this.
-%.fot: %.sgml $(ALLSGML)
- $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -t fot -i output-print -i include-index -o $@ $<
-
-
-##
-## Semi-automatic generation of some text files.
-##
-
-JADE.text = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -i output-text -t sgml
-LYNX = lynx
-
-INSTALL HISTORY regress_README: % : %.html
- $(PERL) -p -e 's/<H(1|2)$$/<H\1 align=center/g' $< | $(LYNX) -force_html -dump -nolist -stdin > $@
-
-INSTALL.html: standalone-install.sgml installation.sgml version.sgml
- $(JADE.text) -V nochunks standalone-install.sgml installation.sgml > $@
-
-HISTORY.html: generate_history.pl $(wildcard $(srcdir)/release*.sgml)
- $(PERL) $< "$(srcdir)" release.sgml >tempfile_HISTORY.sgml
- $(JADE.text) -V nochunks tempfile_HISTORY.sgml > $@
- rm tempfile_HISTORY.sgml
-
-regress_README.html: regress.sgml
- ( echo '<!doctype chapter PUBLIC "-//OASIS//DTD DocBook V4.2//EN" ['; \
- echo '<!entity % standalone-ignore "IGNORE">'; \
- echo '<!entity % standalone-include "INCLUDE"> ]>'; \
- cat $< ) >tempfile_regress_README.sgml
- $(JADE.text) -V nochunks tempfile_regress_README.sgml > $@
- rm tempfile_regress_README.sgml
-
-
-##
-## XSLT processing
-##
-
-# For obscure reasons, gmake 3.81 complains about circular dependencies
-# if we try to do "make all" in a VPATH build without the explicit
-# $(srcdir) on the postgres.sgml dependency in this rule. gmake bug?
-postgres.xml: $(srcdir)/postgres.sgml $(ALMOSTALLSGML)
- $(OSX) -D. -x lower $< >postgres.xmltmp
- $(PERL) -p -e 's/\[(amp|copy|egrave|gt|lt|mdash|nbsp|ouml|pi|quot|uuml) *\]/\&\1;/g;' \
- -e '$$_ .= qq{<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">\n} if $$. == 1;' \
- <postgres.xmltmp > $@
- rm postgres.xmltmp
-# ' hello Emacs
-
-xslthtml: stylesheet.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $^
-
-htmlhelp: stylesheet-hh.xsl postgres.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) $^
-
-%-A4.fo: stylesheet-fo.xsl %.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) --stringparam paper.type A4 -o $@ $^
-
-%-US.fo: stylesheet-fo.xsl %.xml
- $(XSLTPROC) $(XSLTPROCFLAGS) --stringparam paper.type USletter -o $@ $^
-
-
-##
-## Experimental Texinfo targets
-##
-
-DB2X_TEXIXML = db2x_texixml
-DB2X_XSLTPROC = db2x_xsltproc
-MAKEINFO = makeinfo
-
-%.texixml: %.xml
- $(DB2X_XSLTPROC) -s texi -g output-file=$(basename $@) $< -o $@
-
-%.texi: %.texixml
- $(DB2X_TEXIXML) --encoding=iso-8859-1//TRANSLIT $< --to-stdout > $@
-
-%.info: %.texi
- $(MAKEINFO) --enable-encoding --no-split --no-validate $< -o $@
-
-
-##
-## Check
-##
-
-# Quick syntax check without style processing
-check: postgres.sgml $(ALMOSTALLSGML) check-tabs
- $(NSGMLS) $(SPFLAGS) $(SGMLINCLUDE) -s $<
-
-
-##
-## Install
-##
-
-install: install-html
-
-ifneq ($(PORTNAME), sco)
-install: install-man
-endif
-
-installdirs:
- $(MKDIR_P) '$(DESTDIR)$(htmldir)'/html $(addprefix '$(DESTDIR)$(mandir)'/man, 1 3 $(sqlmansectnum))
-
-uninstall:
- rm -f '$(DESTDIR)$(htmldir)/html/'* $(addprefix '$(DESTDIR)$(mandir)'/man, 1/* 3/* $(sqlmansectnum)/*)
-
-
-## Install html
-
-install-html: html installdirs
- cp -R $(call vpathsearch,html) '$(DESTDIR)$(htmldir)'
-
-
-## Install man
-
-install-man: man installdirs
-
-sqlmansect ?= 7
-sqlmansectnum = $(shell expr X'$(sqlmansect)' : X'\([0-9]\)')
-
-# Before we install the man pages, we massage the section numbers to
-# follow the local conventions.
-#
-ifeq ($(sqlmansectnum),7)
-install-man:
- cp -R $(foreach dir,man1 man3 man7,$(call vpathsearch,$(dir))) '$(DESTDIR)$(mandir)'
-
-else # sqlmansectnum != 7
-fix_sqlmansectnum = sed -e '/^\.TH/s/"7"/"$(sqlmansect)"/' \
- -e 's/\\fR(7)/\\fR($(sqlmansectnum))/g' \
- -e '1s/^\.so man7/.so man$(sqlmansectnum)/g;1s/^\(\.so.*\)\.7$$/\1.$(sqlmansect)/g'
-
-man: fixed-man-stamp
-
-fixed-man-stamp: man-stamp
- @$(MKDIR_P) $(addprefix fixedman/,man1 man3 man$(sqlmansectnum))
- for file in $(call vpathsearch,man1)/*.1; do $(fix_sqlmansectnum) $$file >fixedman/man1/`basename $$file` || exit; done
- for file in $(call vpathsearch,man3)/*.3; do $(fix_sqlmansectnum) $$file >fixedman/man3/`basename $$file` || exit; done
- for file in $(call vpathsearch,man7)/*.7; do $(fix_sqlmansectnum) $$file >fixedman/man$(sqlmansectnum)/`basename $$file | sed s/\.7$$/.$(sqlmansect)/` || exit; done
-
-install-man:
- cp -R $(foreach dir,man1 man3 man$(sqlmansectnum),fixedman/$(dir)) '$(DESTDIR)$(mandir)'
-
-clean: clean-man clean-sgml
-
-.PHONY: clean-man
-clean-man:
- rm -rf fixedman/ fixed-man-stamp
-
-.PHONY: clean-sgml:
-clean-sgml:
- rm -rf $(ALLSGML)
-
-endif # sqlmansectnum != 7
-
-# tabs are harmless, but it is best to avoid them in SGML files
-check-tabs:
- @( ! grep ' ' $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) ) || (echo "Tabs appear in SGML files"; exit 1)
-
-##
-## Clean
-##
-
-# This allows removing some files from the distribution tarballs while
-# keeping the dependencies satisfied.
-.SECONDARY: postgres.xml $(GENERATED_SGML) HTML.index
-.SECONDARY: INSTALL.html HISTORY.html regress_README.html
-.SECONDARY: %-A4.tex-ps %-US.tex-ps %-A4.tex-pdf %-US.tex-pdf
-
-clean:
-# text --- these are shipped, but not in this directory
- rm -f INSTALL HISTORY regress_README
- rm -f INSTALL.html HISTORY.html regress_README.html
-# single-page output
- rm -f postgres.html postgres.txt
-# print
- rm -f *.rtf *.tex-ps *.tex-pdf *.dvi *.aux *.log *.ps *.pdf *.out *.fot
-# index
- rm -f HTML.index $(GENERATED_SGML)
-# XSLT
- rm -f postgres.xml postgres.xmltmp htmlhelp.hhp toc.hhc index.hhk *.fo
-# Texinfo
- rm -f *.texixml *.texi *.info db2texi.refs
-# sgml
- rm -f $(ALLSGMLTOREMOVE)
-
-distclean: clean
-
-maintainer-clean: distclean
-# HTML
- rm -fr html/ html-stamp
-# man
- rm -rf man1/ man3/ man7/ man-stamp
-
-.PHONY: sgmlfiles
-
-INC_LIST = -I XC -I EN
-EXC_LIST = -E PG -E JP
-
-sgmlfiles:
- ./makesgmlfiles $(INC_LIST) $(EXC_LIST)
+++ /dev/null
-<!-- doc/src/sgml/README.links -->
-
-Linking within SGML documents can be confusing, so here is a summary:
-
-
-Intra-document Linking
-----------------------
-
-<xref>
- use to get chapter/section # from the title of the target
- link, or xreflabel if defined at the target; has no close tag
- http://www.oasis-open.org/docbook/documentation/reference/html/xref.html
-
-<link>
- use to supply text for the link, requires </link>
- http://www.oasis-open.org/docbook/documentation/reference/html/link.html
-
-linkend=
- controls the target of the link/xref, required
-
-endterm=
- for <xref>, allows the text of the link/xref to be taken from a
- different link target title
-
-
-External Linking
-----------------
-
-<ulink>
- like <link>, but uses a URL (not a document target); requires
- </ulink>; if no text is specified, the URL appears as the link
- text
- http://www.oasis-open.org/docbook/documentation/reference/html/ulink.html
-
-url=
- used by <ulink> to specify the URL, required
-
-
-Guidelines
-----------
-
-o If you want to supply text, use <link>, else <xref>
-o Do not use text with <ulink> so the URL appears in printed output
-o Specific nouns like GUC variables, SQL commands, and contrib modules
- usually have xreflabels
+++ /dev/null
-<!-- doc/src/sgml/acronyms.sgml -->
-
-<appendix id="acronyms">
- <title>Acronyms</title>
-
- <para>
-<!## PG>
- This is a list of acronyms commonly used in the <productname>PostgreSQL</>
- documentation and in discussions about <productname>PostgreSQL</>.
-<!## end>
-<!## XC>
- This is a list of acronyms commonly used in the <productname>Postgres-XC</>
- documentation and in discussions about <productname>Postgres-XC</>.
-<!## end>
-<!## XL>
- This is a list of acronyms commonly used in the <productname>Postgres-XL</>
- documentation and in discussions about <productname>Postgres-XL</>.
-<!## end>
-
- <variablelist>
-
- <varlistentry>
- <term><acronym>ANSI</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/American_National_Standards_Institute">
- American National Standards Institute</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>API</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/API">Application Programming Interface</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>ASCII</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Ascii">American Standard
- Code for Information Interchange</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>BKI</acronym></term>
- <listitem>
- <para>
- <link linkend="bki">Backend Interface</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>CA</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Certificate_authority">Certificate Authority</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>CIDR</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing">Classless
- Inter-Domain Routing</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>CPAN</acronym></term>
- <listitem>
- <para>
- <ulink url="http://www.cpan.org/">Comprehensive Perl Archive Network</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>CRL</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Certificate_revocation_list">Certificate
- Revocation List</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>CSV</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Comma-separated_values">Comma
- Separated Values</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>CTE</acronym></term>
- <listitem>
- <para>
- <link linkend="queries-with">Common Table Expression</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>CVE</acronym></term>
- <listitem>
- <para>
- <ulink url="http://cve.mitre.org/">Common Vulnerabilities and Exposures</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>DBA</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Database_administrator">Database
- Administrator</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>DBI</acronym></term>
- <listitem>
- <para>
- <ulink url="http://dbi.perl.org/">Database Interface (Perl)</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>DBMS</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Dbms">Database Management
- System</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>DDL</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Data_Definition_Language">Data
- Definition Language</ulink>, SQL commands such as <command>CREATE
- TABLE</>, <command>ALTER USER</>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>DML</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Data_Manipulation_Language">Data
- Manipulation Language</ulink>, SQL commands such as <command>INSERT</>,
- <command>UPDATE</>, <command>DELETE</>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>DST</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Daylight_saving_time">Daylight
- Saving Time</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>ECPG</acronym></term>
- <listitem>
- <para>
-<!## PG>
- <link linkend="ecpg">Embedded C for PostgreSQL</link>
-<!## end>
-<!## XC>
- <link linkend="ecpg">Embedded C for Postgres-XC</link>
-<!## end>
-<!## XL>
- <link linkend="ecpg">Embedded C for Postgres-XL</link>
-<!## end>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>ESQL</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Embedded_SQL">Embedded
- SQL</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>FAQ</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/FAQ">Frequently Asked
- Questions</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>FSM</acronym></term>
- <listitem>
- <para>
- <link linkend="storage-fsm">Free Space Map</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>GEQO</acronym></term>
- <listitem>
- <para>
- <link linkend="geqo">Genetic Query Optimizer</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>GIN</acronym></term>
- <listitem>
- <para>
- <link linkend="GIN">Generalized Inverted Index</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>GiST</acronym></term>
- <listitem>
- <para>
- <link linkend="GiST">Generalized Search Tree</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>Git</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Git_(software)">Git</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>GMT</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/GMT">Greenwich Mean Time</ulink>
- </para>
- </listitem>
- </varlistentry>
-
-<!## XC>
- <varlistentry>
- <term><acronym>GTM</acronym></term>
- <listitem>
- <para>
- Global Transaction Manager
- </para>
- </listitem>
- </varlistentry>
-<!## end>
-<!## XL>
- <varlistentry>
- <term><acronym>GTM</acronym></term>
- <listitem>
- <para>
- Global Transaction Manager
- </para>
- </listitem>
- </varlistentry>
-<!## end>
-
- <varlistentry>
- <term><acronym>GSSAPI</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Generic_Security_Services_Application_Program_Interface">Generic
- Security Services Application Programming Interface</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>GUC</acronym></term>
- <listitem>
- <para>
- <link linkend="config-setting">Grand Unified Configuration</link>,
-<!## PG>
- the <productname>PostgreSQL</> subsystem that handles server configuration
-<!## end>
-<!## XC>
- the <productname>Postgres-XC</> subsystem that handles server configuration
-<!## end>
-<!## XL>
- the <productname>Postgres-XL</> subsystem that handles server configuration
-<!## end>
- </para>
- </listitem>
- </varlistentry>
-
-<!## XC>
- <varlistentry>
- <term><acronym>GXID</acronym></term>
- <listitem>
- <para>
- Global Transaction Identifier
- </para>
- </listitem>
- </varlistentry>
-<!## end>
-<!## XL>
- <varlistentry>
- <term><acronym>GXID</acronym></term>
- <listitem>
- <para>
- Global Transaction Identifier
- </para>
- </listitem>
- </varlistentry>
-<!## end>
-
- <varlistentry>
- <term><acronym>HBA</acronym></term>
- <listitem>
- <para>
- <link linkend="auth-pg-hba-conf">Host-Based Authentication</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>HOT</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://git.postgresql.org/gitweb?p=postgresql.git;a=blob;f=src/backend/access/heap/README.HOT;hb=HEAD">Heap-Only
- Tuples</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>IEC</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/International_Electrotechnical_Commission">International
- Electrotechnical Commission</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>IEEE</acronym></term>
- <listitem>
- <para>
- <ulink url="http://standards.ieee.org/">Institute of Electrical and
- Electronics Engineers</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>IPC</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Inter-process_communication">Inter-Process
- Communication</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>ISO</acronym></term>
- <listitem>
- <para>
- <ulink url="http://www.iso.org/iso/home.htm">International Organization for
- Standardization</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>ISSN</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Issn">International Standard
- Serial Number</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>JDBC</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Java_Database_Connectivity">Java
- Database Connectivity</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>LDAP</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">Lightweight
- Directory Access Protocol</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>MSVC</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Visual_C++"><productname>Microsoft
- Visual C</productname></ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>MVCC</acronym></term>
- <listitem>
- <para>
- <link linkend="mvcc">Multi-Version Concurrency Control</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>NLS</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Internationalization_and_localization">National
- Language Support</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>ODBC</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Open_Database_Connectivity">Open
- Database Connectivity</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>OID</acronym></term>
- <listitem>
- <para>
- <link linkend="datatype-oid">Object Identifier</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>OLAP</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Olap">Online Analytical
- Processing</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>OLTP</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/OLTP">Online Transaction
- Processing</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>ORDBMS</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/ORDBMS">Object-Relational
- Database Management System</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>PAM</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Pluggable_Authentication_Modules">Pluggable
- Authentication Modules</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>PGSQL</acronym></term>
- <listitem>
- <para>
-<!## PG>
- <link linkend="postgres"><productname>PostgreSQL</></link>
-<!## end>
-<!## XC>
- <link linkend="postgres"><productname>Postgres-XC</></link>
-<!## end>
-<!## XL>
- <link linkend="postgres"><productname>Postgres-XL</></link>
-<!## end>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>PGXS</acronym></term>
- <listitem>
- <para>
-<!## PG>
- <link linkend="extend-pgxs"><productname>PostgreSQL</> Extension System</link>
-<!## end>
-<!## XC>
- <link linkend="extend-pgxs"><productname>Postgres-XC</> Extension System</link>
-<!## end>
-<!## XL>
- <link linkend="extend-pgxs"><productname>Postgres-XL</> Extension System</link>
-<!## end>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>PID</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Process_identifier">Process Identifier</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>PITR</acronym></term>
- <listitem>
- <para>
- <link linkend="continuous-archiving">Point-In-Time
- Recovery</link> (Continuous Archiving)
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>PL</acronym></term>
- <listitem>
- <para>
- <link linkend="server-programming">Procedural Languages (server-side)</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>POSIX</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/POSIX">Portable Operating
- System Interface</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>RDBMS</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Relational_database_management_system">Relational
- Database Management System</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>RFC</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Request_for_Comments">Request For
- Comments</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SGML</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/SGML">Standard Generalized
- Markup Language</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SPI</acronym></term>
- <listitem>
- <para>
- <link linkend="spi">Server Programming Interface</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SQL</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/SQL">Structured Query Language</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SRF</acronym></term>
- <listitem>
- <para>
- <link linkend="xfunc-c-return-set">Set-Returning Function</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SSH</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Secure_Shell">Secure
- Shell</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SSL</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Secure_Sockets_Layer">Secure Sockets Layer</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SSPI</acronym></term>
- <listitem>
- <para>
- <ulink url="http://msdn.microsoft.com/en-us/library/aa380493%28VS.85%29.aspx">Security
- Support Provider Interface</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>SYSV</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/System_V">Unix System V</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>TCP/IP</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Transmission_Control_Protocol">Transmission
- Control Protocol (TCP) / Internet Protocol (IP)</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>TID</acronym></term>
- <listitem>
- <para>
- <link linkend="datatype-oid">Tuple Identifier</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>TOAST</acronym></term>
- <listitem>
- <para>
- <link linkend="storage-toast">The Oversized-Attribute Storage Technique</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>TPC</acronym></term>
- <listitem>
- <para>
- <ulink url="http://www.tpc.org/">Transaction Processing
- Performance Council</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>URL</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/URL">Uniform Resource
- Locator</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>UTC</acronym></term>
- <listitem>
- <para>
- <ulink
- url="http://en.wikipedia.org/wiki/Coordinated_Universal_Time">Coordinated
- Universal Time</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>UTF</acronym></term>
- <listitem>
- <para>
- <ulink url="http://www.unicode.org/">Unicode Transformation
- Format</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>UTF8</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/Utf8">Eight-Bit Unicode
- Transformation Format</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>UUID</acronym></term>
- <listitem>
- <para>
- <link linkend="datatype-uuid">Universally Unique Identifier</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>WAL</acronym></term>
- <listitem>
- <para>
- <link linkend="wal">Write-Ahead Log</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>XID</acronym></term>
- <listitem>
- <para>
- <link linkend="datatype-oid">Transaction Identifier</link>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><acronym>XML</acronym></term>
- <listitem>
- <para>
- <ulink url="http://en.wikipedia.org/wiki/XML">Extensible Markup
- Language</ulink>
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </para>
-
-</appendix>
+++ /dev/null
-<!-- doc/src/sgml/add-node.sgml -->
-
-<chapter id="add-node">
- <title>Adding a New Node</title>
-
- <indexterm zone="add-node">
- <primary>Add a new node</primary>
- </indexterm>
-
-&xlonly;
-
- <para>
- This chapter outlines steps to add a new Coordinator or a Datanode to a running cluster.
- Note that an easier way to do this is to make use of the pgxc_ctl utility.
- </para>
-
- <para>
-
- </para>
-
- <sect1 id="add-node-coordinator">
- <title>Adding a New Coordinator</title>
-
- <indexterm zone="add-node-coordinator">
- <primary>Add a new coordinator</primary>
- </indexterm>
-
- <para>
- The following steps should be performed to add a new coordinator to a running cluster:
- </para>
-
- <para>
- <orderedlist>
- <listitem>
- <para>Initialize the new coordinator. The following example initilizes a coordinator named coord_3.</para>
- <programlisting>
- /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data_cord3 --nodename coord_3
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Make necessary changes in postgresql.conf of the new coordinator,
- in particular specify new coordinator name and pooler port.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Connect to any of the existing coordinators and lock the cluster for backup, do not close this session.
- The following example assumes a coordinator is running on port 5432. Make sure the function call returns true.
- The detailed description of the function <function>pgxc_lock_for_backup</> can be found
- in <xref linkend="functions-pgxc-add-new-node">
- </para>
- <programlisting>
- ./psql postgres -p 5432
- select pgxc_lock_for_backup();
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Connect to any of the existing coordinators and take backup of the database.
- Please note that only schema (i.e. no data) is to be dumped.
- Also note the use of <option>--include-nodes</>, so that the <command>CREATE TABLE</> contains <command>TO NODE</> clause.
- Similarly <option>--dump-nodes</> ensures that the dump does contain existing nodes and node groups.
- </para>
- <programlisting>
- ./pg_dumpall -p 5432 -s --include-nodes --dump-nodes --file=/some/valid/path/some_file_name.sql
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Start the new coordinator specifying <option>--restoremode</> while starting.
- The following example starts the new coordinator on port 5455
- </para>
- <programlisting>
- ./postgres --restoremode -D ../data_cord3 -p 5455
- </programlisting>
- <para>
- You can use <literal>pg_ctl</literal> with <option>-Z restoremode</option> option.
- </para>
- <programlisting>
- ./pg_ctl start -Z restoremode -D ../data_coord3 -p 5455
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Restore the backup (taken in step 4) by connecting to the new coordinator directly.
- </para>
- <programlisting>
- ./psql -d postgres -f /some/valid/path/some_file_name.sql -p 5455
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Quit the new coordinator.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Start the new coordinator specifying <option>--coordinator</> while starting.
- The following example starts the new coordinator on port 5455
- </para>
- <programlisting>
- ./postgres --coordinator -D ../data_cord3 -p 5455
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Create the new coordinator on rest of the coordinators and reload configuration.
- The following example creates coord_3, with host localhost and port 5455.
- </para>
- <programlisting>
- CREATE NODE COORD_3 WITH (HOST = 'localhost', type = 'coordinator', PORT = 5455);
- SELECT pgxc_pool_reload();
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Quit the session of step 3, this will unlock the cluster. The new coordinator is now ready.
- </para>
- </listitem>
-
- </orderedlist>
- </para>
-
- </sect1>
-
- <sect1 id="add-node-datanode">
- <title>Adding a New Datanode</title>
-
- <indexterm zone="add-node-datanode">
- <primary>Add a new Datanode</primary>
- </indexterm>
-
- <para>
- Following steps should be performed to add a new datanode to a running cluster:
- </para>
-
- <para>
- <orderedlist>
-
- <listitem>
- <para>
- Initialize the new datanode. The following example initializes a new datanode named data_node_3.
- </para>
- <programlisting>
- /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data3 --nodename data_node_3
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Make the necessary changes in postgresql.conf of the new datanode, in particular specify new datanode name
- </para>
- </listitem>
-
- <listitem>
- <para>
- Connect to any of the existing coordinators and lock the cluster for backup, do not close this session.
- The following example assumes a coordinator is running on port 5432. Make sure the function call returns true.
- The detailed description of the function <function>pgxc_lock_for_backup</> can be found
- in <xref linkend="functions-pgxc-add-new-node">
- </para>
- <programlisting>
- ./psql postgres -p 5432
- select pgxc_lock_for_backup();
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Connect to any of the existing datanodes and take backup of the database.
- Please note that only schema (i.e. no data) is to be dumped.
- The following example assumes that a datanode is running on port 15432.
- </para>
- <programlisting>
- ./pg_dumpall -p 15432 -s --file=/some/valid/path/some_file_name.sql
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Start the new datanode specifying <option>--restoremode</> while starting the it.
- The following example starts the new datanode on port 35432.
- </para>
- <programlisting>
- ./postgres --restoremode -D ../data3 -p 35432
- </programlisting>
- <para>
- You can use <literal>pg_ctl</literal> with <option>-Z restoremode</option> option.
- </para>
- <programlisting>
- ./pg_ctl start -Z restoremode -D ../data3 -p 5455
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Restore the backup (taken in step 4) by connecting to the new datanode directly.
- </para>
- <programlisting>
- ./psql -d postgres -f /some/valid/path/some_file_name.sql -p 35432
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Quit the new datanode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Start the new datanode specifying --datanode while starting.
- </para>
- <programlisting>
- ./postgres --datanode -D ../data3 -p 35432
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Create the new datanode on all the coordinators and reload configuration.
- The following example creates data_node_3, with host localhost and port 35432.
- </para>
- <programlisting>
- CREATE NODE DATA_NODE_3 WITH (HOST = 'localhost', type = 'datanode', PORT = 35432);
- SELECT pgxc_pool_reload();
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Create the new datanode on all the other datanodes too and reload configuration.
- The following example creates data_node_3, with host localhost and port 35432.
- </para>
- <programlisting>
- EXECUTE DIRECT ON (DATA_NODE_1) 'CREATE NODE DATA_NODE_3 WITH (HOST = ''localhost'', type = ''datanode'', PORT = 35432)';
- EXECUTE DIRECT ON (DATA_NODE_2) 'CREATE NODE DATA_NODE_3 WITH (HOST = ''localhost'', type = ''datanode'', PORT = 35432)';
- EXECUTE DIRECT ON (DATA_NODE_3) 'ALTER NODE DATA_NODE_3 WITH (HOST = ''localhost'', type = ''datanode'', PORT = 35432)';
- EXECUTE DIRECT ON (DATA_NODE_1) 'SELECT pgxc_pool_reload()';
- EXECUTE DIRECT ON (DATA_NODE_2) 'SELECT pgxc_pool_reload()';
- EXECUTE DIRECT ON (DATA_NODE_3) 'SELECT pgxc_pool_reload()';
- </programlisting>
- </listitem>
-
- <listitem>
- <para>
- Quit the session of step 3, this will unlock the cluster.
- </para>
- </listitem>
-
- <listitem>
- <para> The new datanode is now ready.
- Redistribute existing data by using <command>ALTER TABLE
-<replaceable>my_table</replaceable> ADD NODE (DATA_NODE_3)</>.
- </para>
- </listitem>
-
- </orderedlist>
- </para>
-
- </sect1>
-
-</chapter>
+++ /dev/null
-<!-- doc/src/sgml/adminpack.sgml -->
-
-<sect1 id="adminpack" xreflabel="adminpack">
- <title>adminpack</title>
-
- <indexterm zone="adminpack">
- <primary>adminpack</primary>
- </indexterm>
-&common;
- <para>
- <filename>adminpack</> provides a number of support functions which
- <application>pgAdmin</> and other administration and management tools can
- use to provide additional functionality, such as remote management
- of server log files.
- </para>
-
- <sect2>
- <title>Functions Implemented</title>
-
-&common;
- <para>
- The functions implemented by <filename>adminpack</> can only be run by a
- superuser. Here's a list of these functions:
-
-<programlisting>
-int8 pg_catalog.pg_file_write(fname text, data text, append bool)
-bool pg_catalog.pg_file_rename(oldname text, newname text, archivename text)
-bool pg_catalog.pg_file_rename(oldname text, newname text)
-bool pg_catalog.pg_file_unlink(fname text)
-setof record pg_catalog.pg_logdir_ls()
-
-/* Renaming of existing backend functions for pgAdmin compatibility */
-int8 pg_catalog.pg_file_read(fname text, data text, append bool)
-bigint pg_catalog.pg_file_length(text)
-int4 pg_catalog.pg_logfile_rotate()
-</programlisting>
- </para>
-
- <note>
- <para>
- Functions of this module run only on the Coordinator you're connecting.
- </para>
- </note>
-
- </sect2>
-
-</sect1>
+++ /dev/null
-<!-- doc/src/sgml/advanced.sgml -->
-
- <chapter id="tutorial-advanced">
- <title>Advanced Features</title>
-
- <sect1 id="tutorial-advanced-intro">
- <title>Introduction</title>
-
-&common;
- <para>
-<!## PG>
- In the previous chapter we have covered the basics of using
- <acronym>SQL</acronym> to store and access your data in
- <productname>PostgreSQL</productname>. We will now discuss some
- more advanced features of <acronym>SQL</acronym> that simplify
- management and prevent loss or corruption of your data. Finally,
- we will look at some <productname>PostgreSQL</productname>
- extensions.
-<!## end>
-<!## XC>
- In the previous chapter we have covered the basics of using
- <acronym>SQL</acronym> to store and access your data in
- <productname>Postgres-XC</productname>. We will now discuss some
- more advanced features of <acronym>SQL</acronym> that simplify
- management and prevent loss or corruption of your data. Finally,
- we will look at some <productname>Postgres-XC</productname>
- extensions.
-<!## end>
-<!## XL>
- In the previous chapter we have covered the basics of using
- <acronym>SQL</acronym> to store and access your data in
- <productname>Postgres-XL</productname>. We will now discuss some
- more advanced features of <acronym>SQL</acronym> that simplify
- management and prevent loss or corruption of your data. Finally,
- we will look at some <productname>Postgres-XL</productname>
- extensions.
-<!## end>
- </para>
-
- <para>
- This chapter will on occasion refer to examples found in <xref
- linkend="tutorial-sql"> to change or improve them, so it will be
- useful to have read that chapter. Some examples from
- this chapter can also be found in
- <filename>advanced.sql</filename> in the tutorial directory. This
- file also contains some sample data to load, which is not
- repeated here. (Refer to <xref linkend="tutorial-sql-intro"> for
- how to use the file.)
- </para>
- </sect1>
-
-
- <sect1 id="tutorial-views">
- <title>Views</title>
-
- <indexterm zone="tutorial-views">
- <primary>view</primary>
- </indexterm>
-&common;
- <para>
- Refer back to the queries in <xref linkend="tutorial-join">.
- Suppose the combined listing of weather records and city location
- is of particular interest to your application, but you do not want
- to type the query each time you need it. You can create a
- <firstterm>view</firstterm> over the query, which gives a name to
- the query that you can refer to like an ordinary table:
-
-<programlisting>
-CREATE VIEW myview AS
- SELECT city, temp_lo, temp_hi, prcp, date, location
- FROM weather, cities
- WHERE city = name;
-
-SELECT * FROM myview;
-</programlisting>
- </para>
-
- <para>
- Making liberal use of views is a key aspect of good SQL database
- design. Views allow you to encapsulate the details of the
- structure of your tables, which might change as your application
- evolves, behind consistent interfaces.
- </para>
-
- <para>
- Views can be used in almost any place a real table can be used.
- Building views upon other views is not uncommon.
- </para>
- </sect1>
-
-
- <sect1 id="tutorial-fk">
- <title>Foreign Keys</title>
-
- <indexterm zone="tutorial-fk">
- <primary>foreign key</primary>
- </indexterm>
-
- <indexterm zone="tutorial-fk">
- <primary>referential integrity</primary>
- </indexterm>
-&common;
- <para>
- Recall the <classname>weather</classname> and
- <classname>cities</classname> tables from <xref
- linkend="tutorial-sql">. Consider the following problem: You
- want to make sure that no one can insert rows in the
- <classname>weather</classname> table that do not have a matching
- entry in the <classname>cities</classname> table. This is called
- maintaining the <firstterm>referential integrity</firstterm> of
- your data. In simplistic database systems this would be
- implemented (if at all) by first looking at the
- <classname>cities</classname> table to check if a matching record
- exists, and then inserting or rejecting the new
- <classname>weather</classname> records. This approach has a
- number of problems and is very inconvenient, so
-<!## PG>
- <productname>PostgreSQL</productname> can do this for you.
-<!## end>
-<!## XC>
- <productname>Postgres-XC</productname> can do this for you.
-<!## end>
-<!## XL>
- <productname>Postgres-XL</productname> can do this for you.
-<!## end>
- </para>
-
- <para>
- The new declaration of the tables would look like this:
-
-<programlisting>
-CREATE TABLE cities (
- city varchar(80) primary key,
- location point
-);
-
-CREATE TABLE weather (
- city varchar(80) references cities(city),
- temp_lo int,
- temp_hi int,
- prcp real,
- date date
-);
-</programlisting>
-
- Now try inserting an invalid record:
-
-<programlisting>
-INSERT INTO weather VALUES ('Berkeley', 45, 53, 0.0, '1994-11-28');
-</programlisting>
-
-<screen>
-ERROR: insert or update on table "weather" violates foreign key constraint "weather_city_fkey"
-DETAIL: Key (city)=(Berkeley) is not present in table "cities".
-</screen>
- </para>
-
- <para>
- The behavior of foreign keys can be finely tuned to your
- application. We will not go beyond this simple example in this
- tutorial, but just refer you to <xref linkend="ddl">
- for more information. Making correct use of
- foreign keys will definitely improve the quality of your database
- applications, so you are strongly encouraged to learn about them.
- </para>
-
-<!## XC>
-&xconly;
- <para>
- Please note that primary key and reference key are both allowed
- only when these columns are distribution keys when tables are
- distributed. As a default, <productname>Postgres-XC</>
- distributes each row of tables based upon the value of the first
- column of the table. You can choose any column as a basis of
- table distribution, or you can have copies of a table in all the
- Datanodes.
- </para>
- <para>
- Please refer to <xref linkend="sql-select"> for details.
- </para>
-
- </sect1>
-
-
- <sect1 id="tutorial-transactions">
- <title>Transactions</title>
-
- <indexterm zone="tutorial-transactions">
- <primary>transaction</primary>
- </indexterm>
-
-&common;
- <para>
- <firstterm>Transactions</> are a fundamental concept of all database
- systems. The essential point of a transaction is that it bundles
- multiple steps into a single, all-or-nothing operation. The intermediate
- states between the steps are not visible to other concurrent transactions,
- and if some failure occurs that prevents the transaction from completing,
- then none of the steps affect the database at all.
- </para>
-
- <para>
- For example, consider a bank database that contains balances for various
- customer accounts, as well as total deposit balances for branches.
- Suppose that we want to record a payment of $100.00 from Alice's account
- to Bob's account. Simplifying outrageously, the SQL commands for this
- might look like:
-
-<programlisting>
-UPDATE accounts SET balance = balance - 100.00
- WHERE name = 'Alice';
-UPDATE branches SET balance = balance - 100.00
- WHERE name = (SELECT branch_name FROM accounts WHERE name = 'Alice');
-UPDATE accounts SET balance = balance + 100.00
- WHERE name = 'Bob';
-UPDATE branches SET balance = balance + 100.00
- WHERE name = (SELECT branch_name FROM accounts WHERE name = 'Bob');
-</programlisting>
- </para>
-
- <para>
- The details of these commands are not important here; the important
- point is that there are several separate updates involved to accomplish
- this rather simple operation. Our bank's officers will want to be
- assured that either all these updates happen, or none of them happen.
- It would certainly not do for a system failure to result in Bob
- receiving $100.00 that was not debited from Alice. Nor would Alice long
- remain a happy customer if she was debited without Bob being credited.
- We need a guarantee that if something goes wrong partway through the
- operation, none of the steps executed so far will take effect. Grouping
- the updates into a <firstterm>transaction</> gives us this guarantee.
- A transaction is said to be <firstterm>atomic</>: from the point of
- view of other transactions, it either happens completely or not at all.
- </para>
-
- <para>
- We also want a
- guarantee that once a transaction is completed and acknowledged by
- the database system, it has indeed been permanently recorded
- and won't be lost even if a crash ensues shortly thereafter.
- For example, if we are recording a cash withdrawal by Bob,
- we do not want any chance that the debit to his account will
- disappear in a crash just after he walks out the bank door.
- A transactional database guarantees that all the updates made by
- a transaction are logged in permanent storage (i.e., on disk) before
- the transaction is reported complete.
- </para>
-
- <para>
- Another important property of transactional databases is closely
- related to the notion of atomic updates: when multiple transactions
- are running concurrently, each one should not be able to see the
- incomplete changes made by others. For example, if one transaction
- is busy totalling all the branch balances, it would not do for it
- to include the debit from Alice's branch but not the credit to
- Bob's branch, nor vice versa. So transactions must be all-or-nothing
- not only in terms of their permanent effect on the database, but
- also in terms of their visibility as they happen. The updates made
- so far by an open transaction are invisible to other transactions
- until the transaction completes, whereupon all the updates become
- visible simultaneously.
- </para>
-
- <para>
-<!## end>
-<!## XL>
-&xlonly;
- <para>
- Please note that primary key and reference key are both allowed
- only when these columns are distribution keys when tables are
- distributed. As a default, <productname>Postgres-XL</>
- distributes each row of tables based upon the value of the first
- column of the table. You can choose any column as a basis of
- table distribution, or you can have copies of a table in all the
- Datanodes by specifying that it should be distributed by replication.
- </para>
- <para>
- Please refer to <xref linkend="sql-select"> for details.
- </para>
-
- </sect1>
-
-
- <sect1 id="tutorial-transactions">
- <title>Transactions</title>
-
- <indexterm zone="tutorial-transactions">
- <primary>transaction</primary>
- </indexterm>
-
-&common;
- <para>
- <firstterm>Transactions</> are a fundamental concept of all database
- systems. The essential point of a transaction is that it bundles
- multiple steps into a single, all-or-nothing operation. The intermediate
- states between the steps are not visible to other concurrent transactions,
- and if some failure occurs that prevents the transaction from completing,
- then none of the steps affect the database at all.
- </para>
-
- <para>
- For example, consider a bank database that contains balances for various
- customer accounts, as well as total deposit balances for branches.
- Suppose that we want to record a payment of $100.00 from Alice's account
- to Bob's account. Simplifying outrageously, the SQL commands for this
- might look like:
-
-<programlisting>
-UPDATE accounts SET balance = balance - 100.00
- WHERE name = 'Alice';
-UPDATE branches SET balance = balance - 100.00
- WHERE name = (SELECT branch_name FROM accounts WHERE name = 'Alice');
-UPDATE accounts SET balance = balance + 100.00
- WHERE name = 'Bob';
-UPDATE branches SET balance = balance + 100.00
- WHERE name = (SELECT branch_name FROM accounts WHERE name = 'Bob');
-</programlisting>
- </para>
-
- <para>
- The details of these commands are not important here; the important
- point is that there are several separate updates involved to accomplish
- this rather simple operation. Our bank's officers will want to be
- assured that either all these updates happen, or none of them happen.
- It would certainly not do for a system failure to result in Bob
- receiving $100.00 that was not debited from Alice. Nor would Alice long
- remain a happy customer if she was debited without Bob being credited.
- We need a guarantee that if something goes wrong partway through the
- operation, none of the steps executed so far will take effect. Grouping
- the updates into a <firstterm>transaction</> gives us this guarantee.
- A transaction is said to be <firstterm>atomic</>: from the point of
- view of other transactions, it either happens completely or not at all.
- </para>
-
- <para>
- We also want a
- guarantee that once a transaction is completed and acknowledged by
- the database system, it has indeed been permanently recorded
- and won't be lost even if a crash ensues shortly thereafter.
- For example, if we are recording a cash withdrawal by Bob,
- we do not want any chance that the debit to his account will
- disappear in a crash just after he walks out the bank door.
- A transactional database guarantees that all the updates made by
- a transaction are logged in permanent storage (i.e., on disk) before
- the transaction is reported complete.
- </para>
-
- <para>
- Another important property of transactional databases is closely
- related to the notion of atomic updates: when multiple transactions
- are running concurrently, each one should not be able to see the
- incomplete changes made by others. For example, if one transaction
- is busy totalling all the branch balances, it would not do for it
- to include the debit from Alice's branch but not the credit to
- Bob's branch, nor vice versa. So transactions must be all-or-nothing
- not only in terms of their permanent effect on the database, but
- also in terms of their visibility as they happen. The updates made
- so far by an open transaction are invisible to other transactions
- until the transaction completes, whereupon all the updates become
- visible simultaneously.
- </para>
-<!## end>
-
- <para>
-<!## PG>
- In <productname>PostgreSQL</>, a transaction is set up by surrounding
- the SQL commands of the transaction with
- <command>BEGIN</> and <command>COMMIT</> commands. So our banking
- transaction would actually look like:
-<!## end>
-<!## XC>
- In <productname>Postgres-XC</>, a transaction is set up by surrounding
- the SQL commands of the transaction with
- <command>BEGIN</> and <command>COMMIT</> commands. So our banking
- transaction would actually look like:
-<!## end>
-<!## XL>
- In <productname>Postgres-XL</>, a transaction is set up by surrounding
- the SQL commands of the transaction with
- <command>BEGIN</> and <command>COMMIT</> commands. So our banking
- transaction would actually look like:
-<!## end>
-
-<programlisting>
-BEGIN;
-UPDATE accounts SET balance = balance - 100.00
- WHERE name = 'Alice';
--- etc etc
-COMMIT;
-</programlisting>
- </para>
-
- <para>
- If, partway through the transaction, we decide we do not want to
- commit (perhaps we just noticed that Alice's balance went negative),
- we can issue the command <command>ROLLBACK</> instead of
- <command>COMMIT</>, and all our updates so far will be canceled.
- </para>
-
- <para>
-<!## PG>
- <productname>PostgreSQL</> actually treats every SQL statement as being
-<!## end>
-<!## XC>
- <productname>Postgres-XC</> actually treats every SQL statement as being
-<!## end>
-<!## XL>
- <productname>Postgres-XL</> actually treats every SQL statement as being
-<!## end>
- executed within a transaction. If you do not issue a <command>BEGIN</>
- command,
- then each individual statement has an implicit <command>BEGIN</> and
- (if successful) <command>COMMIT</> wrapped around it. A group of
- statements surrounded by <command>BEGIN</> and <command>COMMIT</>
- is sometimes called a <firstterm>transaction block</>.
- </para>
-
- <note>
- <para>
- Some client libraries issue <command>BEGIN</> and <command>COMMIT</>
- commands automatically, so that you might get the effect of transaction
- blocks without asking. Check the documentation for the interface
- you are using.
- </para>
- </note>
-
-<!## PG>
-<!-- NOTE:
- XC does not support savepoint yet.
--->
- <para>
- It's possible to control the statements in a transaction in a more
- granular fashion through the use of <firstterm>savepoints</>. Savepoints
- allow you to selectively discard parts of the transaction, while
- committing the rest. After defining a savepoint with
- <command>SAVEPOINT</>, you can if needed roll back to the savepoint
- with <command>ROLLBACK TO</>. All the transaction's database changes
- between defining the savepoint and rolling back to it are discarded, but
- changes earlier than the savepoint are kept.
- </para>
-
- <para>
- After rolling back to a savepoint, it continues to be defined, so you can
- roll back to it several times. Conversely, if you are sure you won't need
- to roll back to a particular savepoint again, it can be released, so the
- system can free some resources. Keep in mind that either releasing or
- rolling back to a savepoint
- will automatically release all savepoints that were defined after it.
- </para>
-<!## end>
-
- <para>
- All this is happening within the transaction block, so none of it
- is visible to other database sessions. When and if you commit the
- transaction block, the committed actions become visible as a unit
- to other sessions, while the rolled-back actions never become visible
- at all.
- </para>
-
-<!## PG>
-<!-- NOTE:
- Again, XC does not supoprt savepoint yet.
--->
-
- <para>
- Remembering the bank database, suppose we debit $100.00 from Alice's
- account, and credit Bob's account, only to find later that we should
- have credited Wally's account. We could do it using savepoints like
- this:
-
-<programlisting>
-BEGIN;
-UPDATE accounts SET balance = balance - 100.00
- WHERE name = 'Alice';
-SAVEPOINT my_savepoint;
-UPDATE accounts SET balance = balance + 100.00
- WHERE name = 'Bob';
--- oops ... forget that and use Wally's account
-ROLLBACK TO my_savepoint;
-UPDATE accounts SET balance = balance + 100.00
- WHERE name = 'Wally';
-COMMIT;
-</programlisting>
- </para>
-
- <para>
- This example is, of course, oversimplified, but there's a lot of control
- possible in a transaction block through the use of savepoints.
- Moreover, <command>ROLLBACK TO</> is the only way to regain control of a
- transaction block that was put in aborted state by the
- system due to an error, short of rolling it back completely and starting
- again.
- </para>
-
-<!## end>
-
- </sect1>
-
-<!-- Window Functions are not supported yet -->
-
- <sect1 id="tutorial-window">
- <title>Window Functions</title>
-
- <indexterm zone="tutorial-window">
- <primary>window function</primary>
- </indexterm>
-
- <para>
- A <firstterm>window function</> performs a calculation across a set of
- table rows that are somehow related to the current row. This is comparable
- to the type of calculation that can be done with an aggregate function.
- But unlike regular aggregate functions, use of a window function does not
- cause rows to become grouped into a single output row — the
- rows retain their separate identities. Behind the scenes, the window
- function is able