1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-05 23:56:58 +03:00

Update FAQ's in head and 7.3.X.

This commit is contained in:
Bruce Momjian 2003-02-14 14:05:00 +00:00
parent 044dca9f7c
commit 0e010a54a3
6 changed files with 215 additions and 80 deletions

187
configure vendored
View File

@ -8330,23 +8330,27 @@ fi
fi fi
if test "$with_pam" = yes ; then 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 for ac_header in security/pam_appl.h
echo $ECHO_N "checking for security/pam_appl.h... $ECHO_C" >&6 do
if test "${ac_cv_header_security_pam_appl_h+set}" = set; then 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 echo $ECHO_N "(cached) $ECHO_C" >&6
fi fi
echo "$as_me:$LINENO: result: $ac_cv_header_security_pam_appl_h" >&5 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}$ac_cv_header_security_pam_appl_h" >&6 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
else else
# Is the header compilable? # Is the header compilable?
echo "$as_me:$LINENO: checking security/pam_appl.h usability" >&5 echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking security/pam_appl.h usability... $ECHO_C" >&6 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure" #line $LINENO "configure"
#include "confdefs.h" #include "confdefs.h"
$ac_includes_default $ac_includes_default
#include <security/pam_appl.h> #include <$ac_header>
_ACEOF _ACEOF
rm -f conftest.$ac_objext rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 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 echo "${ECHO_T}$ac_header_compiler" >&6
# Is the header present? # Is the header present?
echo "$as_me:$LINENO: checking security/pam_appl.h presence" >&5 echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking security/pam_appl.h presence... $ECHO_C" >&6 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure" #line $LINENO "configure"
#include "confdefs.h" #include "confdefs.h"
#include <security/pam_appl.h> #include <$ac_header>
_ACEOF _ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 (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? # So? What about this header?
case $ac_header_compiler:$ac_header_preproc in case $ac_header_compiler:$ac_header_preproc in
yes:no ) yes:no )
{ echo "$as_me:$LINENO: WARNING: security/pam_appl.h: accepted by the compiler, rejected by the preprocessor!" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: 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: WARNING: $ac_header: 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:$LINENO: WARNING: $ac_header: 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: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
no:yes ) no:yes )
{ echo "$as_me:$LINENO: WARNING: security/pam_appl.h: present but cannot be compiled" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: security/pam_appl.h: present but cannot be compiled" >&2;} echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: security/pam_appl.h: check for missing prerequisite headers?" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: security/pam_appl.h: check for missing prerequisite headers?" >&2;} echo "$as_me: WARNING: $ac_header: 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:$LINENO: WARNING: $ac_header: 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: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
esac esac
echo "$as_me:$LINENO: checking for security/pam_appl.h" >&5 echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for security/pam_appl.h... $ECHO_C" >&6 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if test "${ac_cv_header_security_pam_appl_h+set}" = set; then if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
ac_cv_header_security_pam_appl_h=$ac_header_preproc eval "$as_ac_Header=$ac_header_preproc"
fi fi
echo "$as_me:$LINENO: result: $ac_cv_header_security_pam_appl_h" >&5 echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}$ac_cv_header_security_pam_appl_h" >&6 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
fi 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 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;} 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
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; }; } { (exit 1); exit 1; }; }
fi fi
done
fi
done
fi fi

View File

@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script. 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
dnl Developers, please strive to achieve this order: dnl Developers, please strive to achieve this order:
dnl dnl
@ -724,7 +724,9 @@ if test "$with_openssl" = yes ; then
fi fi
if test "$with_pam" = yes ; then 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 fi

View File

