======================================================= Наиболее часто задаваемые вопросы (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