IF TG_OP = 'DELETE' THEN
RENAME OLD TO myrow;
ELSE
RENAME NEW TO myrow;
END IF;
-- Далее работаем с myrow не задумываясь о типе триггера
October 27, 2010
Заметка про RENAME и триггера
В plpgsql триггерах удобно использовать RENAME для того чтобы абстрагироваться от NEW и OLD. Например:
Posted by
grayhemp
at
9:19 AM
2
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
plpgsql,
postgresql,
q and a,
russian,
Sergey Konoplev,
trigger
Какие колонки таблицы входят в PK/FK
Вчера на sql.ru увидел вопрос - возможно ли при помощи запроса узнать какая колонка в таблице является PK а какая FK. Небольшое замечание к формулировке - в обоих случаях может быть несколько столбцов.
Собственно запрос получается такой:
Собственно запрос получается такой:
SELECT
contype, -- тип ограничения (PK/FK)
attname -- имя атрибута
FROM pg_constraint
JOIN pg_attribute ON
attrelid = conrelid AND
attnum = any(conkey)
WHERE
contype in ('p', 'f') AND
conrelid = 'yourtablename'::regclass::oid
ORDER BY 1, attnum;
Posted by
grayhemp
at
8:54 AM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
foreign key,
postgresql,
primary key,
q and a,
russian,
sql.ru,
system tables
September 20, 2010
Доступен PostgreSQL 9.0 Final Release!
Перевод PostgreSQL 9.0 Final Release Available Now! с PostgreSQL
Опубликовано 2010-09-20, press@postgresql.org
Вышел PostgreSQL 9.0! The PostgreSQL Global Development Group анонсирует выход долгожданного релиза. PostgreSQL 9.0 включает встроенную бинарную репликацию и более дюжины других больших нововведений расчитанных на всех от web разработчиков до хакеров БД.
9.0 реализует большее количество крупных возможностей, чем любой релиз до этого, включая:
- Hot standby
- Потоковую репликацию
- In-place обновления
- 64-bit Windows сборки
- Облегченное массовое управления правами
- Анонимные блоки и именованные параметры для хранимых процедур
- Новые windowing функции и упорядоченные агрегаты
... и многое другое. Более детальное описание свыше 200 дополнений и улучшений в этой версии, разработанные более чем сотней людей, вы сможете найти в замечаниях к релизу.
"Такие нововведения являются прочным основанием тому, что критически важные технические задачи могут продолжать опираться на мощь, гибкость и надёжность PostgreSQL", Afilias CTO Ram Mohan
Больше информации о PostgreSQL 9.0:
- Замечания к релизу
- Пресс-кит
- Руководство по 9.0
Скачать 9.0 сейчас:
- Главная страница загрузки
- Исходный код
- Бинарные пакеты
- Установка в один клик, включая пакеты для Windows
Опубликовано 2010-09-20, press@postgresql.org
Вышел PostgreSQL 9.0! The PostgreSQL Global Development Group анонсирует выход долгожданного релиза. PostgreSQL 9.0 включает встроенную бинарную репликацию и более дюжины других больших нововведений расчитанных на всех от web разработчиков до хакеров БД.
9.0 реализует большее количество крупных возможностей, чем любой релиз до этого, включая:
- Hot standby
- Потоковую репликацию
- In-place обновления
- 64-bit Windows сборки
- Облегченное массовое управления правами
- Анонимные блоки и именованные параметры для хранимых процедур
- Новые windowing функции и упорядоченные агрегаты
... и многое другое. Более детальное описание свыше 200 дополнений и улучшений в этой версии, разработанные более чем сотней людей, вы сможете найти в замечаниях к релизу.
"Такие нововведения являются прочным основанием тому, что критически важные технические задачи могут продолжать опираться на мощь, гибкость и надёжность PostgreSQL", Afilias CTO Ram Mohan
Больше информации о PostgreSQL 9.0:
- Замечания к релизу
- Пресс-кит
- Руководство по 9.0
Скачать 9.0 сейчас:
- Главная страница загрузки
- Исходный код
- Бинарные пакеты
- Установка в один клик, включая пакеты для Windows
Posted by
grayhemp
at
4:08 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
pg90,
postgresql,
release,
russian,
translation
September 7, 2010
Локально работаем с PostgreSQL закрытом на сервере
Уже не в первый раз мне задают такой вопрос.
Как подключиться, например с помощью pgAdmin, к кластеру PostgreSQL, когда он где-то на сервере, где его порт доступен только локально, т.е. к нему закрыт доступ извне? При этом есть ssh на этот сервер, но по нему работать в консоли с psql и тестировать работающее с базой приложение очень не удобно.
Как подключиться, например с помощью pgAdmin, к кластеру PostgreSQL, когда он где-то на сервере, где его порт доступен только локально, т.е. к нему закрыт доступ извне? При этом есть ssh на этот сервер, но по нему работать в консоли с psql и тестировать работающее с базой приложение очень не удобно.
Posted by
grayhemp
at
6:45 PM
3
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
linux,
port,
postgresql,
q and a,
russian,
Sergey Konoplev,
ssh
В ожидании 9.1 - concat, concat_ws, right, left, reverse
Перевод Waiting for 9.1 - concat, concat_ws, right, left, reverse с select * from depesz;
24 августа Takahiro Itagaki применил патч:
Что это за функции?
24 августа Takahiro Itagaki применил патч:
Добавлены строковые функции: concat(), concat_ws(), left(), right()
и reverse().
Pavel Stehule, проверено мной.Что это за функции?
Posted by
grayhemp
at
3:48 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
concat,
concat_ws,
Hubert Lubaczewski,
left,
pg91,
postgresql,
reverse,
right,
russian,
translation
Правила для окон в XMonad
Задача - сделать так чтобы все диалоговые окна, некоторые окна по имени класса, некоторые по заголовку и некоторые по ресурсу появлялись плавающими (floating), т.е. не были "тайловыми".
Решение - приводим ~/.xmonad/xmonad.hs в соответствие с нижеследующим примером.
Решение - приводим ~/.xmonad/xmonad.hs в соответствие с нижеследующим примером.
Posted by
grayhemp
at
3:26 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
configuration,
dialog,
floating,
q and a,
russian,
Sergey Konoplev,
windows,
xmonad
August 18, 2010
Уведомить когда процесс остановиться (shell)
Это маленький, но очень полезный сниплет, который позволяет сэкономить время и сохранить внимание. Я его использую очень часто, когда жду, например, окончания загрузки чего-то куда-то.
10708 - pid процесса который мы ждём:
Это работает в бэкграунде, т.ч. можно продолжать пользоваться терминалом.
10708 - pid процесса который мы ждём:
(while [ $(ps -p 10708 ho pid) ]; do sleep 5; done; echo -e "\a") &Это работает в бэкграунде, т.ч. можно продолжать пользоваться терминалом.
Posted by
grayhemp
at
10:29 AM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
August 11, 2010
В ожидании 9.1 - Распознавание функциональной зависимости от первичных ключей
Перевод Waiting for 9.1 – Recognize functional dependency on primary keys с select * from depesz;
Вчера (7 августа) Tom Lane применил:
Одна из наиболее частых проблем, с которой люди сталкиваются при переходе с MySQL на PostgreSQL, заключается вот в таких запросах:
Это нормально для MySQL, но не работало в PostgreSQL.
Вчера (7 августа) Tom Lane применил:
Распознавание функциональной зависимости от первичных ключей. Это позволяет
колонкам не присутствовать в GROUP BY, если там присутствует первичный ключ.
В дальнейшем нам стоит также разрешить функциональную зависимость от UNIQUE
ограничений при условии, что колонка помечена как NOT NULL, но это будет ждать пока
NOT NULL ограничения не будут представлены в pg_constraint, т.к. нам будут нужны
pg_constraint OID-ы для всех условий, где будет разрешаться функциональная
зависимость.
Peter Eisentraut, проверено Alex Hunsaker и Tom LaneОдна из наиболее частых проблем, с которой люди сталкиваются при переходе с MySQL на PostgreSQL, заключается вот в таких запросах:
SELECT field_a, field_b, count(*)
FROM TABLE
GROUP BY field_aЭто нормально для MySQL, но не работало в PostgreSQL.
Posted by
grayhemp
at
8:45 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
group by,
Hubert Lubaczewski,
pg91,
postgresql,
primary key,
russian,
translation
В ожидании 9.1 - Снижаем уровни блокировок для ALTER TABLE
Перевод Waiting for 9.1 – Reduced lock levels for ALTER TABLE с select * from depesz;
28 июля Simon Riggs применил патч:
Во первых - это только начало. Конечная цель - сделать все (большинство?) выражения ALTER TABLE менее навязчивыми.
28 июля Simon Riggs применил патч:
Снижает уровни блокировок CREATE TRIGGER и некоторых действий ALTER TABLE,
CREATE RULE. Убирает прописанные на прямую в коде режимы блокировок, используемые во
множестве команд изменения DDL, позволяя более легко менять уровни блокировок в
будущем. Реализован начальный анализ DDL подкомманд, так что многие уровни блокировок
теперь будут ShareUpdateExclusiveLock или ShareRowExclusiveLock, позволяя конкретным
коммандам не блокировать чтение/запись. Это первое изменение из числа запланированных
в этом направлении; будет нужна дополнительная документация когда весь проект
завершится.Во первых - это только начало. Конечная цель - сделать все (большинство?) выражения ALTER TABLE менее навязчивыми.
Posted by
grayhemp
at
7:32 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
alter table,
Hubert Lubaczewski,
lock,
locks,
pg91,
postgresql,
russian,
translation,
trigger
Как получить имена всех таблиц содержащих колонку с заданным именем
На основе обсуждения filter tables from database с pgsql-general
Всё очень просто:
Всё очень просто:
SELECT table_name
FROM information_schema.columns
WHERE column_name = 'put_column_name_here';
Posted by
grayhemp
at
6:56 PM
0
comments
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Labels:
column,
information_schema,
pgsql-general,
postgresql,
q and a,
russian,
translation