@ -1,7 +1,7 @@
Otvety na chasto zadavaemye voprosy po PostgreSQL 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) Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
(pgman@candle.pha.pa.us) (pgman@candle.pha.pa.us)
@ -275,7 +275,7 @@
1.7) Kakaya poslednyaya versiya? 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. My planiruem vypuskat' novye versii kazhdye chetyre mesyaca.
@ -469,17 +469,13 @@
2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya? 2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
Da, suschestvuet neskol'ko graficheskih interfejsov dlya PostgreSQL. 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://www.pgadmin.org, Win32-only), RHDB Admin (
http://sources.redhat.com/rhdb/) i Rekall ( http://sources.redhat.com/rhdb/) i Rekall (
http://www.thekompany.com/products/rekall/, kommercheskij). Takzhe http://www.thekompany.com/products/rekall/, kommercheskij). Takzhe
est' PHPPgAdmin ( http://phppgadmin.sourceforge.net/) - interfejs k est' PHPPgAdmin ( http://phppgadmin.sourceforge.net/) - interfejs k
PostgreSQL, osnovannyj na Web. 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? 2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL?
Kakie-libo interfejsy dlya PostgreSQL suschestvuyut dlya bol'shinstva Kakie-libo interfejsy dlya PostgreSQL suschestvuyut dlya bol'shinstva
@ -669,10 +665,6 @@
sozdaniya ogranicheniya na kolichestvo backend processov kak raz i sozdaniya ogranicheniya na kolichestvo backend processov kak raz i
sostoit v tom, chtoby vashej sisteme hvatilo resursov. 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? 3.9) CHto nahoditsya v kataloge pgsql_tmp?
Dannyj katalog soderzhit vremennye fajly, generiruemye obrabotchikom Dannyj katalog soderzhit vremennye fajly, generiruemye obrabotchikom
@ -853,6 +845,11 @@ pa
ORDER BY col [ DESC ] ORDER BY col [ DESC ]
LIMIT 1; 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 ~, Kogda ispol'zuyutsya operacii s shablonami, naprimer LIKE ili ~,
indeksy mogut byt' ispol'zovany v sleduyuschih sluchayah: indeksy mogut byt' ispol'zovany v sleduyuschih sluchayah:
* Nachalo stroki poiska dolzhno sovpadat' s nachalom iskomoj stroki, * Nachalo stroki poiska dolzhno sovpadat' s nachalom iskomoj stroki,
@ -929,12 +926,12 @@ pa
Tip Vnutrennee imya Zamechaniya 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 VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolnen
iya iya
CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
TEXT text net zadavaemogo verhnego ogranicheniya ili dlin TEXT text net zadavaemogo verhnego ogranicheniya ili dlin
y y
"char" char odin simvol
BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zova BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zova
t' null-bajt bez opaski) 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 szhatiyu ili mogut byt' sohraneny ne v strokom vide cherez TOAST, tak
chto zanimaemoe diskovoe prostranstvo mozhet takzhe byt' i men'she, chto zanimaemoe diskovoe prostranstvo mozhet takzhe byt' i men'she,
chem ozhidalos'. 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 CHAR(n) - `eto luchshee reshenie dlya hraneniya strok, kotorye obychno
imeyut odinakovuyu dlinu. VARCHAR(n) - `eto luchshee reshenie, kogda imeyut odinakovuyu dlinu. CHAR(n) zapolnyaetsya pustotoj do zadannoj
nuzhno hranit' stroki peremennoj dliny, no ne prevyshayuschie dliny, v to vremya kak VARCHAR(n) hranit tol'ko simvoly, iz kotoryh
opredelennogo razmera. TEXT - `eto luchshee reshenie dlya strok sostoit stroka. BYTEA ispol'zuetsya dlya hraneniya binarnyh dannyh,
neogranichennoj dliny, s maksimal'no dopustimoj dlinoj v 1 gigabajt. znacheniya kotoryh mogut vklyuchat' NULL bajty. `Eti tipy imeyut
BYTEA dlya hraneniya binarnyh dannyh, znacheniya kotoryh mogut shodnye harakteristiki proizvoditel'nosti.
vklyuchat' NULL bajty. `Eti tipy imeyut shodnye harakteristiki
proizvoditel'nosti.
4.15.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem? 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); WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
CHtoby takaya konstrukciya rabotala bystro, kolonka subcol dolzhna CHtoby takaya konstrukciya rabotala bystro, kolonka subcol dolzhna
byt' proindeksirovana. My nadeemsya ubrat' `eto ogranichenie v byt' proindeksirovana. `Eta problema proizvoditel'nosti budet
buduschem vypuske. ustranena v versii 7.4.
4.23) Kak mne vypolnit' vneshnee svyazyvanie? 4.23) Kak mne vypolnit' vneshnee svyazyvanie?

