<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sokolov blog &#187; PostgreSQL</title>
	<atom:link href="http://blog.sokolov.me/tag/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sokolov.me</link>
	<description>всякие заметки, в-основном freebsd,linux</description>
	<lastBuildDate>Sat, 17 Jul 2010 13:36:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PosrgreSQL: Заметки</title>
		<link>http://blog.sokolov.me/2010/02/17/posrgresql-notes/</link>
		<comments>http://blog.sokolov.me/2010/02/17/posrgresql-notes/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 20:56:56 +0000</pubDate>
		<dc:creator>pavel</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[postgres]]></category>

		<guid isPermaLink="false">http://blog.sokolov.me/?p=528</guid>
		<description><![CDATA[Хорошие заметки по postgres.
Массивы:
Преобразование массивов:
Оригинал тут

select client_id, array_agg(order_id) from simple_table group by client_id;
select * from explode_array(array[1,2,3,4]);

Парсинг массивов postgres в php:
http://dklab.ru/lib/DB_Pgsql_Type/
Служебная информация:
Описание схемы:
http://www.postgresql.org/docs/8.4/interactive/information-schema.html
Выбор информации обо всех таблицах:
SELECT c.table_schema, c.table_name,
 array_agg(CAST(c.column_name AS text)) as col_names,
 array_agg(DISTINCT CAST(c.data_type AS text)) As dat_types
 FROM information_schema.columns AS c
GROUP BY c.table_schema, c.table_name;

Либа для автоматических тестов PGUNIT:
http://dklab.ru/lib/dklab_pgunit/
Бэкапы
Хорошая статья про ON-LINE backup http://www.opennet.ru/base/sys/postgresql_online_backup.txt.html
Для [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.postgres.cz/index.php/PostgreSQL_SQL_Tricks">Хорошие заметки по postgres</a>.</p>
<h4>Массивы:</h4>
<p><strong>Преобразование массивов:</strong><br />
Оригинал <a href="http://www.depesz.com/index.php/2008/11/14/waiting-for-84-array-aggregate-and-array-unpacker/">тут</a><br />
<code><br />
select client_id, array_agg(order_id) from simple_table group by client_id;<br />
select * from explode_array(array[1,2,3,4]);<br />
</code><br />
<strong>Парсинг массивов postgres в php:</strong><br />
<a href="http://dklab.ru/lib/DB_Pgsql_Type/">http://dklab.ru/lib/DB_Pgsql_Type/</a></p>
<h4>Служебная информация:</h4>
<p><strong>Описание схемы:</strong><br />
<a href="http://www.postgresql.org/docs/8.4/interactive/information-schema.html">http://www.postgresql.org/docs/8.4/interactive/information-schema.html</a></p>
<p><strong>Выбор информации обо всех таблицах:</strong><br />
<code>SELECT c.table_schema, c.table_name,<br />
 array_agg(CAST(c.column_name AS text)) as col_names,<br />
 array_agg(DISTINCT CAST(c.data_type AS text)) As dat_types<br />
 FROM information_schema.columns AS c<br />
GROUP BY c.table_schema, c.table_name;<br />
</code></p>
<p><strong>Либа для автоматических тестов PGUNIT:</strong><br />
<a href="http://dklab.ru/lib/dklab_pgunit/">http://dklab.ru/lib/dklab_pgunit/</a></p>
<h4>Бэкапы</h4>
<p>Хорошая статья про ON-LINE backup <a href="http://www.opennet.ru/base/sys/postgresql_online_backup.txt.html">http://www.opennet.ru/base/sys/postgresql_online_backup.txt.html</a><br />
Для того, чтобы сделать простой бэкап в формате SQL:<br />
<code>pg_dump --inserts -U pavel -W database_name > /home/pavel/backup.sql</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sokolov.me/2010/02/17/posrgresql-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postgres: заметки</title>
		<link>http://blog.sokolov.me/2010/02/09/postgres-note/</link>
		<comments>http://blog.sokolov.me/2010/02/09/postgres-note/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 13:37:31 +0000</pubDate>
		<dc:creator>pavel</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.sokolov.me/?p=494</guid>
		<description><![CDATA[Преобразование строки в число:

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;

]]></description>
			<content:encoded><![CDATA[<p>Преобразование строки в число:</p>
<pre class="brush: sql">
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;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.sokolov.me/2010/02/09/postgres-note/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostgreSQL: установка на FreeBSD</title>
		<link>http://blog.sokolov.me/2010/02/01/postgresql-freebsd/</link>
		<comments>http://blog.sokolov.me/2010/02/01/postgresql-freebsd/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 19:55:18 +0000</pubDate>
		<dc:creator>pavel</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://blog.sokolov.me/?p=458</guid>
		<description><![CDATA[Установка
pkg_add -r postgresql84-server
echo postgresql_enable="YES" &#62;&#62; /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
Настройка бэкапа
Ежедневный скрипт, выполняющий backup и vacuum находиться здесь: /usr/local/etc/periodic/daily/502.pgsql
echo daily_pgsql_backup_enable=YES &#62;&#62; /etc/periodic.conf
echo daily_pgsql_backupdir=/usr/backup/postgres &#62;&#62; /etc/periodic.conf
echo daily_pgsql_vacuum_enable=YES &#62;&#62; /etc/periodic.conf

Создание юзера и базы:
sudo -u pgsql createuser -s [...]]]></description>
			<content:encoded><![CDATA[<h4>Установка</h4>
<p><code>pkg_add -r postgresql84-server<br />
echo postgresql_enable="YES" &gt;&gt; /etc/rc.conf<br />
/usr/local/etc/rc.d/postgresql initdb<br />
#теперь устанавливаем pl/perl<br />
cd /usr/ports/databases/p5-postgresql-plperl<br />
make install clean<br />
#стартуем<br />
/usr/local/etc/rc.d/postgresql start<br />
# создание plperl для базы:<br />
# sudo -u pgsql createlang plperl ИМЯ_БАЗЫ</code></p>
<p># Устанавливаем модули для perl<br />
cd /usr/ports/databases/p5-DBD-Pg<br />
make install clean</p>
<h4>Настройка бэкапа</h4>
<p>Ежедневный скрипт, выполняющий backup и vacuum находиться здесь: <strong>/usr/local/etc/periodic/daily/502.pgsql</strong><br />
<code>echo daily_pgsql_backup_enable=YES &gt;&gt; /etc/periodic.conf<br />
echo daily_pgsql_backupdir=/usr/backup/postgres &gt;&gt; /etc/periodic.conf<br />
echo daily_pgsql_vacuum_enable=YES &gt;&gt; /etc/periodic.conf<br />
</code></p>
<p><strong>Создание юзера и базы:</strong><br />
<code>sudo -u pgsql createuser -s -W pavel<br />
sudo -u pgsql createdb test</code></p>
<h4>UTF8:</h4>
<p><code>To set limits, environment stuff like locale and collation and other<br />
things, you can set up a class in /etc/login.conf before initializing<br />
the database. Add something similar to this to /etc/login.conf:<br />
---<br />
postgres:\<br />
:lang=en_US.UTF-8:\<br />
:setenv=LC_COLLATE=C:\<br />
:tc=default:<br />
---<br />
and run `cap_mkdb /etc/login.conf'.<br />
Then add 'postgresql_class="postgres"' to /etc/rc.conf<br />
## ОБЯЗАТЕЛЬНО утсановить класс postgres для юзера pgsql<br />
pgsql:*:70:70:postgres:0:0:PostgreSQL Daemon:/usr/local/pgsql:/bin/sh</code></p>
<p><strong>postgresql.conf:</strong><br />
<code><br />
custom_variable_classes = 'plperl'<br />
plperl.use_strict = true<br />
max_connections = 200<br />
shared_buffers = 500MB<br />
</code></p>
<h4>Разное</h4>
<p><strong>Тюнинг:</strong><br />
Отличная статья по тюнингу <a href="http://postgresmen.ru/articles/view/38">http://postgresmen.ru/articles/view/38</a></p>
<p><strong>Тема по руссификации:</strong><a href="http://www.sql.ru/forum/actualthread.aspx?tid=677731"> http://www.sql.ru/forum/actualthread.aspx?tid=677731</a><br />
<strong>Откуда можно коннектиться</strong><br />
<code>host    all     all     a.b.c.d/24 trust (<strong>/usr/home/pgsql/data/pg_hba.conf</strong>)</code><br />
<strong>На каких IP слушать</strong><br />
<code>listen_addresses='*' (<strong>/usr/local/pgsql/data/postgresql.conf</strong>)</code></p>
<p><strong><span style="color: #ff0000;">В apache должен быть обязательно прописан ServerName, иначе postgres как модуль php будет ронять apache в core dump</span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sokolov.me/2010/02/01/postgresql-freebsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
