3
Сообщество PostgreSQL
• The PostgreSQL Global
Development Group (PGDG)
– Основная команда – core team
– Коммитеры – committers
– (Основные) разработчики –
(Major) contributors
• Компании-спонсоры (Postgres
Professional, EnterpriseDB,
2ndQuadrant, Cybertec, CitusDB...)
4
Core team
●
Josh Berkus, USA
●
Peter Eisentraut, USA
●
Magnus Hagander, Sweden
●
Tom Lane, USA
●
Bruce Momjian, USA
●
Dave Page, United Kingdom
5
Open source
• Распространяется свободно
• Лицензия PostgreSQL License –
похожа на BSD
• Исходный код PostgreSQL доступен
на Github
• Документация в открытом доступе
на официальном сайте
– Содержит разделы и для DBA, и
для разработчиков
6
Конференции и встречи
• PGCon в Оттаве (в середине июня)
• PGConf.eu (в конце октября)
• PGConf.ru (в начале февраля)
• Множество локальных
PGConf и PGDay (в течение года)
• #PostgreSQLRussia Meetup (каждый
месяц)
• Семинары Postgres Professional
7
Mailing lists (листы рассылки)
• pgsql-hackers – основной лист для
общения разработчиков
• pgsql-bugs
• pgsql-general
• pgsql-perfomance
• pgsql-novice
• И так далее...
8
Как отправить себе письмо? (1)
1. Перейти по ссылке
2. Выбрать в списке Task пункт Browse The Message
Archives, тыкнуть Go
3. Ввести имя рассылки (pgsql-hackers) в поле Mailing
List, тыкнуть Choose List
4. Ввести собственный почтовый адрес, тыкнуть
Choose Address
5. Напомнить себе пароль
1. Открыть ссылку из письма
2. Подтвердить команду отправки письма с
паролем
3. Найти пароль
9
Как отправить себе письмо? (2)
6. Залогиниться, найти в архиве нужное письмо,
используя ссылки в полях Archive, Thread и т. д.:
10
Как отправить себе письмо? (3)
7. Нажать Mail this message to внизу страницы с
открытым письмом:
11
Правила хорошего тона в
листах рассылки
• Отдельное письмо для новой темы
• Используйте теги и пометки
– PROPOSAL, WIP (Work In
Progress), POC (Proof Of
Concept), PATCH
• Отвечайте в рассылку или
“Ответить всем”
• Цитируйте
12
Правила хорошего тона в
листах рассылки
• Используйте подпись, если
работаете в компании
Hi, hackers!
Blablabla.
Anastasia Lubennikova
Postgres Professional:
http://www.postgrespro.com
The Russian Postgres Company
13
Правила хорошего тона в
листах рассылки
• Пишите ответ в конце письма
A: Because it reverses the logical flow of
conversation.
Q: Why is top posting frowned upon?
A: Topposting.
Q: What is the most annoying thing on
usenet and in email?
14
Цикл разработки
• Создание ветки для новой версии
• Commitfests (с июля по март)
• Feature Freeze (середина апреля)
• Alpha-версия
• Тестирование и доработка
• Beta-версия (середина июня)
• Выпуск новой версии PostgreSQL
(середина октября)
15
Commitfests
• Разработчик выкладывает патчи
• Получает обратную связь от
Reviewers
• Автор дорабатывает патч
• Reviewer отмечает патч как готовый
для коммита
• Коммитер добавляет патч в
репозиторий
16
Где найти материалы?
• Документация
• Feature Matrix
• Архивы листов рассылок
• Wiki PostgreSQL
• Блоги о PostgreSQL
• Книги
• Видео докладов с конференций
• README и комментарии к коду
18
Как написать патч
• Идея
• Proposal (предложение)
• Обсуждение
• Разработка
• Ревью
• Принятый патч
19
Идея
• Есть ли готовые решения?
• Это задача из TODO?
• Предыдущие обсуждения в hackers?
• Аналоги в других системах?
• Документация и README
• Исходный код
20
Proposal
• Идея, use case
• Измеримые результаты
• Необходимые изменения
– например, новый синтаксис
• Ссылки на:
– прошлые обсуждения в hackers
– академические статьи
• Вопросы
21
Обсуждение
• Кто-то уже работает над этим
• Подводные камни
• Вопросы реализации
• Предложения
• Это слишком сложно внедрить
• Это никому не нужно =(
Защищайте свою идею!
24
С чего начать
●
Поискать по названию функции
●
Включить подробный лог:
• set log_min_messages to debug5;
●
Выполнить запрос
●
Найти место в коде, где
вызываются эти сообщения
●
Исследовать код вокруг
31
Dataset
• Sample Databases
• Встроенные функции
– random();
– generate_series(start, stop, step);
CREATE TABLE test (id integer, b box);
INSERT INTO test
SELECT x, point(random(), random())
FROM generate_series(1,10) as x;
32
generate_series()
●
Как генерировать распределения
– Uniform distribution (continuous)
– Normal distribution
– Exponential distribution
●
PostgreSQL generate_series() Tricks
●
insert into tbl select p1, p2 from
generate_series(1,2) as p1,
lateral generate_series(1, 10) as p2;
38
Патч
• Новое письмо в hackers.
– Ссылка на прошлое обсуждение
– Описание ситуации
– На какой коммит оно ложится
– Тесты и результаты
– Документация
• Прикрепить патч на коммитфест
46
Установка
●
Installation guide
./configure // не забывайте флаги
make j4
make check // временная установка и тесты
su
#make install
#adduser postgres
#mkdir $WORKSPACE_PATH/postgres_data
#chown postgres
$WORKSPACE_PATH/postgres_data
51
Ревью патча (1)
●
diff format context?
●
Накладывается на мастер?
●
Содержит комментарии,
документацию, тесты?
●
Соответствует принятому стилю?
52
Шпаргалка ревьюера (1)
●
You've accidentally removed an empty line
here.
●
Space removed by mistake.
●
A few of the lines here are over 80 chars.
●
I think this should be explained with a better
comment.
●
The { brace here should be on the next line.
●
Needs 1 more tab so that "15" lines up with
the other numbers.
55
Ревью патча (3)
●
Действительно нужен?
●
Синтаксис соответствует SQL
стандартам или аналогам в других
БД?
●
Работает как заявлено?
●
Вы можете это сломать?
●
Что-то непонятно из комментариев?
●
Что-то стало медленнее?
59
Что можно взять на ревью?
●
●
Bugfix для tsvector: [patch]
●
Bugfix для pgbench: [patch]
●
Пара патчей к jsonb: [1], [2]
●
Патч INCLUDING для B-tree: [patch]