=======================================================
Наиболее часто задаваемые вопросы (FAQ) по PostgreSQL >= V6.1
Применительно к Linux
ЧИТАТЬ В СОЧЕТАНИИ С ОБЫЧНЫМ FAQ
=======================================================
последнее обновление: Fri Jun 19 13:35:00 BST 1998
текущий сопроводитель: Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
первоначальный автор: Andrew C.R. Martin (martin@biochem.ucl.ac.uk)
Перевод выполнил Юрий Козлов, очень рад замечаниям по адресу off@tsinet.ru.
Чтв Ноя 18 19:09:53 MSK 1999
Сергиев-Посадская LUG spslug.sposad.ru
Изменения в версиях (* = изменен, + = новый, - = удален):
+1.23) Почему компиляция прерывается с сообщением о необъявленных F_BOOLIN,
F_BOOLOUT и F_BYTEAIN?
Этот файл приблизительно делится так:
1.*) Установка PostgreSQL
2.*) Компиляция принадлежащих программ
3.*) Проблемы при работе
Ответы на вопросы:
1.1) Какие изменения мне нужно сделать в src/Makefile.global или
src/Makefile.custom и что нужно еще изменить?
1.2) Что за проблема с отсутствующей libreadline?
1.3) [REDHAT] Что за проблема с отсутствующей libdl и dlfcn.h?
1.4) [SLACKWARE 3.1] Что за проблема с отсутствующей libdl and dlfcn.h?
1.5) Компиляция сервера умерла с жалобой на отсутствие include файла dlfcn.h
1.6) GCC жалуется об игнорировании опции -fpic
1.7) Я получил предупреждение типа
warning: cast from pointer to integer of different size
1.8) [SuSE-Linux 4.2-4.4] Где curses и termcap?
1.9) Что за проблема с ld.so?
1.10) Почему я получаю ошибки `yy_flush_buffer undefined'?
1.11) Как мне компилировать PostgreSQL на системах с a.out?
1.12) Почему make останавливается с:
yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
make: /usr/bin/make: cannot execute binary file
1.13) Какие ссылки из X11_LIB в libsocket и libnsl в src/Makefile.global?
1.14) [DEBIAN] Где libtermcap?
1.15) [REDHAT] Могу я получить PostgreSQL в RPM?
1.16) При компиляции разрабатываемой версии под Linux, компиляция
останавливается с сообщением типа:
In file included from /usr/include/sys/sem.h:8,
from ipc.c:37:
/usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'
....
make: *** [ipc.o] Error 1
1.17) При компиляции postgres, gcc сообщает о сигнале 11 и прерывается.
1.18) Могу я установить 6.1.1 под MkLinux?
1.19) Почему make вываливается или дохнет?
1.20) Как можно сделать оптимизацию под 486 или pentium процессор
1.21) Почему я получаю странные результаты во время печати (например
в регрессивном тесте 'timespan')?
1.22) Почему я не могу получить любую разделяемую библиотеку для libpq при
компиляции 6.3.2?
1.23) Почему компиляция прерывается с сообщением о необъявленных F_BOOLIN,
F_BOOLOUT и F_BYTEAIN?
2.1) Линковщик не может найти libX11 при компиляции pgtclsh
3.1) Я получаю сообщение об ошибке _fUnKy_POSTPORT_sTuFf_ undefined, при
запуске сценариев типа createuser
3.2) Я запускаю postmaster и после этого система говорит
'Bad system call(Core dumped)'
3.3) Почему при запуске Postmaster, я получаю ошибку в форме
Failed Assertion("!(file != 0):(null)", File:
"/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
!(file != 0) (0)
initdb: could not create template database
initdb: cleaning up.
3.4) Почему createuser не работает?
3.5) Почему я получаю ошибку типа:
IpcMemoryCreate: memKey=155356396 , size=760632 ,
permission=384IpcMemoryCreate: shmget(..., create, ...)
failed: Invalid argument
3.6) Почему psql прерывается с:
psql: can't load library 'libpq.so.1'
3.7) Другая странная работа
3.8) При выключении системы и запущенном PostgreSQL, Linux всегда
выполняет диску fsck при загрузке.
3.9) Почему Query 32 в регрессивном тесте выполняется так долго?
3.10) Почему я получаю забавные округленные результаты в некоторых
операциях с датой/временем, типа
select '4 hours'::timespan;
returning '3 hours 59 minutes 60 seconds'?
----------------------------------------------------------------------
Раздел 1: Компиляция PostgreSQL
----------------------------------------------------------------------
1.1) Какие изменения мне нужно сделать в src/Makefile.global или
src/Makefile.custom и что нужно еще изменить?
Изменения в makefileах легче всего сделать запустив сценарий shell
customize из каталога src который запишет Makefile.custom для тебя.
Еще только одно изменение может придется сделать - это заменить
Flex, если он имеет версию 2.5.3, которая имеет баг, который
сам себя обнаруживает при отказе createuser failing (смотри вопрос 3.4)
Если ты модифицируешь makefileы вручную, то ты *должен* установить
следующую переменную:
PORTNAME= linux
Тебе также нужно изменить в установке:
POSTGRESDIR
Если ты включил опцию USE_TCL, то тебе нужно установить эти:
TCL_INCDIR=
TCL_LIBDIR=
TCL_LIB=
TK_INCDIR=
TK_LIBDIR=
TK_LIB=
X11_INCDIR=
X11_LIBDIR=
X11_LIB=
На моей системе Slackware3.0, они такие:
TCL_INCDIR= /usr/include/tcl
TCL_LIBDIR= /usr/lib
TCL_LIB= -ltcl
TK_INCDIR= /usr/include/tcl
TK_LIBDIR= /usr/lib
TK_LIB= -ltk
X11_INCDIR= /usr/include/X11
X11_LIBDIR= /usr/X386/lib
X11_LIB= -lX11
Ты также можешь сделать любые другие нужные изменения, как описано в
файле INSTALL и в Makefile.global
1.2) Что за проблема с отсутствующей libreadline?
Системы Linux обычно не поставляются с установленной библиотекой
GNU readline. Или проверь, что ты не включил опции readline в
src/Makefile.global или src/Makefile.custom или установи библиотеку
GNU readline.
Заметим, что Debian Linux (как FreeBSD) поставляют с установленной
readline.
1.3) [REDHAT] Что за проблема с отсутствующей libdl и dlfcn.h?
Она сама проявляется в неспособности установить связь с функциями
типа dlopen(), dlclose(), и т.д. во время последней фазы компиляции.
Библиотека libdl используется для динамической линковки созданных
пользователем функций во время выполнения. По некоторым причинам
эту библиотеку пропустили в дистрибутиве Redhat.
Кажется, в последнем Redhat 4.0 (Colgate) это исправлено.
RedHat теперь имеет ld.so RPM пакет на своем FTP сайте.
Просто стяни:
ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm
Установи RPM файл как обычно и отвали!
ЗАМЕЧАНИЕ! Тебе надо перезапустить configure и сделать make clean
после установки библиотеки и перед компиляцией.
Было одно сообщение о повреждении системы в результате доступа программ
к этим библиотекам во время их обновления (что не удивительно).
Следовательно, хорошей идеей будет перегрузить систему перед установкой
новых библиотек и запускать как можно меньше во время апргейда. Переход
в однопользовательский режим, вероятно хорошая идея!
Если ты хочешь пойти трудным путем, то можешь получить библиотеку и
файл заголовка:
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz
Еще, ты можешь найти скомпилированные двоичные файлы в
distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb
на этом сайте, или следуй инструкциям из вопроса 1.2 для исправления
той же ошибки, с более ранним релизом Slackware 3.1.
Не используй этот метод если не знаешь что делаешь!
1.4) [SLACKWARE 3.1] Что за проблема с отсутствующей libdl and dlfcn.h?
Она сама проявляется в неспособности установить связь с функциями
типа dlopen(), dlclose(), и т.д. во время последней фазы компиляции.
Смотри ответ на вопрос 1.3. Slackware больше версии 3.0 поставлялись
с этой библиотекой и заголовочным файлом и они кажется вернулись к
этому опять в последней версии 3.1, но раньше релиза 3.1
(перед 9ым сентября September 1996) она была пропущена и много
версий CD-ROM было отпечатано из первой версии релиза 3.1.
Было одно сообщение о повреждении системы в результате доступа программ
к этим библиотекам во время их обновления (что не удивительно).
Следовательно, хорошей идеей будет перегрузить систему перед установкой
новых библиотек и запускать как можно меньше во время апргейда. Переход
в однопользовательский режим, вероятно хорошая идея!
Это легче всего исправить - это получить файл ldso.tgz с диска a4
наиболее нового дистрибутива Slackware и распаковать этот файл
из корневого (/) каталога, затем выполнить
sh install/doinst.sh
для полной установки. Затем
ldconfig
ЗАМЕЧАНИЕ! Тебе надо перезапустить configure и сделать make clean
после установки библиотеки и перед компиляцией.
Если ты хочешь устанавливать вручную, то во-первых ты должен установить
файл dlfcn.h в /usr/include.
Во-вторых, установи файл libdl.so.1.7.14 (или любой последний релиз)
в /lib, затем выполни:
cd /lib
ln -sf libdl.so.1.7.14 libdl.so.1
ln -sf libdl.so.1 libdl.so
На некоторых системах (в зависимости от конфигурации GCC) может
понадобиться выполнить:
cd /usr/lib
ln -sf /lib/libdl.so .
Наконец
ldconfig
ЗАМЕЧАНИЕ! Тебе надо перезапустить configure и сделать make clean
после установки библиотеки и перед компиляцией.
1.5) Компиляция сервера умерла с жалобой на отсутствие заголовочного
файла dlfcn.h
Смотри ответ на вопрос 1.3/1.4. Не забудь, что если ты используешь
a.out в системе, то ты должен вначале установить пакет dld
(которые не поставляется с большинством a.out систем) чтобы
иметь dlfcn.h. Смотри вопрос 1.11.
1.6) GCC жалуется об игнорировании опции -fpic
Ранние версии GCC принимают или -fpic или -fPIC.
Это привело к тому, что более новым версиям (V2.7.2?) необходим -fPIC.
Если ты используешь ELF версию Linux, это можно безопасно
проигнорировать, так как -fPIC таким по умолчанию.
Ты можешь исправить это, отредактировав src/Makefile.global и изменив
CFLAGS_SL
1.7) 1.7) Я получил предупреждение типа
warning: cast from pointer to integer of different size
Это можно было видеть в ранних версиях Postgres95 и можно
безопасно игнорировать. PostgreSQL V6.0 компилируется без
предупреждений, кроме относительно заголовочных файлов
(которые могут быть также безопасно проигнорированы).
1.8) [SuSE-Linux 4.2-4.4] Где curses и termcap?
SuSE-Linux 4.2 имеет ncurses, но не curses. В 4.4 появились обе.
SuSE-Linux также имеет библиотеку termcap в /usr/lib/termcap
вместо /usr/lib.
PostgreSQL (вплоть до V6.0)
-----------------------
Установи значение CURSES_LIB в src/Makefile.custom в -lncurses
(или сделай это с помощью сценария customize).
Добавь следующую строку в src/Makefile.custom:
LDADD_BE+= -L/usr/lib/termcap
Тебе может потребоваться отредактировать src/bin/psql/Makefile и изменить:
ifeq ($(PORTNAME), linux)
LD_ADD+=
на:
ifeq ($(PORTNAME), linux)
LD_ADD+= -ltermcap
PostgreSQL (V6.1)
-----------------
Сценарий configure не знает что в /usr/lib/termcap надо искать
библиотеку termcap, поэтому нужно ее указать как одну из каталогов
библиотек, когда спрашивается про дополнительные каталоги поиска.
Если это не сработает (у меня нет SuSE чтобы проверить это), то
после запуска configure, тебе нужно отредактировать в
src/Makefile.global и добавить -ltermcap строку LDFLAGS
(после -lreadline). (Иначе, ты можешь изменить
src/Makefile.custom перед запуском configure.)
Некоторые версии SuSE обеспечены только ncurses, так что тебе
придется использовать ncurses вместо curses изменив
-lcurses на -lncurses. (Работает на SuSE 5.1)
1.9) Что за проблема с ld.so?
Если у тебя проблема с ld.so, другой библиотекой необходимой для
динамической загрузки ELF, то у тебя испорченная установка или
(наиболее предпочтительней) обнови Linux.
Смотри ответы на вопрос 1.3/1.4. Тебе может потребоваться установить
ld.so.x.y.z в /lib запустить ldconfig.
Наиболее новый стабильный релиз ld пакета это 1.7.14
На время написания, версии 1.8.x ld были экспериментальными.
1.10) Почему я получаю ошибки `yy_flush_buffer undefined'?
Это не совсем только в Linux, но обычна на старых установках Linux.
Ты должен иметь новую версию flex (2.5.2 или позднее)
для компиляции PostgreSQL. Заметим, что flex 2.5.3 имеет баг: смотри
вопрос 3.4.
1.11) Как мне компилировать PostgreSQL на системах с a.out?
Во-первых, ты должен установить библиотеку dld. Ее можно получить с
Sunsite:
Linux/libs/dld.3.2.7.tar.gz
(ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz)
Во-вторых, добавь следующую строку src/Makefile.custom:
LINUX_ELF=
(или используй сценарий customize)
1.12) Почему make останавливается с:
yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
make: /usr/bin/make: cannot execute binary file
Эта проблема была в ранних версиях Postgres95. По умолчанию
в PostgreSQL используется bison -y, а не yacc.
yacc обычно реализуется как сценарий, который вызывает bison -y
По некоторым причинам (определенные версии make? определенные версии
bash?) make не может выполнить этот файл сценария.
Чтобы исправить это, просто отредактируй src/mk/port/postgres.mk.linux
и в конце файла измени:
# YACC = bison -y
на
YACC = bison -y
1.13) Какие ссылки из X11_LIB в libsocket и libnsl в src/Makefile.global?
Эта проблема была в 1.08 (они только для Sun Solaris).
Она решена в 1.09 и 6.0
1.14) [DEBIAN] Где libtermcap?
Debian Linux поставляется без библиотеки termcap и использует ncurses
(которая использует terminfo). Не нужно изменять переменную
CURSES_LIB в src/bin/psql/Makefile т.к. в Debian ссылка
из libncurses на libcurses (в отличие от SuSE-Linux --- смотри
вопрос 1.8).
Может понадобиться отредактировать src/bin/psql/Makefile изменив:
ifeq ($(PORTNAME), linux)
LD_ADD+= -ltermcap
на:
ifeq ($(PORTNAME), linux)
LD_ADD+=
1.15) [REDHAT] Могу я получить PostgreSQL в RPM?
Да! Michal Mosiewicz
(http://www.pdi.lodz.pl/~mimo) легко создал RPM для
PostgreSQL V6.0 для архитектуры Intel, который можно скачать с
ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm
Эта собранная версия, исходный RPM у него как я писал (3rd Feb 1997).
1.16) При компиляции разрабатываемой версии под Linux, компиляция
останавливается с сообщением типа:
In file included from /usr/include/sys/sem.h:8,
from ipc.c:37:
/usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'
....
make: *** [ipc.o] Error 1
Эта проблема из-за того, что в Linux прототипов для этих встроенных
функций. Решение лежит в каталоге
.../src/backend/storage/ipc и отредактируй Makefile.
Измени строку
CFLAGS+=$(INCLUDE_OPT)
на
CFLAGS+=$(INCLUDE_OPT) -Wno-error
Сделай тоже самое в каталоге ../src/backend/storage/lmgr.
1.17) При компиляции postgres, gcc сообщает о сигнале 11 и прерывается.
Более точно:
gcc: Internal compiler error: program cc1 got fatal
signal 11
Это может быть проблема железа/памяти. PortgreSQL - это большая
программа, и большие компиляции gcc (такие как сборка
PostgreSQL или перестройка ядра) напрягают память как несколько
программ, в результате ошибки, которые не выявляются при нормальной
работе. Меньшим операционным системам также не нравится напрягать
железо до такого состояния, так что ты никогда можешь не увидеть
таких проблем под DOS/Windows.
Больше информации об этой проблеме на:
http://www.bitwizard.nl/sig11
В этом Sig11 FAQ говорится что такая проблема появляется
на Redhat 5.0 gcc работающем на процессорах Cyrix. Подробней смотри
на URL выше!
1.18) Могу я установить 6.1.1 под MkLinux?
Tatsuo Ishii сделал это под
MkLinux DR2.1 update2 после маленького патча доступного на:
ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz
1.19) Почему make вываливается или дохнет?
Было несколько сообщений о gmake, который или просто вываливается
и выдает об ошибках сегментации. В последней проблеме сообщалось
о gmake 3.74 - обновление до 3.76.1 решило проблему.
Однако, 3.74 замечательно работал при настройке другими людьми.
Короче, попытайся обновить gmake на последнюю версию какую сможешь
найти, перед тем как сообщать о проблеме
1.20) Как можно сделать оптимизацию под 486 или pentium процессор
Флаги компилятора по умолчанию не выполняют оптимизации для 486
или Pentium процессоры. Чтобы добавить такую оптимизацию, отредактируй
Makefile.custom и добавь:
CFLAGS+= -m486
или (для новых компиляторов, которые большинство людей пока не запускало)
CFLAGS+= -mpentium
или
CFLAGS+= -mpentiumpro
1.21) Почему я получаю странные результаты во время печати (например
в регрессивном тесте 'timespan')?
Время показывается как: '4 hours 59 mins 60.00 secs'
вместо '5 hours'
Эта проблема с библиотекой glibc2, которая есть Redhat 5.0.
Обнови glibc до последней версии RedHat для v5.0/hurricane.
Все предыдущие glibc-2.0.7 похоже имеют проблему.
1.22) Почему я не могу получить любую разделяемую библиотеку для libpq при
компиляции 6.3.2?
Это сломалось в последнюю минуту в настройке Linux для
v6.3.2. Ищи в ftp://postgresql.org/pub/patches/ исправления,
включающие linux_elf патч.
1.23) Почему компиляция прерывается с сообщением о необъявленных F_BOOLIN,
F_BOOLOUT и F_BYTEAIN?
Фактически, выдаются такие сообщения:
-I/usr/include/readline -O2 -Wall -Wmissing-prototypes -I..
-Wno-error -c bootstrap.c -o bootstrap.o
bootstrap.c:160: `F_BOOLIN' undeclared here (not in a function)
bootstrap.c:160: initializer element for `Procid[0].inproc' is not
constant
bootstrap.c:160: `F_BOOLOUT' undeclared here (not in a function)
bootstrap.c:160: initializer element for `Procid[0].outproc' is not
constant
bootstrap.c:161: `F_BYTEAIN' undeclared here (not in a function)
bootstrap.c:161: initializer element for `Procid[1].inproc' is not
constant
Это мудрено и неизвестно почему это случается, т.к. эти константы
кажется неопределены где-то еще.
Решением является проверить что cpp включен в путь перед запуском make.
На Redhat 5.1, cpp в /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3
----------------------------------------------------------------------
Раздел 2: Компиляция принадлежащих программ
----------------------------------------------------------------------
2.1) Линковщик не может найти libX11 при компиляции pgtclsh
Добавь в src/Makefile.custom
X11_LIBDIR = /usr/X11R6/lib
----------------------------------------------------------------------
Раздел 3: Проблемы при работе
----------------------------------------------------------------------
3.1) Я получаю сообщение об ошибке _fUnKy_POSTPORT_sTuFf_ undefined, при
запуске сценариев типа createuser
Это баг в V1.06-V1.07 Postgres и исправлен в V1.08 и выше.
3.2) Я запускаю postmaster и после этого система говорит
'Bad system call(Core dumped)'
Это указывает, что ты не включил в ядро поддержку разделяемой
памяти. Тебе нужно перекомпилировать ядро Linux, добавив это
свойство.
3.3) Почему при запуске Postmaster, я получаю ошибку в форме
Failed Assertion("!(file != 0):(null)", File:
"/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
!(file != 0) (0)
initdb: could not create template database
initdb: cleaning up.
Права на файл /dev/null неправильные.
ls -l /dev/null должен дать что-то такое:
crw-rw-rw- 1 root wheel 2, 2 Oct 8 18:41 /dev/null
Поправь права, используя:
chmod a+rw /dev/null
3.4) Почему createuser не работает?
Это проблема с версией 2.5.3 GNU flex и createuser.
Ты можешь или даунгрейднуть flex до V2.5.2, апргейднуть до V2.5.4
или наложить патч на V2.5.3, который лежит в doc/README.flex
Ты можешь получить V2.5.4 на
ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz
3.5) Почему я получаю ошибку типа:
IpcMemoryCreate: memKey=155356396 , size=760632 ,
permission=384IpcMemoryCreate: shmget(..., create, ...)
failed: Invalid argument
Ты не включил поддержку IPC в ядро Linux. Тебе нужно пересобрать
ядро, включив эту опцию.
3.6) Почему psql прерывается с:
psql: can't load library 'libpq.so.1'
Psql компилируется динамически линкуясь с библиотекой libpq.
Для решения этого, тебе нужно войти как root и отредактировать
/etc/ld.so.conf
Добавить отдельную строчку в конец, содержащую имя каталога
библиотеки PostgreSQL (подкаталог lib установки
PostgreSQL) и запустить
/sbin/ldconfig -v
Еще, (and if you don't have root access), можно использовать
переменную среды LD_LIBRARY_PATH.
Переменная LD_LIBRARY_PATH содержит разделяемый двоеточиями
список путей поиска разделяемых библиотек. В этом списке они
ищутся перед библиотеками, указанными в ldconfig.
Поэтому под Bash, сделай что-то вроде этого:
export LD_LIBRARY_PATH='PathToPGSQL'/lib
или, при использовании tcsh
setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib
заменив 'PathToPGSQL' соответствующим путем к каталогу верхнего
уровня PostgreSQL
Заметим, что команда ldd может быть использована для динамической линковки
исполняемых файлов со всеми разделяемыми библиотеками, от которых они
зависят, из списка путей.
3.7) Другая странная работа
Я не знаю, какие признаки это могут быть за исключением того что
ничего не работает правильно, но это может указывать на то что надо
проверить, что динамический загрузчик загружает правильную версию
библиотеки libpq. Если в пути есть старые версии библиотеки
(например, в /usr/lib), то они могут загружаться вместо новой
версии, какую ты хотел загрузить. Проверь, нет ли их в пути
и смотри Q3.6 подробности загрузки библиотек.
3.8) При выключении системы и запущенном PostgreSQL, Linux всегда
выполняет диску fsck при загрузке.
Было несколько сообщений что это происходило и кажется из-за
запуска PostgreSQL из /etc/inittab как советуется
в документе INSTALL.
Поэтому рекомендуется запускать postmaster из сценария
rc. В релизах Slackware-типа, ты должен изменить
/etc/rc.d/rc.local для запуска postmaster. В релизах RedHat-типа
нужно создать сценарий в стиле SysV в /etc/rc.d/rc3.d, основанный
на файле скелете /etc/rc.d/init.d.
Есть пример файла в contrib/linux/postgres.init
Вот другой пример файла предложенный John Robinson,
который нужно изменить как потребуется:
#!/bin/sh
#
# postgreSQL.init Этот сценарий shell выполняет запуск и остановку
# PostgreSQL postmaster.
#
# Библиотека исходных функций.
. /etc/rc.d/init.d/functions
# Начальная сетевая конфигурация.
. /etc/sysconfig/network
# Проверка, запущена ли сеть.
[ ${NETWORKING} = "no" ] && exit 0
# Смотри как вызывать.
case "$1" in
start)
# Start daemons.
echo -n "Starting postgres Postmaster daemon:"
if [ -z "`pidofproc postmaster`" ]
then
su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgreSQL/data -p 5432 &"
echo -n " postmaster"
else
echo -n " (already running)"
fi
echo
touch /var/lock/subsys/postgres
;;
stop)
# Stop daemons.
echo -n "Shutting down postgres Postmaster daemon: "
killall -TERM postmaster 2>/dev/null
killall -TERM postgres 2>/dev/null
echo
rm -f /var/lock/subsys/postgres
;;
*)
echo "Usage: postgres {start|stop}"
exit 1
esac
exit 0
3.9) Почему Query 32 в регрессивном тесте выполняется так долго?
Из-за бага в сценариях регрессивного теста, который появляется только
в linux машинах. Есть два пути обойти проблему, насколько мне известно
(информация от Tatsuo Ishii ):
1. измени в regress.sh:
time postgres -texecutor -tplanner -Q bench < bench.sql
на:
postgres -texecutor -tplanner -Q bench < bench.sql
2. после запуска теста, удали строку от самого конца bench.out типа
такой:
85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata
0maxresident)k
затем введи:
sh ./perquery < bench.out > & bench.out.perquery
3.10) Почему я получаю забавные округленные результаты в некоторых
операциях с датой/временем, типа
select '4 hours'::timespan;
returning '3 hours 59 minutes 60 seconds'?
Тебе нужен новая библиотека glibc2 или иметь версию раньше чем
2.0.7. Это математическая проблема округления в библиотеки.
Обнови библиотеку.
----------------------------------------------------------------------------
Dr. Andrew C.R. Martin University College London
EMAIL: (Work) martin@biochem.ucl.ac.uk (Home) andrew@stagleys.demon.co.uk
URL: http://www.biochem.ucl.ac.uk/~martin
Tel: (Work) +44(0)171 419 3890 (Home) +44(0)1372 275775