Преобразование строки в число:
CREATE OR REPLACE FUNCTION pc_chartoint(chartoconvert character varying)
RETURNS integer AS
$BODY$
SELECT CASE WHEN trim($1) SIMILAR TO '[0-9]+'
THEN CAST(trim($1) AS integer)
ELSE NULL END;
$BODY$
LANGUAGE 'sql' IMMUTABLE STRICT;
Установка
pkg_add -r postgresql90-server
echo postgresql_enable="YES" > /etc/rc.conf
/usr/local/etc/rc.d/postgresql initdb
#теперь устанавливаем pl/perl
cd /usr/ports/databases/p5-postgresql-plperl
make install clean
#стартуем
/usr/local/etc/rc.d/postgresql start
# создание plperl для базы:
# sudo -u pgsql createlang plperl ИМЯ_БАЗЫ
# Устанавливаем модули для perl
cd /usr/ports/databases/p5-DBD-Pg
make install clean
#Устанавливаем доп пакеты (для vacuumlo)
cd /usr/ports/databases/postgresql90-contrib
make install clean
Настройка бэкапа
Ежедневный скрипт, выполняющий backup и vacuum находиться здесь: /usr/local/etc/periodic/daily/502.pgsql
echo daily_pgsql_backup_enable=YES >> /etc/periodic.conf
echo daily_pgsql_backupdir=/usr/backup/postgres >> /etc/periodic.conf
echo daily_pgsql_vacuum_enable=YES >> /etc/periodic.conf
Создание юзера и базы:
sudo -u pgsql createuser -s -W pavel
sudo -u pgsql createdb test
UTF8:
To set limits, environment stuff like locale and collation and other
things, you can set up a class in /etc/login.conf before initializing
the database. Add something similar to this to /etc/login.conf:
---
postgres:\
:lang=en_US.UTF-8:\
:setenv=LC_COLLATE=C:\
:tc=default:
---
and run `cap_mkdb /etc/login.conf'.
Then add 'postgresql_class="postgres"' to /etc/rc.conf
## ОБЯЗАТЕЛЬНО утсановить класс postgres для юзера pgsql
pgsql:*:70:70:postgres:0:0:PostgreSQL Daemon:/usr/local/pgsql:/bin/sh
postgresql.conf:
custom_variable_classes = 'plperl'
plperl.use_strict = true
max_connections = 200
shared_buffers = 500MB
UPGRADE
Хорошая статья про апгрейд
Разное
Тюнинг:
Отличная статья по тюнингу http://postgresmen.ru/articles/view/38
Тема по руссификации: http://www.sql.ru/forum/actualthread.aspx?tid=677731
Откуда можно коннектиться
host all all a.b.c.d/24 trust (/usr/home/pgsql/data/pg_hba.conf)
На каких IP слушать
listen_addresses='*' (/usr/local/pgsql/data/postgresql.conf)
В apache должен быть обязательно прописан ServerName, иначе postgres как модуль php будет ронять apache в core dump
На Сервере:
iperf -u -c 225.100.180.200 -p 1234 -T 10 -b 4M -t 10000000 -i 10 -l 1316
На Клиенте:
iperf -u -s -B 225.100.180.200 -i 10 -p 1234