diff --git a/configure b/configure index 6a68d7e14154e6df0ae2c05755c592cc51a6b4a1..5117548c90b026990c2aa4aedb9a10d1c8b97441 100755 --- a/configure +++ b/configure @@ -8330,23 +8330,27 @@ fi fi if test "$with_pam" = yes ; then - if test "${ac_cv_header_security_pam_appl_h+set}" = set; then - echo "$as_me:$LINENO: checking for security/pam_appl.h" >&5 -echo $ECHO_N "checking for security/pam_appl.h... $ECHO_C" >&6 -if test "${ac_cv_header_security_pam_appl_h+set}" = set; then + +for ac_header in security/pam_appl.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -echo "$as_me:$LINENO: result: $ac_cv_header_security_pam_appl_h" >&5 -echo "${ECHO_T}$ac_cv_header_security_pam_appl_h" >&6 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -echo "$as_me:$LINENO: checking security/pam_appl.h usability" >&5 -echo $ECHO_N "checking security/pam_appl.h usability... $ECHO_C" >&6 +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default -#include <security/pam_appl.h> +#include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 @@ -8371,12 +8375,12 @@ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -echo "$as_me:$LINENO: checking security/pam_appl.h presence" >&5 -echo $ECHO_N "checking security/pam_appl.h presence... $ECHO_C" >&6 +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" -#include <security/pam_appl.h> +#include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 @@ -8408,37 +8412,156 @@ echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) - { echo "$as_me:$LINENO: WARNING: security/pam_appl.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: security/pam_appl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: security/pam_appl.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: security/pam_appl.h: proceeding with the preprocessor's result" >&2;};; + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) - { echo "$as_me:$LINENO: WARNING: security/pam_appl.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: security/pam_appl.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: security/pam_appl.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: security/pam_appl.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: security/pam_appl.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: security/pam_appl.h: proceeding with the preprocessor's result" >&2;};; + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac -echo "$as_me:$LINENO: checking for security/pam_appl.h" >&5 -echo $ECHO_N "checking for security/pam_appl.h... $ECHO_C" >&6 -if test "${ac_cv_header_security_pam_appl_h+set}" = set; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_header_security_pam_appl_h=$ac_header_preproc + eval "$as_ac_Header=$ac_header_preproc" fi -echo "$as_me:$LINENO: result: $ac_cv_header_security_pam_appl_h" >&5 -echo "${ECHO_T}$ac_cv_header_security_pam_appl_h" >&6 +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi -if test $ac_cv_header_security_pam_appl_h = yes; then - : +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + +for ac_header in pam/pam_appl.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - { { echo "$as_me:$LINENO: error: header file <security/pam_appl.h> is required for PAM" >&5 -echo "$as_me: error: header file <security/pam_appl.h> is required for PAM" >&2;} + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + { { echo "$as_me:$LINENO: error: header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM." >&5 +echo "$as_me: error: header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM." >&2;} { (exit 1); exit 1; }; } fi +done + +fi + +done fi diff --git a/configure.in b/configure.in index 791beb39895cab0f96467d08aff2b3b33a814dc9..19f6d74defa6236d1b68672624762429b4962e9b 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Header: /cvsroot/pgsql/configure.in,v 1.235 2003/02/11 21:05:35 petere Exp $ +dnl $Header: /cvsroot/pgsql/configure.in,v 1.236 2003/02/14 14:05:00 momjian Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -724,7 +724,9 @@ if test "$with_openssl" = yes ; then fi if test "$with_pam" = yes ; then - AC_CHECK_HEADER(security/pam_appl.h, [], [AC_MSG_ERROR([header file <security/pam_appl.h> is required for PAM])]) + AC_CHECK_HEADERS(security/pam_appl.h, [], + [AC_CHECK_HEADERS(pam/pam_appl.h, [], + [AC_MSG_ERROR([header file <security/pam_appl.h> or <pam/pam_appl.h> is required for PAM.])])]) fi diff --git a/doc/FAQ_russian b/doc/FAQ_russian index b0dda39024879b2d19cf3c84eb1063f44f1f9353..be940f77ea4c0153f834d8daa8e700fd6af2e6c2 100644 --- a/doc/FAQ_russian +++ b/doc/FAQ_russian @@ -1,7 +1,7 @@ Otvety na chasto zadavaemye voprosy po PostgreSQL - Data poslednego obnovleniya: CHetverg 5 Dekabrya 00:47:26 EDT 2002 + Data poslednego obnovleniya: CHetverg 13 Fevralya 23:07:35 EDT 2002 Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian) (pgman@candle.pha.pa.us) @@ -275,7 +275,7 @@ 1.7) Kakaya poslednyaya versiya? - Poslednij vypusk PostgreSQL - `eto versiya 7.2.3. + Poslednij vypusk PostgreSQL - `eto versiya 7.3.1. My planiruem vypuskat' novye versii kazhdye chetyre mesyaca. @@ -469,17 +469,13 @@ 2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya? Da, suschestvuet neskol'ko graficheskih interfejsov dlya PostgreSQL. - `Eto PgAccess (http://www.pgaccess.com, PgAdmin II + `Eto PgAccess (http://www.pgaccess.org, PgAdmin II (http://www.pgadmin.org, Win32-only), RHDB Admin ( http://sources.redhat.com/rhdb/) i Rekall ( http://www.thekompany.com/products/rekall/, kommercheskij). Takzhe est' PHPPgAdmin ( http://phppgadmin.sourceforge.net/) - interfejs k PostgreSQL, osnovannyj na Web. - U nas est' prekrasnyj goraficheskij interfejs, nazyvaemyj PgAccess, - kotoryj takzhe mozhno ispol'zovat' kak generator otchetov. Ego - stranichka http://www.pgaccess.org/ - 2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL? Kakie-libo interfejsy dlya PostgreSQL suschestvuyut dlya bol'shinstva @@ -669,10 +665,6 @@ sozdaniya ogranicheniya na kolichestvo backend processov kak raz i sostoit v tom, chtoby vashej sisteme hvatilo resursov. - V PostgreSQL do versii 6.5, maksimal'noe kolichestvo backend processov - bylo 64, i izmenenie `etogo kolichestva trebovalo perekompilyacii - posle ustanovki konstanty MaxBackendId v include/storage/sinvaladt.h. - 3.9) CHto nahoditsya v kataloge pgsql_tmp? Dannyj katalog soderzhit vremennye fajly, generiruemye obrabotchikom @@ -853,6 +845,11 @@ pa ORDER BY col [ DESC ] LIMIT 1; + Esli vam kazhetsya, chto optimizator nekorretno vybiraet + posledovatel'nyj perebor, ispol'zujte SET enable_seqscan TO 'off' i + zapustite testy, chtoby uvidet', ne stalo-li skanirovanie indeksov + bystree. + Kogda ispol'zuyutsya operacii s shablonami, naprimer LIKE ili ~, indeksy mogut byt' ispol'zovany v sleduyuschih sluchayah: * Nachalo stroki poiska dolzhno sovpadat' s nachalom iskomoj stroki, @@ -929,12 +926,12 @@ pa Tip Vnutrennee imya Zamechaniya -------------------------------------------------- -"char" char 1 simvol -CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolnen iya +CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny TEXT text net zadavaemogo verhnego ogranicheniya ili dlin y +"char" char odin simvol BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zova t' null-bajt bez opaski) @@ -948,15 +945,17 @@ t' null-bajt bez opaski) szhatiyu ili mogut byt' sohraneny ne v strokom vide cherez TOAST, tak chto zanimaemoe diskovoe prostranstvo mozhet takzhe byt' i men'she, chem ozhidalos'. + VARCHAR(n) - `eto luchshee reshenie, kogda nuzhno hranit' stroki + peremennoj dliny, ne prevyshayuschie opredelennogo razmera. TEXT - + `eto luchshee reshenie dlya strok neogranichennoj dliny, s maksimal'no + dopustimoj dlinoj v 1 gigabajt. CHAR(n) - `eto luchshee reshenie dlya hraneniya strok, kotorye obychno - imeyut odinakovuyu dlinu. VARCHAR(n) - `eto luchshee reshenie, kogda - nuzhno hranit' stroki peremennoj dliny, no ne prevyshayuschie - opredelennogo razmera. TEXT - `eto luchshee reshenie dlya strok - neogranichennoj dliny, s maksimal'no dopustimoj dlinoj v 1 gigabajt. - BYTEA dlya hraneniya binarnyh dannyh, znacheniya kotoryh mogut - vklyuchat' NULL bajty. `Eti tipy imeyut shodnye harakteristiki - proizvoditel'nosti. + imeyut odinakovuyu dlinu. CHAR(n) zapolnyaetsya pustotoj do zadannoj + dliny, v to vremya kak VARCHAR(n) hranit tol'ko simvoly, iz kotoryh + sostoit stroka. BYTEA ispol'zuetsya dlya hraneniya binarnyh dannyh, + znacheniya kotoryh mogut vklyuchat' NULL bajty. `Eti tipy imeyut + shodnye harakteristiki proizvoditel'nosti. 4.15.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem? @@ -1146,8 +1145,8 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); CHtoby takaya konstrukciya rabotala bystro, kolonka subcol dolzhna - byt' proindeksirovana. My nadeemsya ubrat' `eto ogranichenie v - buduschem vypuske. + byt' proindeksirovana. `Eta problema proizvoditel'nosti budet + ustranena v versii 7.4. 4.23) Kak mne vypolnit' vneshnee svyazyvanie? diff --git a/doc/src/FAQ/FAQ_russian.html b/doc/src/FAQ/FAQ_russian.html index 9c5df57ec24af8370b5f43376e9fb05da2c46e34..d1cf4e43532c105ed91a4208e674cdf0a3dc6c9a 100644 --- a/doc/src/FAQ/FAQ_russian.html +++ b/doc/src/FAQ/FAQ_russian.html @@ -13,7 +13,7 @@ alink="#0000ff"> <H1>ïÔ×ÅÔÙ ÎÁ ÞÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ ÐÏ PostgreSQL</H1> - <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: þÅÔ×ÅÒÇ 5 äÅËÁÂÒÑ 00:47:26 EDT 2002</P> + <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: þÅÔ×ÅÒÇ 13 æÅ×ÒÁÌÑ 23:07:35 EDT 2002</P> <P>áÎÇÌÉÊÓËÉÊ ×ÁÒÉÁÎÔ ÓÏÐÒÏ×ÏÖÄÁÅÔ: âÒÀÓ íÏÍØÑÎ (Bruce Momjian) (<A href= "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> @@ -323,7 +323,7 @@ <H4><A name="1.7">1.7</A>) ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?</H4> - <P>ðÏÓÌÅÄÎÉÊ ×ÙÐÕÓË PostgreSQL - ÜÔÏ ×ÅÒÓÉÑ 7.2.3.</P> + <P>ðÏÓÌÅÄÎÉÊ ×ÙÐÕÓË PostgreSQL - ÜÔÏ ×ÅÒÓÉÑ 7.3.1.</P> <P>íÙ ÐÌÁÎÉÒÕÅÍ ×ÙÐÕÓËÁÔØ ÎÏ×ÙÅ ×ÅÒÓÉÉ ËÁÖÄÙÅ ÞÅÔÙÒÅ ÍÅÓÑÃÁ.</P> @@ -550,7 +550,7 @@ ÐÏÌØÚÏ×ÁÔÅÌÑ?</H4> <P>äÁ, ÓÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ ÇÒÁÆÉÞÅÓËÉÈ ÉÎÔÅÒÆÅÊÓÏ× ÄÌÑ PostgreSQL. - üÔÏ PgAccess (<A href="http://www.pgaccess.com/">http://www.pgaccess.com</A>, + üÔÏ PgAccess (<A href="http://www.pgaccess.org/">http://www.pgaccess.org</A>, PgAdmin II (<A href="http://www.pgadmin.org/">http://www.pgadmin.org</A>, Win32-only), RHDB Admin (<A href="http://sources.redhat.com/rhdb/"> http://sources.redhat.com/rhdb/</A>) É Rekall @@ -558,11 +558,7 @@ http://www.thekompany.com/products/rekall/</A>, ËÏÍÍÅÒÞÅÓËÉÊ). ôÁËÖÅ ÅÓÔØ PHPPgAdmin (<A href="http://phppgadmin.sourceforge.net/"> http://phppgadmin.sourceforge.net/</A>) - ÉÎÔÅÒÆÅÊÓ Ë PostgreSQL, ÏÓÎÏ×ÁÎÎÙÊ - ÎÁ Web. - - <P>õ ÎÁÓ ÅÓÔØ ÐÒÅËÒÁÓÎÙÊ ÇÏÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ, ÎÁÚÙ×ÁÅÍÙÊ - PgAccess, ËÏÔÏÒÙÊ ÔÁËÖÅ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ËÁË ÇÅÎÅÒÁÔÏÒ ÏÔÞÅÔÏ×. - åÇÏ ÓÔÒÁÎÉÞËÁ <A href="http://www.pgaccess.org">http://www.pgaccess.org/</A></P> + ÎÁ Web.</p> <H4><A name="2.4">2.4</A>) ëÁËÉÅ ÑÚÙËÉ ÍÏÇÕÔ ×ÚÁÉÍÏÄÅÊÓÔ×Ï×ÁÔØ Ó PostgreSQL?</H4> @@ -772,10 +768,6 @@ ðÒÉÞÉÎÁ ÓÏÚÄÁÎÉÑ ÏÇÒÁÎÉÞÅÎÉÑ ÎÁ ËÏÌÉÞÅÓÔ×Ï backend ÐÒÏÃÅÓÓÏ× ËÁË ÒÁÚ É ÓÏÓÔÏÉÔ × ÔÏÍ, ÞÔÏÂÙ ×ÁÛÅÊ ÓÉÓÔÅÍÅ È×ÁÔÉÌÏ ÒÅÓÕÒÓÏ×.</P> - <P>÷ PostgreSQL ÄÏ ×ÅÒÓÉÉ 6.5, ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï backend ÐÒÏÃÅÓÓÏ× - ÂÙÌÏ 64, É ÉÚÍÅÎÅÎÉÅ ÜÔÏÇÏ ËÏÌÉÞÅÓÔ×Á ÔÒÅÂÏ×ÁÌÏ ÐÅÒÅËÏÍÐÉÌÑÃÉÉ ÐÏÓÌÅ - ÕÓÔÁÎÏ×ËÉ ËÏÎÓÔÁÎÔÙ MaxBackendId × <I>include/storage/sinvaladt.h</I>.</P> - <H4><A name="3.9">3.9</A>) þÔÏ ÎÁÈÏÄÉÔÓÑ × ËÁÔÁÌÏÇÅ <I>pgsql_tmp</I>?</H4> <P>äÁÎÎÙÊ ËÁÔÁÌÏÇ ÓÏÄÅÒÖÉÔ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ, ÇÅÎÅÒÉÒÕÅÍÙÅ ÏÂÒÁÂÏÔÞÉËÏÍ @@ -969,6 +961,11 @@ LIMIT 1; </pre> + <P>åÓÌÉ ×ÁÍ ËÁÖÅÔÓÑ, ÞÔÏ ÏÐÔÉÍÉÚÁÔÏÒ ÎÅËÏÒÒÅÔÎÏ ×ÙÂÉÒÁÅÔ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÙÊ + ÐÅÒÅÂÏÒ, ÉÓÐÏÌØÚÕÊÔÅ <CODE>SET enable_seqscan TO 'off'</CODE> É + ÚÁÐÕÓÔÉÔÅ ÔÅÓÔÙ, ÞÔÏÂÙ Õ×ÉÄÅÔØ, ÎÅ ÓÔÁÌÏ-ÌÉ ÓËÁÎÉÒÏ×ÁÎÉÅ ÉÎÄÅËÓÏ× ÂÙÓÔÒÅÅ. + </P> + <P>ëÏÇÄÁ ÉÓÐÏÌØÚÕÀÔÓÑ ÏÐÅÒÁÃÉÉ Ó ÛÁÂÌÏÎÁÍÉ, ÎÁÐÒÉÍÅÒ <SMALL>LIKE</SMALL> ÉÌÉ <I>~</I>, ÉÎÄÅËÓÙ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÓÌÅÄÕÀÝÉÈ ÓÌÕÞÁÑÈ:</P> <UL> @@ -1058,10 +1055,10 @@ <PRE> ôÉÐ ÷ÎÕÔÒÅÎÎÅÅ ÉÍÑ úÁÍÅÞÁÎÉÑ -------------------------------------------------- -"char" char 1 ÓÉÍ×ÏÌ -CHAR(n) bpchar ÚÁÐÏÌÎÑÅÔÓÑ ÐÕÓÔÏÔÏÊ ÄÏ ÆÉËÓÉÒÏ×ÁÎÎÏÊ ÄÌÉÎÙ VARCHAR(n) varchar ÒÁÚÍÅÒ ÚÁÄÁÅÔ ÍÁËÓÉÍÁÌØÎÕÀ ÄÌÉÎÕ, ÎÅÔ ÚÁÐÏÌÎÅÎÉÑ +CHAR(n) bpchar ÚÁÐÏÌÎÑÅÔÓÑ ÐÕÓÔÏÔÏÊ ÄÏ ÆÉËÓÉÒÏ×ÁÎÎÏÊ ÄÌÉÎÙ TEXT text ÎÅÔ ÚÁÄÁ×ÁÅÍÏÇÏ ×ÅÒÈÎÅÇÏ ÏÇÒÁÎÉÞÅÎÉÑ ÉÌÉ ÄÌÉÎÙ +"char" char ÏÄÉÎ ÓÉÍ×ÏÌ BYTEA bytea ÍÁÓÓÉ× ÂÁÊÔ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ (ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ null-ÂÁÊÔ ÂÅÚ ÏÐÁÓËÉ) </PRE> @@ -1076,13 +1073,16 @@ BYTEA bytea ÔÁË ÞÔÏ ÚÁÎÉÍÁÅÍÏÅ ÄÉÓËÏ×ÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï ÍÏÖÅÔ ÔÁËÖÅ ÂÙÔØ É ÍÅÎØÛÅ, ÞÅÍ ÏÖÉÄÁÌÏÓØ.</P> + <SMALL>VARCHAR(n)</SMALL> - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ, ËÏÇÄÁ ÎÕÖÎÏ ÈÒÁÎÉÔØ + ÓÔÒÏËÉ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ, ÎÅ ÐÒÅ×ÙÛÁÀÝÉÅ ÏÐÒÅÄÅÌÅÎÎÏÇÏ ÒÁÚÍÅÒÁ. + <SMALL>TEXT</SMALL> - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÓÔÒÏË ÎÅÏÇÒÁÎÉÞÅÎÎÏÊ ÄÌÉÎÙ, + Ó ÍÁËÓÉÍÁÌØÎÏ ÄÏÐÕÓÔÉÍÏÊ ÄÌÉÎÏÊ × 1 ÇÉÇÁÂÁÊÔ. <P><SMALL>CHAR(n)</SMALL> - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÈÒÁÎÅÎÉÑ ÓÔÒÏË, ËÏÔÏÒÙÅ - ÏÂÙÞÎÏ ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÕÀ ÄÌÉÎÕ. <SMALL>VARCHAR(n)</SMALL> - ÜÔÏ ÌÕÞÛÅÅ - ÒÅÛÅÎÉÅ, ËÏÇÄÁ ÎÕÖÎÏ ÈÒÁÎÉÔØ ÓÔÒÏËÉ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ, ÎÏ ÎÅ ÐÒÅ×ÙÛÁÀÝÉÅ - ÏÐÒÅÄÅÌÅÎÎÏÇÏ ÒÁÚÍÅÒÁ. <SMALL>TEXT</SMALL> - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÓÔÒÏË - ÎÅÏÇÒÁÎÉÞÅÎÎÏÊ ÄÌÉÎÙ, Ó ÍÁËÓÉÍÁÌØÎÏ ÄÏÐÕÓÔÉÍÏÊ ÄÌÉÎÏÊ × 1 ÇÉÇÁÂÁÊÔ. - <SMALL>BYTEA</SMALL> ÄÌÑ ÈÒÁÎÅÎÉÑ ÂÉÎÁÒÎÙÈ ÄÁÎÎÙÈ, ÚÎÁÞÅÎÉÑ ËÏÔÏÒÙÈ - ÍÏÇÕÔ ×ËÌÀÞÁÔØ <SMALL>NULL</SMALL> ÂÁÊÔÙ. üÔÉ ÔÉÐÙ ÉÍÅÀÔ ÓÈÏÄÎÙÅ + ÏÂÙÞÎÏ ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÕÀ ÄÌÉÎÕ. <SMALL>CHAR(n)</SMALL> ÚÁÐÏÌÎÑÅÔÓÑ + ÐÕÓÔÏÔÏÊ ÄÏ ÚÁÄÁÎÎÏÊ ÄÌÉÎÙ, × ÔÏ ×ÒÅÍÑ ËÁË <SMALL>VARCHAR(n)</SMALL> + ÈÒÁÎÉÔ ÔÏÌØËÏ ÓÉÍ×ÏÌÙ, ÉÚ ËÏÔÏÒÙÈ ÓÏÓÔÏÉÔ ÓÔÒÏËÁ. + <SMALL>BYTEA</SMALL> ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÈÒÁÎÅÎÉÑ ÂÉÎÁÒÎÙÈ ÄÁÎÎÙÈ, ÚÎÁÞÅÎÉÑ + ËÏÔÏÒÙÈ ÍÏÇÕÔ ×ËÌÀÞÁÔØ <SMALL>NULL</SMALL> ÂÁÊÔÙ. üÔÉ ÔÉÐÙ ÉÍÅÀÔ ÓÈÏÄÎÙÅ ÈÁÒÁËÔÅÒÉÓÔÉËÉ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ.</P> <H4><A name="4.15.1">4.15.1</A>) ëÁË ÍÎÅ ÓÏÚÄÁÔØ ÐÏÌÅ @@ -1321,8 +1321,8 @@ BYTEA bytea </PRE> þÔÏÂÙ ÔÁËÁÑ ËÏÎÓÔÒÕËÃÉÑ ÒÁÂÏÔÁÌÁ ÂÙÓÔÒÏ, ËÏÌÏÎËÁ <CODE>subcol</CODE> - ÄÏÌÖÎÁ ÂÙÔØ ÐÒÏÉÎÄÅËÓÉÒÏ×ÁÎÁ. - íÙ ÎÁÄÅÅÍÓÑ ÕÂÒÁÔØ ÜÔÏ ÏÇÒÁÎÉÞÅÎÉÅ × ÂÕÄÕÝÅÍ ×ÙÐÕÓËÅ. + ÄÏÌÖÎÁ ÂÙÔØ ÐÒÏÉÎÄÅËÓÉÒÏ×ÁÎÁ. üÔÁ ÐÒÏÂÌÅÍÁ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ ÂÕÄÅÔ + ÕÓÔÒÁÎÅÎÁ × ×ÅÒÓÉÉ 7.4. <H4><A name="4.23">4.23</A>) ëÁË ÍÎÅ ×ÙÐÏÌÎÉÔØ ×ÎÅÛÎÅÅ Ó×ÑÚÙ×ÁÎÉÅ?</H4> diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 2ee4a689ae8617ae34ca97ae83a4e5de3c566af1..e6edef6b6763dbf13c76e189fd652f25e94ca67b 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.96 2003/01/06 09:58:23 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.97 2003/02/14 14:05:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -43,7 +43,12 @@ static int recv_and_check_password_packet(Port *port); char *pg_krb_server_keyfile; #ifdef USE_PAM +#ifdef HAVE_PAM_PAM_APPL_H +#include <pam/pam_appl.h> +#endif +#ifdef HAVE_SECURITY_PAM_APPL_H #include <security/pam_appl.h> +#endif #define PGSQL_PAM_SERVICE "postgresql" /* Service name passed to PAM */ diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index ba878df0acda25619155bcd8f5121a33fe6cbedc..953fd4597b2028efececc78ab01b5b6b60e30445 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -8,7 +8,7 @@ * or in pg_config.h afterwards. Of course, if you edit pg_config.h, then your * changes will be overwritten the next time you run configure. * - * $Id: pg_config.h.in,v 1.38 2003/01/25 05:19:47 tgl Exp $ + * $Id: pg_config.h.in,v 1.39 2003/02/14 14:05:00 momjian Exp $ */ #ifndef PG_CONFIG_H @@ -344,6 +344,9 @@ /* Set to 1 if you have <netinet/tcp.h> */ #undef HAVE_NETINET_TCP_H +/* Set to 1 if you have <pam/pam_appl.h> */ +#undef HAVE_PAM_PAM_APPL_H + /* Set to 1 if you have <readline.h> */ #undef HAVE_READLINE_H @@ -353,6 +356,9 @@ /* Set to 1 if you have <readline/readline.h> */ #undef HAVE_READLINE_READLINE_H +/* Set to 1 if you have <security/pam_appl.h> */ +#undef HAVE_SECURITY_PAM_APPL_H + /* Set to 1 if you have <sys/ipc.h> */ #undef HAVE_SYS_IPC_H