Добавление агрегатных функций в postgresql

К сожалению в стандарте SQL нет возможности посчитать медиану. Для добавление агрегатных функций в postgresql есть любопытное расширение quantile. Для установки нужен только pgxn client. У меня его не оказалось, поэтому сначала поставим этот клиент:

sudo aptitude install pgxnclient 
Читать...

Установка и настройка postgresql под ubuntu 16.04

Добавление репозитория

Необязательно, но зато будет последняя версия Подробнее: https://www.postgresql.org/download/linux/ubuntu

sudo bash -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' >> /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
  sudo apt-key add -
sudo apt-get update 

Установка

sudo apt-get install -y postgresql postgresql-client libpq-dev pgadmin3
Читать...

Полезные приёмы работы с Postgresql

Группировка по месяцам

SELECT extract(month from t.created_at) as m, extract(year from t.created_at) as y, ...
FROM sometable t
group by y, m
order by y, m

Данные за последний год, не учитывая день

select * 
from sometable
where created_at >= (date_trunc('month', CURRENT_DATE) - INTERVAL '1 year')

Активация hstore

Активировать расширение можно только через супер пользователя

sudo -u postgres psql -d template1 # Заходим в консоль
CREATE EXTENSION IF NOT EXISTS "hstore";
\q
Просмотр открытых коннектов
SELECT * FROM pg_stat_activity
Читать...

Установка rails приложения с нуля на ubuntu

В этой заметке я рассмотрю полный цикл развертывания rails приложения на ubuntu-server. Использованный стэк технологий:

  • Ubuntu server
  • Postgresql
  • Nginx
  • RVM
  • Puma
  • Ruby
  • Git
  • Sidekiq
  • Redis
  • Rails
  • Capistrano
Читать...

Переход с Posgresql 9.4 на 9.5

Правим конфиги в соответствии с предыдущей версией:

Важно поставить одинаковые порты в postgresql.conf для того, чтобы был мягкий переход для приложений, использующих базу данных.

sudo nano --syntax=sh /etc/postgresql/9.5/main/pg_hba.conf
sudo nano --syntax=sh /etc/postgresql/9.5/main/postgresql.conf

 

Останавливаем сервисы:

sudo service postgresql stop

 

Дропаем новый кластер:

sudo pg_dropcluster 9.5 main

 

Обновляем предыдущий:

sudo pg_upgradecluster 9.4 main

 

Дропаем предыдущий:

sudo pg_dropcluster 9.4 main

 

Проверяем:

pg_lsclusters

 

Теперь удалим ненужные пакеты:

dpkg --get-selections | grep postgres

 

Удаляем пакеты с предыдущей версией:

sudo aptitude purge postgresql-9.4 postgresql-client-9.4 postgresql-contrib-9.4 postgresql-server-dev-9.4
Читать...

Обновление postgesql и ошибка в рельсах

При обновление postgresql с 9.3 до 9.5 получил вот такую ошибку при старте рельс-приложений:

PG::ConnectionBad (could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
):

Как оказалось, при установки gem'a pg, происходит запоминание сокета, по которому идёт коннект. Поэтому что поправить, можно либо переустановить gem:

$ gem uninstall pg
$ cd my-rails-app/
$ bundle install

Либо, поправить номер порта на требуемый в /etc/postgresql/9.5/main/postgresql.conf.

Читать...