View File

@ -13,7 +13,7 @@
alink="#0000ff"> alink="#0000ff">
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> <H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
<P>Дата последнего обновления: Четверг 5 Декабря 00:47:26 EDT 2002</P> <P>Дата последнего обновления: Четверг 13 Февраля 23:07:35 EDT 2002</P>
<P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href= <P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> "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> <H4><A name="1.7">1.7</A>) Какая последняя версия?</H4>
<P>Последний выпуск PostgreSQL - это версия 7.2.3.</P> <P>Последний выпуск PostgreSQL - это версия 7.3.1.</P>
<P>Мы планируем выпускать новые версии каждые четыре месяца.</P> <P>Мы планируем выпускать новые версии каждые четыре месяца.</P>
@ -550,7 +550,7 @@
пользователя?</H4> пользователя?</H4>
<P>Да, существует несколько графических интерфейсов для PostgreSQL. <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>, PgAdmin II (<A href="http://www.pgadmin.org/">http://www.pgadmin.org</A>,
Win32-only), RHDB Admin (<A href="http://sources.redhat.com/rhdb/"> Win32-only), RHDB Admin (<A href="http://sources.redhat.com/rhdb/">
http://sources.redhat.com/rhdb/</A>) и Rekall http://sources.redhat.com/rhdb/</A>) и Rekall
@ -558,11 +558,7 @@
http://www.thekompany.com/products/rekall/</A>, коммерческий). Также есть http://www.thekompany.com/products/rekall/</A>, коммерческий). Также есть
PHPPgAdmin (<A href="http://phppgadmin.sourceforge.net/"> PHPPgAdmin (<A href="http://phppgadmin.sourceforge.net/">
http://phppgadmin.sourceforge.net/</A>) - интерфейс к PostgreSQL, основанный http://phppgadmin.sourceforge.net/</A>) - интерфейс к PostgreSQL, основанный
на Web. на Web.</p>
<P>У нас есть прекрасный горафический интерфейс, называемый
PgAccess, который также можно использовать как генератор отчетов.
Его страничка <A href="http://www.pgaccess.org">http://www.pgaccess.org/</A></P>
<H4><A name="2.4">2.4</A>) Какие языки могут взаимодействовать с PostgreSQL?</H4> <H4><A name="2.4">2.4</A>) Какие языки могут взаимодействовать с PostgreSQL?</H4>
@ -772,10 +768,6 @@
Причина создания ограничения на количество backend процессов как Причина создания ограничения на количество backend процессов как
раз и состоит в том, чтобы вашей системе хватило ресурсов.</P> раз и состоит в том, чтобы вашей системе хватило ресурсов.</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> <H4><A name="3.9">3.9</A>) Что находится в каталоге <I>pgsql_tmp</I>?</H4>
<P>Данный каталог содержит временные файлы, генерируемые обработчиком <P>Данный каталог содержит временные файлы, генерируемые обработчиком
@ -969,6 +961,11 @@
LIMIT 1; LIMIT 1;
</pre> </pre>
<P>Если вам кажется, что оптимизатор некорретно выбирает последовательный
перебор, используйте <CODE>SET enable_seqscan TO 'off'</CODE> и
запустите тесты, чтобы увидеть, не стало-ли сканирование индексов быстрее.
</P>
<P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL> <P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL>
или <I>~</I>, индексы могут быть использованы в следующих случаях:</P> или <I>~</I>, индексы могут быть использованы в следующих случаях:</P>
<UL> <UL>
@ -1058,10 +1055,10 @@
<PRE> <PRE>
Тип Внутреннее имя Замечания Тип Внутреннее имя Замечания
-------------------------------------------------- --------------------------------------------------
"char" char 1 символ
CHAR(n) bpchar заполняется пустотой до фиксированной длины
VARCHAR(n) varchar размер задает максимальную длину, нет заполнения VARCHAR(n) varchar размер задает максимальную длину, нет заполнения
CHAR(n) bpchar заполняется пустотой до фиксированной длины
TEXT text нет задаваемого верхнего ограничения или длины TEXT text нет задаваемого верхнего ограничения или длины
"char" char один символ
BYTEA bytea массив байт переменной длины (можно использовать null-байт без опаски) BYTEA bytea массив байт переменной длины (можно использовать null-байт без опаски)
</PRE> </PRE>
@ -1076,13 +1073,16 @@ BYTEA bytea
так что занимаемое дисковое пространство может также быть и меньше, так что занимаемое дисковое пространство может также быть и меньше,
чем ожидалось.</P> чем ожидалось.</P>
<SMALL>VARCHAR(n)</SMALL> - это лучшее решение, когда нужно хранить
строки переменной длины, не превышающие определенного размера.
<SMALL>TEXT</SMALL> - это лучшее решение для строк неограниченной длины,
с максимально допустимой длиной в 1 гигабайт.
<P><SMALL>CHAR(n)</SMALL> - это лучшее решение для хранения строк, которые <P><SMALL>CHAR(n)</SMALL> - это лучшее решение для хранения строк, которые
обычно имеют одинаковую длину. <SMALL>VARCHAR(n)</SMALL> - это лучшее обычно имеют одинаковую длину. <SMALL>CHAR(n)</SMALL> заполняется
решение, когда нужно хранить строки переменной длины, но не превышающие пустотой до заданной длины, в то время как <SMALL>VARCHAR(n)</SMALL>
определенного размера. <SMALL>TEXT</SMALL> - это лучшее решение для строк хранит только символы, из которых состоит строка.
неограниченной длины, с максимально допустимой длиной в 1 гигабайт. <SMALL>BYTEA</SMALL> используется для хранения бинарных данных, значения
<SMALL>BYTEA</SMALL> для хранения бинарных данных, значения которых которых могут включать <SMALL>NULL</SMALL> байты. Эти типы имеют сходные
могут включать <SMALL>NULL</SMALL> байты. Эти типы имеют сходные
характеристики производительности.</P> характеристики производительности.</P>
<H4><A name="4.15.1">4.15.1</A>) Как мне создать поле <H4><A name="4.15.1">4.15.1</A>) Как мне создать поле
@ -1321,8 +1321,8 @@ BYTEA bytea
</PRE> </PRE>
Чтобы такая конструкция работала быстро, колонка <CODE>subcol</CODE> Чтобы такая конструкция работала быстро, колонка <CODE>subcol</CODE>
должна быть проиндексирована. должна быть проиндексирована. Эта проблема производительности будет
Мы надеемся убрать это ограничение в будущем выпуске. устранена в версии 7.4.
<H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4> <H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4>

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * 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; char *pg_krb_server_keyfile;
#ifdef USE_PAM #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> #include <security/pam_appl.h>
#endif
#define PGSQL_PAM_SERVICE "postgresql" /* Service name passed to PAM */ #define PGSQL_PAM_SERVICE "postgresql" /* Service name passed to PAM */

View File

@ -8,7 +8,7 @@
* or in pg_config.h afterwards. Of course, if you edit pg_config.h, then your * 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. * 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 #ifndef PG_CONFIG_H
@ -344,6 +344,9 @@
/* Set to 1 if you have <netinet/tcp.h> */ /* Set to 1 if you have <netinet/tcp.h> */
#undef 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> */ /* Set to 1 if you have <readline.h> */
#undef HAVE_READLINE_H #undef HAVE_READLINE_H
@ -353,6 +356,9 @@
/* Set to 1 if you have <readline/readline.h> */ /* Set to 1 if you have <readline/readline.h> */
#undef 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> */ /* Set to 1 if you have <sys/ipc.h> */
#undef HAVE_SYS_IPC_H #undef HAVE_SYS_IPC_H